VLAファインチューニングVRAM計算ガイド&原理
SmolVLAやOpenVLAなどの大規模Vision-Language-Action(VLA)モデルを単一GPUでファインチューニングする場合、最大のボトルネックはモデル重みではなくオプティマイザ状態(Optimizer State)とバッチサイズに比例する活性化メモリです。
1. メモリ構成式(ZeRO 混合精度Adam)
学習時のGPUメモリは、固定項(重み+勾配+オプティマイザ状態)、バッチ依存の活性化メモリ、およびCUDAオーバーヘッドの合計となります:
M_train ≈ (P_frozen × b_w + P_train × 16) + M_act(B) + M_overhead
M_fixed = (P_frozen × b_w + P_train × 16) / 10^9 [GB]
* ZeRO 논문(arXiv:1910.02054) 기준: 혼합 정밀도 Adam은 FP16 가중치(2B) + FP16 그래디언트(2B) + FP32 마스터 가중치/모멘텀/분산(12B) = 파라미터당 16바이트를 점유합니다.
2. 短い2回測定で最大バッチ(B_max)を導出する方法
活性化メモリはカメラ数、画像解像度、チャンク長により大きく異なるため理論式のみの予測は困難です。バッチ2と4で短いプローブ測定を行い、直線外挿することで安全な最大バッチを確実に算出できます:
a = (M(B2) − M(B1)) ÷ (B2 − B1) [GB / 배치]
M_0 = M(B1) − a × B1 [GB, 베이스 오버헤드 절편]
B_max = ⌊ (Safety_Margin × V − M_0) ÷ a ⌋
3. 学習パラメータ数を直接確認するPythonコード
LeRobot環境では、requires_gradパラメータ数を直接カウントして固定項を正確に求められます:
4. よくある質問 (FAQ)
SmolVLAを24GBの単一GPU(RTX 3090/4090)で学習できますか?
はい。標準設定(ビジョン層を固定し、約100Mの行動エキスパートのみ学習)であれば固定メモリは約2.3GBにとどまるため、24GBカードでバッチ4〜8程度で問題なく学習可能です。全パラメータを学習するFull Fine-tuningの場合は固定項が約7.2GBに達するためバッチを小さくする必要があります。
なぜ混合精度Adamはパラメータあたり16バイト消費するのですか?
ZeRO論文(arXiv:1910.02054)によると、FP16重み(2B)、FP16勾配(2B)、FP32マスター重み(4B)、モメンタム(4B)、分散(4B)が必要となり、学習パラメータ1つにつき合計16バイトが消費されます。
推論用VRAM計算機と学習計算機の違いは何ですか?
推論時はオプティマイザ状態や逆伝播用キャッシュが不要で、重み(FP16で1Bあたり2GB)とKVキャッシュのみが必要です。学習時は1パラメータあたり16バイトの学習状態と活性化バッファが加わるため、はるかに大きなVRAMを必要とします。
Physical AI Portalの関連記事(英語)
参照した一次資料
- Rajbhandari et al., ZeRO: Memory Optimizations Toward Training Trillion Parameter Models (arXiv:1910.02054)
- Shukor et al., SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics (arXiv:2506.01844)
- Hugging Face — lerobot/smolvla_base Model Card
- Hugging Face LeRobot Docs — SmolVLA
データ・計算式最終確認日: 2026-10-23 · 運営者: Huni ([email protected])