
8 月 14 日 Day 1 寫下「2026 年是地端 AI 部署元年」的時候,也順便提供了 AI 相關名詞的懶人包,當天重新把自己的環境重作一次,桌上是一台剛開箱的 DGX Spark、一座空的模型庫。三十天後,機器變成兩台,跑過六款模型(gpt-oss-120b、Qwen3.8-27B、Qwen3.8-Flash-Next、Ornith 1.5 35B-A3B、DeepSeek-V4-Flash、MiniMax-H3)、六個引擎(llama.cpp、Ollama、vLLM、TensorRT-LLM、ds4-server、FreeTokenOllama 底層即 llama.cpp,分開列是因為預設值不同)、三個 agent 框架(dsh、opencode、herdr)、一次微調、一場影片生成對決,停擺過兩次半,發過二十九篇文章,每一篇的數字都能夠對應到當初的情境。
今天把這這些整理製作成一張可複製的藍圖,十一層架構,每層一句話與一個數字,接著是這三十天裡我推翻自己的十個時刻,然後是比結論更該被留意的五個測試陷阱。
| 層 | 一句話 | 一個數字 | 出處 |
|---|---|---|---|
| 硬體 | 統一記憶體買的是容量與選擇權,不是速度,頻寬是所有結論的分母 | 273 GB/s | Day 2 |
| 網路 | 雙機直連走 RoCE,通訊不是瓶頸,記憶體頻寬才是 | NCCL 12.18 GB/s,線速 97.4% | Day 27 |
| 儲存 | 一寫多讀的集中模型庫,權重放不放本機看 loader 吃不吃頻寬 | 同一款碟同一個分母,vLLM 只用磁碟能力 3%,GGUF mmap 用 81% | Day 13 |
| 引擎 | 一個人用 llama.cpp,服務一群人用 vLLM,長提示詞批次才碰 TRT-LLM | 走 HTTP 的同一把尺,達成率 73.2% 對 45.2% 對 42.5% | Day 11 |
| 量化 | 8 位元是日常甜蜜點,四位元的繁中稅是英文的兩倍,自己的語料自己驗 | q8_0 PPL 劣化 0.06%4 位元繁中付英文的 1.67 到 2.00 倍 | Day 12、14 |
| 模型 | 看啟用參數量不看總參數量,MoE 的達成率落在密集模型下緣 | 密集 27B BF16 實測 4.66 t/s,35B-A3B 實測 29.92 t/s | Day 14、15 |
| API 層 | 用途命名不用模型命名,換模型不改客戶端,但單機容量不會因此變多 | 切換的代價是 40 分鐘,不是零 | Day 18、22、26 |
| Agent | 平行工具呼叫不打引擎,開分身才算並發,prefix cache 是 agent 場景的主角 | 命中率 91.8%,分身尖峰 7.5 倍差 | Day 20、21 |
| 安全與存取 | 地端不等於資料不落地,寫入閘門與 PII 過濾都要當一級元件,而且兩者的預設值都偏向開放 | Presidio 繁中人名召回只有 58% | Day 16、20 |
| 微調 | 128GB 訓得動 27B 的 LoRA,但你得自己數張量,能做跟能養是兩件事 | 37 分鐘一個 epoch,峰值 38.43 GB | Day 25、26 |
| 維運與成本 | 先知道它會怎麼死再決定看什麼,以 token 計價回不了本,撐住地端的是資料主權 | 停擺前 43 分鐘預警,每月持有 6,078 元,打平要 7.7 倍用量 | Day 28、29 |
這十一行是給要照做的人的。每一行的「怎麼做」在對應那天的文章裡,每一個數字的原始檔在 repo 裡(github.com/ivanusto/llm-zhtw-agent-exam 與後續整理的腳本倉庫)。
以及這個給 Gb10 維運用的相關程式 repo,https://github.com/ivanusto/gb10-ops
引擎那一行的數字要多講一句,因為它示範了本篇最後一節的重點。llama.cpp 用 llama-bench 量純運算是 79.8%,那個數字沒有 HTTP 往返、沒有 tokenize、沒有排程器換成 llama-server 走 HTTP、用跟 vLLM 與 TRT-LLM 一模一樣的客戶端打,是 73.2%。兩個數字都是真的,差的那 8% 就是服務機制該有的門檻成本。三方並排的表只能用後者。

