OSCHINA
在進(jìn)行 DeepSeek 昇騰部署時,你是否遇到了問題?本文匯總了常見問題,助你快速定位并迅速部署 DeepSeek。
歡迎廣大開發(fā)者訪問魔樂社區(qū) DeepSeek 專區(qū)查收更多適配模型和技術(shù)干貨:https://modelers.cn/topics/deepseek
1. 性能問題 1.1 問題現(xiàn)象:部署 DeepSeek 服務(wù)化,性能不及預(yù)期 模塊
性能測試
性能裂化,OS 內(nèi)核,日志,環(huán)境
問題描述 MindIE 版本:2.0.T3 模型類型:DeepSeekV3/R1 部署 DeekSeekV3/R1 拉起后實(shí)測性能較差,與預(yù)期差異較大。
可能原因
日志級別問題
OS 內(nèi)核版本問題
環(huán)境變量優(yōu)化問題
在發(fā)送請求時,觀察日志中是否存在大量的 debug、info 日志打印。如果存在可能是為了排查問題,各組件開啟了 debug 日志,事后忘記關(guān)閉,而大量的日志打印是十分耗時的行為,且在正常的服務(wù)過程中,不需要這些日志。
原因 2:
使用uname -r
查看 OS 內(nèi)核版本,版本小于 5.10;
原因 3:
在 PyTorch 的訓(xùn)練或推理場景,可以通過設(shè)置環(huán)境變量 CPU_AFFINITY_CONF 來控制 CPU 端算子任務(wù)的處理器親和性,即設(shè)定任務(wù)綁核。該配置能夠優(yōu)化任務(wù)的執(zhí)行效率,避免跨 NUMA(非統(tǒng)一內(nèi)存訪問架構(gòu))節(jié)點(diǎn)的內(nèi)存訪問,減少任務(wù)調(diào)度開銷。
原因 4:
未關(guān)閉確定性計(jì)算 HCCL_DETERMINISTIC $\risingdotseq$ true,可以通過 env | grepHCCL_DETERMINISTIC 來查看是否設(shè)置。
解決方案 原因 1:
在 set_env.sh 中關(guān)閉各組件的 debug/info 日志等級,改成 ERROR 級別。
原因 2:
升級系統(tǒng),內(nèi)核版本升級到 5.10;(升級前需要找研發(fā)確認(rèn))
原因 3:
開啟綁核優(yōu)化示例,開啟方式三選一,建議優(yōu)先嘗試示例二
示例一:粗粒度綁核export CPU_AFFINITY_CONF=1
示例二:細(xì)粒度綁核export CPU_AFFINITY_CONF=2
示例三:自定義多張 NPU 卡的綁核范圍
export CPU_AFFINITY_CONF=1,npu0:0-1,npu1:2-5,npu3:6-6
原因 4:關(guān)閉確定性計(jì)算:
export HCCL_DETERMINISTIC=false
2 運(yùn)行問題 2.1 問題現(xiàn)象:多機(jī)無法拉起 DeepSeek-R1 模型,HCCL 報錯 模塊
故障診斷
TLS、HCCL、AllReduce、通信
問題描述 MindIE 版本:2.0.T3 模型類型:DeepSeekV3/R1
開啟算子庫日志(export ASDOPS_LOG_LEVEL=INFO; export ASDOPS_LOG_TO_STDOUT=1
)與開啟 ATB 日志(export ATB_LOG_LEVEL=INFO; export ATB_LOG_TO_STDOUT=1
)多節(jié)點(diǎn)啟動 service 報 HCCL 問題,例如下圖:

可能原因
NPU 底層 tls 校驗(yàn)行為不一致
排查方法
使用指令,查看每個節(jié)點(diǎn)的 device 的 TLS 開關(guān)狀態(tài)是否一致
for i in {0..7}; do hccn_tool -i $i -tls -g ; done | grep switch
解決方案用戶啟動服務(wù)前請檢查 NPU 底層 tls 校驗(yàn)行為一致性,建議全 0;使用如下命令:
for i in {0..7};do hccn_tool -i $i -tls -s enable 0;done
??2.2 問題現(xiàn)象:多機(jī)無法拉起 DeepSeek-R1 模型,從節(jié)點(diǎn)無法和主節(jié)點(diǎn)建立 RPC 通信???????????
??
模塊
安裝部署
RPC、多節(jié)點(diǎn)部署、防火墻
問題描述 MindIE 版本:2.0.T3 模型類型:| DeepSeekV3/R1
多節(jié)點(diǎn)部署從節(jié)點(diǎn)無法和主機(jī)點(diǎn)建立 rpc 問題,子節(jié)點(diǎn)報 RPC 問題,例如下圖:

