DEV Community

plasmon
plasmon

Posted on • Originally published at qiita.com

VRAMを増やせば解決する、は物理的に間違っている — HBM・CXL・Unified Memoryが取れなかったもの

VRAMを増やせば解決する、は物理的に間違っている — HBM・CXL・Unified Memoryが取れなかったもの

HBMを6倍に増やしても、載せられるモデルサイズは2倍にしかならない。RTX 5060のVRAMが16GBに倍増しても70Bはフルに載らない。「VRAMが足りないなら増やせばいい」——この発想は、帯域・容量・コストの物理的トレードオフを無視している。

HBM、CXL、Unified Memory。この3つはVRAMの壁に対する異なるアプローチだ。それぞれが「帯域」と「容量」と「コスト」の三角形のどこに位置するかで、LLM推論の性能が根本的に変わる。


メモリの三角形: 帯域・容量・コスト

技術              帯域          容量       コスト/GB    インターフェース
────────────────────────────────────────────────────────────────────
HBM3E (H200)     4,800 GB/s    141 GB     $10-15       TSV 1024-bit × 6 stacks
GDDR6 (RTX4060)    272 GB/s      8 GB     $2.5-4       128-bit, 17 Gbps
CXL 3.1             64 GB/s*    TB級      $3-5         PCIe 6.0 x16
Unified (M4 Max)   546 GB/s    128 GB     Apple依存    LPDDR5X 512-bit

* per direction (128 GB/s bidirectional)
Enter fullscreen mode Exit fullscreen mode

各技術の物理的な特徴:

  • HBM3E: シリコン貫通電極(TSV)で垂直に積層。帯域は圧倒的だが、インターポーザ面積とコストを食う
  • GDDR6: 基板上のはんだ接続。安くてGPU独占で使えるが、容量に限界がある
  • CXL 3.1: 既存のPCIeインフラを流用。TB級の容量が取れるが、メモリ読み出し帯域はHBM3Eの1/75
  • Unified Memory: CPU/GPU/NPUが同じメモリプールを共有。コピーコストゼロだが、帯域は共有=競合

HBMは帯域、CXLは容量、Unified Memoryはバランスを選んだ。どれも三角形の全頂点は取れない。


HBM: 帯域の王、容量の奴隷

HBMの帯域は、~5,000本以上のシリコン貫通電極(TSV)による1024-bit幅のバスから生まれる。H200は6スタックを搭載し、合計6144-bitのバス幅で4.8 TB/sを実現する。GDDRの18倍だ。

だが容量には物理的な天井がある:

HBM3E スタック構成:
  1ダイ = 24 Gbit (3GB)
  8-Hi (8枚積層) = 24 GB/stack
  12-Hi (次世代)  = 36 GB/stack
  H200: 6 stacks × 24GB = 144 GB raw (公称141 GB)
  スタック単価: $240-360推定 ($10-15/GB)
Enter fullscreen mode Exit fullscreen mode

「もっとスタックを増やせば?」——ここで面積の問題にぶつかる。各HBMスタックはインターポーザ上で~100 mm²を占有する。GPU die (~800 mm²) + 6スタック (~600 mm²) = ~1400 mm²。CoWoS-Sの現行上限は約2831 mm²(3.3xレチクル)で、H200にはまだ余裕があるが、インターポーザの大型化はコストと歩留まりを直接悪化させる。

LLM推論への影響

GPU                     最大モデル (Q4)   帯域       備考
─────────────────────────────────────────────────────────────
H200 (141GB HBM3E)     ~280B             4,800 GB/s  70B FP16だとKV cache余裕1GB
RTX 4060 (8GB GDDR6)   ~13B              272 GB/s    13B以上はCPUオフロード必須
RTX 5060 (16GB GDDR7)  ~30B              448 GB/s    容量2倍でもモデルは2倍にならない
Enter fullscreen mode Exit fullscreen mode

VRAMを倍増しても載せられるモデルサイズは倍にならない。KV cacheの存在がある。32Kコンテキストの70B FP16モデルのKV cacheは約8GB。VRAMの「余り」がKV cacheに食われる。


CXL: 容量の解放、帯域の犠牲

CXL (Compute Express Link) はPCIeの物理層上に構築されたメモリ拡張プロトコルだ。

CXL 3.1はPCIe 6.0の物理層上に構築され、64 GB/s per direction(x16レーン)の帯域を提供する。レイテンシは170-400 ns(DDR5ローカルの2-4倍)。容量はmemory poolingにより理論上無制限だが、現時点ではサーバー/データセンター向けだ。

CXLの帯域でLLM推論すると何が起きるか:

モデル                 CXL (64 GB/s)    GDDR6 (272 GB/s)    HBM3E (4,800 GB/s)
──────────────────────────────────────────────────────────────────────────
7B Q4_K_M (4.7GB)     ~13.6 t/s        ~32 t/s (実効)       ~1021 t/s (理論)
70B Q4_K_M (40GB)     1.6 t/s          N/A (載らない)       ~120 t/s (理論)
Enter fullscreen mode Exit fullscreen mode

