git clone -b br_noncom_MindStudio_8.0.0_POC_20251231 https://gitcode.com/Ascend/msit.git cd msit/msmodelslim bash install.sh
Ascend-cann-toolkit_8.2.RC1.alpha002_linux-aarch64.run --check Ascend-cann-toolkit_8.2.RC1.alpha002_linux-aarch64.run --install
source /usr/local/Ascend/ascend-toolkit/set_env.sh
Ascend-cann-kernels-910b_8.2.RC1.alpha002_linux-aarch64.run --check Ascend-cann-kernels-910b_8.2.RC1.alpha002_linux-aarch64.run --install
pip install transformers==4.48.2
vim /home/openlab/deepseek-v3-bf16/modeling_deepseek.py
vim /home/openlab/deepseek-v3-bf16/config.json
cd example/DeepSeek/ export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False python3 quant_deepseek_w8a8.py --model_path /home/openlab/deepseek-v3-bf16/ --save_path /home/openlab/deepseek-v3-w8a8
"model_type":"deepseekv2"
hccn_tool -i 0 -ip -s address 192.168.190.101 netmask 255.255.255.0 hccn_tool -i 1 -ip -s address 192.168.190.102 netmask 255.255.255.0 hccn_tool -i 2 -ip -s address 192.168.190.103 netmask 255.255.255.0 hccn_tool -i 3 -ip -s address 192.168.190.104 netmask 255.255.255.0 hccn_tool -i 4 -ip -s address 192.168.190.105 netmask 255.255.255.0 hccn_tool -i 5 -ip -s address 192.168.190.106 netmask 255.255.255.0 hccn_tool -i 6 -ip -s address 192.168.190.107 netmask 255.255.255.0 hccn_tool -i 7 -ip -s address 192.168.190.108 netmask 255.255.255.0
hccn_tool -i 0 -ip -s address 192.168.190.109 netmask 255.255.255.0 hccn_tool -i 1 -ip -s address 192.168.190.110 netmask 255.255.255.0 hccn_tool -i 2 -ip -s address 192.168.190.111 netmask 255.255.255.0 hccn_tool -i 3 -ip -s address 192.168.190.112 netmask 255.255.255.0 hccn_tool -i 4 -ip -s address 192.168.190.113 netmask 255.255.255.0 hccn_tool -i 5 -ip -s address 192.168.190.114 netmask 255.255.255.0 hccn_tool -i 6 -ip -s address 192.168.190.115 netmask 255.255.255.0 hccn_tool -i 7 -ip -s address 192.168.190.116 netmask 255.255.255.0
双机直连场景下,每个NPU device的检测对象为其对端NPU device的IP地址。
hccn_tool -i 0 -netdetect -s address 192.168.190.109 hccn_tool -i 1 -netdetect -s address 192.168.190.110 hccn_tool -i 2 -netdetect -s address 192.168.190.111 hccn_tool -i 3 -netdetect -s address 192.168.190.112 hccn_tool -i 4 -netdetect -s address 192.168.190.113 hccn_tool -i 5 -netdetect -s address 192.168.190.114 hccn_tool -i 6 -netdetect -s address 192.168.190.115 hccn_tool -i 7 -netdetect -s address 192.168.190.116
hccn_tool -i 0 -netdetect -s address 192.168.190.101 hccn_tool -i 1 -netdetect -s address 192.168.190.102 hccn_tool -i 2 -netdetect -s address 192.168.190.103 hccn_tool -i 3 -netdetect -s address 192.168.190.104 hccn_tool -i 4 -netdetect -s address 192.168.190.105 hccn_tool -i 5 -netdetect -s address 192.168.190.106 hccn_tool -i 6 -netdetect -s address 192.168.190.107 hccn_tool -i 7 -netdetect -s address 192.168.190.108
斜体部分按实际规划修改。
for i in {0..7}; do hccn_tool -i $i -lldp -g | grep Ifname; done

for i in {0..7}; do hccn_tool -i $i -link -g ; done

for i in {0..7}; do hccn_tool -i $i -net_health -g ; done

for i in {0..7}; do hccn_tool -i $i -netdetect -g ; done

for i in {0..7}; do hccn_tool -i $i -gateway -g ; done

for i in {0..7};do hccn_tool -i $i -ip -g; done

for i in {0..7}; do hccn_tool -i $i -tls -g ; done | grep switch

for i in {0..7};do hccn_tool -i $i -tls -s enable 0;done

for j in {0..7};
do for i in {90..97};
do hccn_tool -i ${j} -ping -g address 10.30.4.${i}; 【机器B各个卡的IP地址】
done;
done
斜体内容可根据实际情况进行配置。
双机直连场景下,检查机器A和机器B中互为对端的NPU device互连情况即可:
hccn_tool -i {机器A的npu device的id} -ping -g address {机器B的npu device的IP地址}
{
"server_count": "...", # 总节点数
# server_list中第一个server为主节点
"server_list": [
{
"device": [
{
"device_id": "...", # 当前卡的本机编号,取值范围[0,本机卡数)
"device_ip": "...", # 当前卡的IP地址,可通过hccn_tool命令获取
"rank_id": "..." # 当前卡的全局编号,取值范围[0,总卡数)
},
...
],
"server_id": "...", # 当前节点的IP地址
"container_ip": "..." # 容器IP地址,所有机器的容器IP保持一致
},
...
],
"status": "completed",
"version": "1.0"
}
chmod -R 640 {rank_table_file.json路径}
需要在所有部署节点上创建rank_table_file.json文件,并确保各节点上的rank_table_file.json内容文件保持一致,除了“server_id”应为该机器的IP地址。

docker run -itd --privileged --name= {容器名称} --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 \
-v {/权重路径:/权重路径} \
-v {/rank_table_file.json路径:/rank_table_file.json路径} \
{根据加载的镜像名称修改} \
bash
需要在所有部署节点上启动容器。
docker exec -it {容器名称} bash
source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh source /usr/local/Ascend/atb-models/set_env.sh source /usr/local/Ascend/mindie/set_env.sh
export ATB_LLM_HCCL_ENABLE=1 export ATB_LLM_COMM_BACKEND="hccl" export HCCL_CONNECT_TIMEOUT=7200
export WORLD_SIZE=16
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export MIES_CONTAINER_IP= {容器IP地址}
export RANK_TABLE_FILE= {rank_table_file.json路径}
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
# 如果网络环境不安全,不开启HTTPS通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险 "httpsEnabled" : false, ... # 开启多机推理 ... # 若不需要安全认证,则将以下两个参数设为false "multiNodesInferEnabled" : true, "interCommTLSEnabled" : false, "interNodeTLSEnabled" : false, ... "npudeviceIds" : [[0,1,2,3,4,5,6,7]], ... "modelName" : "DeepSeek-R1" # 不影响服务化拉起 "modelWeightPath" : "权重路径", "worldSize":8,
export OMP_NUM_THREADS=1
export NPU_MEMORY_FRACTION=0.95
cd /usr/local/Ascend/mindie/latest/mindie-service/ ./bin/mindieservice_daemon
Daemon start success!
curl -X POST -d '{
"model":"Deepseek-R1",
"messages": [{
"role": "system",
"content": "你是谁?"
}],
"max_tokens": 20,
"stream": false
}' http://ip:port/v1/chat/completions
