From 1c1e1006aa6e80eeab9b593819d41ebd10366776 Mon Sep 17 00:00:00 2001
From: passioningsun
Date: Fri, 12 Sep 2025 16:07:41 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=A8=A1=E6=9D=BF=E6=95=B4?=
=?UTF-8?q?=E6=94=B9Core=E4=B8=BB=E9=A1=B5Readme=20+=20=E5=BF=AB=E9=80=9F?=
=?UTF-8?q?=E4=B8=8A=E6=89=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 958 +++++++++++++++--------------
docs/user-guide/getting_started.md | 169 +++--
2 files changed, 615 insertions(+), 512 deletions(-)
diff --git a/README.md b/README.md
index e4adba6f..ef7dbeaf 100644
--- a/README.md
+++ b/README.md
@@ -14,33 +14,65 @@
+
# 简介
-MindSpeed Core 是针对华为[昇腾设备](https://www.hiascend.com/)的大模型加速库。
+---
+
+
-大模型训练是一种非常复杂的过程,涉及到许多技术和挑战,其中大模型训练需要大量的显存资源是一个难题,对计算卡提出了不小的挑战。
-为了在单个计算卡显存资源不足时,可以通过多张计算卡进行计算,业界出现了类似 Megatron、DeepSpeed 等第三方大模型加速库,对模型、输入数据等进行切分并分配到不同的计算卡上,最后再通过集合通信对结果进行汇总。
+MindSpeed Core :华为[昇腾设备](https://www.hiascend.com/)的大模型加速库,旨在让客户大模型业务快速迁移至昇腾设备,并且支持昇腾专有算法,确保开箱可用。
-昇腾提供 MindSpeed Core 加速库,使能客户大模型业务快速迁移至昇腾设备,并且支持昇腾专有算法,确保开箱可用。
+由于大模型训练是一种非常复杂的过程,涉及到许多技术和挑战,其中大模型训练的一个难题是需要大量的显存资源,这对计算卡数量的要求很高。
-此外在 MindSpeed Core 加速库的基础之上也提供了大语言模型、多模态模型以及强化学习模型套件加速库:
+当单张计算卡显存资源不足时,可以通过多张计算卡进行计算。为此,业界出现了类似 Megatron、DeepSpeed 等第三方大模型加速库,这可以将模型和输入数据等进行切分并分配到不同的计算卡上,最后再通过集合通信对结果进行汇总,这一方式有效解决了单张计算卡显存资源不足的问题。
+
+在 MindSpeed Core 加速库的基础之上也提供了大语言模型、多模态模型以及强化学习模型套件加速库:
- 📝 大语言模型库: [MindSpeed LLM](https://gitee.com/ascend/MindSpeed-LLM)
- 🖼️ 多模态模型库: [MindSpeed MM](https://gitee.com/ascend/MindSpeed-MM)
- 🖥️ 强化学习加速库: [MindSpeed RL](https://gitee.com/ascend/MindSpeed-RL)
+
+
+# 最新消息
+
---
-# 📣 Latest News
-- [May 21, 2025]: 🚀 MindSpeed Core 支持Mcore 0.12.1版本。
-> 注: 当前版本初步支持两种版本的transformer实现。如需回溯老版本transformer实现,需要用户配置参数`--transformer-impl local`。
+
+- [May 21, 2025]: MindSpeed Core 支持 Mcore 0.12.1版本。
+
+> 注意: 当前版本仅支持local后端的Transformer实现,需要用户配置参数`--transformer-impl local`。Transformer_engine后端实现正在筹备中,敬请期待。
+
+
+
+# 版本说明
---
+
+
+MindSpeed Core 对应版本配套表如下:
+
+| 软件 | 版本 |
+|------------------|--------------------------|
+| MindSpeed Core分支 | master |
+| Mcore | 0.12.1 |
+| CANN | 8.2.RC1 |
+| PyTorch | 2.1.0、2.6.0 |
+| torch_npu | 7.1.RC1 |
+| Python | Python3.9.x、Python3.10.x |
+
+更多具体版本说明请参考:[版本配套表](https://gitee.com/ascend/MindSpeed/blob/2.1.0_core_r0.12.1/docs/user-guide/installation.md#%E7%89%88%E6%9C%AC%E9%85%8D%E5%A5%97%E8%A1%A8)
+
# 安装
-MindSpeed Core拉取源码后使用pip命令行安装`pip install -e MindSpeed`,具体请参考 [部署文档](./docs/user-guide/installation.md) 安装 MindSpeed Core 指定分支及其依赖软件。
+---
+
+
+
+MindSpeed Core 拉取源码后使用 pip 命令行安装`pip install -e MindSpeed`,具体请参考 [部署文档](./docs/user-guide/installation.md) 安装 MindSpeed Core 指定分支及其依赖软件。
获取并切换 Megatron-LM 版本至 core_v0.12.1 版本,可参考:
```shell
@@ -49,21 +81,17 @@ MindSpeed Core拉取源码后使用pip命令行安装`pip install -e MindSpeed`
git checkout core_v0.12.1
```
-当前版本配套表如下:
+# 快速上手
-| 软件 | 版本 |
-|------------------|--------------------------|
-| MindSpeed Core分支 | master |
-| Mcore版本 | 0.12.1 |
-| CANN版本 | 8.2.RC1 |
-| PyTorch | 2.1.0、2.6.0 |
-| torch_npu版本 | 7.1.RC1 |
-| Python版本 | Python3.9.x、Python3.10.x |
+---
-# 快速上手
-使用MindSpeed Core仅须增加一行代码,即可在昇腾训练设备上运行Megatron-LM,并进一步参考[特性介绍](#特性介绍) 使能MindSpeed的各项加速特性。
+## 概述
+
+使用 MindSpeed Core 仅须增加一行代码,即可在昇腾训练设备上运行Megatron-LM,并进一步参考[特性介绍](#特性介绍) 使能MindSpeed的各项加速特性。
+
+## 操作方法
以 GPT 模型为例:在 Megatron-LM 目录下修改`pretrain_gpt.py`文件,在`import torch`下新增一行:`import mindspeed.megatron_adaptor`,即如下修改:
@@ -75,52 +103,62 @@ MindSpeed Core拉取源码后使用pip命令行安装`pip install -e MindSpeed`
import inspect
```
-
具体操作可以参考[快速上手指导](./docs/user-guide/getting_started.md)。
----
# 加速特性分级说明
+---
+
+
+
MindSpeed Core 加速特性分为三个层级,用户可根据实际需求选择通过设置启动脚本中的 `--optimization-level {层级}` 参数来自定义开启的优化层级。该参数支持以下配置:
-
-
-
- | 层级 |
- 层级名称 |
- 介绍 |
-
-
-
-
- | 0 |
- 基础功能兼容 |
- 提供Megatron-LM框架对NPU的基本功能适配。 |
-
-
- | 1 |
- 亲和性增强🔥 |
- 在L0基础上使能部分融合算子与昇腾亲和计算改写。 |
-
-
- | 2 |
- 加速特性使能🔥🔥 |
- 默认值。在L0、L1基础上开启更丰富的加速特性,加速特性通常通过具体参数使能,可参考"特性介绍"章节。 |
-
-
+
+
+ | 层级 |
+ 层级名称 |
+ 介绍 |
+
+
+
+ | 0 |
+ 基础功能兼容 |
+ 提供Megatron-LM框架对NPU的基本功能适配。 |
+
+
+
+ | 1 |
+ 亲和性增强 |
+ 在L0基础上使能部分融合算子与昇腾亲和计算改写。 |
+
+
+
+ | 2 |
+ 加速特性使能 |
+ 默认值。在L0、L1基础上开启更丰富的加速特性,加速特性通常通过具体参数使能,可参考“特性介绍”章节。 |
+
+
+
# 特性介绍
-MindSpeed 特性由七大模块组成,分别为:megetron特性支持、并行策略特性、内存优化特性、亲和计算特性、通信优化特性、关键场景特性以及多模态特性。其中【Released】表示是否商用发布,原型特性为非商用发布。
-- 特性的介绍中说明了对应特性的应用场景及使用说明。一般而言,在脚本中加入相关参数即可轻松使用对应特性。🛰️
+---
+
+
+
+MindSpeed 特性由 Megetron 特性支持、并行策略特性、内存优化特性、亲和计算特性、通信优化特性、关键场景特性以及多模态特性七大特性组成。其中【Released】表示商用发布,原型特性为非商用发布。
+
+- 特性的介绍中说明了对应特性的应用场景及使用说明。一般而言,在脚本中加入相关参数即可轻松使用对应特性。
+
+- MindSpeed 加速特性仅支持 Mcore,这也是 Megatron 在v0.6.0版本后主推分支,也是当前版本的默认分支。
-- MindSpeed 加速特性仅支持mcore,这也是megatron在v0.6.0版本后主推分支,也是当前版本的默认分支。🛰️
+- 当前大模型训练主要使用bf16数据类型,以下特性若无特殊声明原则上兼容fp16, 如使用其它数据类型遇到问题可提交 issue, 我们会快速响应。
+
+- 注意:在Megatron_core_r0.9.0后,alltoall dispatcher进行了调整,原版本 alltoall dispatcher 重命名为 alltoall_seq。MindSpeed MoE 特性对各分支的支持情况,见各特性说明。
-- 当前大模型训练主要使用bf16数据类型,以下特性若无特殊声明原则上兼容fp16, 如使用其它数据类型遇到问题可提交issue, 我们会快速响应。🛰️
-- 注意❗:在megatron_core_r0.9.0后,alltoall dispatcher进行了调整,原版本alltoall dispatcher重命名为alltoall_seq。MindSpeed MoE特性对各分支的支持情况,见各特性说明。
## Megatron特性支持
@@ -188,16 +226,6 @@ MindSpeed 特性由七大模块组成,分别为:megetron特性支持、并
link |
❌ |
-
- | Megatron Transformer Engine |
- link |
- ❌ |
-
-
- | Megatron Multi-head Latent Attention |
- link |
- ❌ |
-
@@ -248,430 +276,447 @@ MindSpeed 特性由七大模块组成,分别为:megetron特性支持、并
## 内存优化特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend 激活函数重计算 |
+ link |
+ ✅ |
+
+
+
+ | Ascend 重计算流水线独立调度 |
+ link |
+ ✅ |
+
+
+
+ | Ascend Mask归一 |
+ link |
+ ✅ |
+
+
+
+ | Ascend BF16 参数副本复用 |
+ link |
+ ✅ |
+
+
+
+ | Ascend swap_attention |
+ link |
+ ✅ |
+
- | Ascend 激活函数重计算 |
- link |
- ✅ |
-
-
- | Ascend 重计算流水线独立调度 |
- link |
- ✅ |
-
-
- | Ascend Mask归一 |
- link |
- ✅ |
-
-
- | Ascend BF16 参数副本复用 |
- link |
- ✅ |
-
-
- | Ascend swap_attention |
- link |
- ✅ |
-
-
- | Ascend Norm重计算 |
- link |
- ✅ |
-
+ Ascend Norm重计算 |
+ link |
+ ✅ |
+
+
- | Ascend Hccl Buffer 自适应 |
- link |
- ✅ |
-
+ Ascend Hccl Buffer 自适应 |
+ link |
+ ✅ |
+
+
- | Ascend Swap Optimizer |
- link |
- ✅ |
-
+ Ascend Swap Optimizer |
+ link |
+ ✅ |
+
+
- | Virtual Optimizer |
- link |
- ✅ |
-
-
+ Virtual Optimizer |
+ link |
+ ✅ |
+
## 亲和计算特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend rms_norm 融合算子 |
+ link |
+ ✅ |
+
+
+
+ | Ascend swiglu 融合算子 |
+ link |
+ ✅ |
+
-
- | Ascend rms_norm 融合算子 |
- link |
- ✅ |
-
-
- | Ascend swiglu 融合算子 |
- link |
- ✅ |
-
-
- | Ascend rotary_embedding 融合算子 |
- link |
- ✅ |
-
-
- | Ascend flash attention |
- link |
- ✅ |
-
-
- | Ascend Moe Token Permute and Unpermute 融合算子 |
- link |
- ✅ |
-
-
- | Ascend npu_matmul_add_fp32 梯度累加融合算子 |
- link |
- ✅ |
-
-
- | Ascend 计算通信并行优化 |
- link |
- ❌ |
-
-
- | Ascend MC2 |
- link |
- ❌ |
-
-
- | Ascend fusion_attention_v2 |
- link |
- ❌ |
-
-
+
+ | Ascend rotary_embedding 融合算子 |
+ link |
+ ✅ |
+
+
+
+ | Ascend flash attention |
+ link |
+ ✅ |
+
+
+
+ | Ascend Moe Token Permute and Unpermute 融合算子 |
+ link |
+ ❌ |
+
+
+
+ | Ascend npu_matmul_add_fp32 梯度累加融合算子 |
+ link |
+ ✅ |
+
+
+
+ | Ascend 计算通信并行优化 |
+ link |
+ ❌ |
+
+
+
+ | Ascend MC2 |
+ link |
+ ❌ |
+
+
+
+ | Ascend fusion_attention_v2 |
+ link |
+ ❌ |
+
## 通信优化特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
-
- | Ascend Gloo 存档落盘优化 |
- link |
- ✅ |
-
-
- | Ascend 高维张量并行 |
- link |
- ✅ |
-
-
-
+
+ | Ascend Gloo 存档落盘优化 |
+ link |
+ ✅ |
+
+
+
+ | Ascend 高维张量并行 |
+ link |
+ ✅ |
+
+
## Mcore MoE特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
-
-
- | Ascend Megatron MoE GMM |
- link |
- ✅ |
-
-
- | Ascend Megatron MoE Allgather Dispatcher 性能优化 |
- link |
- ✅ |
-
-
- | Ascend Megatron MoE Alltoall Dispatcher 性能优化 |
- link |
- ✅ |
-
-
- | Ascend Megatron MoE TP拓展EP |
- link |
- ✅ |
-
-
- | Megatron MoE alltoall dispatcher分支通信隐藏优化 |
- link |
- ❌ |
-
-
- | Megatron MoE allgather dispatcher分支通信隐藏优化 |
- link |
- ✅ |
-
-
- | Ascend 共享专家 |
- link |
- ✅ |
-
-
- | 1F1B Overlap |
- link |
- ✅ |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend Megatron MoE GMM |
+ link |
+ ✅ |
+
+
+
+ | Ascend Megatron MoE Allgather Dispatcher 性能优化 |
+ link |
+ ✅ |
+
+
+
+ | Ascend Megatron MoE Alltoall Dispatcher 性能优化 |
+ link |
+ ✅ |
+
+
+
+ | Ascend Megatron MoE TP拓展EP |
+ link |
+ ✅ |
+
+
+
+ | Ascend 共享专家 |
+ link |
+ ✅ |
+
+
+
+ | 1F1B Overlap |
+ link |
+ ✅ |
+
+
## 关键场景特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
-
-
- | Ascend EOD Reset训练场景 |
- link |
- ✅ |
-
-
- | Ascend alibi |
- link |
- ❌ |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend EOD Reset训练场景 |
+ link |
+ ✅ |
+
+
+
+ | Ascend alibi |
+ link |
+ ❌ |
+
## 多模态特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
-
-
- | Ascend fused ema adamw优化器 |
- link |
- ❌ |
-
-
- | Ascend PP支持动态形状 |
- link |
- ✅ |
-
-
- | Ascend PP支持多参数传递 |
- link |
- ✅ |
-
-
- | Ascend PP支持多参数传递和动态形状 |
- link |
- ✅ |
-
-
- | Ascend 非对齐线性层 |
- link |
- ✅ |
-
-
- | Ascend 非对齐Ulysses长序列并行 |
- link |
- ✅ |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend fused ema adamw优化器 |
+ link |
+ ❌ |
+
+
+
+ | Ascend PP支持动态形状 |
+ link |
+ ✅ |
+
+
+
+ | Ascend PP支持多参数传递 |
+ link |
+ ✅ |
+
+
+
+ | Ascend PP支持多参数传递和动态形状 |
+ link |
+ ✅ |
+
+
+
+ | Ascend 非对齐线性层 |
+ link |
+ ✅ |
+
+
+
+ | Ascend 非对齐Ulysses长序列并行 |
+ link |
+ ✅ |
+
## 其它特性
-
-
-
- | 特性名称 |
- 介绍 |
- Released |
-
-
-
-
- | Ascend TFLOPS计算 |
- link |
- ✅ |
-
-
- | Ascend Auto Settings 并行策略自动搜索系统 |
- link |
- ❌ |
-
-
- | Ascend 确定性计算 |
- link |
- ❌ |
-
-
+
+
+ | 特性名称 |
+ 介绍 |
+ Released |
+
+
+
+ | Ascend TFLOPS计算 |
+ link |
+ ✅ |
+
+
+
+ | Ascend Auto Settings 并行策略自动搜索系统 |
+ link |
+ ❌ |
+
+
+
+ | Ascend 确定性计算 |
+ link |
+ ❌ |
+
## 自定义算子
-昇腾训练自定义算子统一由torch_npu提供API,以下API预计2025年q4起不维护,请优先使用torch_npu提供的自定义算子,如有新需求或问题可提issue反馈,我们会尽快回复。
+昇腾训练自定义算子统一由torch_npu提供API,以下API预计2025年Q4起不维护,请优先使用torch_npu提供的自定义算子,如有新需求或问题可提issue反馈,我们会尽快回复。
部分自定义算子设置为公开接口,公开接口设置说明请参照 MindSpeed 安全声明中的[公开接口声明](SECURITYNOTE.md#公开接口声明),具体对外接口细节参照以下算子对应的手册链接。
-
-
-
- | 自定义算子名称 |
- 介绍 |
- Released |
-
-
+
+
+ | 自定义算子名称 |
+ 介绍 |
+ Released |
+
+
+
+ | npu_dropout_add_layer_norm |
+ link |
+ ✅ |
+
+
+
+ | npu_rotary_position_embedding |
+ link |
+ ✅ |
+
+
+
+ | fusion_attention |
+ link |
+ ✅ |
+
+
+
+ | rms_norm |
+ link |
+ ✅ |
+
+
+
+ | swiglu |
+ link |
+ ✅ |
+
+
+
+ | npu_mm_all_reduce_add_rms_norm |
+ link |
+ ✅ |
+
+
+
+ | npu_mm_all_reduce_add_rms_norm_ |
+ link |
+ ✅ |
+
+
+
+ | npu_gmm |
+ link |
+ ✅ |
+
+
+
+ | npu_grouped_mat_mul_all_reduce |
+ link |
+ ✅ |
+
-
- | npu_dropout_add_layer_norm |
- link |
- ✅ |
-
-
- | npu_rotary_position_embedding |
- link |
- ✅ |
-
-
- | fusion_attention |
- link |
- ✅ |
-
-
- | rms_norm |
- link |
- ✅ |
-
-
- | swiglu |
- link |
- ✅ |
-
-
- | npu_mm_all_reduce_add_rms_norm |
- link |
- ✅ |
-
-
- | npu_mm_all_reduce_add_rms_norm_ |
- link |
- ✅ |
-
-
- | npu_gmm |
- link |
- ✅ |
-
-
- | npu_grouped_mat_mul_all_reduce |
- link |
- ✅ |
-
-
- | npu_ring_attention_update |
- link |
- ✅ |
-
-
- | npu_matmul_add_fp32 |
- link |
- ✅ |
-
-
- | npu_groupmatmul_add_fp32 |
- link |
- ✅ |
-
-
- | npu_apply_fused_ema_adamw |
- link |
- ❌ |
-
-
- | lcal_coc |
- link |
- ❌ |
-
-
- | ffn |
- link |
- ❌ |
-
-
- | npu_all_to_all_all_gather_bmm |
- link |
- ❌ |
-
-
- | npu_bmm_reduce_scatter_all_to_all |
- link |
- ❌ |
-
-
- | quant_gmm |
- link |
- ❌ |
-
-
- | npu_apply_fused_adamw_v2 |
- link |
- ✅ |
-
-
+
+ | npu_ring_attention_update |
+ link |
+ ✅ |
+
+
+
+ | npu_matmul_add_fp32 |
+ link |
+ ✅ |
+
+
+
+ | npu_groupmatmul_add_fp32 |
+ link |
+ ✅ |
+
+
+
+ | npu_apply_fused_ema_adamw |
+ link |
+ ❌ |
+
+
+
+ | lcal_coc |
+ link |
+ ❌ |
+
+
+
+ | ffn |
+ link |
+ ❌ |
+
+
+
+ | npu_all_to_all_all_gather_bmm |
+ link |
+ ❌ |
+
+
+
+ | npu_bmm_reduce_scatter_all_to_all |
+ link |
+ ❌ |
+
+
+
+ | quant_gmm |
+ link |
+ ❌ |
+
+
+
+ | npu_apply_fused_adamw_v2 |
+ link |
+ ✅ |
+
+
+# 分支维护策略
+
---
-# 分支维护策略
-🛠️ MindSpeed 版本分支的维护阶段如下:
+ MindSpeed 版本分支的维护阶段如下:
| **状态** | **时间** | **说明** |
| ------------------- | -------- |----------------------------------------------------------------------|
-| 计划 🕐 | 1-3 个月 | 计划特性 |
-| 开发 🕔 | 3 个月 | 开发特性 |
-| 维护 🕚 | 6-12 个月| 合入所有已解决的问题并发布版本,针对不同的MindSpeed 版本采取不同的维护策略,常规版本和长期支持版本维护周期分别为6个月和12个月 |
-| 无维护 🕛 | 0-3 个月 | 合入所有已解决的问题,无专职维护人员,无版本发布 |
-| 生命周期终止(EOL)🚫 | N/A | 分支不再接受任何修改 |
+| 计划 | 1-3 个月 | 计划特性 |
+| 开发 | 3 个月 | 开发特性 |
+| 维护 | 6-12 个月| 合入所有已解决的问题并发布版本,针对不同的MindSpeed 版本采取不同的维护策略,常规版本和长期支持版本维护周期分别为6个月和12个月 |
+| 无维护 | 0-3 个月 | 合入所有已解决的问题,无专职维护人员,无版本发布 |
+| 生命周期终止(EOL) | N/A | 分支不再接受任何修改 |
-🛠️ MindSpeed 版本维护策略:
+ MindSpeed 版本维护策略:
| **MindSpeed版本** | **维护策略** | **当前状态** | **发布时间** | **后续状态** | **EOL日期** |
|---------------------|----------|----------|------------|-------------------|-----------|
@@ -685,33 +730,47 @@ MindSpeed 特性由七大模块组成,分别为:megetron特性支持、并
| 1.0.RC2 | 常规版本 | 停止维护 | 2024/06/30 | 2024/12/30起无维护 | |
| 1.0.RC1 | 常规版本 | 停止维护 | 2024/03/30 | 2024/9/30起无维护 | |
+# 常见问题
+
---
-# 常见问题
+
| 现象 | 介绍 |
|------------------------------------|---------------------------------------|
-| Data helpers 数据预处理出错 ❗ | [link](docs/faq/data_helpers.md) |
-| Torch extensions 编译卡住 ❗ | [link](docs/faq/torch_extensions.md) |
-| megatron0.7.0版本长稳测试出现grad norm为nan ❗| [link](docs/faq/megatron070_grad_norm_nan.md) |
-| Gloo建链失败Gloo connectFullMesh failed with ... ❗| [link](docs/features/hccl-replace-gloo.md) |
+| Data helpers 数据预处理出错 | [link](docs/faq/data_helpers.md) |
+| Torch extensions 编译卡住 | [link](docs/faq/torch_extensions.md) |
+| megatron0.7.0版本长稳测试出现grad norm为nan | [link](docs/faq/megatron070_grad_norm_nan.md) |
+| Gloo建链失败Gloo connectFullMesh failed with ... | [link](docs/features/hccl-replace-gloo.md) |
# 技术文章
-- [MindSpeed 加速百万级超长序列大模型训练](https://mp.weixin.qq.com/s/8q4MxCkosLn0yoneuxzynw) 🚀🚀
-- [MindSpeed 加速万亿MoE大模型训练](https://mp.weixin.qq.com/s/HQRzYzSUNNMonv5d1AP0OQ) 🚀🚀
-- [大模型训练内存优化难?MindSpeed 帮你来支招](https://mp.weixin.qq.com/s/lwjVgM67hwsgtOKp06zYPg) 🚀🚀
---
-# 安全声明
-⚠️ [MindSpeed 安全声明](SECURITYNOTE.md)
+
+- [MindSpeed 加速百万级超长序列大模型训练](https://mp.weixin.qq.com/s/8q4MxCkosLn0yoneuxzynw)
+- [MindSpeed 加速万亿MoE大模型训练](https://mp.weixin.qq.com/s/HQRzYzSUNNMonv5d1AP0OQ)
+- [大模型训练内存优化难?MindSpeed 帮你来支招](https://mp.weixin.qq.com/s/lwjVgM67hwsgtOKp06zYPg)
+
+# 安全声明
---
+
+
+ [MindSpeed 安全声明](SECURITYNOTE.md)
+
+
+
# 免责声明
+---
+
+
+
## 致MindSpeed使用者
+
1. MindSpeed提供的所有内容仅供您用于非商业目的。
2. 对于MindSpeed测试用例以及示例文件中所涉及的各模型和数据集,平台仅用于功能测试,华为不提供任何模型权重和数据集,如您使用这些数据进行训练,请您特别注意应遵守对应模型和数据集的License,如您因使用这些模型和数据集而产生侵权纠纷,华为不承担任何责任。
3. 如您在使用MindSpeed过程中,发现任何问题(包括但不限于功能问题、合规问题),请在Gitee提交issue,我们将及时审视并解决。
@@ -723,11 +782,13 @@ MindSpeed 特性由七大模块组成,分别为:megetron特性支持、并
## License声明
Ascend MindSpeed中涉及的模型,如模型目录下存在License的,以该License为准。如模型目录下不存在License的,以Apache 2.0许可证许可,对应许可证文本可查阅Ascend MindSpeed根目录。
+# 致谢
+
---
-# 致谢
-🔎 MindSpeed-Core 由华为公司的下列部门联合贡献 :
+
+ MindSpeed Core 由华为公司的下列部门联合贡献 :
华为公司:
@@ -738,9 +799,10 @@ Ascend MindSpeed中涉及的模型,如模型目录下存在License的,以该
- 公共开发部:NAIE
- 网络技术实验室
-此外,MindSpeed-Core 感谢以下团队对项目的贡献:
+此外,MindSpeed Core 感谢以下团队对项目的贡献:
- 微信基础架构中心
- 科大讯飞AI工程院内核技术部
-感谢来自社区的每一个PR,欢迎贡献 MindSpeed-Core!
+感谢来自社区的每一个PR,欢迎贡献 MindSpeed Core!
+
diff --git a/docs/user-guide/getting_started.md b/docs/user-guide/getting_started.md
index 07e2e63a..d7e1a30d 100644
--- a/docs/user-guide/getting_started.md
+++ b/docs/user-guide/getting_started.md
@@ -1,94 +1,126 @@
+
# 快速上手
-请先参考[软件安装](./installation.md)进行环境准备,环境准备后按照如下步骤操作,即可实现Megatron-LM在昇腾设备上的高效运行,且无缝集成并充分发挥MindSpeed所提供的丰富加速与优化技术。
+## 概述
+
+### 简介
+
+以GPT模型为例,介绍将其从GPU迁移至NPU上运行的方法。按照如下步骤操作,即可实现Megatron-LM在昇腾设备上的高效运行,且无缝集成并充分发挥MindSpeed所提供的丰富加速与优化技术。
+
+## 环境准备
+
+- 准备[**Atlas A2 训练系列产品**](https://www.hiascend.com/document/detail/zh/AscendFAQ/ProduTech/productform/hardwaredesc_0001.html)或[**Atlas A3 训练系列产品**](https://www.hiascend.com/document/detail/zh/AscendFAQ/ProduTech/productform/hardwaredesc_0001.html)的服务器,并安装对应的驱动和固件,具体安装操作请参见《CANN 软件安装指南》中的“[安装NPU驱动和固件](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/softwareinst/instg/instg_0005.html?Mode=PmIns&InstallType=local&OS=Debian&Software=cannToolKit)”章节。
-### 1. 在Megatron-LM中导入MindSpeed适配器
+- 安装**Toolkit开发套件包**、Kernels算子包以及**NNAL神经网络加速库**(可选,NNAL神经网络加速库中提供了ATB加速库),具体安装操作请参见《CANN 软件安装指南》中的“[安装CANN](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/softwareinst/instg/instg_0008.html?Mode=PmIns&InstallType=local&OS=Debian&Software=cannToolKit)”章节。
-在”Megatron-LM“目录下修改**pretrain_gpt.py**文件,在“import torch”下新增一行“import mindspeed.megatron_adaptor”代码,即如下修改:
+- 安装PyTorch框架、torch_npu插件和APEX模块(可选)**,具体安装操作请参见**《[Ascend Extension for PyTorch 软件安装指南](https://www.hiascend.com/document/detail/zh/Pytorch/710/configandinstg/instg/insg_0001.html)》。
- ```Python
- import torch
- import mindspeed.megatron_adaptor # 新增代码行
- from functools import partial
- from contextlib import nullcontext
- import inspect
+- 安装MindSpeed Core
+
+ ```
+ # 下载MindSpeed源码并切换至2.1.0_core_r0.12.1分支
+ git clone https://gitee.com/ascend/MindSpeed.git
+ cd MindSpeed
+ git checkout 2.1.0_core_r0.12.1
+
+
+ # 安装MindSpeed
+ pip install -e MindSpeed
+
+
+ # 获取Megatron-LM源码切换 core_v0.12.1 版本
+
+ git clone https://github.com/NVIDIA/Megatron-LM.git
+ cd Megatron-LM
+ git checkout core_v0.12.1
```
+## 操作步骤
-### 2. 数据准备,参考[Megatron-LM官方文档](https://github.com/NVIDIA/Megatron-LM?tab=readme-ov-file#datasets)准备训练数据
+### 权重下载
-a. 下载[Tokenizer](https://huggingface.co/Xenova/gpt-3.5-turbo/tree/main)。
+下载[Tokenizer](https://gitee.com/link?target=https%3A%2F%2Fhuggingface.co%2FXenova%2Fgpt-3.5-turbo%2Ftree%2Fmain),新建“Megatron-LM/gpt-tokenizer”目录,并将vocab.json和merges.txt文件下载至该目录。
-新建“Megatron-LM/gpt-tokenizer”目录,并将vocab.json和merges.txt文件下载至该目录。
+### 数据集准备及处理
-b. 下载数据集。
-以[Alpaca数据集](https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet)为例。
-> 注:用户需要自行设置代理,以便访问或下载数据集。
+参考[Megatron-LM官方文档](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2FNVIDIA%2FMegatron-LM%3Ftab%3Dreadme-ov-file%23datasets)准备训练数据
-### 3. 配置环境变量
+1. 下载数据集,以[Alpaca数据集](https://gitee.com/link?target=https%3A%2F%2Fhuggingface.co%2Fdatasets%2Ftatsu-lab%2Falpaca%2Fresolve%2Fmain%2Fdata%2Ftrain-00000-of-00001-a09b74b3ef9c3b56.parquet)为例。
-当前以root用户安装后的默认路径为例,请用户根据set_env.sh的实际路径执行如下命令。
+ > 注:用户需要自行设置代理,以便访问或下载数据集。
-```shell
-source /usr/local/Ascend/ascend-toolkit/set_env.sh
-```
+2. 语料格式转换。
-### 4. 数据处理
+ 数据处理依赖于多个第三方库,请确保已正确安装如下依赖:
-a. 语料格式转换。
+ ```
+ pip3 install nltk pyarrow pandas
+ ```
-数据处理依赖于多个第三方库,请确保已正确安装如下依赖:
+ 以下代码段展示了如何读取Parquet格式的原始语料,并将其转换为JSON格式,以便后续处理。
-```shell
-pip3 install nltk pyarrow pandas
-```
+ ```python
+ import json
+ import pandas as pd
+
+ data_df = pd.read_parquet("train-00000-of-00001-a09b74b3ef9c3b56.parquet")
+ data_df['text'] = data_df['text'].apply(lambda v: json.dumps({"text": v}))
+ with open("alpaca_json.json", encoding='utf-8', mode='w') as f:
+ for i, row in data_df.iterrows():
+ f.write(row['text'])
+ f.write('\n')
+ ```
-以下代码段展示了如何读取Parquet格式的原始语料,并将其转换为JSON格式,以便后续处理。
+ 3. 预训练数据集生成
-```python
-import json
-import pandas as pd
+ 若在昇腾设备上使用preprocess_data.py脚本处理数据,须在“Megatron-LM”目录下修改“tools/preprocess_data.py”脚本,在“import torch”下新增一行“import mindspeed.megatron_adaptor”代码。
+ ```python
+ import torch
+ import mindspeed.megatron_adaptor
+ import numpy as np
+ ```
+ 新建“Megatron-LM/gpt_pretrain_data”目录,通过运行preprocess_data.py脚本,可以将转换后的JSON文件进一步处理为适合Megatron-LM预训练的二进制格式。
-data_df = pd.read_parquet("train-00000-of-00001-a09b74b3ef9c3b56.parquet")
-data_df['text'] = data_df['text'].apply(lambda v: json.dumps({"text": v}))
-with open("alpaca_json.json", encoding='utf-8', mode='w') as f:
- for i, row in data_df.iterrows():
- f.write(row['text'])
- f.write('\n')
-```
+ ```
+ python tools/preprocess_data.py \
+ --input alpaca_json.json \
+ --output-prefix ./gpt_pretrain_data/alpaca \
+ --tokenizer-type GPT2BPETokenizer \
+ --vocab-file ./gpt-tokenizer/vocab.json \
+ --merge-file ./gpt-tokenizer/merges.txt \
+ --append-eod \
+ --log-interval 1000 \
+ --workers 8
+ ```
+ 执行成功后,将在gpt_pretrain_data目录下生成两个文件:alpaca_text_document.bin和alpaca_text_document.idx,代表预处理完成的预训练数据集。
-b. 预训练数据集生成。
-若在昇腾设备上使用preprocess_data.py脚本处理数据,须在“Megatron-LM”目录下修改“tools/preprocess_data.py”脚本,在“import torch”下新增一行“import mindspeed.megatron_adaptor”代码。
+### 导入MindSpeed适配器
-```python
-import torch
-import mindspeed.megatron_adaptor
-import numpy as np
-```
+在Megatron-LM中导入MindSpeed适配器,在”Megatron-LM“目录下修改**pretrain_gpt.py**文件,在“import torch”下新增一行“import mindspeed.megatron_adaptor”代码,即如下修改:
-新建“Megatron-LM/gpt_pretrain_data”目录,通过运行preprocess_data.py脚本,可以将转换后的JSON文件进一步处理为适合Megatron-LM预训练的二进制格式。
-
-```python
-python tools/preprocess_data.py \
- --input alpaca_json.json \
- --output-prefix ./gpt_pretrain_data/alpaca \
- --tokenizer-type GPT2BPETokenizer \
- --vocab-file ./gpt-tokenizer/vocab.json \
- --merge-file ./gpt-tokenizer/merges.txt \
- --append-eod \
- --log-interval 1000 \
- --workers 8
+```
+ import torch
+ import mindspeed.megatron_adaptor # 新增代码行
+ from functools import partial
+ from contextlib import nullcontext
+ import inspect
```
-执行成功后,将在gpt_pretrain_data目录下生成两个文件:alpaca_text_document.bin和alpaca_text_document.idx,代表预处理完成的预训练数据集。
+### 配置环境变量
-### 5. 准备预训练脚本
+当前以root用户安装后的默认路径为例,请用户根据set_env.sh的实际路径执行如下命令。
+
+```
+source /usr/local/Ascend/ascend-toolkit/set_env.sh
+```
+### 准备预训练脚本
在“Megatron-LM”目录下准备预训练脚本train_distributed.sh,脚本示例如下:
-```shell
+
+```Bash
#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
NPUS_PER_NODE=8
@@ -158,24 +190,33 @@ torchrun $DISTRIBUTED_ARGS pretrain_gpt.py \
$OUTPUT_ARGS \
--distributed-backend nccl
set +x
-
```
-### 6. 配置路径
+### 配置路径
请编辑示例脚本train_distributed.sh,并设置如下环境变量以指定必要的路径:
-```shell
+
+```
CKPT_DIR=./ckpt
VOCAB_FILE=./gpt-tokenizer/vocab.json
MERGE_FILE=./gpt-tokenizer/merges.txt
DATA_PATH=./gpt_pretrain_data/alpaca_text_document
```
+
> 注:上述路径需根据您的实际情况进行适当调整。
-### 7. 运行脚本启动预训练
+### 启动预训练
-```shell
+```
bash ./train_distributed.sh
```
> 注:示例脚本train_distributed.sh中的部分参数(如--hidden-size、--num-layers)需根据实际场景进行适配,避免OOM等现象。
+
+
+
+
+
+
+
+
--
Gitee