工程師思路系列・事出必有因

當 SSD 開始靠近 GPU:AI 正在重寫「記憶體」的定義

從 NVIDIA 開源 cuFile,談到 MoE 專家串流——兩條看似無關的路線,其實在回答同一個問題。

2026 年 8 月 4 日到 6 日,Future of Memory and Storage(FMS)在加州 Santa Clara 舉行。NVIDIA 在會上宣布把 cuFile API 以及其底下的整套垂直儲存軟體堆疊開源,程式碼移到 GitHub 上一個新成立的中立組織 XIO-SIG,由 Google、Intel、Meta 與 NVIDIA 共同擔任初始維護者。

新聞標題很快被壓縮成一句話:「NVIDIA 要讓 SSD 當顯示記憶體了。」這句話很好傳播,但它不正確——而且掩蓋了這件事真正有趣的地方。

一、先把誤讀拆掉

同一場會議上,NVIDIA 其實宣布了三件互相扣合的事:cuFile 開源、集結超過 40 家儲存與快閃廠商(DDN、KIOXIA、Micron 等)的 Storage-Next 標準化倡議,以及 SCADA(Scaled Accelerated Data Access)——一套讓 GPU 直接掌握儲存控制權的框架。第三件事才是今年真正的新東西,但它幾乎沒有出現在中文報導裡。

比較準確的說法是:AI 系統正在把「儲存」重新納入記憶體階層,而 MoE 模型的稀疏性,又讓這件事在同一個時間點變得特別合理。

這篇文章想做的,是把 HBM、DRAM、UMA、DMA、CXL、NVMe、GDS、Expert Streaming 這一堆看起來零散的名詞,放回同一條脈絡裡。

二、GPU 飢餓:為什麼 GPU 開始需要 Storage

現代 GPU 的算力已經誇張到有點不真實。但 GPU 最常見的限制,往往不是 Tensor Core 不夠多,而是資料餵不進來——業界稱之為 GPU Starvation,GPU 飢餓。一張數萬美元的加速卡停在那裡等資料,是整條 AI 產線上最貴的閒置。

所以 GPU 旁邊必須放 HBM。資料中心等級 GPU 的 HBM 頻寬已經進入數 TB/s 的量級。這不是因為 HBM 便宜,而是因為只有它能在極短的物理距離內提供這種頻寬。

但 HBM 有一個先天限制:容量小、單價高、而且擴不上去。當模型權重、activation、KV cache、optimizer state、checkpoint,加上動輒數 TB 的訓練資料全部加起來遠超過 HBM 時,下一層要放哪裡?

各層記憶體的大致量級(實際數字依世代與配置差異極大,此處僅供比較相對關係):

層級 頻寬量級 延遲量級 角色
GPU HBM 數 TB/s 奈秒級 運算時直接使用
NVLink-C2C 900 GB/s 等級 CPU↔GPU 晶片間互聯
系統 DRAM 數十~數百 GB/s 數十~百奈秒 較大的工作集
NVMe SSD 數~十幾 GB/s 數十~數百微秒 巨大容量、冷資料

越往下:速度越慢、延遲越高,但容量越大、每 GB 成本越低。這是一條連續的斜坡,不是幾個互相取代的選項。

三、第一個要澄清的誤解:DRAM 比 SSD 快很多

討論到這裡,很多人會直覺地問:「那就多插一點 DRAM 不就好了?」這個直覺是對的,而且必須先把一件事講清楚——DRAM 的頻寬與延遲,都遠遠優於 NVMe SSD。

所以千萬不要把這件事理解成「SSD 比 DRAM 快,所以 NVIDIA 才要讓 GPU 直接讀 SSD」。恰恰相反。這根本不是「DRAM vs SSD」的對決,而是 DRAM + SSD。就像我們從來不會說「RAM 很快,所以不需要硬碟」,也不會說「硬碟很大,所以不需要 RAM」。

真正的問題從來不是速度,而是 容量 × 成本 × 功耗。如果一個工作負載需要幾 TB 的資料,全用 DRAM 當然跑得更快;但當資料規模繼續往數十 TB 走,記憶體通道數、插槽數、功耗與價格會同時變成牆。相對地,一台伺服器塞滿 NVMe 很容易,再往上還能用 NVMe-oF、RDMA 把容量延伸到整個儲存網路。

SSD 的角色不是取代 DRAM,而是提供 DRAM 無法用合理成本提供的那一層容量

