更新日志
更新时间:2024-08-29
v2.1.2.2 2024-08-29
新增
- 支持llama3.1 8B、70B、405B模型
升级
- 训练策略:优化性能,升级 TP Overlap 功能,通过--tp-comm-overlap开启该优化,支持python job、mpi job方式启动训练。
修复
- 修复mpijob在开启TP overlap时初始化失败问题
- 修复多机使用多datasets时找不到so文件的问题
v2.1.1.5 2024-07-16
新增
- 新增离线数据处理工具,可提前将原始文本数据进行格式解析和 tokenizer 编码,训练时支持已离线编码后的数据进行训练,详细使用方式见《训练说明/SFT训练/数据集配置和处理/数据集预处理》章节;
- 新增数据 packing 训练,通过将多条训练样本拼接到一起来加快训练速度,适用于短文本对话场景;该功能也可和离线数据处理工具结合使用;通过--packing-sft-data开启,详见《训练说明/SFT训练/数据集配置和处理/关于数据 Packing 训练说明》章节;
- 集成 BCCL 通信库,默认采用NCCL 通信库,可以通过环境变量来开启 BCCL(当前版本仅支持在A800上使用BCCL,H800及其他型号的GPU暂未支持),详见《高级用法/启用BCCL通信库》章节;
优化
- 新增混合序列并行策略(长序列训练场景):集成
deepspeed ulysses
序列并行方案,支持context parallel + deepspeed ulysess
混合并行,相比全部采用 context parallel 会有明显的性能优化; -
新增
D2D offload
显存优化策略(显存受限场景):通过在 PP stage之间卸载 optimizer 显存,调节 PP Stage 之间显存均衡程度,支持手动设置卸载显存大小;--d2d-optimizer
:开启d2d optimizer功能。--d2d-max-data-volume
:d2d optimizer最大数据量,通常是stage0需要执行d2d的数据量,可通过估算得到。--reduced-data-volume-per-stage:
每个stage递减的d2d数据量,由d2d-max-data-volume
和reduced-data-volume-per-stage计算除stage0之外,其它stage的d2d数据量
。
- 对于 qwen 系列模型,由于 tokenzier 词表大小和 huggingface checkpoint 存在一些出入导致需要额外配置不同的
--make-vocab-size-divisible-by
参数,该版本对于该问题进行了升级,无需额外配置--make-vocab-size-divisible-by
,已用的脚本参数也可以保留继续传递;
非兼容性
- Context-parallel 等序列并行策略,在 SFT 上的支持还需要测试和验证;建议暂不开启
--context-parallel-size
功能;--variable-seq-lengths
参数,在 SFT 训练中系统会根据需求自动判断是否开启,用户无需传递该参数;即使传递,也不会影响和生效; --padding-side
参数,在 SFT 训练中会强制为right
,用户传递该参数将会失效;- 开启
--packing-sft-data
数据拼接训练时,micro_batch_size
系统会强制设置为1
,以确保当前版本底层Attention
算子的正确执行; - 移除
--no-dynamic-attention-mask
参数支持,attention mask
形状系统会根据输入数据自行判断,无需用户控制;
v2.1.0.1 2024-06-21
新增
- 模型支持:支持 Qwen2系列、Mixtral 系列新增 mixtral-8x22B、新增 STDiT 模型(文生视频类);
- 训练方案:新增 SFT 训练支持,支持模型对话模板、支持流式数据读取方式、支持多数据混合训练等,具体可以参考下文说明以及SFT 相关参数说明;
- 性能优化:新增 MoE 通信 overlap 功能,跨机 alltoall 场景有一定优化,可通过
--moe-overlap-dispatcher-count
参数进行通信chuck 划分;
修复
修复 --offload-optimizer
对于 bfloat16
训练的支持;
非兼容性
在长序列场景下做 SFT 训练,当前 context-parallel 功能在 SFT 上的支持还需要测试和验证;建议暂不开启 --context-parallel-size
功能;
v2.0.1.2 2024-05-14
修复
- 修复 Megatron dataset 由于 sample index 创建异常导致的 dataloader 读出大于指定 seq_len 长度的样本,该 bug 可能会进一步引发训练 hang、数据 shape 错误、CPU OOM(读出非常大的数据导致主存不足)等任务异常;
新增
- 模型支持:新增
LLaMA3
系列模型支持; - 支持 CKPT 写加速;
升级指南
1、修复异常索引问题:为了避免新任务复用历史任务生成的异常数据索引,采用新镜像训练前,请检查指定的 data_path 下,是否存在 cache 目录,如果存在,请先删除,后续任务会根据训练配置重建索引信息;
举例说明:假设任务 DATA_PATH=/mnt/cluster/llama3/pile_test/pile-llama_text_document
,那么训练时则会在该目录生成索引缓存
v2.0.0.3 2024-04-19
AIAK-Training-LLM升级至v2.0版本
-
方案架构:
- 抽象
AIAK-Training-LLM
,作为模型训练统一入口,内部简化模型训练启动配置、升级 Model 实现抽象,同时与 Megatron 框架解耦; - 升级
Megatron
框架为最新MegatronCore
版本,集成 AIAK 性能优化策略;
- 抽象
-
模型支持:
- 覆盖
LLaMA
、LLaMA2
、Baichuan
、Baichuan2
、Qwen
、Qwen1.5
、以及Mixtral
系列模型支持; - 新增模型一键配置的功能,通过
--model-name
指定具体模型名称,系统会自动配置模型结构相关的参数,无需指定; - 采用 Huggingface tokenizer 进行数据编码,具体
--tokenizer-type HFTokenizer
指定类型,通过--hf-tokenizer-path $TOKENIZER_PATH
指定 huggingface 目录路径;
- 覆盖
-
训练策略:
- 优化性能,升级 DP Overlap 功能,通过
--overlap-grad-reduce
开启梯度reduce-scatter通信和计算并行,通过--overlap-param-gather
开启参数allgather通信和计算并行; - 优化性能,升级 TP Overlap 功能,通过
--tp-comm-overlap
开启该优化;(依赖 MPI,需按 MPIJob 启动训练) - 优化显存,支持优化器 offload 功能(显存受限场景),支持自动评估 offload 比例,开启方式
--offload-optimizer auto
;
- 优化性能,升级 DP Overlap 功能,通过
-
辅助功能:
- 升级 CKPT 保存和加载,优化器 CKPT 不再按 DP 存储在不同 DP 目录,仅在 DP0 上存储完整信息;好处是,后续扩充或缩减 DP 时,CKPT 无需额外调整,同时 CKPT 转换时也不需要传递 DP 的配置信息;
- 升级 Checkpoint 转换工具,对接 MegatronCore 版本的模型抽象,可以在
Huggingface
和MegatronCore
格式之间转换模型,也支持MegatronCore
和Megatron
格式之间转换模型(不支持优化器转换);