目安: 35分。演習の状態: 未実行 (not-run)。本文は学習ガイドであり、動作や品質の実測記録ではありません。
前提となる章: 学習・損失・評価の基本
独自の概念図。矢印は依存関係や判断の順序を示し、性能の実測を表さない。
- 1物理容量
- 2OSと他アプリを予約
- 3重みとKV cacheの予算
- 4小さい試行
- 5ピークと停止条件を観察
学習目標
- 4bitの重みサイズを概算できる
- 24GB/32GBで試す順序と停止条件を決める
仕事の役割
- 学習者: 仮説・データ・評価を設計する
- モデル: 指定した変換を試す
- アプリ: 制限・検証・権限を保証する
入力 → 工程 → 出力
| 入力 | 工程 | 出力 |
|---|---|---|
| 物理メモリ、モデル規模、精度、context、同時数 | 構成別に概算し、小さい実験でピークを測る | 推論設定ごとのメモリ予算と可否判断 |
ユニファイドメモリを専用VRAMと混同しない
Apple SiliconはCPUとGPUが同じ物理メモリを利用する設計である。24GBのMacに「CPU用24GBとGPU用24GB」があるわけではない。OS、ブラウザ、開発環境、モデルが一つの容量を共有する。MLXはこの設計に合わせた経路で、NVIDIA CUDAのコードがそのままMacのGPUで動くわけではない。
容量は入るかを左右し、メモリ帯域やGPU構成は速さにも影響する。同じ32GBでもチップ世代や機種、冷却、同時アプリによって速度は変わる。SSDへのswapは容量不足の代替になり得ても、低遅延を保証する運用ではない。
MLX文書 は共有メモリ上のarrayを説明し、Transformersのcache戦略 はメモリと速度の条件が異なるcacheを区別する。以下の数値予算は独自の計算例で、提供元による動作保証ではない。
重みの下限から総量へ積み上げる
重みの単純な概算は parameter数 × bit数 ÷ 8 である。十進GBなら7BはFP16で約14GB、4bitで約3.5GB、14Bは約28GBまたは約7GB、32Bは約64GBまたは約16GBとなる。これは丸めた理論値で、量子化のscale、非量子化層、配置、一時領域は含まない。GiB表示とGB表示も混ぜない。
必要メモリ ≈ 重み+KV cache+activation/作業領域+ランタイム+OS/他アプリ。4bitのファイルを選んでもKV cacheまで自動的に4bitになるわけではない。KV量子化を使う場合は対応と品質への影響を別に検証する。
contextと同時実行で増える部分
一般的なdecoderのKV cache概算は 2 × 層数 × KV head数 × head次元 × token数 × 1要素のbyte数 × 同時系列数。実際はGQA、sliding window、cache実装などで変わる。仮想構成32層・8 KV heads・128次元・FP16・4096token・1系列なら約0.5GiB、16384tokenなら約2GiBになる。これは実機測定でも特定モデルの仕様でもない。
同時に4人の会話を走らせると、重みは共有できても会話ごとのcacheや作業が増える。最大contextだけを見た見積もりでは足りない。最初は1系列、入力512〜1024token、出力128token程度に抑え、contextと同時数を別々に増やす。
現実的な出発点と限界
24GBでは0.5B〜3Bから計測を始め、7B/8Bの4bitを次の候補とする。14B 4bitも短いcontextなら候補だが、他アプリとcacheを含めて検証する。32GBでは同じ実験に余裕を作りやすく、14B 4bitを試す余地が増える。32B 4bitは重みだけで約16GBの下限があり、両機種で「快適」と保証できない。
これはモデル選択の試行順序で、動作保証表ではない。OSと他アプリに少なくとも数GB、例えば6〜8GBを初期予算として残し、実際のメモリプレッシャーに合わせて増やす。学習ではさらにactivationとoptimizer等が必要で、7B推論成功から7B全重み学習の可否を推定してはいけない。
計算例: 重みだけの理論下限
状態は 推定 (estimated)。十進GBの丸めた計算で、KV cache、量子化メタデータ、作業領域、OSを含みません。24GB/32GBは一般的な比較用シナリオです。
| 規模 | FP16 | 4bit |
|---|---|---|
| 7B | 約14GB | 約3.5GB |
| 14B | 約28GB | 約7GB |
| 32B | 約64GB | 約16GB |
自分で進める工程
- GB/GiBを統一する
- 重みの下限を計算する
- OS/他アプリを予約する
- context512、出力128、同時1から測る
- メモリプレッシャー悪化・swap増大・長時間停止で中止する
品質を確認する
- 4bitの重みサイズを概算できる
- 24GB/32GBで試す順序と停止条件を決める
- 残量を全部KV cacheへ割り当てず作業領域を残しているか
失敗を切り分ける
| 注意すること | 具体的な確認方法 |
|---|---|
| パラメータ数だけで速度や知能を順位付けしない | 同じ課題と設定で比べ、待ち時間と品質を別々に記録する。 |
| MoEのactive parameter数と全重みのメモリ量を混同しない | 全重みの容量を見積もり、KV cacheと作業領域の余裕も確保する。 |
| Macの32GBとNVIDIA GPUの32GB VRAMを同一条件としない | 機種とメモリ構成を記録する。共有メモリではOSや他のアプリが使う分も考慮する。 |
演習: 24GB・32GB Macのメモリを見積もる
状態: 未実行 (not-run)。
7B 4bit、14B 4bit、32B 4bitの重み下限を計算し、24GBと32GBの残量を求める
提出するもの: estimatedと明記した予算表
完了の確認: 残量を全部KV cacheへ割り当てず作業領域を残しているか
実験記録用ワークシートに計画・条件・観察を記録する。未測定値は null とし、推定値は式と仮定を残します。
MENTAL MODEL / メモリ
モデルの重さを、分けて考える。
重みとKVキャッシュは別々に増える。下の値は設計用の概算です。
GBは10⁹ byte。KVは32層・8 KV heads・128 head dim・FP16・batch 1の仮定。量子化メタデータ、実行バッファ、OS、モデル固有の構造は別途必要。MoEでは総重みとactive parametersを分けます。
出典
公開日は資料の日付、確認日は内容を参照した日です。コミュニティの観測は公式の確定事項と区別します。