70B Q4の重みをCXLから読むと1.6 t/s。人間が読む速度と変わらない。

だが、CXLの真価は「重みの格納場所」ではない。

階層型メモリアーキテクチャ:

Tier    メモリ         用途                       容量       帯域        レイテンシ
────────────────────────────────────────────────────────────────────────────
 0      GPU SRAM       アクティベーション          24 MB     ~4 TB/s     ~1 ns
 1      HBM/GDDR      重み、アクティブKVキャッシュ 8-141 GB  272-4800    ~10 ns
 2      CXL Memory     KVキャッシュのオーバーフロー TB級      64 GB/s     170-400 ns
 3      NVMe SSD       永続ストレージ              TB級      7 GB/s      ~10,000 ns
Enter fullscreen mode Exit fullscreen mode

CXLの本質は「VRAMの代替」ではなく「VRAMとNVMeの間を埋める新しい層」だ。KVキャッシュの古いトークン(128Kコンテキストの最初の方)をCXLメモリに退避させれば、VRAM上には直近のアテンション範囲だけ残す設計が可能になる。KVキャッシュのオーバーフロー先としてNVMeの9倍高速。

この階層化は、光メモリ読み出し(KVキャッシュの物理的な転送量削減)やKVキャッシュ量子化(データ量を数値的に削減)とは直交する最適化だ。組み合わせられる。


Unified Memory: バランスの罠

Apple SiliconのUnified Memoryは、CPU・GPU・NPUが同じ物理メモリプールを共有する。

チップ          容量      帯域         バス幅     共有先
───────────────────────────────────────────────────────────────────
M4 Max         128 GB    546 GB/s     512-bit    CPU 12コア + GPU 40コア + NPU 16コア + メディアエンジン
M4 (base)      16-32 GB  120 GB/s     128-bit    同上(RTX 4060の272 GB/sの半分以下)
Enter fullscreen mode Exit fullscreen mode

LLM推論での現実

  • M4 Max 128GB: 70B Q4_K_M (40GB) がメモリ管理なしで全量載る。理論上限 546/40 = 13.7 t/sだが、実測は8-10 t/s。CPU/NPU/IOとの帯域共有がボトルネック
  • M4 32GB: 32B Q4で理論 120/18 = 6.7 t/s → 実測4-5 t/s。RTX 4060はGDDR6 272 GB/sを独占するため、同モデルで10.8 t/sを出す

帯域共有の問題は構造的だ。GPU推論中もCPUがメモリにアクセスし、帯域を食い合う。macOSのメモリ管理やUI描画がバックグラウンドで帯域を消費する。Safariで大きなページを開きながら推論すれば、体感で速度が落ちる。

Unified Memoryの利点は「GPUメモリ管理の排除」だ。CUDAのcudaMalloc/cudaMemcpyが不要。データはすでにそこにある。コピーコストゼロ。

だが帯域は共有資源であり、独占できない。RTX 4060のGDDR6は272 GB/sをGPUが事実上独占する。M4のベースモデルは120 GB/sをシステム全体で分け合う。

GPU                      総帯域     GPU占有率              LLM実効帯域   推論速度
─────────────────────────────────────────────────────────────────────────────────
RTX 4060 (8GB GDDR6)     272 GB/s   ~95% (DP出力程度)      ~258 GB/s    7B Q4: 32 t/s (実効率58%)
M4 Max (128GB LPDDR5X)   546 GB/s   大半 (CPU/NPU/IOと競合) ~400 GB/s    70B Q4: 8-10 t/s
M4 base (16GB LPDDR5X)   120 GB/s   システム全体と共有      ~78 GB/s     7B Q4: 14-16 t/s
Enter fullscreen mode Exit fullscreen mode

RTX 4060は帯域が小さいがGPU独占で、小モデルなら最速。M4 Maxは帯域が大きいが共有のため、大モデルを載せられる代わりに帯域あたりの効率は低い。M4 baseは帯域も容量も中途半端で、LLM用途ではRTX 4060に負ける。


3つのアプローチの比較

                帯域         容量        コスト     LLM推論での位置
