2025/12/26

DGX Spark (GB10), transformers load gpt-oss:120b 時遇到的問題

 

問題 1:缺少 Python 開發標頭檔

編譯錯誤
根本原因
Triton 在執行時需要編譯 CUDA 工具模組,但系統缺少 Python 開發標頭檔 (Python.h)。
解決方案
已修復 安裝 Python 開發套件:
sudo apt install python3-dev

問題 2:ptxas 不支援 Blackwell 架構 (sm_121a)

GPU 相容性
錯誤訊息
ptxas fatal : Value 'sm_121a' is not defined for option 'gpu-name'
根本原因

Triton 套件內建的 ptxas (PTX 組譯器) 版本太舊,不認識最新的 Blackwell GPU 架構代號 sm_121a

相關 GitHub Issue: triton-lang/triton#8539

解決方案
已修復 使用系統安裝的較新版 ptxas (CUDA 13.0 內建):
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas
python llmchat.py
或使用啟動腳本 run_chat.sh 自動設定此環境變數。

問題 3:Tensor on device meta 錯誤

記憶體配置
錯誤訊息
RuntimeError: Tensor on device meta is not on the expected device cuda:0!
根本原因

當使用 device_map="auto" 載入大型模型時,accelerate 套件會使用「meta device」作為權重的佔位符號,延遲載入實際資料。

在 MXFP4 量化與 DGX Spark 的組合下,部分權重 (特別是 MoE router) 可能未能正確從 meta device 轉移到 CUDA device,導致運算失敗。

解決方案
已修復 修改模型載入參數,避免使用延遲載入:
self.model = AutoModelForCausalLM.from_pretrained(
    self.model_id,
    torch_dtype=torch.bfloat16,    # 使用明確的資料型別
    device_map="auto",
    low_cpu_mem_usage=False,       # 停用延遲載入
)

沒有留言:

張貼留言