Personal Knowledge Base

修哥筆記

「知識的沉澱與分享」

在 NVIDIA DGX Spark 上跑 Ornith-1.5-35B-A3B:安裝步驟與心得

在 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":"你好"}]}'

我的心得

  1. 空間綽綽有餘。 Ornith-1.5-35B 的 GGUF(Q4/Q5 約 18–23GB),對 128GB 統一記憶體根本是小 case——你能開更頂級的量化、更大的 context(自家 262K 原生)都不心疼。甚至可以同時駐留多個模型。
  2. 選對 arch 是靈魂。 一切崩潰大多來自「build 成 sm_120(RTX 50)」或「CUDA 舊於 13」——GB10 是 sm_121,這個錯會讓 llama.cpp 報 no kernel image is available。
  3. ARM64 排雷。 第一直覺抓 x86 Docker image 必炸 exec format error;所有東西(ollama、容器、build)都要 aarch64 版。
  4. 統一記憶體的心智轉變。 沒有「VRAM 多少」這種事了——模型整顆佔「設備記憶體」。nvidia-smi 可能顯示 N/A,看 free 或用系統記憶體追蹤。
  5. 對 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 使用文件。

← 返回首頁