4 機(jī)推理,deepseek r1 服務(wù)化拉起失敗,salve3 臺服務(wù)化都能起,master 起服務(wù)會失敗,報錯信息如下圖:

可能原因
防火墻攔截
排查方法
使用指令查看防火墻狀態(tài),如果開啟防火墻,需要關(guān)閉;
sudo systemctl status firewalld
解決方案
每臺機(jī)器執(zhí)行sudo systemctl stop firewalld
,關(guān)閉防火墻。
2.3 問題現(xiàn)象:多機(jī)無法拉起 DeepSeek-R1 模型,服務(wù)器 NPU 通信問題 模塊
安裝部署
NPU、網(wǎng)絡(luò)、通信、中斷、拉起
問題描述 MindIE 版本:| 2.0.T3 | 模型類型:| DeepSeekV3/R1
啟動任務(wù)時,任務(wù)無法拉起
任務(wù)執(zhí)行時,突然中斷或服務(wù)突然終止
其他需要檢測 HCCL 網(wǎng)絡(luò)通信的場景
NPU 網(wǎng)絡(luò)通信存在問題
排查方法
檢測防火墻
檢測 NPU 狀態(tài)
檢測 NPU 之間通訊
步驟 1:查看防火墻是否關(guān)閉
firewall-cmd –state
已關(guān)閉顯示如下:
firewall-cmd --state not running
未關(guān)閉執(zhí)行如下命令:
systemctl stop firewalld
步驟 2: 檢測卡狀態(tài)
for i in {0..7}; do hccn_tool -i $i -link -g ; done
顯示 up 為正常

其他狀態(tài)可以通過如下命令重啟卡(-i 后面填寫卡的 ID)
npu-smi set -t reset -i {RankId} -c 0 -m 1
步驟 3: 檢測卡的 IP 是否配置
for i in {0..7}; do hccn_tool -i $i -ip -g ; done

步驟 4: 檢測多節(jié)點(diǎn)的每個卡 TLS 開關(guān)是否一致
for i in {0..7}; do hccn_tool -i $i -tls -g ; done | grep switch
所有機(jī)器的所有卡要么為 1,要么為 0。建議修改為 0 進(jìn)行關(guān)閉。

TLS 關(guān)閉方法(-i 后面填寫卡的 ID)
hccn_tool -i {RankId} -tls -s enable 0
步驟 5:本機(jī)卡間通信檢測
進(jìn)入任意目錄創(chuàng)建一個 test.py
文件文件加入如下腳本
import subprocess
ip_list = []
for i in range(8):
try:
cmd = ['hccn_tool', '-i', str(i), '-ip', '-g']
res = subprocess.run(cmd, capture_output=True, text=True, check=True)
res_str = res.stdout.strip()
if 'ipaddr' in res_str:
ip_list.append(res_str.split('\n')[0].split(':')[1])
except subprocess.CalledProcessError as e:
print(e)
for i in range(8):
for other_ip in ip_list:
try:
cmd = ['hccn_tool', '-i', str(i), '-ping', '-g', 'address', str(other_ip), 'pkt', '3']
res = subprocess.run(cmd, capture_output=True, text=True, check=True)
print(ip_list[i], '==>', res.stdout.strip())
except subprocess.CalledProcessError as e:
print(e)
print(f'========{ip_list[i]} is OK========')
print(f'========ALL is OK========')
在當(dāng)前目錄執(zhí)行腳本
python test.py
出現(xiàn) ALL is OK 代表本機(jī)所有卡通訊正常

