引言:兩個世界的距離
昨天,當 AMD 執行長蘇姿丰在 CES 2026 上高喊「AI 屬於終端」時,我轉頭看了一眼我腳邊那台發出低頻轟鳴的巨獸。
她描繪的未來是優雅的:Strix Halo、統一記憶體、高度整合。
而我的現實是暴力的:兩顆電源供應器(其中一顆掛在機殼外面)、透過一條淘寶買的 SATA 轉 ATX 啟動卡同步「心跳」,驅動著兩張不同品牌的 RTX 3090。機殼內部充滿了電鑽修改過的痕跡,一根根電源線從縫隙拉進去,像是接駁外掛的維生系統。

第一章:Z370 的前世今生 — 從隔離環境到 AI 煉丹爐
這台機器的底座,是一張 2017 年代的 GIGABYTE Z370 主機板。它並不是單純的電子垃圾,而是我過去開發生涯的見證。
身為一名長期使用 Mac 進行開發的工程師(9 年 Frontend/IoT 經驗),我經常遇到一個痛點:客戶端的應用程式僅支援 Windows。為了不讓工作用的 MacBook Pro 環境變得混雜、臃腫,我在 2023 年 8 月組裝了這台電腦,專門用來隔離處理 Windows 端的測試需求。
一台備用機,滿足特定用途,何必高端。Z370 + i7-8700K + 16GB RAM,夠了。
多年過去,這台原本為了「隔離工作環境」而生的機器,被我塵封在書房角落,直到 2025 年 12 月。當我開始構想 Geo Decision Matrix 專案需要 48GB VRAM 的時候,我突然想起了它。
為什麼不拿來改造?反正也閒著。
於是它被賦予了新的使命:扛起全量地理數據的矩陣運算。從 Windows 客戶端測試機,變成了 Linux AI Server。從塵埃中挖出來,插上兩張卡皇,拿起電鑽,拉起電源線,重新燃燒。
第二章:硬體揭秘 — 空間的暴力置換、電鑽與「外掛心臟」
為了湊出 48GB VRAM,我在 2025 年 12 月的二手市場淘來了兩張卡皇:
主卡:EVGA RTX 3090 FTW3 ULTRA(額定 350W)
副卡:ASUS ROG STRIX RTX 3090 GAMING OC(額定 350W)
為了應對這兩張卡加起來超過 1000W 的瞬時功耗尖峰,我決定上 「雙電供(Dual PSU)」 方案:主系統用 Cooler Master MWE 1050W,副卡獨佔一顆 Cooler Master XG 850。
物理空間的惡夢:外掛電源
但這裡出現了一個致命的物理難題。
ROG STRIX RTX 3090 實在太肥。當我把它插進 PCIe Slot 2 並為了散熱空間而傾斜安裝時,它直接佔據了 Phanteks 機殼原本分配給第二顆電源的位置。
MWE 1050W 已經佔了一個坑,那 XG 850 去哪裡?
答案是:外掛在機殼外面。
主電源安分地待在機殼內;而副電源 XG 850,則被我用鋼絲架「外掛」在主機前方。電源線透過機殼的通風孔縫隙拉進去,看起來就像一台正在進行心外膜起搏(ECMO)的患者。
電鑽與銅柱:當顯卡立架不合時
如果不只是電源沒地方放,連顯卡都鎖不上呢?
為了把那張巨大的 ASUS 副卡塞進底部電源倉的位置,我必須使用顯卡延長線(Riser Cable)進行直立安裝。但悲劇發生了:我手邊的 GPU 延長線與機殼原本的顯卡立架孔位不合——延長線的鎖點太短,根本夠不到立架上的螺絲孔。
這時候正常的工程師會去買一條相容的線。但我沒有。
我拿出了電鑽。
我看準了延長線的孔距,直接在機殼的鋼板立架上鑽出了新的孔位。接著,我找來主機板用的六角銅柱(Standoffs),拴進新開的孔裡,硬生生造出了一個全新的、堅固的鎖點。
當螺絲轉緊的那一刻,我意識到這已經不只是組裝電腦,這是 Case Modding(機殼改造)。
淘寶的智慧:SATA 同步啟動卡
最後,怎麼讓那顆「流浪」在機殼外的電源跟著主機同步開關?
我在淘寶上找到了一個價格幾塊錢人民幣的 SATA 轉 ATX 啟動卡。
原理極其簡單暴力:
主電源的 SATA 線接上這張轉接卡。
當主機通電,SATA 供電觸發卡上的繼電器。
繼電器閉合,喚醒副電源的 24-pin。
按下開關的那一刻,機殼內的 EVGA、機殼外的 ASUS,以及那個被電鑽強行固定的立架,同時發出運轉的聲音。簡單、便宜、充滿了駭客精神。
第三章:撞牆 — 當 Docker 遇上 NCCL Error
硬體亮了,不代表軟體通了。
我的目標很清楚:用 RAPIDS Dask 啟動分散式運算,讓這兩張卡並聯跑 K-Means。理論上應該能達到接近 2 倍的速度。
但我花了整整一週的時間,只換來終端機上的一行字:

