用途
InternEvo 是一个开源轻量级训练框架,旨在支持模型预训练,且不需要大量依赖。它用单一代码库覆盖两类场景:在数千张 GPU 的大规模集群上进行预训练,以及在单张 GPU 上进行微调。
主要能力
- 单代码库同时支持大规模集群预训练与单 GPU 微调。
- 官方资料称,其在 1024 张 GPU 上训练时达到近 90% 的加速效率。
- 支持多种并行与训练技术,包括:1F1B Pipeline Parallel、PyTorch FSDP Training、Megatron-LM Tensor Parallel (MTP)、Megatron-LM Sequence Parallel (MSP)、Flash-Attn Sequence Parallel (FSP)、Intern Sequence Parallel (ISP)。
- 提供内存分析(Memory Profiling)、将 ckpt 转换为 HF 格式、以及从 HF 格式还原 ckpt 的能力。
- 提供原始数据 Tokenizer 与 Alpaca 数据 Tokenizer。
- 2024/08/29:支持 huggingface 格式的流式数据集,并新增数据流的详细说明。
- 2024/04/17:支持在 NPU-910B 集群上训练模型。
- 基于该框架持续发布 InternLM-7B 系列与 InternLM-20B 系列等大语言模型。
使用方式
官方给出的基本流程如下:
- 安装指定版本的 torch、torchvision、torchaudio 和 torch-scatter。
- 安装 InternEvo。
- 可选:如需使用 flash-attention 加速训练且环境支持,安装 flash-attention(版本 v2.2.1)。更详细的安装环境或源码安装说明参见 Install Tutorial。
- 准备训练脚本,例如 train.py。详见 Training Tutorial。
- 准备训练或微调数据:可从 huggingface 下载数据集,例如 roneneldan/TinyStories;将 tokenizer 下载到本地路径,例如从 https://huggingface.co/internlm/internlm2-7b/tree/main 下载 special_tokens_map.json、tokenizer.model、tokenizer_config.json、tokenization_internlm2.py 和 tokenization_internlm2_fast.py 到本地 /mnt/petrelfs/hf-internlm2-tokenizer,然后按说明修改配置文件。其他类型数据集的准备参见 Usage Tutorial。
- 配置文件内容以 7B_sft.py 为示例,详见 Usage Tutorial。
- 在 slurm 或 torch 分布式环境中启动训练。slurm 示例为 2 节点 16 卡;torch 示例为 1 节点 8 卡。
适用场景
- 大规模集群上的大语言模型预训练。
- 单 GPU 上的模型微调。
- 需要使用 HuggingFace 格式流式数据集、或需要在 NPU-910B 集群上训练的场景。
- 希望基于 InternLM 系列模型开展训练或研究的开发者与研究者。
限制
资料中未提供关于授权许可、具体收费模式、硬件最低配置、支持的模型规模上限、以及各功能的完整参数说明;缺失事实暂未提供。安装需使用指定版本的 torch、torchvision、torchaudio 与 torch-scatter,且源码安装等更多细节需参考 Install Tutorial。
架构与致谢
系统架构细节参见 System Architecture 文档。项目由上海人工智能实验室及来自不同高校和公司的研究人员共同贡献,特别致谢 flash-attention 与 ColossalAI 两个开源项目。