Streaming-LLM简介:适用于无限长度输入的LLM

2023年11月16日 由 camellia 发表 624 0

大型语言模型(LLM)已经改变了人们的工作方式。广泛使用的如GPT系列模型,人们已经习惯了这些模型。利用LLM的强大能力,我们可以迅速得到问题的答案,调试代码等等。这让模型在许多应用中变得十分有用。


LLM面临的挑战之一是,由于模型无法处理超出预定义训练序列长度的长对话聊天,因此模型不适合流媒体应用。此外,还存在高内存消耗的问题。


这就是为何上述问题催生了解决它们的研究。这项研究是什么?让我们深入了解。


StreamingLLM


StreamingLLM是由Xiao等人(2023年)研究提出的一个框架,旨在解决流媒体应用问题。现有方法存在挑战,因为训练过程中LLM受到注意力窗口的约束。


注意力窗口技术可能很高效,但在处理超出其缓存大小的文本时会遇到问题。这就是为什么研究人员尝试使用几个初始令牌的Key和Value状态(注意力汇)与最近的令牌相结合。StreamingLLM与其他技术的比较如下图所示。


如下图


我们可以看到StreamingLLM如何使用注意力汇方法应对挑战。这种注意力汇(初始令牌)被用于稳定的注意力计算,并将其与最新的令牌结合起来,以提高效率,并在处理更长文本时保持稳定的性能。


此外,现有方法在内存优化方面也存在问题。然而,LLM通过在最新令牌的Key和Value状态上维持一个固定大小的窗口,避免了这些问题。作者还提到了StreamingLLM的好处,即作为滑动窗口重新计算基准,速度提高了多达22.2倍。


性能方面,StreamingLLM与现有方法相比提供了优秀的精度,如下表所示。


上表显示上


上表显示,StreamingLLM的精度可以在基准数据集中胜过其他方法。这就是为什么StreamingLLM可能对许多流媒体应用有潜在的意义。


要尝试StreamingLLM,你可以访问他们的GitHub页面。在你的目标目录克隆该仓库,并使用以下代码在你的CLI中设置环境。

conda create -yn streaming python=3.8
conda activate streaming

pip install torch torchvision torchaudio
pip install transformers==4.33.0 accelerate datasets evaluate wandb scikit-learn scipy sentencepiece

python setup.py develop

然后,你可以使用以下代码运行带有LLMstreaming的Llama聊天机器人。

CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py  --enable_streaming

使用StreamingLLM的整体样例比较可以在下面的图片中展示。


结论上上


这就是对StreamingLLM介绍的全部内容。总的来说,相信StreamingLLM可以在流媒体应用中占有一席之地,并帮助改变应用在将来的工作方式。

文章来源:https://www.kdnuggets.com/introduction-to-streaming-llm-llms-for-infinite-length-inputs
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消