AscendSpeed 是针对华为昇腾设备的大模型加速库。
大模型训练是一种非常复杂的过程,涉及到许多技术和挑战,其中大模型训练需要大量的显存资源是一个难题,对计算卡提出了不小的挑战。 为了在单个计算卡显存资源不足时,可以通过多张计算卡进行计算,业界出现了类似 Megatron、DeepSpeed 等第三方大模型加速库,对模型、输入数据等进行切分并分配到不同的计算卡上,最后再通过集合通信对结果进行汇总。
昇腾提供 AscendSpeed 加速库,使能客户大模型业务快速迁移至昇腾设备,并且支持昇腾专有算法,确保开箱可用。
在安装AscendSpeed之前,请参考版本配套表,安装最新昇腾软件栈:https://www.hiascend.com/zh/。
依赖软件 |
---|
Driver |
Firmware |
CANN |
Kernel |
PyTorch |
torch_npu |
apex |
如有旧版本 AscendSpeed 请先卸载,再进行安装操作。
方式一:从 git 直接安装
pip install git+https://gitee.com/ascend/AscendSpeed.git
方式二:下载源码安装
git clone https://gitee.com/ascend/AscendSpeed.git
pip install -e AscendSpeed
# 目前版本基于core_r0.6.0的release版本
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout core_r0.6.0
以 GPT 模型为例:
方式一:若 Megatron-LM 的 commit id 与上述一致,运行ascendspeed
命令
在 Megatron-LM 目录下,运行ascendspeed -P
命令。
ascendspeed -P
在 Megatron-LM 目录下,准备好训练数据,并在示例脚本中填写对应路径,然后执行。
bash examples/pretrain_gpt_distributed.sh
方式二:修改本地代码
在 Megatron-LM 目录下修改pretrain_gpt.py
文件,在import torch
下新增一行import ascendspeed.megatron_adaptor
import os
import torch
+import ascendspeed.megatron_adaptor
from torch import Tensor
from functools import partial
from typing import Union
在 Megatron-LM 目录下修改pretrain_gpt.py
文件,在model_provider函数中删除assert(args.context_parallel_size == 1), "Context parallelism is only supported with Megatron Core!"
。
else:
- assert(args.context_parallel_size == 1), "Context parallelism is only supported with Megatron Core!"
model = megatron.model.GPTModel(
config,
num_tokentypes=0,
parallel_output=True,
pre_process=pre_process,
post_process=post_process
)
在 Megatron-LM 目录下,准备好训练数据,并在示例脚本中填写对应路径,然后执行。
bash examples/pretrain_gpt_distributed.sh
特性 | 介绍 |
---|---|
Megatron 数据并行 | link |
Megatron 张量并行 | link |
Megatron 流水并行 | link |
Megatron 虚拟流水并行 | link |
Megatron 序列并行 | link |
Megatron 重计算 | link |
Megatron 分布式优化器 | link |
Megatron 异步DDP | link |
Ascend TP 重计算通信优化 | link |
Ascend 内存碎片优化 | link |
Ascend 自适应选择重计算 | link |
Ascend 计算通信并行优化 | link |
Ascend BF16 参数副本复用 | link |
Ascend rms_norm 融合算子 | link |
Ascend swiglu 融合算子 | link |
Ascend rotary_embedding 融合算子 | link |
Ascend MoE token重排性能优化 | link |
flash attention 适配 | link |
权重更新通信隐藏 | link |
【Prototype】Ulysses 长序列并行 | link |
【Prototype】Ring Attention 长序列并行 | link |
【Prototype】Ascend MC2 | link |
【Prototype】alibi | link |
【Prototype】lcal_coc | link |
【Prototype】其他昇腾亲和优化 | 暂无 |
算子 | 介绍 |
---|---|
npu_dropout_add_layer_norm | link |
【Prototype】fusion_attention | link |
【Prototype】rms_norm | link |
【Prototype】swiglu | link |
【Prototype】lcal_coc | link |
【Prototype】npu_mm_all_reduce_add_rms_norm | link |
【Prototype】npu_mm_all_reduce_add_rms_norm_ | link |
PyTorch Extension版本号采用{PyTorch版本}-{昇腾版本}
命名规则,前者为PyTorch Extension匹配的PyTorch版本,后者用于匹配CANN版本,详细匹配如下:
AscendSpeed版本 | PyTorch版本 | Extension版本 | Python版本 |
---|---|---|---|
1.0 | 2.1.0 | 2.1.0.post3 | Python3.8.x, Python3.9.x, Python3.10.x |
昇腾辅助软件中有更多关于PyTorch和CANN的版本信息。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型