Hub documentation

GGUF

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GGUF

Hugging Face Hub admite todos los formatos de archivo, pero cuenta con funciones integradas para el formato GGUF, un formato binario optimizado para la carga y el guardado rápidos de modelos, lo que lo hace altamente eficiente para fines de inferencia. GGUF está diseñado para su uso con GGML y otros ejecutores. GGUF fue desarrollado por @ggerganov, quien también es el desarrollador de llama.cpp, un popular marco de inferencia de LLM en C/C++. Los modelos desarrollados inicialmente en marcos como PyTorch pueden convertirse al formato GGUF para su uso con esos motores.

Como podemos ver en este gráfico, a diferencia de los formatos de archivo solo de tensores como safetensors – que también es un formato de modelo recomendado para el Hub – GGUF codifica tanto los tensores como un conjunto estandarizado de metadatos.

Búsqueda de archivos GGUF

Puedes explorar todos los modelos con archivos GGUF filtrando por la etiqueta GGUF: hf.co/models?library=gguf. Además, puedes usar la herramienta ggml-org/gguf-my-repo para convertir/cuantizar los pesos de tu modelo a pesos GGUF.

Por ejemplo, puedes consultar TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF para ver archivos GGUF en acción.

Visor de metadatos e información de tensores

El Hub tiene un visor para archivos GGUF que permite a un usuario revisar la metadatos y la información de los tensores (nombre, forma, precisión). El visor está disponible en la página del modelo (ejemplo) y en la página de archivos (ejemplo).

Uso con herramientas de código abierto

Analizar los metadatos con @huggingface/gguf

También hemos creado un parser de GGUF en javascript que funciona con archivos alojados de forma remota (p. ej., Hugging Face Hub).

npm install @huggingface/gguf
import { gguf } from "@huggingface/gguf";
// remote GGUF file from https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
const URL_LLAMA = "https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/191239b/llama-2-7b-chat.Q2_K.gguf";
const { metadata, tensorInfos } = await gguf(URL_LLAMA);

Encuentra más información aquí.

Tipos de cuantización

typefuentedescripción
F64WikipediaNúmero de coma flotante de doble precisión estándar IEEE 754 de 64 bits.
I64GHNúmero entero de ancho fijo de 64 bits.
F32WikipediaNúmero de coma flotante de precisión simple estándar IEEE 754 de 32 bits.
I32GHNúmero entero de ancho fijo de 32 bits.
F16WikipediaNúmero de coma flotante de media precisión IEEE 754 estándar de 16 bits.
BF16WikipediaVersión abreviada de 16 bits del número de coma flotante de precisión simple IEEE 754 de 32 bits.
I16GHNúmero entero de ancho fijo de 16 bits.
Q8_KGHCuantización de 8 bits (q). Cada bloque tiene 256 pesos. Solo se utiliza para cuantizar resultados intermedios. Todos los productos punto de 2 a 6 bits están implementados para este tipo de cuantización. Fórmula del peso: w = q * block_scale.
I8GHNúmero entero de ancho fijo de 8 bits.
Q6_KGHCuantización de 6 bits (q). Superbloques con 16 bloques, cada bloque tiene 16 pesos. Fórmula del peso: w = q * block_scale(8-bit), lo que resulta en 6,5625 bits por peso.
Q5_KGHCuantización de 5 bits (q). Superbloques con 8 bloques, cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale(6-bit) + block_min(6-bit), lo que resulta en 5,5 bits por peso.
Q4_KGHCuantización de 4 bits (q). Superbloques con 8 bloques, cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale(6-bit) + block_min(6-bit), lo que resulta en 4,5 bits por peso.
Q3_KGHCuantización de 3 bits (q). Superbloques con 16 bloques, cada bloque tiene 16 pesos. Fórmula del peso: w = q * block_scale(6-bit), lo que resulta en 3.4375 bits por peso.
Q2_KGHCuantización de 2 bits (q). Superbloques con 16 bloques, cada bloque tiene 16 pesos. Fórmula del peso: w = q * block_scale(4-bit) + block_min(4-bit), lo que resulta en 2.625 bits por peso.
IQ4_NLGHCuantización de 4 bits (q). Superbloques con 256 pesos. El peso w se obtiene usando super_block_scale & importance matrix.
IQ4_XSHFCuantización de 4 bits (q). Superbloques con 256 pesos. El peso w se obtiene mediante super_block_scale & importance matrix, lo que resulta en 4,25 bits por peso.
IQ3_SHFCuantización de 3 bits (q). Superbloques con 256 pesos. El peso w se obtiene utilizando super_block_scale & importance matrix, lo que resulta en 3,44 bits por peso.
IQ3_XXSHFCuantización de 3 bits (q). Superbloques con 256 pesos. El peso w se obtiene utilizando super_block_scale & importance matrix, lo que resulta en 3,06 bits por peso.
IQ2_XXSHFCuantización de 2 bits (q). Superbloques con 256 pesos. El peso w se obtiene utilizando super_block_scale & importance matrix, lo que resulta en 2,06 bits por peso.
IQ2_SHFCuantización de 2 bits (q). Superbloques con 256 pesos. El peso w se obtiene utilizando super_block_scale & importance matrix, lo que resulta en 2,5 bits por peso.
IQ2_XSHFCuantización de 2 bits (q). Superbloques con 256 pesos. El peso w se obtiene utilizando super_block_scale & importance matrix, lo que resulta en 2,31 bits por peso.
IQ1_SHFCuantización de 1 bit (q). Superbloques con 256 pesos. El peso w se obtiene mediante super_block_scale & importance matrix, lo que resulta en 1,56 bits por peso.
IQ1_MGHCuantización de 1 bit (q). Superbloques con 256 pesos. El peso w se obtiene mediante super_block_scale & importance matrix, lo que resulta en 1,75 bits por peso.
TQ1_0GHCuantización ternaria.
TQ2_0GHCuantización ternaria.
MXFP4GHPunto flotante de bloque microescalado de 4 bits.
Tipos heredados
Q8_0GHCuantización de 8 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).
Q8_1GHCuantización de 8 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale + block_minimum. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).
Q5_0GHCuantización de 5 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).
Q5_1GHCuantización de 5 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale + block_minimum. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).
Q4_0GHCuantización de 4 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).
Q4_1GHCuantización de 4 bits con redondeo al más cercano (q). Cada bloque tiene 32 pesos. Fórmula del peso: w = q * block_scale + block_minimum. Método de cuantización heredado (no se utiliza ampliamente en la actualidad).

si hay alguna inexactitud en la tabla anterior, abre un PR en este archivo.

Update on GitHub