Principios de VRAM y Guía Técnica para Fine-Tuning de VLA
Al ajustar modelos grandes de Vision-Language-Action (VLA) como SmolVLA u OpenVLA en una sola GPU, el principal cuello de botella no son solo los pesos, sino los estados del optimizador y la memoria de activación dependiente del tamaño de lote.
1. Desglose de Memoria (ZeRO Adam de Precisión Mixta)
La memoria de GPU en entrenamiento consta de un término fijo (pesos + gradientes + optimizador), memoria de activación dependiente del lote y sobrecarga de 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. Obtención del Tamaño Máximo de Lote (B_max) mediante 2 Sondas
Dado que la memoria de activación varía según cámaras, resolución y tamaño del chunk de acción, una fórmula teórica puede errar. Dos sondas cortas en lotes 2 y 4 permiten una extrapolación lineal confiable:
a = (M(B2) − M(B1)) ÷ (B2 − B1) [GB / 배치]
M_0 = M(B1) − a × B1 [GB, 베이스 오버헤드 절편]
B_max = ⌊ (Safety_Margin × V − M_0) ÷ a ⌋
3. Código en Python para Contar Parámetros Entrenables
En el entorno de LeRobot, cuente los parámetros requires_grad directamente para calcular con exactitud el término fijo:
4. Preguntas Frecuentes (FAQ)
¿Se puede entrenar SmolVLA en una sola GPU de 24 GB (RTX 3090/4090)?
Sí. Con la configuración predeterminada (codificador visual congelado, entrenando solo el experto en acción de ~100M), la memoria fija es de solo ~2,3 GB. Esto deja suficiente espacio en una tarjeta de 24 GB para lotes de 4 a 8. El ajuste completo eleva el término fijo a ~7,2 GB.
¿Por qué Adam de precisión mixta consume 16 bytes por parámetro?
Según el artículo de ZeRO (arXiv:1910.02054), Adam de precisión mixta requiere 2 bytes para pesos FP16, 2 bytes para gradientes, 4 bytes para la copia maestra FP32, 4 bytes para el momento y 4 bytes para la varianza: 16 bytes por parámetro.
¿En qué se diferencia la VRAM de inferencia de la de entrenamiento?
La inferencia no requiere estados de optimizador ni grafos de retropropagación, solo pesos del modelo (~2 GB por cada mil millones de parámetros en FP16) y caché KV. El entrenamiento exige 16 bytes por parámetro y grandes búferes de activación.
Artículos relacionados en Physical AI Portal (en inglés)
Fuentes primarias
- 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
Datos y fórmulas verificados: 2026-10-23 · Operador: Huni ([email protected])