─────────────────────────────────────────────────────────────────
HBM3E          4,800 GB/s    141 GB     $10-15/GB   重み+KVを高速に読む
GDDR6         272 GB/s      8-24 GB    $2.5-4/GB   小モデルを高速に回す
CXL 3.1        64 GB/s       TB級       $3-5/GB     KVキャッシュのオーバーフロー先
Unified (Max)  546 GB/s      128 GB     Apple依存   大モデルをゼロコピーで載せる
NVMe SSD       7 GB/s        TB級       $0.1/GB     モデルの永続ストレージ
Enter fullscreen mode Exit fullscreen mode
  • HBM (H100/H200) — バッチ推論、複数リクエスト同時処理。帯域を複数リクエストで共有できるため、1リクエストあたりのコスト効率が高い。ただし単一リクエストでは700W TDPの大半が無駄になる
  • GDDR (RTX 4060/5060) — 個人利用、単一リクエスト、小〜中モデル。GPU独占帯域で効率最大。115W TDPで32 t/s (0.28 t/s/W)、小モデルなら電力効率でH100単一リクエスト (700W) に勝る。ただし容量の壁があり、8GBでは7Bが上限
  • CXL — 超長コンテキスト推論 (128K+)、メモリプール共有。KVキャッシュが数十GBに膨らむ長コンテキストでVRAM不足を解消する。ただし帯域はHBM3Eの1/75で、重みの格納先としては遅すぎる。サーバー向け2025-26年、コンシューマーは2028年以降
  • Unified Memory (Apple) — 大モデルを手軽に動かしたい開発・実験用途。70B Q4がメモリ管理なしで動く。ただし帯域共有で速度効率はGDDR独占に劣り、ゲーミング用途との両立は困難

8GB VRAMユーザーへの実用的示唆

Layer 1: 量子化(即効性あり)
Q4_K_M量子化で7Bモデルの重みが14GB → 4.7GBになる(3倍の容量効率)。llama.cpp/Ollamaで標準サポート。

Layer 2: KVキャッシュ量子化(実験段階)
--cache-type-k q4_0 --cache-type-v q8_0 でKVキャッシュをFP16の1/3に圧縮。長コンテキスト対応の鍵。詳細は「KVキャッシュをQ4に落としたら32Kコンテキストが8GBに収まった」で検証した。

Layer 3: CPUオフロード(帯域トレードオフ)
--n-gpu-layers で部分的にGPUに載せれば、32Bモデルが動く(遅いが動く)。RTX 4060で32B最適オフロード時10.8 t/s。ボトルネックはCPU↔GPU間のPCIe 4.0 x8 = 16 GB/s。

Layer 4: CXL(将来)
CXLメモリモジュールでPCIe経由のメモリ追加。KVキャッシュのTier 2ストレージとして機能する。コンシューマー向けは2028年以降。今のCPUオフロード(PCIe 16 GB/s)と原理は似ているが、CXLはメモリセマンティクス(load/storeアクセス、GPU直接アドレッシング)で差別化される。

今日できるのはLayer 1-3の組み合わせだ。Q4量子化 + KVキャッシュQ4 + 最適GPUオフロード = 32Bモデル × 32Kコンテキストが8GBで動く。将来CXLがLayer 4として加われば、128K+コンテキストが現実的になる。

注目すべきは、CXLが約束する「メモリ追加」は、今日のCPUオフロードと本質的に同じPCIeバスを通ることだ。帯域の天井は同じ。CXLの利点はメモリセマンティクス(load/storeでアクセスでき、GPUが直接アドレッシング可能)であって、帯域の向上ではない。


物理が決めるメモリの未来

「VRAMを増やせば問題は解決するか?」——解決しない。容量を増やすと帯域かコストが犠牲になる。

帯域・容量・コストの三角形は物理法則が支配しており、どの技術も3つ全ては取れない。HBMは帯域を取って容量とコストを犠牲にした。CXLは容量を取って帯域を犠牲にした。Unified Memoryはバランスを取って独占帯域を犠牲にした。GDDRは独占帯域を取って容量を犠牲にした。

LLM推論の最適解は「1つの技術を選ぶ」ことではなく、複数の技術を階層的に組み合わせることだ。

今日のRTX 4060で実行可能な最善策:

  • 重み → VRAM(Q4量子化で7-13Bを全載せ)
  • KVキャッシュ → VRAM(Q4/Q8量子化で容量節約)
  • 追加レイヤー → RAM(CPUオフロード、PCIe帯域)
  • 永続ストレージ → NVMe SSD

将来のCXL搭載コンシューマーPCでの最善策:

  • 重み → VRAM(Q4量子化)
  • アクティブKV → VRAM
  • 古いKV → CXLメモリ(64 GB/sで十分なアクセス速度)
  • 永続ストレージ → NVMe SSD

メモリの壁は「破る」ものではなく「階層で回避する」ものだ。


参考文献

  1. CXL Consortium — "Compute Express Link Specification 3.1" (2024)
  2. Samsung — "CMM-D: CXL Memory Module for Data Centers" (2024)
  3. SK hynix — HBM3E specifications, 12-Hi stack architecture
  4. NVIDIA H200 SXM specifications — 141GB HBM3E, 4.8 TB/s
  5. Apple M4 Max specifications — 128GB Unified Memory, 546 GB/s
  6. "Efficient Memory Management for Large Language Model Serving with PagedAttention" (2023) arXiv:2309.06180

Top comments (0)