Qué formato de cuantización ejecutar en la práctica.
Una pila de servicio pide un formato numérico antes que ninguna otra cosa, y la respuesta mueve su factura mensual por un factor de ocho. El formato con los pesos más pequeños no siempre es el que le da el modelo más pequeño.
La respuesta corta
- La regla general
- Los pesos se reducen exactamente en la proporción que indica el nombre — BF16 / FP16 2 B/param · FP8 1 B/param · 4-bit (AWQ, GPTQ) 0.5 B/param. Nada más lo hace.
- Lo que vale
- Qwen 3 32B necesita NVIDIA A100 PCIe a $1,091 al mes con precisión completa, y NVIDIA L4 a $125 en 4 bits. Mismo modelo, mismo contexto.
- La trampa
- La caché de clave/valor no baja al mismo ritmo que los pesos. A 128k de contexto, un Llama 3.3 70B de 4 bits es 53 % caché y solo 47 % pesos.
- Dónde pierde claramente el 4 bits
- Llama 3.1 8B a 128k necesita 23.0 GB en 4 bits frente a 18.4 GB en FP8 — más memoria, para peor calidad
Empiece aquí
La mayor parte de esta página es aritmética, así que aquí va antes la conclusión. Cuatro preguntas determinan el formato, y se plantean en este orden porque cada una puede zanjar la discusión por sí sola.
¿El modelo ya cabe a precisión completa, con margen para su contexto? Ejecútelo en BF16 y deje de leer. La cuantización es una forma de comprar una máquina más pequeña, y usted ya ha comprado una que funciona. No hay premio por comprimir un modelo que ya cabe.
¿Su contexto es corto y su modelo grande? Aquí es donde 4 bits se gana su reputación. Los pesos dominan la memoria, y reducirlos a una cuarta parte es casi como reducir la máquina a una cuarta parte.
¿Su contexto es largo y su modelo pequeño? Use FP8, en una tarjeta que lo admita. FP8 reduce a la mitad tanto la caché como los pesos, y a partir de cierta longitud es esa segunda reducción la que importa — la tabla de abajo muestra el punto exacto en el que supera a 4 bits.
¿Está sirviendo a una sola persona en una sola máquina? GGUF a través de Ollama es, con diferencia, lo que menos trabajo da, y el rendimiento que sacrifica es rendimiento que un único usuario nunca iba a utilizar.
Todo lo que sigue explica por qué esas cuatro respuestas son las que son, y le da las cifras para comprobarlas con su propio modelo en vez del nuestro. Si todavía no ha calculado cuánta memoria necesita su modelo, esa aritmética está en otra guía y va primero.
Tres formatos, cuatro nombres
Solo hay tres formatos numéricos de uso común para servir modelos, y se diferencian en una sola cosa: cuántos bytes cuesta cada parámetro. Todo lo demás — AWQ, GPTQ, GGUF, bitsandbytes — es un método para producir uno de estos tres, no un cuarto formato.
| Formato | Bytes por peso | Bytes por elemento de caché | Para qué sirve |
|---|---|---|---|
| BF16 / FP16 | 2 | 2 | Calidad de referencia |
| FP8 | 1 | 1 | Casi de referencia, Hopper y Blackwell |
| 4-bit (AWQ, GPTQ) | 0.5 | 2 | Pesos más pequeños, la caché se mantiene en FP16 |
Lea las dos columnas numéricas como un par. Son iguales en las dos primeras filas y no son iguales en la tercera, y esa única asimetría es responsable de la mayoría de las sorpresas del resto de esta página.
Los cuatro nombres que realmente se encontrará en un repositorio de modelos se corresponden con esa tabla de la siguiente manera.
AWQ y GPTQ
Dos caminos hasta el mismo destino de 4 bits. AWQ decide qué pesos importan observando las activaciones y los protege; GPTQ comprime capa por capa y corrige el error sobre la marcha. Ambos producen un checkpoint que vLLM y SGLang cargan directamente, y en cualquier modelo dado la diferencia entre ambos es menor que la diferencia entre cualquiera de los dos y 16 bits.
GGUF
La familia llama.cpp, y lo que usa Ollama por debajo. Es más un contenedor que un método único: un solo archivo contiene los pesos en cualquiera de una docena de precisiones, y desbordará capas a la RAM del sistema cuando la tarjeta sea demasiado pequeña. Inmejorable para un usuario en una sola máquina, y el más débil de los tres bajo concurrencia real.
FP8
No es tanto un formato de checkpoint como un modo. Déle a una pila de servicio pesos de 16 bits y los convertirá a FP8 al cargarlos, sin descarga aparte y sin pasada de calibración. Es el único de los cuatro que también puede comprimir la caché, por eso aparece más abajo donde no lo esperaría.
BF16 y FP16
Los pesos tal como los publicaron los autores, y la referencia con la que se mide cada otra fila. Dos bytes por parámetro, sin conjunto de calibración, sin compatibilidad de kernels que comprobar, sin discusión de calidad que tener. Cuando cabe, es la respuesta correcta y el resto de esta página es una distracción.
Pedir cualquiera de ellos es un solo flag. Son las mismas opciones que usa con detalle la guía de vLLM; lo que importa aquí es solo lo pequeña que es la diferencia entre ellos.
# 1. Reference. The weights as published, nothing to prepare.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct --dtype bfloat16
# 2. FP8, quantised while it loads. No second download, no calibration.
# --kv-cache-dtype is the half everyone forgets: it is what
# halves the CACHE as well as the weights.
$ vllm serve meta-llama/Llama-3.3-70B-Instruct \
--quantization fp8 --kv-cache-dtype fp8
# 3. Four-bit AWQ. A DIFFERENT checkpoint, prepared by someone else.
$ vllm serve casperhansen/llama-3.3-70b-instruct-awq \
--quantization awq_marlin
# 4. Four-bit GPTQ. Same idea, different repository and flag.
$ vllm serve TechxGenus/Llama-3.3-70B-Instruct-GPTQ \
--quantization gptq_marlin
La mitad que no se reduce
Cuantizar los pesos a 4 bits no cuantiza la caché de clave/valor. AWQ y GPTQ comprimen los pesos, y solo los pesos; la caché se queda en 16 bits a menos que pida por separado una caché FP8, y en un checkpoint de 4 bits casi nadie lo hace. Esa es la tercera columna de la tabla de arriba, y es la razón por la que la aritmética de abajo no sale como nadie espera.
La consecuencia se ve más fácilmente en un solo modelo. Abajo está Llama 3.3 70B, en 4 bits, en cada longitud de contexto que ofrece el configurador — pesos frente a caché.
| Contexto | Pesos | Caché KV | Proporción de caché |
|---|---|---|---|
| 4k tokens | 35.0 GB | 1.3 GB | 3 % |
| 8k tokens | 35.0 GB | 2.5 GB | 7 % |
| 32k tokens | 35.0 GB | 10.0 GB | 22 % |
| 128k tokens | 35.0 GB | 40.0 GB | 53 % |
La columna de pesos nunca se mueve — ese es precisamente el sentido de cuantizarlos. La columna de caché crece linealmente con el contexto hasta que, en la última fila, es más grande que el modelo al que pertenece.
Llévelo lo bastante lejos y 4 bits deja de ganar por completo. FP8 reduce a la mitad las dos mitades; 4 bits reduce a una cuarta parte una mitad y deja la otra intacta. Así que para cada modelo hay una longitud de contexto en la que ambos se cruzan, y llega antes cuanto más pequeño es el modelo — porque un modelo pequeño tiene poco peso que ahorrar y el mismo crecimiento de caché por token.
| Modelo | 4k | 8k | 32k | 128k |
|---|---|---|---|---|
| Llama 3.1 8B | 5.2 | 5.8 | 9.2 | 23.0 |
| Qwen 3 32B | 19.5 | 20.7 | 27.6 | 55.2 |
| Llama 3.3 70B | 41.7 | 43.1 | 51.7 | 86.3 |
Cifras en gigabytes, del más pequeño de los dos formatos, con el perdedor indicado debajo. Léalo de izquierda a derecha y observe cómo se va perdiendo la ventaja de la columna de 4 bits a medida que crece el contexto.
La última fila mantiene su ventaja en todos los casos, porque 70 mil millones de parámetros son muchísimo peso que ahorrar. La fila del medio termina en empate técnico: a 128k, Qwen 3 32B cuesta exactamente lo mismo en cualquiera de los dos formatos, y elegiría FP8 por la calidad. Y la primera fila se invierte por completo at 128k, donde 4 bits pide más memoria que FP8 y encima es el menos fiel de los dos. Esa combinación — más memoria y peor resultado — es el error de cuantización más común que vemos, y resulta invisible si solo se fija en el tamaño del archivo de pesos.
Lo que su tarjeta puede hacer realmente
FP8 es una característica de hardware antes que de software. Una tarjeta cuyos núcleos tensoriales no lo admitan cargará igualmente un checkpoint FP8 — la pila descomprime los pesos a 16 bits antes de la multiplicación — pero solo conserva el ahorro en la descarga y nada de la velocidad, y una caché FP8 no está disponible en absoluto. Cuatro bits es lo contrario: funciona en todas partes, porque los pesos se descomprimen a 16 bits antes del cálculo de todos modos.
| Generación | Tarjetas que alquilamos | FP8 |
|---|---|---|
| Ampere | NVIDIA RTX A6000 48GB, NVIDIA A100 PCIe 40GB, NVIDIA A100 PCIe 80GB, NVIDIA A100 SXM4 80GB | Ninguna en hardware — descomprimido a 16 bits |
| Ada Lovelace | NVIDIA L4 24GB, NVIDIA RTX 4090 24GB, NVIDIA L40S 48GB | En los núcleos tensoriales — pesos y caché |
| Hopper | NVIDIA H100 PCIe 80GB, NVIDIA H100 SXM5 80GB, NVIDIA H200 SXM5 141GB | En los núcleos tensoriales — pesos y caché |
| Blackwell | NVIDIA RTX 5090 32GB, NVIDIA B200 SXM6 180GB | En los núcleos tensoriales — pesos y caché |
Esa columna describe el silicio, lo cual no es exactamente la misma pregunta que dónde tiene sentido usar FP8. La propia nota del catálogo junto al formato menciona Hopper and Blackwell, y eso es una afirmación sobre las pilas de servicio, no sobre los núcleos tensoriales: son las generaciones en las que los kernels FP8 y las cachés FP8 han tenido más uso y menos sorpresas. Ada Lovelace lo ejecutará. Hopper y Blackwell son donde pondríamos un despliegue que dependa de ello.
Una cosa más que conviene saber antes de elegir tarjeta. Llama 3.3 70B en FP8 a 8k necesita 81.9 GB, y una tarjeta de 80 GB — entre otras, la NVIDIA A100 PCIe — se queda 1.9 GB corta. No lo bastante corta como para ser obvio en una hoja de cálculo, y sí lo bastante corta como para fallar en la máquina. La tarjeta que lo cubre por sí sola es la siguiente gama, y el configurador le dirá cuál es antes de pagar, no después.
Lo que se gana en velocidad
Generar un token significa leer los pesos activos de la memoria una vez. Menos bytes por peso significa menos bytes que leer, lo que significa más tokens por segundo — y en un único flujo sin procesamiento por lotes esa relación es casi lineal, porque no hay nada más que la tarjeta esté esperando. Es el mismo techo de ancho de banda de memoria por el que divide la guía de coste por token, y es deliberadamente conservador. Más abajo se aplica a un modelo lo bastante pequeño como para funcionar en cualquier máquina de una sola tarjeta que alquilamos, de modo que el formato y la tarjeta puedan leerse en la misma tabla.
| Tarjeta | Ancho de banda | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) |
|---|---|---|---|---|
| NVIDIA L4 | 300 GB/s | ~ 8 tok/s | ~ 17 tok/s | ~ 34 tok/s |
| NVIDIA RTX A6000 | 768 GB/s | ~ 22 tok/s | ~ 43 tok/s | ~ 86 tok/s |
| NVIDIA L40S | 864 GB/s | ~ 24 tok/s | ~ 49 tok/s | ~ 97 tok/s |
| NVIDIA RTX 4090 | 1008 GB/s | ~ 28 tok/s | ~ 57 tok/s | ~ 113 tok/s |
| NVIDIA A100 PCIe | 1555 GB/s | ~ 44 tok/s | ~ 87 tok/s | ~ 175 tok/s |
| NVIDIA RTX 5090 | 1792 GB/s | ~ 50 tok/s | ~ 101 tok/s | ~ 202 tok/s |
| NVIDIA A100 PCIe | 1935 GB/s | ~ 54 tok/s | ~ 109 tok/s | ~ 218 tok/s |
| NVIDIA H100 PCIe | 2000 GB/s | ~ 56 tok/s | ~ 113 tok/s | ~ 225 tok/s |
Llama 3.1 8B en una tarjeta, un flujo cada vez. Todas las máquinas de la lista lo alojan en los tres formatos, así que las filas son comparables tanto en horizontal como en vertical — y la proporción entre las tres columnas es la misma en cada línea, porque la determinan los bytes por peso y nada más.
Dos advertencias sobre cómo leer esa tabla. La primera es que describe una solicitud a la vez, y casi nadie sirve una solicitud a la vez: con procesamiento continuo por lotes los pesos se leen una sola vez para todo el lote, así que el límite pasa a ser el cómputo y no la memoria, y la proporción entre las columnas se estrecha. La segunda es que descuantizar cuesta algo. Los pesos de 4 bits deben descomprimirse antes de multiplicarse, y en un modelo pequeño con un tamaño de lote bajo, esa descompresión puede comerse una parte visible de lo que ganó al leer menos. La dirección de la tabla es fiable; los múltiplos exactos no son una promesa.
Lo que le cuesta
Esta es la parte del tema en la que hay que desconfiar de las cifras seguras de sí mismas, incluidas las nuestras. El error de cuantización depende mucho más del modelo que del método, y las comparaciones publicadas se contradicen entre sí porque miden modelos distintos en tareas distintas. Lo que se puede afirmar con honestidad es la forma general que tiene.
FP8 está lo bastante cerca como para no ser polémico. Sigue siendo un formato de coma flotante — un exponente y una mantisa, con menos bits de cada uno — y no la cuadrícula entera sobre la que hay que mapear un checkpoint de 4 bits con escalas por grupo. Por eso se degrada con tanta suavidad, y por eso no necesita una pasada de calibración. La mayoría de los equipos lo adoptan sin ejecutar una evaluación, y a la mayoría les sale bien.
Cuatro bits es una compensación real, y no afecta a todos por igual. La puntuación media de los benchmarks suele moverse muy poco. Lo que se mueve es la cola: cadenas largas de razonamiento, aritmética exacta, idiomas poco comunes, formatos de salida estrictos. Un modelo que sigue puntuando bien en una batería de preguntas de opción múltiple puede empezar a cerrar mal el JSON.
Los modelos más grandes lo absorben mejor. Cuatro bits en un 70B es un despliegue habitual. Cuatro bits en un 8B, cuyos parámetros cargan cada uno con más peso, es donde se nota la degradación — y, según la tabla de arriba, donde menos beneficio aporta.
Los datos de calibración importan más que las siglas. AWQ y GPTQ comprimen ambos contra un corpus de muestra. Un checkpoint calibrado con prosa en inglés y usado para código será peor de lo que el método merece, y ninguna tabla de benchmarks se lo dirá.
Lo cual lleva a la única recomendación de esta página que no es aritmética: ejecute ambos. Está alquilando una máquina con acceso root y sin ningún contador, así que servir el mismo modelo dos veces en dos puertos, pasando sus propios cien prompts por cada uno, le cuesta una tarde y resuelve la cuestión para su carga de trabajo, y no para la de otra persona. Esa es una respuesta sustancialmente mejor que cualquier tabla, esta incluida — y es la razón por la que preferimos mostrarle la fórmula antes que una puntuación.
Qué máquina implica eso
La razón por la que todo esto importa es la factura. Abajo está la máquina más barata de nuestro catálogo que aloja cada modelo entero a 8k de contexto, en cada uno de los tres formatos — entero significa en una sola tarjeta, sin repartirlo, porque un modelo repartido entre tarjetas mete la interconexión en la ecuación, y eso es otra guía.
| Modelo | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) |
|---|---|---|---|
| Llama 3.1 8B | NVIDIA L4 | NVIDIA L4 | NVIDIA L4 |
| Qwen 3 32B | NVIDIA A100 PCIe | NVIDIA RTX A6000 | NVIDIA L4 |
| Llama 3.3 70B | 4 × NVIDIA B200 SXM6 | 4 × NVIDIA H200 SXM5 | NVIDIA RTX A6000 |
A 8k de contexto, en las máquinas que realmente alquilamos. Cuando una celda nombra varias tarjetas, es el nodo más pequeño en el que se vende esa tarjeta, no un modelo repartido: las tarjetas más grandes se venden de cuatro en cuatro y de ocho en ocho, así que la forma más barata de evitar repartir un 70B a precisión completa es comprar cuatro y usar una. Esa es exactamente la factura que la cuantización existe para evitar.
Dos hábitos marcan la diferencia entre usar bien esta tabla y dejarse sorprender por ella. Dimensione según el contexto que realmente va a ejecutar, no según el máximo del modelo — la segunda tabla de esta página es lo que les pasa a quienes confunden ambas cosas. Y compruebe el formato en la tarjeta antes de pedir, no después: NVIDIA RTX A6000, NVIDIA A100 PCIe y NVIDIA A100 SXM4 no puede darle las cifras de FP8 sea cual sea la opción que pase. El configurador indica la memoria necesaria y si cabe en una tarjeta, para cada nodo y cada formato, antes de pagar nada. Si lo que está sopesando es alquilar frente a pagar una API por token, ese punto de equilibrio se calcula aparte, y la cuantización lo desplaza en gran medida a favor del hardware.
Compruebe el formato y la máquina juntos.
El configurador indica lo que necesita su modelo en cada precisión, y qué nodos lo alojan en una sola tarjeta, antes de que pague nada.
Otras guías
- Dimensionamiento · 10 min
Ejecutar un modelo de mezcla de expertos
Los parámetros totales deciden la máquina; los activos, la velocidad. Cuánta VRAM necesitan DeepSeek V3 y Qwen 3 235B, y qué nodo alquilar para ellos.
Leer la guía - Coste · 6 min
Cuándo el alquiler mensual gana al alquiler por horas
El punto de equilibrio con cifras reales, los tres costes que un precio por hora oculta hasta la factura, y la trampa del tiempo inactivo que la triplica.
Leer la guía - Coste · 9 min
Autoalojamiento frente a una API por token
El punto de equilibrio entre pagar una API por token y alquilar una GPU, con nuestros precios y rendimiento reales — y las cuatro cosas que la aritmética omite.
Leer la guía