Hub documentation
GGUF
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
| type | fuente | descripción |
|---|---|---|
| F64 | Wikipedia | Número de coma flotante de doble precisión estándar IEEE 754 de 64 bits. |
| I64 | GH | Número entero de ancho fijo de 64 bits. |
| F32 | Wikipedia | Número de coma flotante de precisión simple estándar IEEE 754 de 32 bits. |
| I32 | GH | Número entero de ancho fijo de 32 bits. |
| F16 | Wikipedia | Número de coma flotante de media precisión IEEE 754 estándar de 16 bits. |
| BF16 | Wikipedia | Versión abreviada de 16 bits del número de coma flotante de precisión simple IEEE 754 de 32 bits. |
| I16 | GH | Número entero de ancho fijo de 16 bits. |
| Q8_K | GH | Cuantizació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. |
| I8 | GH | Número entero de ancho fijo de 8 bits. |
| Q6_K | GH | Cuantizació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_K | GH | Cuantizació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_K | GH | Cuantizació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_K | GH | Cuantizació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_K | GH | Cuantizació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_NL | GH | Cuantización de 4 bits (q). Superbloques con 256 pesos. El peso w se obtiene usando super_block_scale & importance matrix. |
| IQ4_XS | HF | Cuantizació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_S | HF | Cuantizació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_XXS | HF | Cuantizació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_XXS | HF | Cuantizació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_S | HF | Cuantizació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_XS | HF | Cuantizació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_S | HF | Cuantizació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_M | GH | Cuantizació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_0 | GH | Cuantización ternaria. |
| TQ2_0 | GH | Cuantización ternaria. |
| MXFP4 | GH | Punto flotante de bloque microescalado de 4 bits. |
| Tipos heredados | ||
| Q8_0 | GH | Cuantizació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_1 | GH | Cuantizació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_0 | GH | Cuantizació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_1 | GH | Cuantizació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_0 | GH | Cuantizació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_1 | GH | Cuantizació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