Go to file
wucong 3f52981fb0 !1962 修复llama2-7b训练16步左右oom
Merge pull request !1962 from wucong/fix_oom
2024-11-28 14:16:08 +00:00
ci
configs/finetune
docs
examples
modellink
sources/images
tests
.gitignore
convert_ckpt.py
evaluation.py
inference.py
LICENSE
OWNERS
posttrain_gpt.py
preprocess_data.py
pretrain_gpt.py
README.md
requirements.txt
SECURITYNOTE.md
setup.py
Third_Party_Open_Source_Software_Notice

GitHub Documentation

MindSpeed-LLM作为昇腾大模型训练框架旨在为华为 昇腾芯片 提供端到端的大语言模型训练方案, 包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链。


MindSpeed-LLM 大模型训练框架功能特性概览

训练方案

  • 分布式预训练:预训练方案/并行策略/加速算法/融合算子
  • 分布式指令微调:指令微调方案/Prompt模板/动态padding/长序列方案
  • 分布式偏好对齐:偏好对齐方案/DPO/奖励模型
  • 开发工具链:权重转换/数据处理/分布式推理/分布式评估
  • 昇腾工具链Profiling采集/确定性计算/高可用

预置模型

研发中特性与模型


分布式预训练

【预训练实测集群性能与线性度】

模型系列 实验模型 硬件信息 集群规模 MFU
LLAMA2 LLAMA2-7B Atlas 900 A2 PODc 1x8 68.8%
LLAMA2-13B Atlas 900 A2 PODc 1x8 57.4%
LLAMA2-70B Atlas 900 A2 PODc 4x8 55.8%

基于 GPT3-175B 稠密大模型从128颗 NPU 扩展到 7968颗 NPU 进行 MFU 与线性度实验,下图是实验数据:

图中呈现了对应集群规模下的 MFU 值与集群整体的 线性度情况. 计算公式已经放到社区,点击链接可进行参考:MFU计算公式线性度计算公式.

【并行策略/加速算法/显存优化/融合算子】

场景 特性名称 Mcore Legacy 贡献方
SPTD并行 张量并行 【昇腾】
流水线并行 【昇腾】
虚拟流水并行 【昇腾】
序列并行 【昇腾】
Noop Layers 【昇腾】
长序列并行 Ascend Ring Attention 长序列并行 【昇腾】
Ulysses 长序列并行 【昇腾】
混合长序列并行 【昇腾】
自适应长序列并行 【计算研究部】
MOE MOE 专家并行 【昇腾】
MOE 重排通信优化 【计算研究部】
显存优化 参数副本复用 【计算算法部】
分布式优化器 【昇腾】
Swap Attention 【计算研究部】
重计算 【计算研究部】
融合算子 Flash attention 【昇腾】
Flash attention variable length 【昇腾】
Fused rmsnorm 【昇腾】
Fused swiglu 【昇腾】
Fused rotary position embedding 【昇腾】
GMM 【昇腾】
Matmul Add 【昇腾】
通信掩盖 梯度reduce通算掩盖 【昇腾】
Recompute in advance 【昇腾】
权重all-gather通算掩盖 【昇腾】
MC2 【昇腾】

分布式指令微调

【指令微调实测性能】

模型 硬件 集群 框架 方案 序列 性能
llama2-7B Atlas 900 A2 PODc 1x8 MindSpeed-LLM + NPU 全参 dynamic 45.7 samples/s
DeepSpeed + NPU 全参 dynamic 40.4 samples/s
DeepSpeed + 参考 全参 dynamic 46.5 samples/s
MindSpeed-LLM + NPU 全参 16K 1.455 samples/s
DeepSpeed + 参考 全参 16K 1.003 samples/s
MindSpeed-LLM + NPU 全参 32K 0.727 samples/s
DeepSpeed + 参考 全参 32K 0.4 samples/s
llama2-13B Atlas 900 A2 PODc 1x8 MindSpeed-LLM + NPU 全参 dynamic 28.4 samples/s
DeepSpeed + NPU 全参 dynamic 17.8 samples/s
DeepSpeed + 参考 全参 dynamic 24.9 samples/s
llama2-70B Atlas 900 A2 PODc 1x8 MindSpeed-LLM + NPU LoRA dynamic 11.72 samples/s
DeepSpeed + 参考 LoRA dynamic 3.489 samples/s