檢測無誤后,重新執(zhí)行 AI 任務(wù)即可。
2.4 問題現(xiàn)象:多機(jī)無法拉起 DeepSeek-R1 模型,modeling_utils.py 報錯 模塊
故障診斷
NoneType、metadata、modeling_utils
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
在服務(wù)化拉起過程中,若出現(xiàn)if metadata.get("format") not in ["pt", "tf", "flax", "mix"]: AttributeError: "NoneType" object has no attribute 'get';
報錯
可能原因
輸入的權(quán)重中缺少 metadata 字段
排查方法
日志 modeling_utils.py 報錯
解決方案
安裝更新 transformers 版本(= 4.46.3)
2.5 問題現(xiàn)象:多機(jī)無法拉起 DeepSeek-R1 模型,F(xiàn)ailed to init endpoint 模塊
安裝部署
server.key、ca.pem、key_pwd、endpoint、https、服務(wù)化
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
MindIE 推理啟服務(wù)出現(xiàn) Failed to init endpoint! Please check the service log or console output.

可能原因
開啟 HTTPS,但未設(shè)置證書導(dǎo)致的問題。
排查方法
查看日志是否存在圖片中描述的報錯
解決方案
httpsEnabled 設(shè)置的 true,如果為 true 的情況下需要配置證書,請檢查證書配置是否正確。證書配置請參考 MindIE 社區(qū)文檔:
https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0312.html將 httpsEnabled 修改為 false
3 精度問題 3.1 問題現(xiàn)象:多機(jī)拉起 DeepSeek-R1 模型服務(wù)化后,發(fā)送推理請求,返回內(nèi)容亂碼 模塊
模型推理
請求、亂碼
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
四機(jī)部署 deepseekR1,啟服務(wù)后,發(fā)送推理請求,返回內(nèi)容亂碼,沒有報錯,例如下圖:

可能原因
用戶使用的模型配置文件和官網(wǎng)文件有差異,導(dǎo)致返回異常。
排查方法
模型權(quán)重目錄里的所有配置文件請與 Modelers,HuggingFace 等官方網(wǎng)站所上傳的權(quán)重等文件進(jìn)行對比。
解決方案
把模型權(quán)重目錄里的所有配置文件和官網(wǎng)上的文件對齊之后 只修改 config.json 中的 model_type 更改為 deepseekv2(只有這一處修改),推理返回正常。
4. 安裝部署問題 4.1 題現(xiàn)象:NPU 卡健康檢查返回錯誤,提示 timeout 模塊
安裝部署
NPU、健康檢查、Receive timeout
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
多機(jī)拉起 DeepSeek 模型時,服務(wù)化拉起卡住。進(jìn)行 NPU 卡進(jìn)行健康檢查時,返回 timeout 錯誤

可能原因
1、交換機(jī)和 NPU 的網(wǎng)關(guān)沒有配置
2、NPU 的網(wǎng)關(guān) IP 和偵測 ip 沒有配置成一樣
排查方法
1、使用hccn_tool [-i 7] -netdetect -g
,查看 NPU 的偵測 ip 有沒有配置或配置成多少。
2、再次執(zhí)行hccn_tool [-i 7] -gateway -g
,查看 NPU 的網(wǎng)關(guān) IP 地址有沒有多少或者配置成多少,偵測 IP 和網(wǎng)關(guān) IP 兩者比較是否一樣,發(fā)現(xiàn)沒有配置成一樣。
解決方案
偵測 IP 和網(wǎng)關(guān) IP 沒有配置成一樣,使用如下命令行修改成規(guī)劃的網(wǎng)關(guān) IP 地址,使兩者一樣,問題得以解決。配置 NPU 網(wǎng)卡地址,網(wǎng)關(guān)地址,偵測 IP 的命令行如下:
1、Npu IP 和掩碼設(shè)置
hccn_tool -i 0 -ip -s address 192.168.16.126 netmask 255.255.255.0
2、Npu 網(wǎng)關(guān)設(shè)置
hccn_tool -i 0 -gateway -s gateway 192.168.16.254
3、Npu 檢測地址設(shè)置
hccn_tool -i 0 -netdetect -s address 192.168.16.254
4.2 題現(xiàn)象:服務(wù)器開啟 lldp,查詢鄰居信息沒有輸出 模塊
故障診斷
LLDP
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
多機(jī)拉起 DeepSeek 模型時,服務(wù)化拉起卡住。檢查網(wǎng)絡(luò)通信,服務(wù)器兩邊都開啟了 LLDP,在服務(wù)器上執(zhí)行hccn_tool -i 0 -lldp -g
命令,沒有任何新鄰居信息輸出
可能原因
1、交換機(jī)處沒有使能 LLDP
2、交換機(jī)端口或者網(wǎng)卡沒有 UP
排查方法
1、前往交換機(jī)執(zhí)行display lldp neighbor brief
,如果有如下回顯,證明交換機(jī)使能了 LLDP 功能。