一個三十天的系列如果從頭到尾都在證明自己是對的,那多半沒有認真測試或運氣好。以下是我被自己測試到的資料推翻的十次,按時間排:
數字是需要自己檢查的,不是看數字好看就好喔。
上面那十次是結論被推翻,但推翻它們的其實是同一件事,也就是測試方法。這一節把三十天裡碰到的問題收斂成 5 件該注意的事,它們比任何一個效能數字都更該留意,因為換一台機器、換一款模型,數字全部作廢,這 5 件事情可能都會對應到。
一、prefix cache 讓「重跑一次確認」變成量快取。 Day 9 同一組 --seed 跑第二趟,prefix cache 命中 99.2%,median TTFT 從 500 ms 掉到 76 ms,「prefill」報出 26,663 t/s。重點在於數字會變好看而不是變錯,所以它不會觸發任何懷疑。解法是每輪提示詞塞不重複的序號或奈秒前綴,把快取打掉再量。
二、跨引擎比 tok/s 之前,先確認 token 是同一種。 llama.cpp 的 GGUF tokenizer 與 HF tokenizer 切出來的 token 數不一定相同,用客戶端的字串長度當分母會直接高估。Day 15 之後所有 decode 數字的分母一律取伺服器自己回報的 completion_tokensDay 27 比 PPL 之前,先確認兩條路徑切出來的 chunk 數完全相同(繁中 142、英文 561、另一組 253),確認過才敢把兩個數字並排。
三、同一個指標要確認你認得它所有的輸出通道。 Day 22 第一版判定首 token 時只看 content 與 tool_calls,而 DeepSeek-V4 在那個負載下把整個輸出預算花在 reasoning_content 上,finish_reason 是 length,從不抵達 content。結果 45 輪裡有 14 輪被記成「沒有 TTFT」,其中 9 輪正是決定勝負的工具收尾輪。用那個子集算出來的倍率是 8.73×,比修正後的 4.68× 誇大了將近一倍。方向是對的,幅度嚴重灌水,而這種錯最難被找到。
四、同一張表裡不要有兩個分母。 Day 13 的 loader 對照表第一版兩列用了不同的統一分母,其中一列的百分比甚至跟它旁邊的絕對值對不上。發現的方法不是重跑,是拿印出來的兩個數字自己相除。任何表格交出去之前,把百分比用同一張表上的絕對值反算一次,這是簡單的的自我稽核。
五、沒有記錄取樣設定的比數等於沒有測試到真實資料。 Day 14 的 0/10 對 7/10 被 Day 15 的 50 輪重測推翻成 0/50。同理,投機解碼的加速倍率只在貪婪解碼成立,引用任何加速數字都要連取樣設定一起報。A/B 計時也一樣要顧慮快取,ComfyUI 固定種子會讓第一趟整個少算,另存 docker logs 撞到檔名會只剩一行錯誤訊息,證據沒了就得重跑。
十次推翻自己讀起來像是每個坑最後都有解,那不誠實。三十天結束的此刻,這三個是照做的人一定會撞到、而我還沒有答案的:
熱浸透斷電的根因還是不明。 9 月 1 日那次整台斷電,事後歸納出的紅線是 zone 連續浸透 417 秒,但那是從軌跡倒推的,不是從機制推的。它不留核心日誌、不是 OOM,也沒辦法用降功耗迴避。現在掛著的兩個看門狗(240 秒與 330 秒)做的都是「在它發生之前先中止你的工作」,這只有止血但沒解決問題喔。296 次開機裡有 34 次不安全關機,11%,這個比例正在逐步降低,可能是使用前期較多測試或沒注意到影片生成的時間太長,導致當掉的情況較多,加上放在家裡的書房散熱有限,現在有了開門狗,當掉的情況就少了非常多,因為有在控制。
ds4 的磁碟 KV 沒有淘汰機制。 /var/lib/ds4-kv 現在 49.2 GB、256 個檔,最舊的是 8 月 13 日,還在。Day 28 把它記成待辦,Day 29 又量了一次,根目錄從 38.1 GB 掉到 36 GB,照日均寫入攤平離塞爆還有二十天上下。碟本身的 Percentage Used 是 0%,所以任何看耐寫度的監控都不會叫。這件事同時是效能功能與資料落地點,正待後續追蹤與處理。
微調到底能不能取代提示詞,還需要再測試。 Day 25 的編輯規範那一格,資料集裡每一筆的 system prompt 都寫著那三條規則,模型學到的是「看到這組規則就照做」。把規則拿掉再測,違規從 98 個惡化到 143 個。要讓它變成習慣而不是條件反射,資料該怎麼設計,目前還需要再測試與調整。
系列後半正好撞上 IFA,NVIDIA 在那一週發布的東西,幾乎每一件都對這三十天有回應。
128GB 統一記憶體是 AI 工作站基本主流規格了。 Lenovo 與 Acer 的 RTX Spark Windows 機器十月上市,同樣的 128GB 統一記憶體、Windows 原生。Day 2 到 Day 28 量到的所有統一記憶體特性,記憶體可見性的兩極、頻寬決定 decode、功耗是加法不是乘法,會從「一台特殊的 Linux 開發機」變成一整個級距的共同特性。這個系列的實測價值在那之後不會過期,會擴大。
我自己認為微軟近期提出的 AI 開發機 64GB 記憶體這個規格已經不夠了。
地端 agent 正在被產品化。 Perplexity 的 Portable Computer(Day 13)、Hermes Agent 的一鍵地端、NVIDIA 自己的 PAIR,方向一致,都是本地優先、需要時審核外送資訊。Day 13 拆出來的那個「審核式閘門」形狀,Day 29 治理表的第 2 條,正在變成產品的預設值,而不是我自己近年測試和實作的建議,市場的實際需求確實是殊途同歸。這裡要接回藍圖第九層:Day 20 實測 Collie 在還沒配對任何裝置時,寫入閘門是關的,一個 curl 就能把按鍵送進活著的終端機配對一台裝置之後,連 loopback 直連的寫入都會被拒。閘門存在不等於閘門開著,產品化不會自動解決這件事。
開放權重的發行管道所有權變了。 NVIDIA 收購 Hugging Face 是這三十天裡最大的一條產業新聞,對 Day 5 那座建立在 HF 生態上的模型庫,這是供應鏈集中風險的實體化。MANIFEST 裡的來源、雜湊、授權三個欄位,從「整潔的好習慣」升級成「管道變動時能否重建供應鏈的依據」,這件事我在 Day 29 寫進了治理清單第 6 條。
模型本身還在變。 Qwen3.8-Flash-Next 是 Qwen4 的預告(Day 14),51B 的 n-gram embedding 明著替記憶體受限裝置設計,但在統一記憶體上卸載價值歸零,這是 Day 14 與 Day 22 兩次看到的同一件事:為分離式架構設計的聰明,在統一記憶體上會變成空轉。下一代模型的設計會不會開始把統一記憶體當一級目標,是我接下來一年最想看的事,MacStudio 在這部分也會很好用,加上 AMD 也投入了更多資源在統一記憶體的機器,以及 NVIDIA 後續的進展,相信有許多新的變化很值得期待。
一個人、一台機器:Day 4 整備、Day 7 上線、Day 8 的 llama.cpp、Day 12 選 q8_0、Day 16 的五個問題,一週內能跑到日常可用,不需要碰 llama.cpp 以外的引擎。
一個小團隊、要服務:加上 Day 9 的 vLLM、Day 18 的閘道、Day 19 到 21 的 agent 三部曲、Day 28 的兩層健康檢查與那份監控清單,並發 8 是這台機器服務小團隊的甜蜜點,Day 21 用三個真 agent 實證過。
MSP 或企業導入:Day 5 的模型庫治理、Day 16 的 PII 過濾(記得它預設 fail open,analyzer 一報錯就原文照送)、Day 20 的四個治理檢查點、Day 29 的兩張表與十二條清單,加上一句話:這從來不是二選一,是分流,機敏且可預測的走地端,需要旗艦能力且不機敏的走雲端,分流的閘門要留紀錄。
三十天前我問的問題是「這台機器能不能做地端 AI」,三十天後的答案繼續延伸。
能,而且比想像中寬鬆。 27B 的 LoRA 微調 37 分鐘、120B 的 MoE 常駐、雙機合體跑 FP8 的旗艦,這些在 24GB 顯卡的世界要靠各種卸載硬撐,在這裡是舒服的。
但速度不夠快,而且它會當掉。 273 GB/s 的頻寬讓密集 27B 的 BF16 只有 4.66 t/s,統一記憶體沒有 OOM 例外只有整台停擺,熱浸透會讓看門狗中止你的渲染。它的每一個限制都測試得出來,而測出來之後大部分都有對策。用量化版的模型就會很快較實用,如 DeepSeek V4 Flash,現在終於又多了更好用的 DeepSeek V4.1 Flash 了。
值不值,取決於你為什麼要它。 以 token 計價,我這套回不了本。但如果你需要處理的資料、模型和程式碼、文本等,儘量不能離開這個房間到雲端處理的話,添購第二台 Spark 跑雙機是需要的入場成本。
最後補一句反話,因為推薦名單如果沒有排除項就不是推薦名單。
這台機器不該買給三種人:一是追求純文字 decode 速度的,密集 27B 在 8 位元只有 7.93 t/s,同樣的錢在雲端買得到快得多的體驗。
二是用量撐不到成本攤平線的,那條線在 7.7 倍日常用量,撐不到就是在買保險不是在省錢,那要用保險的邏輯評估。
三是需要旗艦推理能力而資料又不機敏的,地端的天花板由記憶體決定,那個天花板的能力,現在仍低於旗艦模型之下。但最近剛出的 DeepSeek V4.1 FLash,其效果很讓人期待,可以多嘗試一下。
接下來還有 Day 31 番外篇喔,敬請期待。
Day 1|為什麼 2026 年是地端 AI 部署元年:系列規劃與硬體總覽
Day 2|DGX Spark GB10 深度解析:128GB 統一記憶體到底解決了什麼問題
Day 3|網路與儲存規劃:10GbE 骨幹、雙 Spark 直連與 NFS 集中模型庫
Day 4|開箱之後:DGX OS 初始環境建置與 CUDA、Docker 生態確認
Day 5|NFS 模型庫實戰:下載工具、權限設計與版本管理
Day 6|llama.cpp、vLLM、TensorRT-LLM 、Ollama、DS4 與 Unsloth 的定位與取捨
Day 7|第一個模型上線:gpt-oss-120b 從模型庫到 API 的完整流程
Day 8|llama.cpp 實測:先定量尺與 SOP
Day 9|vLLM 實測:官方容器、同時處理吞吐曲線,與剛出爐的新模型 Ornith 1.5
Day 10|TensorRT-LLM 實測:我花了一個下午,跟它的預設值搏感情
Day 11|地端 AI 三大推論引擎綜合評測,同場加映神秘嘉賓
Day 12|量化格式解析:「4-bit」兩個字,古今多少事 ? 都付笑談中
Day 13|Perplexity 把整套 Agent 搬上 DGX Spark:地端元年的官方背書
Day 14|Qwen3.8-27B 與 Flash-Next 加碼實測:地端模型世代對決與落地評估
Day 15|Ornith 1.5 實測:為 AI agent 而生的 35B-A3B
Day 16|模型選型方法論:五個問題幫你跳脫排行榜迷失,找到適合自己任務用的 AI 模型
Day 17|ds4 深度解析:Redis 之父只為一種模型造了一個引擎
Day 18|OpenAI 相容 API 層:地端 AI 多模型常駐好助手
Day 19|地端 agent 框架總覽:它們到底對你的端點做了什麼呢?
Day 20|DeepSeek Harness 實戰:21 萬款星的外掛式 harness 接上地端
Day 21|herdr 是地端 AI 同時跑多個 AI agent 的最佳解
Day 22|語意錨點對上 prefix cache,FreeToken VS vLLM,以及三個關於統一記憶體的教訓
Day 23|ComfyUI 部署與 NFS 模型庫整合:把集中管理的哲學帶進生圖世界
Day 24|MiniMax-H3 地端影片生成:h3-ui 與四步蒸餾版的三段對決
Day 25|Unsloth 微調實戰:教一款模型用繁體中文思考,並遵守台灣的編輯規範
Day 26|微調的最後一哩路:合併、轉檔、量化、上線
Day 27|雙 DGX Spark GB10 合體與分工合作的部署與實測
Day 28|雙NVIDIA DGX Spark GB10 維運篇
Day 29|成本與治理:地端 AI 到底值不值得,是否能進客戶環境?
Day 30|三十天製作了一張可複製的地端 AI 藍圖
Day 31|NVIDIA PAIR:合體與分工合作之外,第三種用法值不值得付 Ollama 稅