【指令微调特性】

场景 特性名称 Mcore Legacy 贡献方
微调数据集支持格式 Alpaca 风格 【昇腾】
ShareGPT 风格 【昇腾】
全参微调 单样本微调 【昇腾】
多样本pack微调 【NAIE】
多轮对话微调 【昇腾】
长序列方案 【NAIE】
低参微调 LoRA 微调 【NAIE】
CCLoRA 【计算算法部】

分布式偏好对齐

【偏好对齐实测性能】

模型 硬件 算法 集群 方案 序列 吞吐
llama2-7B Atlas 900 A2 PODc Offline DPO 1x8 全参 dynamic 12.77 samples/s
全参 16K 0.442 samples/s
Lora dynamic 9.79 samples/s
2x8 全参 32K 0.227 samples/s

【偏好对齐特性】

场景 特性名称 Mcore Legacy 贡献方
数据预处理 Pairwise数据集处理 【NAIE】
偏好对齐 Offline DPO 【NAIE】
SimPO 【China Mobile Cloud】
奖励模型 ORM 【昇腾】

开发工具链

场景 特性 Mcore Legacy 贡献方
权重转换 Huggingface 与 Megatron 互转 【昇腾】
数据处理 预训练数据处理 【昇腾】
Alpaca风格指令微调数据处理 【昇腾】
ShareGPT风格指令微调数据处理 【昇腾】
Pairwise数据集处理 【NAIE】
分布式推理 流式推理 【NAIE】
Chat对话 【NAIE】
分布式评估 开源测评集评测 【NAIE】

昇腾工具链

场景 特性 Mcore Legacy 贡献方
性能采集分析 基于昇腾芯片采集 profiling 数据 【昇腾】
高可用性 基于昇腾芯片开启确定性计算 【昇腾】
基于昇腾芯片开启临终 ckpt 保存 【计算研究部】

版本配套与维护策略

依赖软件 版本 软件安装指南 推荐硬件形态
昇腾NPU驱动 在研版本 驱动固件安装指南 Atlas 900 A2 PODc
昇腾NPU固件
Toolkit开发套件 在研版本 CANN 软件安装指南
Kernel算子包
NNALAscend Transformer Boost加速库
PyTorch 在研版本 Ascend Extension for PyTorch 配置与安装
torch_npu插件
apex

MindSpeed-LLM版本有以下五个维护阶段

状态 时间 说明
计划 1—3 个月 计划特性
开发 3 个月 开发特性
维护 6-12 个月 合入所有已解决的问题并发布版本针对不同的MindSpeed-LLM版本采取不同的维护策略常规版本和长期支持版本维护周期分别为6个月和12个月
无维护 0—3 个月 合入所有已解决的问题,无专职维护人员,无版本发布
生命周期终止EOL N/A 分支不再接受任何修改

MindSpeed-LLM已发布版本维护策略

MindSpeed-LLM版本 对应标签 维护策略 当前状态 发布时间 后续状态 EOL日期
1.0.0 \ 常规版本 维护 2024/12/30 预计2025/06/30起无维护
1.0.RC3 v1.0.RC3.0 常规版本 维护 2024/09/30 预计2025/03/30起无维护
1.0.RC2 v1.0.RC2.0 常规版本 EOL 2024/06/30 生命周期终止 2024/12/30
1.0.RC1 v1.0.RC1.0 常规版本 EOL 2024/03/30 生命周期终止 2024/9/30
bk_origin_23 \ Demo EOL 2023 生命周期终止 2024/6/30

致谢

MindSpeed-LLM由华为公司的下列部门以及昇腾生态合作伙伴联合贡献

华为公司:

  • 昇腾计算产品部
  • 计算算法部
  • 计算研究部
  • 公共开发部NAIE
  • 全球技术服务部GTS
  • 华为云计算
  • 昇腾计算生态使能部

生态合作伙伴:

  • 移动云China Mobile Cloud大云震泽智算平台

感谢来自社区的每一个PR欢迎贡献 MindSpeed-LLM


安全声明

MindSpeed-LLM安全声明