# MindSpeed-LLM **Repository Path**: stepbystepbin/MindSpeed-LLM ## Basic Information - **Project Name**: MindSpeed-LLM - **Description**: 昇腾LLM分布式训练框架 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/ascend/MindSpeed-LLM/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1206 - **Created**: 2025-02-06 - **Last Updated**: 2025-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

GitHub Documentation

MindSpeed-LLM是基于昇腾生态的大语言模型分布式训练框架,旨在为华为 [昇腾芯片](https://www.hiascend.com/) 生态合作伙伴提供端到端的大语言模型训练方案,包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链,如:数据预处理、权重转换、在线推理、基线评估。 ***注 : 原仓名ModelLink更改为MindSpeed-LLM,原包名modellink更改为mindspeed_llm *** --- ## 版本配套表 MindSpeed-LLM的以来配套如下表,安装步骤参考[安装指导](./docs/features/install_guide.md)。
依赖软件 版本
昇腾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的实测预训练性能如下:
模型系列 实验模型 硬件信息 集群规模 MFU
LLAMA2 LLAMA2-7B Atlas 900 A2 PODc 1x8 68.8%
LLAMA2-13B Atlas 900 A2 PODc 1x8 62.2%
LLAMA2-70B Atlas 900 A2 PODc 4x8 55.8%
Mixtral Mixtral-8x7B Atlas 900 A2 PODc 8x8 31.0%
基于 `GPT3-175B` 稠密大模型,从128颗 NPU 扩展到 7968颗 NPU 进行 MFU 与线性度实验,下图是实验数据:

图中呈现了对应集群规模下的 `MFU` 值与集群整体的 `线性度`情况. 计算公式已经放到社区,点击链接可进行参考:[MFU计算公式](https://gitee.com/ascend/ModelLink/wikis/%E6%9C%AF%E8%AF%AD%E5%AE%9A%E4%B9%89/%E5%A4%A7%E6%A8%A1%E5%9E%8B%20MFU%20%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F),[线性度计算公式](https://gitee.com/ascend/ModelLink/wikis/%E6%9C%AF%E8%AF%AD%E5%AE%9A%E4%B9%89/%E7%BA%BF%E6%80%A7%E5%BA%A6%E5%85%AC%E5%BC%8F). #### 预训练方案
方案类别 Legacy Mcore 贡献方
样本拼接 ✅ ✅ 【Ascend】
样本pack ✅ ✅
注:legacy是megatron早期方案,与新的mcore方案在代码设计上存在差异,legacy方案不支持moe模型以及长序列CP切分方案,我们建议优先使用mcore方案。 #### 加速特性
场景 特性名称 Mcore Legacy 贡献方
SPTD并行 张量并行 ✅ ✅ 【Ascend】
流水线并行 ✅ ✅
虚拟流水并行 ✅ ✅
序列并行 ✅ ✅
Noop Layers ✅ ❌
长序列并行 Ascend Ring Attention 长序列并行 ✅ ❌
Ulysses 长序列并行 ✅ ❌
混合长序列并行 ✅ ❌
自适应长序列并行 ✅ ❌
MOE MOE 专家并行 ✅ ❌
MOE 重排通信优化 ✅ ❌
显存优化 参数副本复用 ✅ ✅
分布式优化器 ✅ ✅
Swap Attention ✅ ✅
重计算 ✅ ✅
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 ✅ ✅
### 分布式微调 基于MindSpeed-LLM的实测指令微调性能如下:
模型 硬件 集群 方案 序列 性能 MFU
llama2-7B Atlas 900 A2 PODc 1x8 全参 dynamic 45.7 samples/s -
全参 16K 1.78 samples/s 56.0%
全参 32K 0.79 samples/s 61.9%
llama2-13B Atlas 900 A2 PODc 1x8 全参 dynamic 28.4 samples/s -
llama2-70B Atlas 900 A2 PODc 1x8 LoRA dynamic 11.72 samples/s -
#### 微调方案
方案名称 Mcore Legacy LoRA QLoRA 贡献方
单样本微调 ✅ ✅ ✅ ✅ 【Ascend】
多样本pack微调 ✅ ✅ ✅ ❌ 【NAIE】
多轮对话微调 ✅ ✅ ✅ ❌ 【Ascend】
#### 加速特性
场景 特性 Mcore Legacy 贡献方
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.77 samples/s
全参 16K 0.442 samples/s
Lora dynamic 14.22 samples/s
2x8 全参 32K 0.227 samples/s
#### 偏好对齐方案
算法分类 方案名称 Mcore Legacy LoRA QLoRA 贡献方
偏好对齐 Offline DPO ✅ ❌ ✅ ❌ 【NAIE】
SimPO ✅ ❌ ✅ ❌ 【China Mobile Cloud】
奖励模型 ORM ✅ ❌ ✅ ❌ 【Ascend】
PRM ✅ ❌ ✅ ❌ 【Ascend】
Ray PPO ✅ ❌ ✅ ❌ 【Ascend】
#### 加速特性
场景 特性 Mcore Legacy 贡献方
LoRA CCLoRA ✅ ❌ 【Ascend】
Fused_MLP ✅ ❌ 【Ascend】
QLoRA CCLoRA ✅ ❌ 【Ascend】
Fused_MLP ❌ ❌ 【Ascend】
长序列 长序列CP方案 ✅ ❌ 【Ascend】
## 开发工具链 ### 权重转换 MindSpeed-LLM支持huggingface、megatron-core、megatron-legacy三种格式的权重互转,支持Lora权重合并。权重转换特性参数和使用说明参考[权重转换](./docs/features/checkpoint.md)。
源格式 目标格式 切分特性 lora 贡献方
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 贡献方
预训练 预训练数据处理 ✅ ✅ 【Ascend】
微调 Alpaca风格 ✅ ✅
ShareGPT风格 ✅ ✅
DPO Pairwise数据集处理 ✅ ✅ 【NAIE】
SimPO ✅ ✅
ORM ✅ ✅
PRM PRM数据集处理 ✅ ✅ 【Ascend】
### 在线推理
特性 Mcore Legacy 贡献方
流式推理 ✅ ✅ 【NAIE】
Chat对话 ✅ ✅ 【NAIE】
### 开源数据集评测
特性 数据集 Mcore Legacy 贡献方
开源测评集评测 MMLU ✅ ✅ 【NAIE】
CEval ✅ ✅ 【NAIE】
BoolQ ✅ ✅ 【NAIE】
BBH ✅ ✅ 【NAIE】
AGIEval ✅ ✅ 【NAIE】
HumanEval ✅ ✅ 【NAIE】
### 性能采集
场景 特性 Mcore Legacy 贡献方
性能采集 基于昇腾芯片采集 profiling 数据 ✅ ✅ 【Ascend】
### 高可用性
场景 特性 Mcore Legacy 贡献方
高可用性 基于昇腾芯片开启确定性计算 ✅ ✅ 【Ascend】
基于昇腾芯片开启临终 ckpt 保存 ✅ ✅
## 版本维护策略 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安全声明](https://gitee.com/ascend/ModelLink/wikis/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E5%AE%89%E5%85%A8%E5%A3%B0%E6%98%8E)