Home
Login

Una biblioteca ligera de PyTorch que hace que los modelos de lenguaje grandes sean más accesibles a través de la cuantificación de k bits.

MITPython 7.1kbitsandbytes-foundation Last Updated: 2025-06-19

Descripción detallada del proyecto bitsandbytes

Resumen del proyecto

bitsandbytes es una biblioteca de Python de código abierto mantenida por la Fundación bitsandbytes, dedicada a facilitar el acceso y la implementación de modelos de lenguaje grandes mediante técnicas de cuantificación de k bits. El proyecto es un envoltorio ligero de Python alrededor de funciones personalizadas de CUDA, centrado especialmente en optimizadores de 8 bits, multiplicación de matrices (LLM.int8()) y funcionalidades de cuantificación de 8 y 4 bits.

Dirección del proyecto: https://github.com/bitsandbytes-foundation/bitsandbytes

Documentación oficial: https://huggingface.co/docs/bitsandbytes/main

Características principales

1. Técnicas de cuantificación

  • Cuantificación de 8 bits: Utiliza técnicas de cuantificación a nivel de bloque, manteniendo un rendimiento cercano a 32 bits al tiempo que reduce significativamente el uso de memoria.
  • Cuantificación de 4 bits: Ofrece métodos avanzados de cuantificación de 4 bits como NF4 (Normal Float 4-bit) y FP4 (Float Point 4-bit).
  • Cuantificación dinámica: Adopta algoritmos de cuantificación dinámica a nivel de bloque para optimizar la eficiencia del almacenamiento.

2. Soporte de optimizadores

  • Optimizadores de 8 bits: Proporciona varios optimizadores de 8 bits a través del módulo bitsandbytes.optim.
  • Eficiencia de memoria: El consumo de memoria se reduce significativamente en comparación con los optimizadores tradicionales de 32 bits.
  • Mantenimiento del rendimiento: Mantiene el efecto de entrenamiento al tiempo que reduce el uso de memoria.

3. Capas lineales cuantificadas

  • Linear8bitLt: Implementación de capa lineal de 8 bits.
  • Linear4bit: Implementación de capa lineal de 4 bits.
  • Plug-and-play: Puede reemplazar directamente las capas lineales estándar de PyTorch.

Ventajas técnicas

Eficiencia de memoria

bitsandbytes reduce significativamente el uso de memoria del modelo a través de técnicas de cuantificación. Por ejemplo, para un modelo de mil millones de parámetros, el optimizador Adam tradicional necesita 8 GB de memoria para almacenar el estado del optimizador, mientras que el uso de la cuantificación de 8 bits puede reducir en gran medida esta necesidad.

Compatibilidad de hardware

El proyecto está trabajando para admitir más backends de hardware:

  • CUDA GPU (soporte principal)
  • Intel CPU + GPU
  • AMD GPU
  • Apple Silicon
  • NPU (Unidad de procesamiento neuronal)

Integración con QLoRA

La tecnología de cuantificación de 4 bits de bitsandbytes se utiliza a menudo en combinación con QLoRA (Quantized Low-Rank Adaptation) para lograr:

  • Cuantificar el modelo objetivo a 4 bits y congelarlo.
  • Utilizar la tecnología LoRA para ajustar el modelo congelado de 4 bits.
  • Reducir significativamente los costes de ajuste fino manteniendo el rendimiento.

Escenarios de aplicación

1. Inferencia de modelos de lenguaje grandes

  • Implementar modelos grandes en memoria GPU limitada.
  • Mejorar la velocidad y la eficiencia de la inferencia.
  • Reducir los costes de implementación.

2. Ajuste fino del modelo

  • Realizar un ajuste fino eficiente combinando con QLoRA.
  • Entrenar modelos grandes en hardware de consumo.
  • Prototipado rápido y experimentación.

3. Computación perimetral

  • Ejecutar modelos de IA en dispositivos con recursos limitados.
  • Implementación en sistemas móviles e integrados.
  • Aplicaciones de inferencia en tiempo real.

Principio técnico

Cuantificación a nivel de bloque

bitsandbytes adopta la tecnología de cuantificación dinámica a nivel de bloque, dividiendo la matriz de pesos en pequeños bloques, y cada bloque se cuantifica de forma independiente. Este método logra una compresión eficiente al tiempo que mantiene la precisión.

Algoritmo LLM.int8()

Este es uno de los algoritmos centrales de bitsandbytes, una implementación de multiplicación de matrices de 8 bits diseñada específicamente para modelos de lenguaje grandes, que puede reducir significativamente el uso de memoria al tiempo que mantiene el rendimiento del modelo.

Procesamiento de precisión mixta

Para ciertas capas clave (como las capas de atención particularmente sensibles), la biblioteca admite el procesamiento de precisión mixta, encontrando el equilibrio óptimo entre la cuantificación y la precisión total.

Comparación con otros métodos de cuantificación

Comparado con GPTQ

  • Facilidad de uso: bitsandbytes utiliza pesos de HuggingFace, lo que simplifica la implementación.
  • Velocidad: Más lento en comparación con otros métodos de cuantificación.
  • Compatibilidad: Mayor grado de integración con el ecosistema existente.

Comparado con AWQ

  • Generalidad: Admite una gama más amplia de arquitecturas de modelos.
  • Eficiencia de memoria: Uso de memoria más optimizado en algunos escenarios.
  • Flexibilidad de implementación: Admite múltiples backends de hardware.

Instalación y uso

Instalación básica

pip install bitsandbytes

Ejemplo de uso

import bitsandbytes as bnb
from transformers import AutoModelForCausalLM

# Cargar modelo cuantificado de 4 bits
model = AutoModelForCausalLM.from_pretrained(
    "model_name",
    load_in_4bit=True,
    device_map="auto"
)

Comunidad y soporte

Equipo de mantenimiento

El proyecto es mantenido por la Fundación bitsandbytes y cuenta con el apoyo de varios patrocinadores, lo que garantiza el desarrollo y la mejora continuos del proyecto.

Integración del ecosistema

  • HuggingFace: Profunda integración en la biblioteca Transformers.
  • vLLM: Soporte para la inferencia de puntos de control pre-cuantificados.
  • Varios marcos de ajuste fino: Compatible con herramientas como QLoRA, Unsloth, etc.

Resumen

bitsandbytes es una herramienta importante en el campo de la IA, que facilita y economiza la implementación y el uso de modelos de lenguaje grandes a través de tecnologías de cuantificación avanzadas. Ya sean investigadores, desarrolladores o usuarios empresariales, pueden utilizar esta biblioteca para utilizar de forma eficiente los modelos de IA más avanzados en entornos con recursos limitados. Su naturaleza de código abierto y el apoyo activo de la comunidad la convierten en una de las soluciones preferidas en el campo de la tecnología de cuantificación.