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 权重转换
-
从魔乐社区下载模型权重和配置文件:
-
权重转换
开源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,我们将及时查看解答。