2、現(xiàn)場確認(rèn)下服務(wù)器連接交換機(jī)端口物理狀態(tài)是否正常,物理指示燈是否亮燈。經(jīng)過現(xiàn)場確認(rèn)發(fā)現(xiàn)物理指示燈沒有亮
解決方案
現(xiàn)場使用的交換機(jī)是 CE9860,400GE 端口使用 1 分 2 的光纖連接服務(wù)器 NPU 卡,物理指示燈未亮是因?yàn)?400GE 端口未做拆分,在交換機(jī)上執(zhí)行如下命令行將端口進(jìn)行拆分,port split dimension interface 400GE 1/1/1 split-type 2*200GE
。拆分后端口物理指示燈亮了,再在服務(wù)器上執(zhí)行 hccn_tool -i 0 -lldp -g 命令,能夠正常顯示鄰居信息了。

4.3 題現(xiàn)象:純模型推理,啟動階段 warm up 卡死 模塊
安裝部署
warm up、卡死
問題描述
MindIE 版本:2.0.T3
模型類型:DeepSeekV3/R1
Deepseek v3 4 機(jī)純模型推理,啟動后卡在 warm up 環(huán)節(jié)

可能原因
多節(jié)點(diǎn)的環(huán)境變量配置不一致
排查方法
查看每個服務(wù)器的環(huán)境變量 HCCL_DETERMINISTIC 是否為 false
解決方案
需要保證多節(jié)點(diǎn)的 HCCL_DETERMINISTIC 一致,例如:export HCCL_DETERMINISTIC=false
5. 其他 5.1 版本查看:如何查看各組件的版本 MindIE
cat /usr/local/Ascend/mindie/latest/version.info

CANN
cat /usr/local/Ascend/ascend-toolkit/latest/version.cfg

ATB-Models
cat /usr/local/Ascend/atb-models/version.info

NNAL
cat /usr/local/Ascend/nnal/atb/latest/version.info

5.2 快速定界 HCCL\ 內(nèi)存 \ 代碼 等問題
在拉起模型的過程中,會遇到各類不太明確根因的問題,如多節(jié)點(diǎn)拉起服務(wù)化 \ 純模型卡住、加載過程中報錯、host 側(cè)內(nèi)存不足等問題。這類問題可能需要多次修改代碼 \ 環(huán)境變量,再拉起模型進(jìn)行驗(yàn)證。拉起 670B 的權(quán)重是一個特別耗時的過程,短的可能 2、3 分鐘,長的可能需要 10、20 分鐘。
為了簡化、便捷、快速的定位問題,減少拉起模型的時間,我們可以使用減層驗(yàn)證的方法來加速拉起時間。因?yàn)?Transformer 模型的每一層結(jié)構(gòu)高度相似,包含自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)(FFN)兩個核心模塊。每一層的計(jì)算步驟和參數(shù)量基本一致。因此,我們可以將 DeepSeek-R1/V3 的層數(shù)從 61 層減少到幾層(比如 5 層)來減少參數(shù)量 \ 計(jì)算量,加速驗(yàn)證、定位問題。
方法如下:
1. 進(jìn)入模型權(quán)重的文件夾,打開權(quán)重文件夾的 config.json
2. 修改 "num_hidden_layers" 這個參數(shù),修改為 5
3. 驗(yàn)證、定位問題
4. 問題解決后,將 "num_hidden_layers" 修改回原層數(shù)

↓分享、在看與點(diǎn)贊~Orz
熱門跟貼