テクニカルガイド
オプティマイザー状態の CPU および NVMe へのオフロード
トレーニングの膨大な記録 (オプティマイザの状態、勾配、場合によっては重み) を、不足している GPU メモリの代わりに CPU RAM または NVMe SSD に保存するメモリ節約のトリック。
このガイドを聴くAIによるナレーション · ~2 min
概要
これにより、GPU のメモリが許容するよりもはるかに大きなモデルをトレーニングできるようになります。
ディープダイブ
Adam のようなオプティマイザーを使用してニューラル ネットワークをトレーニングする場合、すべてのパラメーターには追加の荷物が含まれます。つまり、2 つの実行統計 (運動量と分散)、重みの完全精度のコピー、およびその勾配です。混合精度トレーニングでは、これはパラメーターごとに合計約 16 バイトになる可能性があり、重み自体の 2 バイトに比べて小さく見えます。オフロードにより、その荷物が GPU から移動されます。 CPU オフロードはオプティマイザーの状態を PCIe バス経由で通常のシステム RAM にストリーミングしますが、NVMe オフロードはオプティマイザーの状態を高速ソリッド ステート ディスクにまでプッシュします。 DeepSpeed の ZeRO-Infinity および ZeRO-Offload によって普及したこの技術は、実際の速度を容量と引き換えに、単一の GPU または小規模クラスターで数十億のパラメーターを使用してモデルを微調整できるようにします。
現実世界の実装
DeepSpeed’s ZeRO-Offload tutorial trains a ten-billion-parameter GPT-2 configuration on a 32 GB V100, with CPU optimizer offloading and activation checkpointing.
A research team evaluates ZeRO-Infinity with CPU and NVMe tiers for a model that exceeds GPU-only capacity.
A fine-tuning team configures CPU optimizer offloading and measures host memory use and update time.
A team compares larger GPUs with offloading, accounting for CPU, storage, and transfer costs.
CPU と NVMe へのオプティマイザー状態オフロードの将来
モデルが GPU メモリを超え続けるにつれて、段階的オフロードは珍しいものではなく標準になりつつあります。 CPU と GPU の境界を曖昧にする NVLink-C2C や CXL メモリ プールなどの高速インターコネクトとの緊密な統合に加え、どの状態をプリフェッチするかを予測するよりスマートなスケジューラが期待されます。 Grace Hopper などのユニファイド メモリ アーキテクチャは PCIe ペナルティを軽減し、フレームワークは多層オフロードをほぼ透過的にすることを推進しているため、愛好家は小規模なハードウェアで大規模なモデルを微調整できます。
実践する
なぜそれが重要なのか
- 費用と予算. アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
- より明確な判決. 技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
- 品質管理. より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
気をつけてください
- 1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
- インフラストラクチャとメンテナンスのコストは過小評価されがちです。
- システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
次のステップ
- 実装前にレイテンシ、品質、コストの目標を定義します。
- 現実的な負荷とデータ条件でのベンチマーク。
- エラー、ドリフト、ユーザーへの影響を計測器で監視します。
- スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
よくある質問
CPU および NVMe へのオプティマイザー ステート オフロードとは何ですか?
トレーニングの膨大な記録 (オプティマイザの状態、勾配、場合によっては重み) を、不足している GPU メモリの代わりに CPU RAM または NVMe SSD に保存するメモリ節約のトリック。これにより、GPU のメモリが許容するよりもはるかに大きなモデルをトレーニングできるようになります。
オプティマイザーの状態を CPU または NVMe にオフロードする主な目的は何ですか?
オフロードにより、重いオプティマイザーの状態が GPU から CPU RAM または NVMe に移動され、GPU メモリが解放され、より大きなモデルを同じハードウェアでトレーニングできるようになります。
For an Adam setup with two FP32 moments and an FP32 master weight, how much memory do those three values use per parameter?
Each FP32 value uses four bytes: two moments plus one master weight total twelve. A sixteen-byte mixed-precision estimate includes other tensors as well.
大規模なオプティマイザのオフロードを普及させたフレームワーク機能はどれですか?
DeepSpeed の ZeRO-Offload と ZeRO-Infinity は、オフロード オプティマイザー状態を CPU と NVMe に大規模に導入し、普及させました。
CPU または NVMe へのオフロードによる主なパフォーマンス コストはどれくらいですか?
状態を GPU 外に移動すると、PCIe または NVMe 経由でデータを転送することになりますが、GPU 上のメモリよりも遅いため、コンピューティングと重複しない限りスループットが低下します。
オフロードシステムは転送遅延の多くをどのようにして隠しているのでしょうか?
スケジューラーは、GPU がまだ計算を行っている間に PCIe 経由で必要なパーティションをプリフェッチし、通信を計算とオーバーラップさせて遅延をマスクします。