
在 NVIDIA DGX Spark 上跑 Ornith-1.5-35B-A3B:安裝步驟與心得
· #DGX Spark #Ornith #GB10 #MoE #本地推理 #心得筆記
DGX Spark(NVIDIA GB10 Grace Blackwell)一推出就是「本地跑大模型」的夢幻機器;而 Ornith-1.5-35B-A3B 這種「35B 總量、只啟用 ~3B」的稀疏 MoE,剛好是它最適合的菜。這篇記錄安裝步驟與我的心得。
為什麼這兩者是天作之合
DGX Spark 的記憶體頻寬約 273GB/s——這是 token 產生的瓶頸。它的架構(CPU+GPU 共享 128GB 統一記憶體、NVLink-C2C)意味著「同尺寸下,MoE(啟用參數少)遠比 dense 快」。
Ornith-1.5-35B-A3B 每 token 只啟用約 3B 參數,正好把 DGX Spark 的頻寬優勢放到最大:模型總量不小、記憶體放得下,但每個 token 的運算很省。
硬體與先要搞懂的事
| 項目 | 值 | 注意 |
|---|---|---|
| CPU | 20 核 ARM64(aarch64) | ARM64 關鍵:x86_64 容器會 exec format error |
| GPU | GB10,sm_121 | 必須 build 用 CUDA 13.x |
| 記憶體 | 128GB 統一(約 121 GiB 可用) | 無「獨立 VRAM」,nvidia-smi 記憶體欄常顯示 N/A |
| OS | DGX OS(Ubuntu 24.04 客製) | NVIDIA 驅動+CUDA 已裝 |
| 特例 | 無原生 FP4 | 跟 B200 不同;NVFP4 要走 Marlin 解壓→BF16 |
安裝步驟
方式一:Ollama(最快驗證 GPU)
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama # 有的重啟後服務沒自動開
ollama run hf.co/AtomicChat/Ornith-1.5-35B-A3B-GGUF:Q5_K_M
Ollama 已與 NVIDIA 合作確保在 Spark 上開箱即用。它背後的 llama.cpp 用通用 backend──能跑、但未必吃滿 Blackwell 效能。
方式二:llama.cpp(NVIDIA 官方 playbook,吃滿 GB10)
sudo apt update && sudo apt install -y git clang cmake libcurl4-openssl-dev libssl-dev
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
# 關鍵:架構必須是 sm_121(121a-real 開原生 FP4),不能用 120(RTX 50 的)
cmake -B build -DGGML_NATIVE=ON -DGGML_CUDA=ON -DGGML_CURL=ON -DGGML_RPC=ON \
-DCMAKE_CUDA_ARCHITECTURES=121a-real
cmake --build build --config Release --target llama-server -j # 約 5–10 分鐘
# 啟動 Ollama 風格 OpenAI 相容 API
./build/bin/llama-server \
-hf AtomicChat/Ornith-1.5-35B-A3B-GGUF:AD-Q5_K-Q4_K \
--jinja -fa on --temp 0.6 --top-p 0.95 --top-k 20 \
-ngl 99 -c 8192 --host 0.0.0.0 --port 30000
接上 Agent(OpenAI 相容 API)
llama-server 起來後就是一個 /v1/chat/completions 端點——可以接 Hermes、Open WebUI、n8n 當後端:
curl -X POST http://127.0.0.1:30000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"ornith","messages":[{"role":"user","content":"你好"}]}'
我的心得
- 空間綽綽有餘。 Ornith-1.5-35B 的 GGUF(Q4/Q5 約 18–23GB),對 128GB 統一記憶體根本是小 case——你能開更頂級的量化、更大的 context(自家 262K 原生)都不心疼。甚至可以同時駐留多個模型。
- 選對 arch 是靈魂。 一切崩潰大多來自「build 成
sm_120(RTX 50)」或「CUDA 舊於 13」——GB10 是sm_121,這個錯會讓 llama.cpp 報no kernel image is available。 - ARM64 排雷。 第一直覺抓 x86 Docker image 必炸
exec format error;所有東西(ollama、容器、build)都要 aarch64 版。 - 統一記憶體的心智轉變。 沒有「VRAM 多少」這種事了——模型整顆佔「設備記憶體」。nvidia-smi 可能顯示 N/A,看
free或用系統記憶體追蹤。 - 對 agent 是好料。 OpenAI 相容 API 一上線就能讓 Hermes/Open WebUI 直接連它——資料完全不出機器。
一句話:如果你有一台 DGX Spark,Ornith-1.5-35B-A3B 會是「划算又順」的本地 agent 主力模型之一;用 NVIDIA 官方的 sm_121a-real build 就能吃滿它的效能。
本文為實作研究心得,參考 NVIDIA 官方 DGX Spark llama.cpp playbook、Ollama 的 NVIDIA Spark 支援文,與 AtomicChat 的 Ornith-1.5 GGUF 使用文件。