VLA 파인튜닝 VRAM 계산 가이드 및 수식 원리
SmolVLA, OpenVLA 등 대규모 비전-언어-행동(VLA) 모델을 소비자용 또는 단일 워크스테이션 GPU에서 파인튜닝할 때, 가장 큰 메모리 병목은 가중치 자체가 아니라 옵티마이저 상태(Optimizer State)와 배치 크기에 비례하는 활성화 메모리(Activation Memory)입니다.
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 수준으로 원활하게 학습할 수 있습니다. 단, VLM까지 모두 학습하는 전체 파인튜닝(Full Fine-tuning) 시에는 고정항만 약 7.2GB로 증가하므로 배치를 줄여야 합니다.
혼합 정밀도 Adam에서 왜 파라미터당 16바이트가 필요한가요?
ZeRO 논문(arXiv:1910.02054)에 따르면 혼합 정밀도 Adam 학습 시 가중치 2바이트(FP16), 그래디언트 2바이트(FP16), FP32 마스터 가중치 4바이트, 1차 모멘텀 4바이트, 2차 분산 4바이트가 필요하여 학습 파라미터 1개당 총 16바이트가 소모됩니다.
추론용 VRAM 계산기와 학습 계산기는 무엇이 다른가요?
추론 시에는 옵티마이저 상태와 역전파 그래디언트가 전혀 필요하지 않아 모델 가중치(FP16 기준 1B당 2GB)와 KV 캐시만 필요합니다. 반면 학습 시에는 학습되는 파라미터당 16바이트와 역전파 활성화 버퍼가 추가되므로 훨씬 큰 VRAM이 요구됩니다.
관련 Physical AI Portal 글
참고한 1차 자료
- 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])