大型语言模型(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可以在流媒体应用中占有一席之地,并帮助改变应用在将来的工作方式。