GGUF Format Guide

    El formato universal para inferencia local de LLM cuantizados

    Model Weights

    Specification

    GGUF (GPT-Generated Unified Format) es un formato de archivo binario diseñado para almacenar modelos de lenguaje grandes cuantizados para inferencia local eficiente. Desarrollado por Georgi Gerganov como parte del proyecto llama.cpp, GGUF sucedió al formato GGML más antiguo en agosto de 2023, agregando un sistema de metadatos autodescriptivo que incorpora detalles de la arquitectura del modelo, configuración del tokenizador y parámetros de cuantización directamente en el archivo. Esto hace que los archivos GGUF sean portátiles y autónomos — todo lo necesario para cargar y ejecutar un modelo está en un solo archivo.

    El formato GGUF consta de tres secciones: un encabezado que contiene la versión del formato y el conteo de tensores, un almacén de metadatos clave-valor con la configuración del modelo (tipo de arquitectura, longitud de contexto, tamaño de vocabulario, dimensiones de embedding, conteo de cabezas de atención y datos del tokenizador), y la sección de datos de tensores que contiene los pesos reales del modelo en su representación cuantizada. El sistema de metadatos usa pares clave-valor tipados que soportan enteros, flotantes, booleanos, cadenas y arreglos, permitiendo descripciones ricas del modelo sin archivos de configuración externos.

    GGUF soporta numerosos tipos de cuantización que van desde precisión completa F32 y F16 hasta cuantizaciones agresivas como Q2_K e IQ1_S. Los niveles de cuantización más comúnmente usados son Q4_K_M (ofreciendo un buen balance entre calidad y tamaño), Q5_K_M (ligeramente más grande pero de mayor calidad) y Q8_0 (casi sin pérdida). Las variantes K-quant (Q4_K_S, Q4_K_M, Q5_K_S, etc.) usan un enfoque sofisticado de precisión mixta donde diferentes capas se cuantizan a diferentes niveles según su sensibilidad, produciendo mejor calidad que la cuantización uniforme con tamaños de archivo similares.

    When to Use GGUF

    GGUF es el formato de elección siempre que necesites ejecutar inferencia de LLM localmente — en computadoras personales, dispositivos de borde o servidores on-prem sin frameworks de inferencia dependientes de GPU. Es el formato nativo para llama.cpp y es soportado por un amplio ecosistema de herramientas de inferencia local incluyendo Ollama, LM Studio, GPT4All, koboldcpp y text-generation-webui. Si tu objetivo es desplegar un modelo ajustado para uso local sin dependencias de la nube, GGUF debería ser tu formato de exportación objetivo.

    Elige GGUF cuando necesites inferencia eficiente en CPU o cuando tu objetivo de despliegue tenga memoria GPU limitada. Las opciones de cuantización de GGUF te permiten intercambiar calidad del modelo por archivos más pequeños e inferencia más rápida, permitiendo que modelos grandes se ejecuten en hardware de consumo. Un modelo de 7B parámetros que requiere 14 GB en FP16 puede reducirse a aproximadamente 4 GB con cuantización Q4_K_M mientras retiene la mayor parte de su capacidad. Esto hace que GGUF sea esencial para despliegues sensibles a la privacidad donde los datos no pueden salir de la máquina local.

    GGUF es menos adecuado cuando necesitas máximo rendimiento de inferencia en clústeres de GPU (usa SafeTensors con vLLM o TensorRT-LLM en su lugar) o cuando necesitas continuar entrenando un modelo (GGUF es un formato solo de inferencia — usa SafeTensors o checkpoints de PyTorch para entrenamiento). Tampoco es la opción correcta para arquitecturas no-transformer que llama.cpp no soporta.

    Schema / Structure

    text
    GGUF File Structure:
    ┌─────────────────────────────────────┐
    │ Header                              │
    │  - Magic number: 0x46475547 "GGUF"  │
    │  - Version: uint32 (currently 3)    │
    │  - Tensor count: uint64             │
    │  - Metadata KV count: uint64        │
    ├─────────────────────────────────────┤
    │ Metadata Key-Value Pairs            │
    │  - general.architecture: string     │
    │  - general.name: string             │
    │  - llama.context_length: uint32     │
    │  - llama.embedding_length: uint32   │
    │  - llama.block_count: uint32        │
    │  - llama.attention.head_count: u32  │
    │  - tokenizer.ggml.model: string     │
    │  - tokenizer.ggml.tokens: [string]  │
    │  - ... (additional metadata)        │
    ├─────────────────────────────────────┤
    │ Tensor Info (for each tensor)       │
    │  - Name: string                     │
    │  - Dimensions: uint32[]             │
    │  - Type: enum (F32/F16/Q4_K/...)    │
    │  - Offset: uint64                   │
    ├─────────────────────────────────────┤
    │ Tensor Data (aligned, contiguous)   │
    │  - Raw quantized weight data        │
    └─────────────────────────────────────┘
    Estructura del archivo binario GGUF con secciones de encabezado, metadatos, info de tensores y datos de pesos

    Example Data

    bash
    # Convert a HuggingFace model to GGUF using llama.cpp
    python convert_hf_to_gguf.py ./my-fine-tuned-model \
      --outfile model-f16.gguf \
      --outtype f16
    
    # Quantize to Q4_K_M for efficient local inference
    ./llama-quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M
    
    # Run inference with llama.cpp
    ./llama-cli -m model-q4_k_m.gguf \
      -p "Explain quantum computing in simple terms:" \
      -n 256 --temp 0.7
    
    # Inspect GGUF metadata
    python -c "
    from gguf import GGUFReader
    reader = GGUFReader('model-q4_k_m.gguf')
    for field in reader.fields.values():
        print(f'{field.name}: {field.parts[-1].tolist()}')"
    Conversión, cuantización, ejecución e inspección de archivos de modelo GGUF

    Ertas Support

    GGUF es un formato de exportación de primera clase en Ertas Studio. Después de entrenar o ajustar un modelo a través del pipeline de entrenamiento en la nube de Ertas, puedes exportar directamente a GGUF con tu nivel de cuantización preferido. El proceso de exportación maneja la conversión desde el formato de checkpoint de entrenamiento a GGUF automáticamente, incluyendo la incorporación de la configuración del tokenizador y los metadatos del modelo. Esto produce un archivo único y autónomo listo para inferencia local.

    La capacidad de exportación a GGUF es central en la arquitectura de privacidad primero de Ertas. Al exportar a GGUF, tu modelo ajustado se ejecuta completamente en hardware local sin llamadas de inferencia a la nube, sin dependencias de API y sin datos saliendo de tu entorno. Esto hace que la exportación a GGUF sea esencial para despliegues sensibles al cumplimiento donde los requisitos de soberanía de datos, HIPAA, GDPR u operación en entornos aislados prohíben la inferencia basada en la nube.

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.