长序列特性介绍
长序列特性的主要要求是在输入文本超长的场景下,模型回答的效果及性能也可以同时得到保障,其中输入的序列长度大多长于32K,甚至可到达1M的级别。其主要的技术难点是对attention部分以及KV Cache的使用方面的优化。在长序列场景下,由Attention和KV Cache部分造成的显存消耗会快速的成倍增长。因此对这部分显存的优化便是长序列特性的关键技术点。其中涉及到诸如KV Cache量化,kv多头压缩,训短推长等关键算法技术。
- 训长推长:在训练时通过较长的文本对模型的权重进行训练,从而使得模型在推理过程中对长序列输入依然可以保持良好的模型能力。
- 训短推长:模型本身通过诸如Alibi编码或序列压缩算法如NTK,YaRN等技术使得模型具备较强的自扩张能力,从而可以通过短序列训练后在长序列推理场景下获得更好的模型能力。
限制与约束
目前MindIE LLM对最大序列长度的支持主要受限于以下两类因素:
- 硬件的显存规格与模型参数量。该因素决定了在硬件允许的情况下,模型在推理时所能接受的最长输入长度。以64G
Atlas 800I A2 推理产品 硬件为例,使用8卡运行Glm4-9B-Chat模型,在显存允许的条件下能进行最长1M的长序列推理。 - 模型权重和结构等对长序列能力的支持。该因素决定了模型在长序列场景下的生成和对话效果。对于训长推长的模型(例如Glm-4-9B-Chat-1M),MindIE LLM能保证与开源实现相同的长序列推理效果;对于训短推长的模型(例如Qwen1-7B),MindIE LLM中实现了NTK等相应技术,在使能相关特性后也能让模型具备与开源实现同等的长序列推理能力。需要注意的是,若想使原生仅支持短序列的模型来处理长序列输入,MindIE LLM无法保证其长序列推理结果的合理性。
执行推理
请兼顾硬件规格、模型参数及模型支持的最大有效推理长度来确定合适的序列长度。具体规格请参考对应模型的官方介绍文档。长序列推理的使能方式与普通模型推理方式一致,仅需要将长序列文本按照正常推理流程传入模型即可。详细的执行模型推理的流程请参考模型推理使用流程获取更多信息和支持。运行支持长序列的模型的方式,与运行其他模型无异。
以LLaMa3模型为例,您可以使用以下指令执行对话测试,推理内容为"What's deep learning"。
cd ${ATB_SPEED_HOME_PATH} bash examples/models/llama3/run_pa.sh {模型权重路径} {输出长度}
父主题: 特性介绍