四、第二個誤解:GPU 與 DRAM 之間早就有更好的通道

另一個常見的簡化說法,是把傳統路徑畫成「GPU → CPU → DRAM → CPU → GPU」,然後說 CPU 要親自搬每一筆資料。這也不準確。DMA(Direct Memory Access)本來就是為了避免 CPU 親自搬資料而存在的技術,而且已經存在很多年。

更進一步,NVIDIA 在 Grace Hopper/Grace Blackwell 這類架構上,用 NVLink-C2C 把 CPU 與 GPU 直接連在同一塊基板上,雙向頻寬達到 900 GB/s 等級,讓 GPU 可以非常有效率地存取 CPU 端的大容量記憶體。這其實已經很接近「半統一記憶體」。

另一條路是 CXL。它建立在 PCIe 實體層之上,但引入更完整的記憶體語意與快取一致性機制,目標是讓 CPU、加速器與記憶體裝置之間形成更有彈性的記憶體資源池。不過這裡也要避免另一個誤解:CXL 不是「插上去就能把所有 DRAM 當 VRAM 用」的魔法。實際能做到什麼,仍然取決於 CPU、GPU、CXL 裝置、韌體、OS、驅動與整個平台拓撲。它比較像是下一代記憶體互聯的基礎設施,不是即插即用的擴充器。

所以結論是:NVIDIA 不是因為 DRAM 太慢才跑去找 SSD,而是因為 DRAM 再快,也有容量與成本的天花板。

五、那 Apple 的 UMA 不是更漂亮嗎

Apple Silicon 的 Unified Memory Architecture 證明了一件事:CPU 與 GPU 共用同一個記憶體池,可以省掉大量資料複製,對本地推理、影像與影片處理都非常有效率。於是問題很自然:既然 UMA 這麼好,為什麼資料中心不全部改成 UMA?

答案不是 UMA 不好,而是兩邊的戰場不同。Apple 可以針對單一 SoC、單一封裝、單一記憶體池做極致最佳化。但資料中心 AI 要同時面對的是:數十張到數千張 GPU、HBM 頻寬、GPU 之間的互聯、CPU 記憶體、網路、儲存、散熱、良率與成本。把超大容量記憶體全部封裝進單一晶片,在良率與可維護性上都是另一種代價。

所以未來比較可能的方向不是「UMA 打敗獨立 VRAM」,而是:不同記憶體層級之間的距離,正在持續縮短。NVLink-C2C 是把 DRAM 拉近 GPU;CXL 是把記憶體變成可調度資源;而 GDS,則是把 SSD 也拉進這條線。

六、GDS 與 cuFile 到底做了什麼

傳統 I/O 路徑的問題,不在於「CPU 要搬每個 byte」,而在於傳統 I/O 堆疊會產生系統記憶體中的 bounce buffer、額外的記憶體拷貝,以及作業系統與檔案系統的軟體開銷。當 GPU 同時發出大量並行請求時,這些開銷會直接變成延遲與 CPU 負載。

傳統路徑
NVMe SSD → 系統 RAM(bounce buffer)→ CPU/檔案系統 → GPU Memory
GPUDirect Storage
NVMe / RDMA 儲存 → DMA → GPU Memory

GPUDirect Storage(2021 年推出)要做的就是後者,而 cuFile 就是讓應用程式使用這條路徑的 API。程式透過 cuFileRead / cuFileWrite 明確要求資料直接進入 GPU 記憶體,真正的搬運則交給靠近 NVMe 或 NIC 的 DMA engine。

這裡有一個關鍵細節值得記住:GDS 拿掉的是「資料路徑」上的 CPU,但控制路徑仍然掛在 CPU 上。也就是說,過去仍然是 CPU 負責發出儲存請求、管理檔案系統、處理完成通知。

而這正是今年 FMS 上真正的新東西。

七、SCADA:把「控制權」也交給 GPU

SCADA(Scaled Accelerated Data Access)源自 NVIDIA 的 BaM 研究,它做的事情是把儲存控制本身搬到 GPU 上:GPU 自己產生儲存請求、自己處理完成事件,讓數十萬個操作同時在途中,把延遲壓到微秒等級。

為什麼這件事重要?因為傳統 CPU 主導的 I/O 路徑,在「大區塊、循序」的傳輸上其實還算堪用;真正會爆掉的,是每秒數百萬次、512-byte 等級的小型隨機 I/O。而這恰好就是 AI 推理在做 KV cache、context 檢索,以及後面會談到的 expert streaming 時,最常出現的存取型態。

