La optimización en IA es realmente tres disciplinas separadas que resulta que comparten nombre. La optimización de entrenamiento se trata de hacer el proceso de aprendizaje más rápido y barato. La optimización de inferencia se trata de hacer que el modelo entrenado responda más rápido y use menos hardware. La optimización de servicio se trata de manejar muchos usuarios concurrentes eficientemente. La mayoría de la gente las confunde porque las técnicas a veces se superponen, pero los objetivos y restricciones son diferentes. Una optimización de entrenamiento como gradient checkpointing intercambia tiempo de cómputo por memoria — recalculas activaciones durante la pasada hacia atrás en vez de almacenarlas. Eso tiene sentido cuando estás limitado por memoria de GPU durante una corrida de entrenamiento de varios días. No tendría sentido durante inferencia, donde no hay pasada hacia atrás. Entender qué fase estás optimizando, y qué recurso estás intercambiando por cuál, es la base para tomar buenas decisiones aquí.
Si solo pudieras aprender una técnica de optimización, la cuantización sería la indicada. La idea es simple: los modelos se entrenan en punto flotante de alta precisión (típicamente bfloat16, que usa 16 bits por parámetro), pero pueden correr en precisión mucho menor sin pérdida catastrófica de calidad. Un modelo de 14 mil millones de parámetros en bfloat16 ocupa aproximadamente 28 GB de VRAM. Cuantízalo a 4 bits (Q4_K_M en la notación de llama.cpp) y cabe en menos de 9 GB — de repente corre en una sola GPU de consumo. La compensación de calidad existe pero es menor de lo que esperarías. Los métodos de cuantización modernos como GPTQ, AWQ y GGUF se calibran contra datos reales para que los pesos más importantes mantengan mayor precisión. En pruebas a ciegas, la mayoría de los usuarios no puede distinguir entre un modelo a precisión completa y su versión cuantizada a 4 bits para tareas cotidianas. La brecha aparece en casos extremos — cadenas de razonamiento complejas, conocimiento factual de nicho, tareas multilingües — pero para la mayoría de los casos de uso en producción, la cuantización es rendimiento gratuito.
Más allá de la cuantización, las mayores aceleraciones de inferencia vienen de cómo gestionas las solicitudes en vez de cómo reduces el modelo. El batching continuo — el enfoque usado por vLLM y TensorRT-LLM — permite al servidor procesar múltiples solicitudes simultáneamente, llenando ciclos ociosos de GPU que de otra forma se desperdiciarían mientras una solicitud espera por su siguiente token. La optimización de KV-cache (como PagedAttention) previene que la sobrecarga de memoria del key-value cache crezca linealmente con la longitud de secuencia, lo cual es crítico para aplicaciones de contexto largo. La decodificación especulativa usa un modelo "borrador" pequeño y rápido para generar varios tokens candidatos, luego el modelo grande los verifica en una sola pasada hacia adelante — si el modelo borrador acierta (lo cual hace frecuentemente para texto predecible), obtienes múltiples tokens por el costo de una llamada al modelo grande. Estas técnicas se acumulan. Un stack de servicio bien afinado usando batching continuo, cuantización y decodificación especulativa puede servir el mismo modelo a cinco o diez veces el throughput de una implementación ingenua.
Para la mayoría de los equipos, la optimización es ultimadamente sobre el costo por consulta. Correr un modelo de 70B en un cluster de A100s cuesta dinero serio — aproximadamente $8–$15 por GPU por hora a precios de nube. La optimización determina si ese cluster maneja 50 solicitudes por segundo o 500. La destilación es otra palanca: entrenas un modelo "estudiante" más pequeño para imitar las salidas de un modelo "maestro" más grande en tu tarea específica. Un modelo destilado de 8B que iguala el 90% de la calidad del modelo de 70B en tu caso de uso particular cuesta una fracción de ejecutar. El flujo de trabajo práctico que muchos equipos siguen es: prototipa con el modelo más grande disponible vía API, mide qué nivel de calidad realmente necesitas, luego trabaja hacia atrás — cuantiza, destila o cambia a un modelo más pequeño hasta que encuentras el punto óptimo donde la calidad es aceptable y el costo es sostenible. Los equipos que se saltan este proceso y van directo al modelo más grande en producción casi siempre están gastando de más.