¿Qué método de cuantificación es el adecuado para usted? (GPTQ frente a GGUF frente a AWQ) |  de Maarten Grootendorst |  noviembre de 2023

Explorando modelos de lenguaje grande precuantizados

A lo largo del último año, hemos visto el salvaje oeste de los grandes modelos de lenguaje (LLM). ¡El ritmo al que se lanzaron nuevas tecnologías y modelos fue asombroso! Como resultado, tenemos muchos estándares y formas diferentes de trabajar con los LLM.

En este artículo, exploraremos uno de esos temas, es decir, cargar su LLM local a través de varios estándares (cuantización). Con fragmentación, cuantización y diferentes estrategias de ahorro y compresión, no es fácil saber qué método es el adecuado para usted.

A lo largo de los ejemplos, usaremos Céfiro 7Buna variante afinada de Mistral 7B que fue entrenada con Optimización de preferencias directas (DPO).

🔥 CONSEJO: Después de cada ejemplo de carga de un LLM, se recomienda reiniciar su computadora portátil para evitar errores de OutOfMemory. La carga de varios LLM requiere una cantidad significativa de RAM/VRAM. Puede restablecer la memoria eliminando los modelos y restableciendo su caché de esta manera:

# Delete any models previously created
del model, tokenizer, pipe

# Empty VRAM cache
import torch
torch.cuda.empty_cache()

También puedes seguir el Cuaderno de Google Colab para asegurarse de que todo funcione según lo previsto.

La forma más sencilla y sencilla de cargar su LLM es a través de 🤗 transformadores. ¡HuggingFace ha creado un gran conjunto de paquetes que nos permiten hacer cosas increíbles con los LLM!

Comenzaremos instalando HuggingFace, entre otros, desde su rama principal para admitir modelos más nuevos:

# Latest HF transformers version for Mistral-like models
pip install git+https://github.com/huggingface/transformers.git
pip install accelerate bitsandbytes xformers

Después de la instalación, podemos usar la siguiente canalización para cargar fácilmente nuestro LLM:

from torch import bfloat16
from transformers import pipeline

# Load in your LLM without any compression tricks
pipe = pipeline(
"text-generation",
model="HuggingFaceH4/zephyr-7b-beta",
torch_dtype=bfloat16,
device_map="auto"
)