NVIDIA 對儲存的關注點,已經從「有幾 GB/s 的循序頻寬」,轉向「每秒能處理多少次小型 I/O,以及 GPU 能不能自己去要資料」

順帶一提,NVIDIA 在會上也秀了 BlueField-4 STX 裡的 Vera CPU,在壓縮與加密這類兩階段任務上,內部測試相較 x86 CPU 有最高 3.21 倍的吞吐量。整條資料路徑上的每一段,現在都在被重新設計。

八、但 SSD 並沒有「變成 VRAM」

這一點必須說得非常清楚。NVMe SSD 與 HBM 的延遲和頻寬差距,是好幾個數量級。HBM 是 GPU 運算時直接使用的高速記憶體,SSD 是儲存裝置。cuFile 目前也更適合應用程式主動發起的、可預期的較大區塊傳輸,而不是把 SSD 當成 GPU 的透明 swap。

所以正確的理解是:GDS 不是「SSD = VRAM」,而是「GPU 可以更有效率地使用 SSD 裡的資料」。SSD 在這裡的身分,是資料階層裡更低、更大、更便宜的一層。

九、開源的戰略意義

為什麼 NVIDIA 願意把 cuFile 交給一個由 Google、Intel、Meta 共同維護的中立組織?因為 GPU 效能已經不是單純的 GPU 問題。今天的 AI 工廠是一整條鏈:GPU、HBM、CPU、DRAM、NVMe、檔案系統、NIC、RDMA、網路、儲存陣列——任何一環卡住,價值數萬美元的 GPU 就在那裡閒著。

NVIDIA 靠自己一家把這條鏈上的每個檔案系統、每張 SSD、每個 Linux 核心版本都調到最佳,是不可能的任務。開源之後,儲存廠商、檔案系統開發者、Linux 社群與 AI 框架作者可以一起最佳化這條路徑。代價是放掉介面的獨佔,換到的是整條資料鏈都朝著 GPU 的需求演化。

這是一個很典型的策略:當你在生態系裡已經是重心,開放介面通常會擴大你的重力範圍,而不是削弱它。

十、另一條路:讓模型主動住進 SSD

到目前為止談的都是 NVIDIA 的思路——讓資料搬得更快。但同一時間,還有另一條完全不同的路線正在成形,而它剛好搭上近年模型架構最大的變化之一:Mixture of Experts(MoE)

傳統 Dense Model 有個很硬的限制:模型有多少參數,大致就代表要有多少參數常駐在高速記憶體。MoE 不一樣。以 DeepSeek V4 Flash 為例,總參數 284B,但每個 token 實際啟用的只有約 13B——大約 4.6%。

換句話說:模型非常大,但工作集(working set)可能沒有那麼大。這就產生一個很直接的問題:既然某些 expert 現在根本沒被用到,為什麼一定要讓它們佔著 VRAM 或 DRAM?

於是就有了 Expert Streaming

VRAM ── Hot Experts:目前正在使用的
DRAM ── Warm Experts:近期可能再次使用的
NVMe SSD ── Cold Experts:目前沒用到,但模型仍需保留的

Colibri:把 VRAM / RAM / SSD 當成單一階層

Colibrì 是一個純 C、零相依的推理引擎(Apache-2.0),它明確地把儲存、RAM 與 VRAM 視為同一個多層推理階層。以 GLM-5.2(744B MoE)為例:只把 dense 部分(attention、shared expert、embedding,int4 約 9.9 GB)常駐在 RAM,其餘 21,504 個 routed experts(磁碟上約 370 GB)依需求從 SSD 串流進來,用 per-layer LRU cache 管理,並且會自動 pin 住熱門 expert——用得越久,快取越準。目前已支援 GLM-5.2(744B)、Inkling(975B)、Kimi K3(2.8T)、DeepSeek V4 Flash(284B)與 OLMoE(7B)。

但這裡必須放上誠實的數字,否則這篇文章就變成另一種吹捧。

在開發者 12 核心、25 GB RAM 的 WSL2 環境上,冷啟動狀態下的生成速度是每秒 0.05 到 0.1 個 token——十幾二十秒才吐一個字。M5 Max 約 1.06 tok/s,PCIe 5.0 NVMe 的 Ryzen 9 9950X 約 0.28 tok/s。每個冷 token 可能要從磁碟讀進 GB 等級的 expert 權重。

