21 Star 137 Fork 108

Ascend / AscendSpeed

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

简介

AscendSpeed 是针对华为昇腾设备的大模型加速库。

大模型训练是一种非常复杂的过程,涉及到许多技术和挑战,其中大模型训练需要大量的显存资源是一个难题,对计算卡提出了不小的挑战。 为了在单个计算卡显存资源不足时,可以通过多张计算卡进行计算,业界出现了类似 Megatron、DeepSpeed 等第三方大模型加速库,对模型、输入数据等进行切分并分配到不同的计算卡上,最后再通过集合通信对结果进行汇总。

昇腾提供 AscendSpeed 加速库,使能客户大模型业务快速迁移至昇腾设备,并且支持昇腾专有算法,确保开箱可用。

安装

1. 安装依赖

在安装AscendSpeed之前,请参考版本配套表,安装最新昇腾软件栈:https://www.hiascend.com/zh/

依赖软件
Driver
Firmware
CANN
Kernel
PyTorch
torch_npu
apex

2. 安装 AscendSpeed

如有旧版本 AscendSpeed 请先卸载,再进行安装操作。

方式一:从 git 直接安装

pip install git+https://gitee.com/ascend/AscendSpeed.git

方式二:下载源码安装

git clone https://gitee.com/ascend/AscendSpeed.git
pip install -e AscendSpeed

3. 获取 Megatron-LM 并指定 commit id

# 目前版本基于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命令

  1. 在 Megatron-LM 目录下,运行ascendspeed -P命令。

     ascendspeed -P
  2. 在 Megatron-LM 目录下,准备好训练数据,并在示例脚本中填写对应路径,然后执行。

    bash examples/pretrain_gpt_distributed.sh

方式二:修改本地代码

  1. 在 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
  2. 在 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
        )
  3. 在 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的版本信息。

安全声明

AscendSpeed 安全声明

空文件

简介

昇腾大模型加速库 展开 收起
Python 等 4 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/ascend/AscendSpeed.git
git@gitee.com:ascend/AscendSpeed.git
ascend
AscendSpeed
AscendSpeed
master

搜索帮助