第一道牆:頻寬不對等
這就是**「地端算力的代價」**。
在雲端,你有 NVLink (900 GB/s)。而在地端,我只有 Z370 的 PCIe 3.0 x16。
理論頻寬是 32 GB/s,但在 P2P(Peer-to-Peer)通訊下,實測只有 12-15 GB/s。因為 Z370 的 PCIe 拓撲設計,所有 GPU 通訊都必須經過 Memory Controller Hub 中介,每一層都引入了延遲。

第二道牆:型號不對等
EVGA 和 ASUS 的卡雖然都是 3090,但 VBIOS、時脈、功耗策略完全不同。
當 NCCL 試圖建立「通訊環(Ring)」時,時脈差異(2550MHz vs 2300MHz)導致了嚴重的同步延遲。最終,NCCL 在容器內檢測失敗,P2P 被強制禁用(P2P Disabled)。
成績單:雙卡竟然比單卡還慢 2.8 倍
當 P2P 被禁用,Dask 的所有跨 GPU 數據交換都必須經過 CPU 記憶體中介(PCIe Transfer)。海量的重複傳輸讓雙卡方案跑了 420 秒,而單卡只花了 150 秒。

我拿著電鑽解決了物理問題,卻被物理定律(頻寬)解決了。
第四章:架構轉折 — 承認失敗,擁抱混合架構
這是一個工程師最痛苦的時刻:承認你的硬體架構無法支撐你的軟體野心。
我決定不再追求「兩張卡同時算」,而是追求「有效率的算」。
Stage 1:CPU 扛下髒活 — Apache Spark ETL
100 萬筆原始地理數據是「髒數據」。我將清洗工作交給 CPU 上的 Apache Spark,它能高效處理邏輯判斷,並輸出為 Parquet 格式。

Stage 2:Parquet 交接 — 列式儲存的優雅
Parquet 的列式結構讓 GPU 在讀取時能精確對齊記憶體邊界,極大化頻寬利用率。
Stage 3:RAPIDS cuML 單點突破
現在,我只用一張卡(EVGA 主卡)。
結果:150 秒完成。快了 2.8 倍,且零 NCCL Error。
# K-Means on single GPU
import cudf
from cuml import KMeans
gdf = cudf.read_parquet('/data/geo_data_clean/')
kmeans = KMeans(n_clusters=50)
kmeans.fit(gdf)
第五章:展望 — 為什麼 Strix Halo 讓我激動
回到開頭的 CES 2026。蘇姿丰說「AI 屬於終端」。
經歷過這一週的痛苦後,我終於明白 AMD Strix Halo(Ryzen AI Max+)的價值。
它的關鍵創新是 統一記憶體(Unified Memory)。CPU 和 GPU 共享同一個 96GB 的 LPDDR5X 池子。
這意味著:沒有 PCIe 瓶頸,沒有 VBIOS 相容性問題,不需要外掛電源,當然,也不需要拿電鑽去鑽你的主機。
但在 Strix Halo 普及之前,這台「掛著尿袋、滿身鑽孔」的 Z370 怪獸,依然是我最驕傲的戰友。
因為它教了我什麼是真正的工程:不是追逐最新最強的硬體,而是在限制中找到優雅的出口。
這就是地端開發者的浪漫。
待續:在這套混合架構的基礎上,我計畫加入 RAPIDS cuGraph 進行地理網路分析。Geo Decision Matrix 第三部曲,才剛剛開始。