這代表什麼?代表 expert streaming 目前是用時間換可行性:它讓原本需要八張 A100 才能載入的模型,可以在你手邊的機器上「跑得起來」,但還遠遠稱不上「跑得順」。這是一條正在成形的路,不是已經鋪好的路。

ds4(DwarfStar):專用化到底

antirez 的 ds4 走的是另一種極端:不做通用 GGUF runner,而是針對 DeepSeek V4 Flash/PRO 與 GLM 5.2 做深度專用化,模型載入、prompt 渲染、tool call、KV state、HTTP server 全部一起設計與驗證,支援 Metal、CUDA 與 ROCm。

它的 SSD streaming 是明確的降級路徑:記憶體夠就整個常駐,記憶體不夠就 --ssd-streaming,用可設定的 expert cache 預算從本地快閃分頁載入權重,用延遲換取「這台機器跑得動」。這個案例證明了一件事:當模型結構可以預測,針對它把資料放置與 I/O 調到極致,收益是很實在的。

FlashMoE:讓快取策略自己學

這件事也不只是開源社群在玩。2026 年 1 月的 FlashMoE 研究直接把 inactive experts offload 到 SSD,並用一個輕量的、以機器學習為基礎的快取替換策略,同時結合 recency 與 frequency 訊號來決定哪些 expert 值得留在高速記憶體。結果:在實機平台上,快取命中率相較 LRU/LFU 等傳統策略最高提升 51%,相較既有 MoE 推理系統最高有 2.6 倍的加速。

這已經不只是「SSD 可以存模型」,而是:AI 系統開始學習預測「下一步會用到哪個 expert」。一旦可以預測,就可以提前把它從 SSD 搬到 RAM,甚至搬進 VRAM,形成 Prediction → Prefetch → Cache → Compute 的完整流水線。

主流工具的方向不太一樣但問題相同:llama.cpp 大量依賴 mmap 與 OS page cache,並提供 --cpu-moe / --n-cpu-moe 把 expert 丟到系統 RAM,社群也已在討論 VRAM/pinned RAM/mmap 的三層 expert cache;AirLLM 走逐層載入;FlexGen 與 DeepSpeed ZeRO-Infinity 則是更完整的訓練/推理分層 offload。答案不同,但問的是同一個問題:模型大到超過高速記憶體時怎麼辦?

十一、SSD 會不會很快被寫壞

這是實務上最常被問到的問題,也最容易被誇張。先講原理:NAND 的壽命主要消耗在寫入與抹除(P/E cycle),讀取本身不是主要敵人。所以要分成兩種完全不同的情境。

情境 存取型態 壽命影響
A. 一次寫入、大量讀取
Expert streaming、GDS 模型載入
權重寫入一次 → 反覆讀取 相對輕微
B. 高頻 swap
VRAM 不足時的資料抽換
寫回 → 讀進 → 再寫回,不斷循環 消耗極快

情境 B 才是真正的殺手。持續寫入會被寫入放大(Write Amplification)進一步放大,加上垃圾回收與耗損平均的額外動作,消耗會非常快。所以要看的指標是 TBW、DWPD、WAF,以及控制器與 NAND 的等級。企業級常見做法是:原始資料放在安全陣列,另外劃出專門的、可耗損的 NVMe 當快取盤,壞了就熱插拔換掉,當成消耗品編列。

還有一個容易被忽略的實務問題:溫度。持續高負載的隨機讀取會讓 M.2 SSD 快速升溫並觸發降速,對長時間的 expert streaming 來說,散熱片與氣流的影響有時比標稱頻寬還大。

一句話總結:GDS 不等於 SSD 會很快死掉,真正危險的是「把 SSD 當成高頻率的 swap 空間」。

十二、兩條路線正在會合

把整件事攤開來看,會發現有兩條問題意識完全不同的路線:

路線 核心問題 代表技術
Data Path
Optimization
資料怎麼搬得更快 GDS/cuFile、SCADA、NVLink-C2C、CXL、RDMA
Data Placement
Optimization
哪些資料根本不必放在高速記憶體 Colibri、ds4、FlashMoE、llama.cpp offload

這兩條路不但不衝突,而且天生互補。可以想像未來的組合是:

AI Runtime 判斷:下一個 token 很可能需要 Expert #37
  ↓
Cache Engine 決定:#37 目前在 SSD,值得預取
  ↓
SCADA/GDS:GPU 自己發出請求,DMA 直達
  ↓
NVMe →(RAM)→ VRAM → 開始運算

