MindSpeed LLM作为昇腾AI生态的重要技术支撑,专为大规模语言模型设计,具有超强的计算能力和灵活的开发支持。MindSpeed LLM实现了DeepSeekV4-Flash模型的定长数据场景下的预训练支持,并同步开放源代码。本文给各位开发者提供预训练的复现部署参考,帮助大家快速上手。MindSpeed LLM快速部署与应用教程已上线魔乐社区,欢迎开发者体验!

🔗 DeepSeek-V4-Flash开源权重链接:https://modelers.cn/models/deepseek-ai/DeepSeek-V4-Flash

🔗 MindSpeed LLM训练推理教程:https://modelers.cn/models/MindSpeed/DeepSeek4-Flash

接下来,我们将手把手带你完成从环境准备到模型训练的完整过程,帮助你快速上手并在MindSpeed框架下实现DeepSeek-V4-Flash模型的无缝运行。

01 环境配置

硬件要求

DeepSeek-V4-Flash的参考硬件配置如下,本文将以A3八机64卡预训练为例进行介绍:

  • 类型:训练

  • 硬件:NPU

  • 配置:64 x Ascend NPUs(A3)    

MindSpeed LLM仓库部署

MindSpeed LLM的主要依赖配套如下:

Atlas 800 A3风冷超节点、Atlas 900 A3 SuperPoD液冷超节点

安装步骤参考安装指导:

https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/docs/zh/pytorch/training/install_guide.md

接下来,参考MindSpeed LLM 安装指导文档拉取仓库代码并配置环境:

# 如果你使用Atlas 900 A3 SuperPoD液冷超节点或Atlas 800 A3风冷超节点,我们推荐你使用如下镜像进行环境部署,可跳过CANN/Pytorch/Triton环境依赖的部署环节

# 镜像链接:https://cann-ai.obs.cn-north-4.myhuaweicloud.com/cann-quantization/deepseek_train/dsv4_train_mindspeed_v1.0.tar.gz

# 创建容器
docker run -dit --ipc=host --network host --name 'llm_test' --privileged -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware -v /usr/local/sbin/:/usr/local/sbin/ -v /home/:/home/ -v /data/:/data 镜像名:标签 /bin/bash

# 进入容器
docker exec -it llm_test bash

# 该镜像已安装CANN与自定义融合算子包,在运行训练任务前,请使能如下环境变量以正确生效算子能力
source /usr/local/Ascend/cann/set_env.sh
source /usr/local/Ascend/cann/opp/vendors/custom_transformer/bin/set_env.bash

# 安装MindSpeed加速库
git clone https://gitcode.com/ascend/MindSpeed.git
cd MindSpeed
git checkout master  # checkout commit from MindSpeed master
pip3 install -r requirements.txt 
pip3 install -e .
cd ..

# 准备MindSpeed-LLM及Megatron-LM源码
git clone https://gitcode.com/ascend/MindSpeed-LLM.git 
git clone https://github.com/NVIDIA/Megatron-LM.git  # megatron从github下载,请确保网络能访问
cd Megatron-LM
git checkout core_v0.12.1
cp -r megatron ../MindSpeed-LLM/
cd ../MindSpeed-LLM
git checkout master

pip3 install -r requirements.txt  # 安装其余依赖库

02 权重转换

  1. 从魔乐社区下载模型权重和配置文件:

    https://modelers.cn/models/deepseek-ai/DeepSeek-V4-Flash

  2. 权重转换

    开源DeepSeek-V4-Flash权重为FP8 mixed数据格式,使用A3训练前需要对原始权重做反量化后获得bf16格式的权重,反量化方法请参考下述脚本。

cd MindSpeed-LLM
bash examples/mcore/deepseek4_flash/ckpt_dequant_deepseek4_fp8_to_bf16.sh

MindSpeed LLM提供脚本将已经huggingface开源权重转换为mcore权重,用于训练、推理、评估等任务。使用方法如下,请根据实际需要的TP/PP等切分策略和权重路径修改权重转换脚本。

脚本链接:https://gitcode.com/Ascend/MindSpeed-LLM/tree/master/examples/mcore/deepseek4_flash

cd MindSpeed-LLM
bash examples/mcore/deepseek4_flash/ckpt_convert_deepseek4_flash_hf2mcore.sh # 转换时,请指定路径到反量化后的权重

03 数据预处理

MindSpeed LLM提供脚本进行数据集处理:

https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/examples/mcore/deepseek4_flash

使用方法如下,请根据实际需要修改以下参数

cd MindSpeed-LLM
bash examples/mcore/deepseek4_flash/data_convert_deepseek4_pretrain.sh

说明:

  • --input:数据集路径    

  • --tokenizer-name-or-path:模型tokenizer目录    

  • --output-prefix:数据集处理完的输出路径及前缀名   

04 训练

MindSpeed LLM提供脚本进行模型训练:

https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/examples/mcore/deepseek4_flash

cd MindSpeed-LLM
bash examples/mcore/deepseek4_flash/pretrain_deepseek4_flash_4k_A3_ptd.sh

你可以需要根据实际情况修改脚本中以下变量:

  • MASTER_ADDR:多机情况下主节点IP    

  • NODE_RANK:多机下,各机对应节点序号    

  • CKPT_SAVE_DIR:训练中权重保存路径    

  • DATA_PATH:数据预处理后的数据路径    

  • TOKENIZER_PATH:tokenizer目录    

  • CKPT_LOAD_DIR:权重转换保存的权重路径,为初始加载的权重,如无初始权重则随机初始化    

欢迎体验反馈

当前实现为preview版本,部分场景存在限制,后续MindSpeed LLM将持续完善并同步跟进 DeepSeek-V4 技术报告中的演进方向。欢迎各位开发者体验,如有任何问题,也可在该教程的代码仓提交issue,我们将及时查看解答。

https://modelers.cn/models/MindSpeed/DeepSeek4-Flash

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