Después de descargar el modelo, es posible que encuentres un error de memoria insuficiente o de memoria de video insuficiente durante la ejecución. Este es probablemente el último resultado que cualquier persona quiere ver al probar modelos locales.
Como se introdujo anteriormente, el modelo necesita cargar sus pesos en RAM o VRAM durante la ejecución, y la generación de respuestas también requiere espacio adicional. Si tu dispositivo no puede contener el modelo, además de cambiar a un modelo con menos parámetros, también puedes verificar si existe una versión cuantizada.
Los pesos del modelo están compuestos por una gran cantidad de valores numéricos, y almacenar cada valor requiere una cierta cantidad de espacio. La cuantificación reduce el consumo de recursos del modelo al disminuir la precisión de la representación de estos valores numéricos. Por ejemplo, los pesos originalmente almacenados como números de punto flotante de 16 bits pueden convertirse en representaciones de baja precisión predominantemente de 8 bits o 4 bits. El número de parámetros generalmente no cambia, pero el espacio ocupado por cada parámetro se reduce.
Tomando como ejemplo un modelo de 7 mil millones de parámetros, y considerando solo los pesos en sí sin los costos adicionales de cuantificación, podemos obtener las siguientes estimaciones aproximadas:
Representación de pesos | Tamaño teórico de pesos |
16 bits | Aproximadamente 14 GB |
8 bits | Aproximadamente 7 GB |
4 bits | Aproximadamente 3.5 GB |
Los valores en GB aquí se calculan en unidades decimales. Los archivos cuantizados reales también almacenan información como coeficientes de escala y pueden usar precisiones mixtas, por lo que el tamaño real puede diferir de la estimación.
Para los usuarios ordinarios, el beneficio más directo de la cuantificación es que los archivos de modelo se hacen más pequeños, ahorrando espacio para descarga y almacenamiento, y requiriendo menos RAM o VRAM para los pesos durante la ejecución. Cuando el hardware y los frameworks de inferencia lo soportan, la cuantificación también puede mejorar la velocidad de inferencia.
Sin embargo, reducir el archivo a un cuarto de su tamaño original no significa que la velocidad de respuesta aumente cuatro veces.
Reducir la precisión también puede afectar la calidad de la respuesta, dependiendo del modelo, el método de cuantificación y la tarea. Al elegir una versión cuantizada, además de confirmar que puede ejecutarse, también debes probarla con tus propias preguntas para ver si las respuestas siguen siendo confiables.
Iniciar sesión unirse a la discusión
Para los modelos que ya han sido descargados o ajustados, el enfoque común es la Cuantización Post-Entrenamiento (PTQ), que convierte los pesos y otros valores numéricos en representaciones de menor precisión después de que el entrenamiento del modelo está completo. Algunos métodos requieren un pequeño lote de datos representativos para calibrar el proceso de cuantificación y minimizar el error.
Otra categoría es la Cuantización Sensible al Entrenamiento (QAT), que simula los efectos de la cuantificación durante el entrenamiento, permitiendo al modelo adaptarse a las representaciones de baja precisión de antemano.
Al ejecutar modelos con Ollama, frecuentemente encontrarás nombres como GGUF, Q4, Q8, etc. Estos nombres están principalmente relacionados con el formato de almacenamiento y el método de cuantificación del modelo, y son una razón importante por la cual los modelos grandes pueden ejecutarse en computadoras personales.
En agosto de 2023, Georgi Gerganov introdujo el formato GGUF. Sus principales ventajas incluyen despliegue en un solo archivo, escalabilidad, soporte para mapeo de memoria, información completa y facilidad de uso. Un archivo GGUF incluye un encabezado de archivo, pares clave-valor de metadatos e información de tensores. Estos componentes definen juntos la estructura y el comportamiento del modelo. Como se muestra a continuación, GGUF es un formato de archivo de modelo para inferencia de modelos grandes, actualmente utilizado ampliamente por herramientas de inferencia locales como llama.cpp y Ollama. Ollama encapsula el manejo del formato GGUF, la cuantificación de modelos y la carga de modelos, de modo que los usuarios no necesitan convertir los formatos de modelo por sí mismos — pueden descargar y ejecutar directamente modelos pre-cuantizados. Un archivo GGUF no solo contiene parámetros del modelo; también incluye información básica del modelo, arquitectura del modelo y datos de tensores. GGUF organiza esta información a través de un formato de archivo unificado, permitiendo que herramientas de inferencia como llama.cpp la lean y carguen directamente. Su estructura básica se muestra en la figura de abajo.
ModelScope también soporta la visualización de archivos GGUF estructurados, como se muestra a continuación. Cuando las herramientas de inferencia cargan archivos GGUF, pueden leer directamente esta información y cargar el modelo sin necesidad de preparar múltiples archivos de configuración de modelo por separado.
GGUF en sí mismo es solo un formato de archivo de modelo y no reduce directamente el uso de RAM o VRAM del modelo. Lo que verdaderamente reduce el consumo de recursos del modelo es la cuantificación.
En llama.cpp y los modelos GGUF, Q4, Q5, Q8, Q4_K_M representan diferentes nombres de cuantificación. Aquí, Q significa cuantificación, y el número siguiente indica el ancho de bits principal de cuantificación. Por ejemplo, Q4 significa cuantificación predominantemente de 4 bits, y Q8 significa cuantificación predominantemente de 8 bits.
Ten en cuenta que Q4 no significa que todos los parámetros del modelo usen uniformemente representación de 4 bits. Tomando el Q4_K_M común como ejemplo, pertenece al tipo de cuantificación K-quant en llama.cpp. El Q4 en el nombre significa cuantificación predominantemente de 4 bits, K indica el uso del esquema de cuantificación K-quant, y M denota la configuración Medium dentro de ese esquema. En la práctica, diferentes tensores en el modelo pueden usar diferentes precisiones de cuantificación en lugar de que todos los parámetros usen uniformemente representación de 4 bits, como se muestra en la figura de abajo.
Al elegir un modelo GGUF, primero confirma que tu herramienta de inferencia soporta el modelo, luego mira la versión de cuantificación específica. Una precisión de cuantificación más baja generalmente reduce el uso de RAM y VRAM, haciendo más fácil ejecutar el modelo en dispositivos ordinarios, pero puede sacrificar algo del rendimiento del modelo. Una precisión de cuantificación más alta generalmente preserva más de las capacidades del modelo original, pero también requiere más recursos de hardware.
Si una versión ya está cerca de los límites de RAM o VRAM de tu dispositivo, considera cambiar a una versión más pequeña para dejar margen para el contexto y las operaciones de ejecución. Si los recursos son suficientes, puedes usar las mismas preguntas para comparar las respuestas de diferentes versiones, prestando especial atención a tus tareas objetivo como extracción de información, generación de código o producción de salidas estructuradas.
Primero confirma una ejecución estable, luego verifica la calidad de las respuestas. De esta manera, la versión cuantizadas que elijas será más adecuada para tu dispositivo y caso de uso.