這已經不太像傳統的「載入模型」,而比較像是:GPU 在一個巨大、分層、動態的記憶體空間裡工作。

十三、從「模型多大」到「工作集多大」

過去我們挑硬體時問的是「這張卡有幾 GB VRAM?」未來可能要改成兩個問題:這個模型的有效工作集有多大?這台機器能有效使用幾層記憶體?

一個 2.8T 的 MoE 模型,如果每個 token 只用到其中很小一部分,那 2.8T 並不代表你必須擁有 2.8T 的高速記憶體。真正要解決的是:需要的那一小塊,能不能及時到位。

對照 CPU 的世界,這個結構一點都不陌生。L1 → L2 → L3 → DRAM → SSD 這條階層存在幾十年了;AI 系統現在正在長出幾乎一模一樣的形狀:HBM → NVLink/C2C → DRAM → CXL → NVMe → NVMe-oF。差別只在於,管的東西從「CPU 的 cache line」變成了「模型的 expert」。

而真正的問題也從「這是不是記憶體?」變成了:這份資料現在,值不值得佔用高速記憶體?

十四、對中小企業與本地部署的實際意義

回到我們比較關心的現場。這一連串變化,對想在自己機房或工作站跑大模型的人,實際上意味著五件事:

1
選機的重點正在改變。過去看顯卡,現在要一起看 PCIe 通道數、NVMe 數量與規格、RAM 容量與頻寬。整條資料路徑上最窄的地方,才是真正的瓶頸。
2
不要用消費級 QLC 當 swap 或快取盤。如果真的要讓 SSD 承擔頻繁寫入,DWPD 與 TBW 必須先算過,並且把它當成有壽命的消耗品編列預算。
3
散熱要先想。長時間高密度隨機讀取的 M.2,降速幾乎是必然,散熱設計會直接影響可用頻寬。
4
現階段要挑對場景。Expert streaming 目前的速度更適合批次、非互動、可容忍延遲的任務;要求即時回應的互動場景,還是老老實實看模型能不能塞進 VRAM。
5
這條路的斜率很陡。NVMe 頻寬、小 I/O 效率、快取預測、模型稀疏度這四件事還在同時改善。今天不可行的組合,一年後未必不可行——但也別把還沒到的東西寫進今年的提案書。

最後:下一場競賽比的是「資料距離」

如果要把整件事濃縮成一句話:HBM 負責最快的資料,DRAM 負責更大的工作集,NVMe SSD 負責巨大的冷資料,GDS/SCADA 負責縮短 Storage 到 GPU 的距離,MoE 負責讓模型不必所有參數同時工作,Expert Streaming 負責把真正需要的那一塊送到正確的層級。

所以這次 FMS 上真正值得記住的,不是「SSD 終於可以當顯存了」,而是:GPU 正在從一個「只看 HBM」的運算裝置,變成一個直接面對整個資料階層的運算裝置。

AI 硬體的競爭,正在從單純的算力競賽,進入另一個階段——誰能讓 GPU 花最少的時間等資料。當模型規模從數百 B 走向 T 級,這個問題只會越來越重要。

NVIDIA 的 GDS 與 SCADA、CXL、NVLink-C2C,還有 Colibri、ds4、FlashMoE 這些看似不相干的東西,其實都在回答同一個問題:當模型大到不可能全部塞進最快的記憶體時,我們還能不能讓 GPU「感覺」自己擁有一個夠大的記憶體?

Mr. τ / 風雲網通系統有限公司 PCPiLOT

我們是放大鏡,聚集世上的光與熱。

#GPUDirectStorage #cuFile #SCADA #MoE #ExpertStreaming #記憶體階層 #NVMe

參考來源

NVIDIA Blog — As AI Increases Demands on Memory, Storage Steps Up
blogs.nvidia.com/blog/ai-storage-fms/

StorageReview — NVIDIA SCADA Puts Storage Control on the GPU as cuFile Goes Open Source
storagereview.com

Futurum — NVIDIA AI Storage Goes Open at FMS 2026
futurumgroup.com

Colibri(GitHub)
github.com/JustVugg/colibri | 實測評析:wavect.io

ds4 / DwarfStar(GitHub)
github.com/antirez/ds4

FlashMoE: Reducing SSD I/O Bottlenecks via ML-Based Cache Replacement(arXiv 2601.17063)
arxiv.org/abs/2601.17063

Last modified: 2026-08-12

Author

Comments

Write a Reply or Comment

Your email address will not be published.