MindSpeed-LLM是基于昇腾生态的大语言模型分布式训练框架,旨在为华为 昇腾芯片 生态合作伙伴提供端到端的大语言模型训练方案,包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链,如:数据预处理、权重转换、在线推理、基线评估。
注 : 原仓名ModelLink更改为MindSpeed-LLM,原包名modellink更改为mindspeed_llm
NEWS !!! 📣📣📣
🚀🚀🚀DeepSeek-R1 系列功能逐步上线!!🚀🚀🚀
包含数据处理、权重转换、在线推理、全参微调
🚀🚀🚀DeepSeek-V3-671B 模型全家桶已上线!!!🚀🚀🚀
权重转换 😊
预训练 😊
🚀🚀🚀DeepSeek-R1-Distill 系列模型已上线!!🚀🚀🚀
COMING SOON !!! 📣📣📣
🚀🚀 DeepSeek-R1-Zero 👋👋
🚀🚀 DeepSeek-R1:SFT、GRPO、Reward、Rejection Sampling 👋👋
🚀🚀 MindSpeed-RL 👋👋
版本配套表
MindSpeed-LLM的以来配套如下表,安装步骤参考安装指导。
| 依赖软件 | 版本 |
|---|---|
| 昇腾NPU驱动 | 在研版本 |
| 昇腾NPU固件 | |
| Toolkit(开发套件) | 在研版本 |
| Kernel(算子包) | |
| NNAL(Ascend Transformer Boost加速库) | |
| Python | >=3.8 |
| PyTorch | 2.1 |
| torch_npu插件 | 在研版本 |
| apex |
注:由于master分支使用在研版本的驱动以及CANN包,因此master上的一些新特性老版本配套可能有不支持情况,要使用稳定版本,请切换到商发分支并下载对应依赖版本进行安装。
预置模型
MindSpeed-LLM目前已内置支持百余个业界常用稠密和MOE大模型的预训练、微调和偏好对齐,预置模型清单详见下表。
| 模型类别 | 模型列表 |
|---|---|
| 稠密模型 | Dense |
| MOE模型 | MOE |
训练方案与特性
MindSpeed-LLM包含分布式预训练、分布式微调、分布式偏好对齐等训练方案。
-
legacy是megatron早期方案,与新的mcore方案在代码设计上存在差异,legacy方案不支持moe模型以及长序列CP切分方案,我们建议优先使用mcore方案。
-
Released表示是否商用发布,未商用发布特性处于内部开发状态,不推荐开发者使用。
分布式预训练
基于MindSpeed-LLM的实测预训练性能如下:
| 模型系列 | 实验模型 | 硬件信息 | 集群规模 | MFU |
|---|---|---|---|---|
| LLAMA2 | LLAMA2-7B | Atlas 900 A2 PODc | 1x8 | 69.0% |
| LLAMA2-13B | Atlas 900 A2 PODc | 1x8 | 64.7% | |
| LLAMA2-70B | Atlas 900 A2 PODc | 4x8 | 44.1% | |
| Mixtral | Mixtral-8x7B | Atlas 900 A2 PODc | 8x8 | 31.7% |
基于 GPT3-175B 稠密大模型,从128颗 NPU 扩展到 7968颗 NPU 进行 MFU 与线性度实验,下图是实验数据:
图中呈现了对应集群规模下的 MFU 值与集群整体的 线性度情况. 计算公式已经放到社区,点击链接可进行参考:MFU计算公式,线性度计算公式.
预训练方案
| 方案类别 | Legacy | Mcore | Released | 贡献方 |
|---|---|---|---|---|
| 样本拼接 | ✅ | ✅ | ✅ | 【Ascend】 |
| 样本pack | ✅ | ✅ | ❌ |
加速特性
| 场景 | 特性名称 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| SPTD并行 | 张量并行 | ✅ | ✅ | ✅ | 【Ascend】 |
| 流水线并行 | ✅ | ✅ | ✅ | ||
| 虚拟流水并行 | ✅ | ✅ | ✅ | ||
| 序列并行 | ✅ | ✅ | ✅ | ||
| Noop Layers | ✅ | ❌ | ✅ | ||
| 长序列并行 | Ascend Ring Attention 长序列并行 | ✅ | ❌ | ✅ | |
| Ulysses 长序列并行 | ✅ | ❌ | ✅ | ||
| 混合长序列并行 | ✅ | ❌ | ✅ | ||
| MOE | MOE 专家并行 | ✅ | ❌ | ✅ | |
| MOE 重排通信优化 | ✅ | ❌ | ✅ | ||
| 显存优化 | 参数副本复用 | ✅ | ✅ | ✅ | |
| 分布式优化器 | ✅ | ✅ | ✅ | ||
| Swap Attention | ✅ | ✅ | ✅ | ||
| 重计算 | ✅ | ✅ | ✅ | ||
| Norm重计算 | ✅ | ❌ | ✅ | ||
| O2 BF16 Optimizer | ✅ | ❌ | ❌ | ||
| 融合算子 | Flash attention | ✅ | ✅ | ✅ | |
| Flash attention variable length | ✅ | ❌ | ✅ | ||
| Fused rmsnorm | ✅ | ✅ | ✅ | ||
| Fused swiglu | ✅ | ✅ | ✅ | ||
| Fused rotary position embedding | ✅ | ✅ | ✅ | ||
| GMM | ✅ | ❌ | ✅ | ||
| Matmul Add | ✅ | ❌ | ✅ | ||
| 通信优化 | 梯度reduce通算掩盖 | ✅ | ✅ | ✅ | |
| Recompute in advance | ✅ | ❌ | ✅ | ||
| 权重all-gather通算掩盖 | ✅ | ❌ | ✅ | ||
| MC2 | ✅ | ✅ | ❌ | ||
| CoC | ✅ | ✅ | ❌ | ||
| Ascend Gloo 存档落盘优化 | ✅ | ✅ | ❌ |
分布式微调
基于MindSpeed-LLM的实测指令微调性能如下:
| 模型 | 硬件 | 集群 | 方案 | 序列 | 性能 | MFU |
|---|---|---|---|---|---|---|
| llama2-7B | Atlas 900 A2 PODc | 1x8 | 全参 | dynamic | 15.87 samples/s | - |
| 全参 | 16K | 1.14 samples/s | 37.4% | |||
| 全参 | 32K | 0.51 samples/s | 48.4% | |||
| llama2-13B | Atlas 900 A2 PODc | 1x8 | 全参 | dynamic | 50.4 samples/s | - |
| llama2-70B | Atlas 900 A2 PODc | 1x8 | LoRA | dynamic | 15.2 samples/s | - |
微调方案
| 方案名称 | Mcore | Legacy | LoRA | QLoRA | Released | 贡献方 |
|---|---|---|---|---|---|---|
| 单样本微调 | ✅ | ✅ | ✅ | ✅ | ✅ | 【Ascend】 |
| 多样本pack微调 | ✅ | ✅ | ✅ | ❌ | ❌ | 【NAIE】 |
| 多轮对话微调 | ✅ | ✅ | ✅ | ❌ | ❌ | 【Ascend】 |
加速特性
| 场景 | 特性 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| LoRA微调 | CCLoRA | ✅ | ✅ | ✅ | 【Ascend】 |
| Fused_MLP | ✅ | ✅ | ✅ | 【Ascend】 | |
| QLoRA微调 | CCLoRA | ❌ | ❌ | ❌ | 【NAIE】 |
| Fused_MLP | ❌ | ❌ | ❌ | 【NAIE】 | |
| 长序列微调 | 长序列CP方案 | ✅ | ❌ | ❌ | 【Ascend】 |
分布式偏好对齐
基于MindSpeed-LLM的实测偏好对齐性能如下:
| 模型 | 硬件 | 算法 | 集群 | 方案 | 序列 | 吞吐 |
|---|---|---|---|---|---|---|
| llama2-7B | Atlas 900 A2 PODc | Offline DPO | 1x8 | 全参 | dynamic | 12.74 samples/s |
| 全参 | 16K | 0.440 samples/s | ||||
| Lora | dynamic | 14.22 samples/s | ||||
| 2x8 | 全参 | 32K | 0.216 samples/s |
偏好对齐方案
| 算法分类 | 方案名称 | Mcore | Legacy | LoRA | QLoRA | Released | 贡献方 |
|---|---|---|---|---|---|---|---|
| 偏好对齐 | Offline DPO | ✅ | ❌ | ✅ | ❌ | ❌ | 【NAIE】 |
| SimPO | ✅ | ❌ | ✅ | ❌ | ❌ | 【China Mobile Cloud】 | |
| 奖励模型 | ORM | ✅ | ❌ | ✅ | ❌ | ❌ | 【Ascend】 |
| PRM | ✅ | ❌ | ✅ | ❌ | ❌ | 【Ascend】 | |
| Ray PPO | ✅ | ❌ | ✅ | ❌ | ❌ | 【Ascend】 | |
| Trl PPO | ✅ | ❌ | ✅ | ❌ | ❌ | 【Ascend】 |
加速特性
| 场景 | 特性 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| LoRA | CCLoRA | ✅ | ❌ | ✅ | 【Ascend】 |
| Fused_MLP | ✅ | ❌ | ✅ | 【Ascend】 | |
| QLoRA | CCLoRA | ✅ | ❌ | ❌ | 【Ascend】 |
| Fused_MLP | ❌ | ❌ | ❌ | 【Ascend】 | |
| 长序列 | 长序列CP方案 | ✅ | ❌ | ❌ | 【Ascend】 |
开发工具链
权重转换
MindSpeed-LLM支持huggingface、megatron-core、megatron-legacy三种格式的权重互转,支持Lora权重合并。权重转换特性参数和使用说明参考权重转换。
| 源格式 | 目标格式 | 切分特性 | lora | 贡献方 | Released |
|---|---|---|---|---|---|
| huggingface | megatron-core | tp、pp、dpp、vpp、cp、ep、loop layer | ❌ | 【Ascend】 | ❌ |
| megatron-legacy | ❌ | ||||
| megatron-core | huggingface | ✅ | |||
| megatron-legacy | tp、pp、dpp、vpp、cp、ep、loop layer | ✅ | |||
| megatron-core | ✅ | ||||
| megatron-legacy | huggingface | ✅ | |||
| megatron-core | tp、pp、dpp、vpp、cp、ep、loop layer | ✅ | |||
| megatron-legacy | ✅ |
数据预处理
MindSpeed-LLM支持预训练、指令微调、RLHF等多种任务的数据预处理。
| 任务场景 | 数据集 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| 预训练 | 预训练数据处理 | ✅ | ✅ | ✅ | 【Ascend】 |
| 微调 | Alpaca风格 | ✅ | ✅ | ✅ | |
| ShareGPT风格 | ✅ | ✅ | ✅ | ||
| DPO | Pairwise数据集处理 | ✅ | ✅ | ✅ | 【NAIE】 |
| SimPO | ✅ | ✅ | ❌ | ||
| ORM | ✅ | ✅ | ❌ | ||
| PRM | PRM数据集处理 | ✅ | ✅ | ❌ | 【Ascend】 |
在线推理
| 特性 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|
| 流式推理 | ✅ | ✅ | ✅ | 【NAIE】 |
| Chat对话 | ✅ | ✅ | ✅ | 【NAIE】 |
| yarn上下文扩展 | ✅ | ❌ | ❌ | 【Ascend】 |
开源数据集评测
| 特性 | 数据集 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| 开源测评集评测 | MMLU | ✅ | ✅ | ❌ | 【NAIE】 |
| CEval | ✅ | ✅ | ❌ | 【NAIE】 | |
| BoolQ | ✅ | ✅ | ❌ | 【NAIE】 | |
| BBH | ✅ | ✅ | ❌ | 【NAIE】 | |
| AGIEval | ✅ | ✅ | ❌ | 【NAIE】 | |
| HumanEval | ✅ | ✅ | ❌ | 【NAIE】 |
性能采集
| 场景 | 特性 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| 性能采集 | 基于昇腾芯片采集 profiling 数据 | ✅ | ✅ | ❌ | 【Ascend】 |
高可用性
| 场景 | 特性 | Mcore | Legacy | Released | 贡献方 |
|---|---|---|---|---|---|
| 高可用性 | 基于昇腾芯片开启确定性计算 | ✅ | ✅ | ❌ | 【Ascend】 |
版本维护策略
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由华为公司的下列部门以及昇腾生态合作伙伴联合贡献 :
华为公司:
- 计算产品线:Ascend
- 公共开发部:NAIE
- 全球技术服务部:GTS
- 华为云计算:Cloud
生态合作伙伴:
- 移动云(China Mobile Cloud):大云震泽智算平台
感谢来自社区的每一个PR,欢迎贡献 MindSpeed-LLM。
安全声明
免责声明
致MindSpeed-LLM使用者
- MindSpeed-LLM提供的模型仅供您用于非商业目的。
- 对于各模型,MindSpeed-LLM平台仅提示性地向您建议可用于训练的数据集,华为不提供任何数据集,如您使用这些数据集进行训练,请您特别注意应遵守对应数据集的License,如您因使用数据集而产生侵权纠纷,华为不承担任何责任。
- 如您在使用MindSpeed-LLM模型过程中,发现任何问题(包括但不限于功能问题、合规问题),请在Gitee提交issue,我们将及时审视并解决。
致数据集所有者
如果您不希望您的数据集在MindSpeed-LLM中的模型被提及,或希望更新MindSpeed-LLM中的模型关于您的数据集的描述,请在Gitee提交issue,我们将根据您的issue要求删除或更新您的数据集描述。衷心感谢您对MindSpeed-LLM的理解和贡献。
License声明
Ascend MindSpeed-LLM提供的模型,如模型目录下存在License的,以该License为准。如模型目录下不存在License的,以Apache 2.0许可证许可,对应许可证文本可查阅Ascend MindSpeed-LLM根目录。

