InternEvo:高效长序列大语言模型训练框架
InternEvo是由上海人工智能实验室和多所大学、公司的研究人员共同贡献的开源项目。它是一个轻量级的训练框架,旨在支持大规模预训练和微调,无需复杂依赖即可在上千GPU的大规模集群上高效训练大语言模型。
主要特点
InternEvo具有以下几个显著特点:
-
高效性能:在1024个GPU上训练时,可以实现接近90%的加速效率。
-
灵活性强:单一代码库即可支持从单GPU微调到上千GPU大规模预训练。
-
功能丰富:支持多种并行训练策略、流式数据集、内存分析等功能。
-
易用性好:安装简单,配置灵活,上手门槛低。
-
开放共享:完全开源,鼓励社区贡献。
系统架构
InternEvo的系统架构主要包括以下几个模块:
-
数据处理模块:支持分词数据和流式数据。
-
模型定义模块:目前支持InternLM和InternLM2系列模型。
-
并行训练模块:实现了多种并行策略,如ZeRO、Pipeline、Tensor、Sequence等。
-
工具模块:包括模型转换、数据处理等辅助工具。
-
配置模块:灵活的配置系统,方便用户自定义训练参数。
快速上手
要开始使用InternEvo,可以按照以下步骤操作:
-
安装依赖:
pip install --extra-index-url https://download.pytorch.org/whl/cu118 torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118 pip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+cu118.html pip install InternEvo
-
准备训练脚本和配置文件
-
准备数据集
-
启动训练:
srun -p internllm -N 2 -n 16 --ntasks-per-node=8 --gpus-per-task=1 python train.py --config ./configs/7B_sft.py
主要功能
InternEvo支持多种高级功能:
-
多种并行训练策略:ZeRO、Pipeline、Tensor、Sequence等。
-
流式数据集:支持高效处理大规模数据。
-
内存分析:帮助优化显存使用。
-
模型转换:支持与Hugging Face格式的相互转换。
-
数据处理工具:支持原始数据和Alpaca格式数据的处理。
性能表现
InternEvo在大规模训练中表现出色。例如,在1024个GPU上训练时,可以实现接近90%的加速效率,这在业界处于领先水平。
基于InternEvo框架训练的InternLM系列模型(如InternLM-7B、InternLM-20B等)在多项评测中都显著优于同等规模的开源模型如LLaMA等。
社区贡献
InternEvo是一个开放的社区项目,欢迎各界开发者参与贡献。贡献方式包括但不限于:
- 提交bug报告和功能建议
- 改进文档
- 添加新功能
- 优化性能
- 分享使用经验
项目维护者会及时审核社区贡献,并合并有价值的改进。
未来展望
InternEvo团队计划在以下方向持续改进:
- 支持更多模型架构
- 进一步优化训练性能
- 增强分布式训练能力
- 完善文档和教程
- 加强与其他开源项目的集成
结语
InternEvo作为一个高效、灵活的大语言模型训练框架,为推动大规模语言模型的研究和应用做出了重要贡献。我们期待更多开发者和研究者能够参与到这个开源项目中来,共同推动自然语言处理技术的进步。
无论您是想要训练自己的大语言模型,还是对分布式训练技术感兴趣,InternEvo都是一个值得尝试和学习的优秀开源项目。让我们一起探索大语言模型的无限可能!