支持序列并行的LLaMA-Factory
原标题:一行代码Post-Train任意长序列!360智脑开源360-LLaMA-Factory
文章来源:机器之心
内容字数:8718字
360智脑开源360-LLaMA-Factory:轻松实现大模型长序列后训练
机器之心AIxiv专栏报道了360智脑开源的360-LLaMA-Factory项目。该项目基于LLaMA-Factory,新增序列并行功能,显著提升了大模型长序列后训练的能力。此举解决了现有开源框架在长序列后训练方面存在的不足,为处理复杂长文本任务、多帧视频理解任务以及高计算量的大模型提供了强有力的支持。
1. 项目背景与简介
随着大模型处理长序列的需求日益增长,预训练和后训练阶段都需要支持更长序列数据的训练。虽然预训练阶段已有Megatron-LM等框架支持序列并行,但后训练阶段因算法多样性和需求灵活性,缺乏一个兼顾并行策略、算法多样性、GPU显存优化和易用性的框架。LLaMA-Factory作为用户最多的开源后训练框架,虽然功能丰富,但在长序列支持上仍有欠缺,尤其缺乏序列并行功能。
360智脑基于LLaMA-Factory开发了360-LLaMA-Factory,填补了这一空白。该项目通过添加一行代码sequence_parallel_size: 16
即可实现任意长度的序列后训练,只需按需增加GPU卡数即可。该项目已在内部经过严格验证,并提交了Pull Request给LLaMA-Factory主仓。
2. 长序列及其后训练
长序列大模型训练面临的关键挑战是激活显存随序列长度大幅增加。虽然一些技术如unsloth、liger kernel和LoRA可以降低显存占用,但效果有限。序列并行是解决这一问题的有效途径,它将长序列切分到多张GPU卡上计算,避免单卡处理过长序列。然而,序列并行的实现难度较大,需要复杂的通信和attention计算修改。
360-LLaMA-Factory对现有的一些支持序列并行的开源框架进行了调研,发现它们存在一些问题,例如实现错误、算法支持不全、更新维护不及时等。360-LLaMA-Factory在继承LLaMA-Factory、ring-flash-attention和EasyContext等开源项目的基础上,进行了模块化改进和优化,并对SFT和DPO训练器进行了适配。
3. 360-LLaMA-Factory框架解析
360-LLaMA-Factory通过模块化封装,对原始代码修改最小化。它在model_args
中添加参数并抽象出apply_sequence_parallel
函数来修改模型,并用decorator抽象数据处理函数,最后在Trainer中进行loss计算的reduce汇总。针对SFT和DPO,进行了最小化的定制化修改,并通过测试验证了其正确性。
4. 360-LLaMA-Factory效果验证
360-LLaMA-Factory内部已用于训练开源模型360Zhinao2-7B-Chat-360k。通过小数据集测试,验证了序列并行对训练曲线的影响微乎其微。粗粒度压测表明,8卡80G的配置下,SFT和DPO训练可支持几十到几百k的超长序列。
5. 总结
360-LLaMA-Factory通过简单易用的方式实现了长序列后训练,为大模型应用提供了有力支持。其模块化设计、正确性验证以及高效的性能使其成为一个值得推荐的开源项目。欢迎开发者使用和贡献代码。
联系作者
文章来源:机器之心
作者微信:
作者简介:专业的人工智能媒体和产业服务平台