Esta va a ser la primera parte de una serie de posts explicando conceptos básicos sobre diferentes partes del largo mundo alrededor de la IA. El objetivo de estos posts no va a ser volverte un experto en IA de la noche a la mañana pero si te permitirá empezar a entender partes clave para poder aprovechar mucho mejor todo lo que esta nueva realidad nos ofrece.
Muchos de nosotros venimos de otras especialidades y desde el lanzamiento de ChatGPT por allá en el 2022 hemos tenido que ir aprendiendo varios conceptos, siglas, palabras y muchas cosas que antes no conocían mas que quienes se dedicaban a ello y ahora parece que “todo el mundo entiende”
La mayoría de los conceptos explicados en estos posts no pretenden tener una profundidad explicativa enorme pero si ser lo suficientemente específicos como para captar la idea principal y así poder aprovechar mejor las múltiples herramientas que disponemos así como para profundizar en estos conceptos mas adelante si así lo queremos.
Empecemos hoy por algo básico…
Esos números raros: 7B, 70B, 405B
Seguro que has visto nombres como Gemma-4-31B, Qwen-3-8B o Llama-3.1-70B. Y te has preguntado qué significa esa "B" pegada a un número.
La respuesta corta es que la B viene de Billion en inglés. Y se refiere al número de parámetros del modelo.
- Gemma-4-31B→ 31 billions de parámetros.
- Qwen-3-8B → 8 billions de parámetros.
- Llama-3.1-70B → 70 billions de parámetros.
Espera pero… ¿qué son los parámetros?
Cuando entrenas un modelo, lo que ocurre por dentro es que se le enseñan muchos miles de millones de ejemplos y el modelo va ajustando una cantidad gigantesca de números internos para "acertar" cada vez mejor. Esos números, una vez terminado el entrenamiento, son los parámetros. Son lo que define al modelo.
Dicho de otra forma. Un parámetro es, “simplemente”, un número que el modelo aprendió durante su entrenamiento.
Esto es importante porque explica por qué los modelos a veces "alucinan". Y es porque no tienen una tabla de hechos que consultar. Tienen una distribución estadística enorme de patrones, y a veces el patrón más probable no es el correcto.
Una pregunta típica es, ¿a más parámetros = mejor modelo? En general sí, pero con algunos matices. Más parámetros significa:
- Más capacidad de capturar patrones complejos.
- Mejor razonamiento en tareas difíciles.
- Más conocimiento "memorizado" durante el entrenamiento.
Pero también significa:
- Más memoria necesaria para ejecutarlos (la GPU tiene que cargar todos esos números).
- Más lentos al generar texto.
- Más caros de servir (tanto en dinero como en mantenibilidad)
¿Sabiendo los parámetros de un modelo puedo saber cuanta memoria necesita?
Sí, sabiendo lo anterior puedes aplicar un viejo truco:
parámetros (B) × bytes_por_parámetro ≈ Memoria (GB) Un parámetro normalmente ocupa 2 bytes (en el formato estándar de hoy, que se llama BF16 pero no te preocupes por eso ahora. Lo veremos después). Así pues podemos de un vistazo ver un modelo y ver cuánta vRAM necesita:
- Mistral-7B → 7 × 2 = ~14 GB de vRAM.
- Llama-3.1-70B → 70 × 2 = ~140 GB de vRAM.
- Llama-3.1-405B → 405 × 2 = ~810 GB de vRAM.
Ese sería el tamaño mínimo que necesitarías para cargar alguno de esos modelos en su formato estándar.
Pero espera… ¿entonces necesito un superordenador en mi casa?
Si miramos los números de arriba, cargar un modelo de 70B en su formato estándar (140 GB de vRAM) requiere tarjetas gráficas que cuestan miles de euros. ¡Parece que la IA local es solo para ricos!
Keep calm amigo y que no panda el cunico. Aquí es donde entra la magia de la cuantización.
Para entender la cuantización, imagina que cada parámetro (ese numerito que el modelo aprendió) es una coordenada GPS súper precisa: 40.4161754, -3.7032902. Guardar tantos decimales ocupa mucho espacio. ¿Qué pasa si redondeamos a 40.416, -3.703? Ocupa menos espacio, y para el 99% de las tareas, te va a llevar al mismo sitio.
La cuantización hace exactamente eso: comprime los números del modelo reduciendo su precisión para que ocupen menos memoria y sean más rápidos de procesar.
Los "sabores" de la precisión: FP16, FP8, INT4...
¿Recuerdas que antes mencionamos que un parámetro estándar ocupa 2 bytes? Eso es porque usa un formato de 16 bits (conocido como FP16 o BF16). A partir de ahí, la comunidad empezó a "apretar" esos números:
- FP16 / BF16 (16-bit): El formato original. Cada parámetro ocupa 2 bytes. Máxima calidad, máximo peso.
- FP8 / INT8 (8-bit): Precisión reducida a la mitad. Cada parámetro ocupa 1 byte. El modelo pierde una fracción de inteligencia (en algunos casos casi imperceptible), pero ocupa la mitad.
- INT4 / 4-bit: Precisión muy reducida. Cada parámetro ocupa solo 0.5 bytes (medio byte). Aquí el modelo puede volverse menos preciso, pero el ahorro de memoria es tan brutal que puede llegar a valer la pena en algunos casos.
Nota: existen reducciones aún mayores pero salvo casos muy específicos no suelen ser aconsejables ya que el modelo pierde tanta precisión que “se vuelve tonto”.
Calcular la memoria que necesita un modelo como un pro
Ahora que entiendes qué son los parámetros y cómo se pueden comprimir, puedes combinar ambos conceptos para saber si un modelo cabe o no en tu gráfica o en el server donde lo vayas a montar.
La fórmula práctica, el mismo “truco” que vimos antes:
parámetros (B) × bytes_por_parámetro ≈ Memoria (GB) Pero esta vez con sus sabores de cuantización:
- Para 16-bit (sin comprimir) -> Multiplica por 2
- Para 8-bit (FP8/INT8) -> Multiplica por 1
- Para 4-bit (INT4) -> Multiplica por 0.5
Tomemos a Llama-3.1-70B para que veas la diferencia:
- Llama-3.1-70B en 16-bit: 70 × 2 = ~140 GB de vRAM.
- Llama-3.1-70B en 8-bit: 70 × 1 = ~70 GB de vRAM. (Ya empieza a ser más manejable).
- Llama-3.1-70B en 4-bit: 70 × 0.5 = ~35 GB de vRAM. (Esto ya es más accesible)
Un último consejo para el mundo real: Esta fórmula te da lo que ocupa el modelo en reposo (los pesos). Cuando empiezas a hablar con él y el modelo tiene que "pensar" y recordar la conversación (lo que se llama memoria de contexto), necesita un espacio extra.
Como regla general, súmale siempre un 10% o 20% más como mínimo al resultado de tu cálculo para tener margen y que el modelo no se cuelgue por falta de memoria.
¡Y listo! Ya sabes qué significa esa "B" en los modelos y cómo saber al instante si vas a poder usarlo en tu máquina o no. Nos vemos en próximos posts.
¿Quieres quemar tokens sin limites?
- Si eres una empresa y quieres usar modelos abiertos para no arruinarte con los costes de API revisa nuestros planes y empieza a ahorrar hoy mismo: Helmcode
- Si no eres una empresa, entra en nuestra comunidad privada de builders. Aparte de inferencia de modelos abiertos, tendrás acceso a recursos, conocimiento, workshops y muchas cosas más para construir en comunidad: NaN