近日,基于昇騰AI硬件與昇思MindSpore AI框架版本的DeepSeek-V3完成開發支持并上線昇思開源社區,面向開發者提供開箱即用的預訓練和推理能力,并已成功在大規模集群上預訓練和部署。
應用昇思MindSpore大模型使能套件,依托昇思多維混合分布式能力、自動并行、Dryrun集群內存仿真等技術,天級快速適配DeepSeek V3新增模型結構和分布式并行訓練能力。同時,昇思MindSpore通過深度優化MLA、DeepSeekMoE等網絡結構的推理,實現了高效的推理部署性能。
當前,通過獲取昇思MindSpore版DeepSeek V3開源鏡像,開發者可直接進行DeepSeek-V3的預訓練和推理部署。
開源鏈接
昇思MindSpore開源社區訓練代碼:
https://gitee.com/mindspore/mindformers/tree/dev/research/deepseek3
魔樂社區推理代碼:
https://modelers.cn/models/MindSpore-Lab/DeepSeek-V3
以下是完整的手把手教程,助力開發者開箱即用
預訓練開箱流程
MindSpore Transformers支持對DeepSeek-V3進行預訓練。倉庫中提供了一份預訓練配置文件供參考,該配置基于128臺Atlas 800T A2 (64G),使用Wikitext-2數據集進行預訓練,可參考多機教程進行使用:
https://gitee.com/mindspore/mindformers/tree/dev/research/deepseek3
便于開發者上手體驗,本章節基于此配置進行修改,縮小了DeepSeek-V3模型參數量,使其能夠在單臺Atlas 800T A2 (64G)上拉起預訓練流程。
01環境介紹
準備一臺Atlas 800T A2 (64G)訓練服務器。MindSpore Transformers的環境依賴如下:
提供了DeepSeek-V3預訓練專用Docker鏡像,通過如下步驟進行使用。
1、下載Docker鏡像
使用如下命令下載DeepSeek-V3預訓練專用鏡像:
docker pull swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.4.10-train:20250209
2、基于鏡像創建容器
使用如下命令新建容器:
image_name=swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.4.10-train:20250209 docker_name=deepseek_v3 docker run -itd -u root --ipc=host --net=host --privileged --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 --device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /etc/localtime:/etc/localtime -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/bin/hccn_tool -v /etc/ascend_install.info:/etc/ascend_install.info -v /var/log85npu-smi:/usr/local/bin/npu-smi -v /etc/hccn.conf:/etc/hccn.conf --name "$docker_name" "$image_name" /bin/bash
3、進入容器
使用如下命令進入容器,并進入代碼目錄:
docker exec -ti deepseek_v3 bash cd /home/work/mindformers
02數據集準備
以Wikitext-2數據集為例,參考如下步驟將數據集處理成Megatron BIN格式文件。
1、下載數據集和分詞模型文件
o數據集下載:WikiText2數據集
(https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/MindFormers/dataset/wikitext-2/wikitext-2-v1.zip)
o分詞模型下載:DeepSeek-V3的tokenizer.json(https://huggingface.co/deepseek-ai/DeepSeek-V3/resolve/main/tokenizer.json?download=true)
2、生成Megatron BIN格式文件
將數據集文件wiki.train.tokens和分詞模型文件tokenizer.json放置在/home/work/dataset下。
使用以下命令將數據集文件轉換為
cd /home/work/mindformers/research/deepseek3 python wikitext_to_bin.py --input /home/work/dataset/wiki.train.tokens --output-prefix /home/work/dataset/wiki_4096 --vocab-file /home/work/dataset/tokenizer.json --seq-length 4096 --worker1
03單機配置樣例
基于預訓練配置文件pretrain_deepseek3_671b.yaml按照如下步驟操作并保存為pretrain_deepseek3_1b.yaml。
1、修改模型配置
# model config model: model_config: type: DeepseekV3Config auto_register: deepseek3_config.DeepseekV3Config seq_length: 4096 hidden_size: 2048 # 修改為2048 num_layers: &num_layers 3 # 修改為3 num_heads: 8 # 修改為8 max_position_embeddings: 4096 intermediate_size: 6144 # 修改為6144 offset: 0 # 修改為0 ……
2、修改MoE配置
提供了DeepSeek-V3預訓練專用Docker鏡像,通過如下步驟進行使用。
#moe moe_config: expert_num: &expert_num 16 # 修改為16 first_k_dense_replace:1#修改為1 ……
3、修改并行配置
# parallel config for devices num=8 parallel_config: data_parallel: 2 # 修改為2 model_parallel: 2 # 修改為2 pipeline_stage: 2 # 修改為2 expert_parallel: 2 # 修改為2 micro_batch_num: µ_batch_num 4 # 修改為4 parallel: parallel_optimizer_config: optimizer_weight_shard_size: 8 # 修改為8 ……
4、修改學習率配置
# lr schedule lr_schedule: type: ConstantWarmUpLR warmup_steps: 20 # 修改為20
5、修改數據集配置
配置數據集路徑:
# dataset train_dataset: &train_dataset data_loader: type: BlendedMegatronDatasetDataLoader config: data_path: - 1 - "/home/work/dataset/wiki_4096_text_document" # 修改此項為數據集路徑 ……
配置數據集并行通信配置路徑:
# mindspore context init config context: ascend_config: parallel_speed_up_json_path: "/home/work/mindformers/research/deepseek3/parallel_speed_up.json" # 修改此項為數據集并行通信配置路徑
04
拉起任務
進入代碼根目錄并執行以下命令拉起單臺Atlas 800T A2(64G)預訓練任務:
cd /home/work/mindformers bash scripts/msrun_launcher.sh "run_mindformer.py --register_path research/deepseek3 --configresearch/deepseek3/deepseek3_671b/pretrain_deepseek3_1b.yaml"
啟動腳本執行完畢會在后臺拉起任務,日志保存在/home/work/mindformers/output/msrun_log下,使用以下命令查看訓練日志(由于開啟了流水并行pipeline_stage: 2,loss只顯示在最后一張卡的日志worker_7.log中,其他日志顯示loss為0):
tail -f /home/work/mindformers/output/msrun_log/worker_7.log
訓練loss的曲線圖如下:
訓練過程中的權重checkpoint將會保存在/home/work/mindformers/output/checkpoint下。
推理部署開箱流程
采用BF16格式的模型權重文件,運行DeepSeek-V3推理服務,需要4臺Atlas 800I A2(64G)服務器。為縮短開發部署周期,昇思MindSpore此次提供了docker容器鏡像,供開發者快速體驗。其主要操作步驟如下:
執行以下Shell命令,下載昇思MindSpore DeepSeek-V3推理容器鏡像:
docker pull swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.5.0-infer:20250209
執行以下Shell命令,啟動容器鏡像,后續操作將均在容器內進行:
docker run -itd --privileged --name=deepseek-v3 --net=host --shm-size 500g --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 --device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 --device=/dev/davinci_manager --device=/dev/hisi_hdc --device /dev/devmm_svm -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi -v /usr/local/sbin:/usr/local/sbin -v /etc/hccn.conf:/etc/hccn.conf deepseek_v3_mindspore2.5.0-infer:20250209 bash
執行以下Shell命令,將用于下載存儲DeepSeek-V3權重文件的路徑(開箱示例中為./model_path),添加至白名單:
export HUB_WHITE_LIST_PATHS=./model_path
使用以下Python腳本,從魔樂社區下載昇思MindSpore版本的DeepSeek-V3權重文件至指定路徑。完整的權重文件約1.4TB,請確保指定路徑下有充足的可用磁盤空間:
from openmind_hub import snapshot_download snapshot_download( repo_id="MindSpore-Lab/DeepSeek-V3", local_dir="./model_path", local_dir_use_symlink=False )
將./model_path/examples/predict_deepseek3_671B.yaml文件中的load_checkpoint參數配置為權重文件夾絕對路徑,并將tokenizer_file參數和vocab_file參數配置為tokenizer.json文件絕對路徑。
在第1臺至第4臺服務器上,分別執行以下Shell命令,通過msrun_launcher.sh啟動單次推理測試腳本run_deepseekv3_predict.py,完成后將顯示“生抽和老抽的區別是什么?”的問題回復。其中,master_ip需修改設置為第1臺服務器的實際IP地址。
# 第1臺服務器(Node 0) export PYTHONPATH=/root/mindformers/:$PYTHONPATH export HCCL_OP_EXPANSION_MODE=AIV export MS_ENABLE_LCCL=off master_ip=192.168.1.1 cd model_path/DeepSeek-V3/examples bash msrun_launcher.sh "run_deepseekv3_predict.py" 32 8 $master_ip 8888 0 output/msrun_log False 300 # 第2臺服務器(Node 1) export PYTHONPATH=/root/mindformers/:$PYTHONPATH export HCCL_OP_EXPANSION_MODE=AIV export MS_ENABLE_LCCL=off master_ip=192.168.1.1 cd model_path/DeepSeek-V3/examples bash msrun_launcher.sh "run_deepseekv3_predict.py" 32 8 $master_ip 8888 1 output/msrun_log False 300 # 第3臺服務器(Node 2) export PYTHONPATH=/root/mindformers/:$PYTHONPATH export HCCL_OP_EXPANSION_MODE=AIV export MS_ENABLE_LCCL=off master_ip=192.168.1.1 cd model_path/DeepSeek-V3/examples bash msrun_launcher.sh "run_deepseekv3_predict.py" 32 8 $master_ip 8888 2 output/msrun_log False 300 # 第4臺服務器(Node 3) export PYTHONPATH=/root/mindformers/:$PYTHONPATH export HCCL_OP_EXPANSION_MODE=AIV export MS_ENABLE_LCCL=off master_ip=192.168.1.1 cd model_path/DeepSeek-V3/examples bash msrun_launcher.sh "run_deepseekv3_predict.py" 32 8 $master_ip 8888 3 output/msrun_log False 300
此外,還可參考魔樂社區MindSpore-Lab/DeepSeek-V3模型倉的ReadMe指引,進行推理服務化部署,然后通過訪問與OpenAI兼容的RESTful服務端口,體驗多輪對話服務。
MindSpore支持DeepSeek V3增量模塊的快速開發
DeepSeek V3的關鍵網絡結構的支持:
MTP:在MTP模塊中,MindSpore通過shard()接口對MTP入口處的激活融合結構配置了序列并行,消除不必要的通訊重排。通過set_pipeline_stage()接口實現了embedding矩陣在first_stage 和last_stage間的參數共享,即由first_stage負責維護embedding的參數更新,訓練前向時發送給last_stage,訓練反向時從last_stage回收梯度。
AuxFree Balance:MindSpore的MoE模塊中已支持全局的Expert負載統計, AuxFree Balance機制的實現是在callback中新增了根據全局專家負載而更新專家偏置的邏輯,從而達到在每個train step結束后做一次負載均衡調整的目的。
MoE Sigmoid激活:在Router score后的激活函數部分新增了可配置項,用戶可以通過yaml文件靈活選擇softmax或sigmoid作為激活函數,支持開發者靈活選擇。
MindSpore對于DeepSeek V3推理網絡的實現和優化
MindSpore針對DeepSeek V3的網絡結構特點,高效地實現和優化了更高效的推理網絡,最大化地壓縮算子下發耗時和提升網絡推理性能。
MLA:將FC、MatMul等超過10個小算子,融合成單個InferAttention-MLA算子,然后將其與已有的PageAttention算子,組合實現MLA模塊功能。同時,在InferAttention-MLA算子內,設計了Key-Value張量存儲復用機制,減少存儲資源占用。
圖1 MLA推理網絡實現原理
DeepSeekMoE:MindSpore優化精簡了MoE的推理代碼實現,并新增實現MoeUnpermuteToken、MoeInitRouting等多個融合大算子,用于組合實現DeepSeek-V3的MoE單元,降低了單個MoE單元的推理時延。
圖2 DeepSeekMoE推理網絡實現原理
圖編譯:MindSpore推理使用了圖編譯進行加速,通過對整圖進行Pattern匹配,無需修改模型腳本,即可實現整圖的通用融合。以DeepSeekV3為例,在圖編譯過程中實現了Add+RmsNorm、SplitWithSize+SiLU+Mul等眾多Pattern的自動融合。
圖3 圖編譯原理
MindSpore框架特性助力DeepSeek V3訓練性能提升
DeepSeek V3的訓推適配過程中,通過MindSpore的MoE模塊優化、Dryrun仿真等技術,在優化MoE的訓練流程的同時,還實現了更高效的多維混合并行。
MoE模塊優化:在MoE模塊中可支持多種主流結構可配置,如共享專家、路由專家個數、激活函數選擇等,極大地提升了模型的靈活性。在MoE并行方面支持TP-extend-EP、路由序列并行、MoE計算通訊掩蓋、分組AllToAll通訊等多種并行模式和并行優化,用戶可在配置中更靈活地使用相關并行加速能力。
Dryrun集群內存仿真與自動負載均衡:MindSpore的Dryrun工具可以根據訓練任務模擬出集群中每卡的內存占用情況,從而在不實際占用集群的情況下,為訓練的分布式并行策略調優提供快捷反饋。自動負載均衡工具SAPP為DeepSeek V3通過精確建模內存和計算負載,在內存約束條件下,求解最優的流水線并行的各Stage層數與重計算量,分鐘級開銷內自動獲得最優流水線配置。
下一步,昇思MindSpore開源社區將上線DeepSeek V3微調樣例與R1版本鏡像,為開發者提供開箱即用的模型。未來,昇思開源社區將依托豐富的技術能力,持續優化DeepSeek V3系列模型的性能,加速模型從訓練到生產部署端到端的創新效率,為開源開發者進行大模型創新提供了高效易用的基礎軟件與技術生態,促進千行萬業智能化轉型升級。
在使用模型中,有任何疑問和建議,均可通過社區進行反饋。
-
華為
+關注
關注
216文章
34581瀏覽量
253419 -
開源
+關注
關注
3文章
3442瀏覽量
42829 -
昇騰
+關注
關注
1文章
143瀏覽量
6687 -
DeepSeek
+關注
關注
1文章
450瀏覽量
191
原文標題:訓推全面支持、開箱即用!DeepSeek V3昇思MindSpore版本上線開源社區
文章出處:【微信號:HWS_yunfuwu,微信公眾號:華為數字中國】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
了解DeepSeek-V3 和 DeepSeek-R1兩個大模型的不同定位和應用選擇
全場景AI框架昇思MindSpore獲得國際認可
凌智電子LockzhinerAI V1.0與華為技術有限公司AI框架昇思MindSpore完成兼容性測試

人工智能框架生態峰會2023丨軟通動力成為昇思MindSpore開源社區理事會首批成員單位
凌智電子LockzhinerAI V1.0與華為技術有限公司AI框架昇思MindSpore完成兼容性測試

軟通動力受邀參加“昇思MindSpore AI框架”主題論壇,持續探索大模型創新實踐
香橙派與昇思MindSpore合作提速,軟硬結合助力開發者構建創新AI應用

昇思MindSpore預測2024年中國AI框架市場份額將達30%
迅龍軟件受邀參加華為昇思人工智能框架峰會,展示昇思X香橙派的創新AI案例

評論