1 Star 0 Fork 125

zhouhao / AscendSpeed

forked from 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
cd AscendSpeed
pip install -e .

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

# 目前版本基于3.26版本
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout 9de386d08770d7296263a590171ace4ae45348ad

快速上手

以 GPT 模型为例:

方式一:运行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文件,在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
【Prototype】Ulysses 长序列并行 link
【Prototype】Ascend MC2 暂无
【Prototype】alibi 暂无
【Prototype】其他昇腾亲和优化 暂无

自定义算子

算子 介绍
npu_dropout_add_layer_norm link
【Prototype】rms_norm link
【Prototype】swiglu link
【Prototype】lcal_coc 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 安全声明

空文件

简介

昇腾大模型加速库 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

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

搜索帮助