Home
Login

Uma biblioteca PyTorch leve que torna os grandes modelos de linguagem mais acessíveis através da quantização de k bits.

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

Detalhes do Projeto bitsandbytes

Visão Geral do Projeto

bitsandbytes é uma biblioteca Python de código aberto mantida pela Fundação bitsandbytes, especializada em tornar os grandes modelos de linguagem mais acessíveis e implantáveis através de técnicas de quantização k-bit. O projeto é um wrapper Python leve em torno de funções CUDA personalizadas, com foco particular em otimizadores de 8 bits, multiplicação de matrizes (LLM.int8()) e funcionalidades de quantização de 8 e 4 bits.

Endereço do Projeto: https://github.com/bitsandbytes-foundation/bitsandbytes

Documentação Oficial: https://huggingface.co/docs/bitsandbytes/main

Principais Características e Funcionalidades

1. Técnicas de Quantização

  • Quantização de 8 bits: Utiliza técnicas de quantização em nível de bloco, mantendo um desempenho próximo a 32 bits enquanto reduz significativamente o uso de memória.
  • Quantização de 4 bits: Oferece métodos avançados de quantização de 4 bits, como NF4 (Normal Float 4-bit) e FP4 (Float Point 4-bit).
  • Quantização Dinâmica: Adota algoritmos de quantização dinâmica em nível de bloco para otimizar a eficiência de armazenamento.

2. Suporte a Otimizadores

  • Otimizadores de 8 bits: Fornece vários otimizadores de 8 bits através do módulo bitsandbytes.optim.
  • Eficiência de Memória: Consumo de memória significativamente reduzido em comparação com otimizadores tradicionais de 32 bits.
  • Manutenção do Desempenho: Mantém a eficácia do treinamento enquanto reduz o uso de memória.

3. Camadas Lineares Quantizadas

  • Linear8bitLt: Implementação de camada linear de 8 bits.
  • Linear4bit: Implementação de camada linear de 4 bits.
  • Plug-and-Play: Pode substituir diretamente as camadas lineares padrão do PyTorch.

Vantagens Técnicas

Eficiência de Memória

bitsandbytes reduz significativamente o uso de memória do modelo através de técnicas de quantização. Por exemplo, para um modelo de 1 bilhão de parâmetros, o otimizador Adam tradicional requer 8GB de memória para armazenar o estado do otimizador, enquanto o uso de quantização de 8 bits pode reduzir drasticamente essa necessidade.

Compatibilidade de Hardware

O projeto está trabalhando para suportar mais backends de hardware:

  • CUDA GPU (suporte principal)
  • Intel CPU + GPU
  • AMD GPU
  • Apple Silicon
  • NPU (Unidade de Processamento Neural)

Integração com QLoRA

A técnica de quantização de 4 bits do bitsandbytes é frequentemente usada em conjunto com QLoRA (Quantized Low-Rank Adaptation) para:

  • Quantizar o modelo alvo para 4 bits e congelá-lo.
  • Usar a técnica LoRA para ajustar o modelo de 4 bits congelado.
  • Reduzir significativamente os custos de ajuste fino, mantendo o desempenho.

Cenários de Aplicação

1. Inferência de Grandes Modelos de Linguagem

  • Implantar grandes modelos em memória GPU limitada.
  • Aumentar a velocidade e eficiência da inferência.
  • Reduzir os custos de implantação.

2. Ajuste Fino de Modelos

  • Realizar ajuste fino eficiente combinando com QLoRA.
  • Treinar grandes modelos em hardware de consumo.
  • Prototipagem e experimentação rápidas.

3. Computação de Borda

  • Executar modelos de IA em dispositivos com recursos limitados.
  • Implantação em dispositivos móveis e sistemas embarcados.
  • Aplicações de inferência em tempo real.

Princípios Técnicos

Quantização em Nível de Bloco

bitsandbytes adota a técnica de quantização dinâmica em nível de bloco, dividindo a matriz de pesos em pequenos blocos, com cada bloco sendo quantizado independentemente. Este método alcança uma compressão eficiente, mantendo a precisão.

Algoritmo LLM.int8()

Este é um dos algoritmos centrais do bitsandbytes, uma implementação de multiplicação de matrizes de 8 bits projetada especificamente para grandes modelos de linguagem, capaz de reduzir significativamente o uso de memória, mantendo o desempenho do modelo.

Processamento de Precisão Mista

Para certas camadas críticas (como camadas de atenção particularmente sensíveis), a biblioteca suporta processamento de precisão mista, encontrando o equilíbrio ideal entre quantização e precisão total.

Comparação com Outros Métodos de Quantização

Comparado ao GPTQ

  • Facilidade de Uso: bitsandbytes usa pesos HuggingFace, tornando a implementação mais simples.
  • Velocidade: Mais lento em comparação com outros métodos de quantização.
  • Compatibilidade: Maior grau de integração com o ecossistema existente.

Comparado ao AWQ

  • Generalidade: Suporta uma gama mais ampla de arquiteturas de modelo.
  • Eficiência de Memória: Uso de memória mais otimizado em certos cenários.
  • Flexibilidade de Implantação: Suporta vários backends de hardware.

Instalação e Uso

Instalação Básica

pip install bitsandbytes

Exemplo de Uso

import bitsandbytes as bnb
from transformers import AutoModelForCausalLM

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

Comunidade e Suporte

Equipe de Manutenção

O projeto é mantido pela Fundação bitsandbytes e recebe o apoio de vários patrocinadores, garantindo o desenvolvimento e aprimoramento contínuos do projeto.

Integração com o Ecossistema

  • HuggingFace: Profundamente integrado à biblioteca Transformers.
  • vLLM: Suporta inferência de checkpoints pré-quantizados.
  • Várias estruturas de ajuste fino: Compatível com ferramentas como QLoRA, Unsloth, etc.

Resumo

bitsandbytes é uma ferramenta importante no campo da IA, tornando a implantação e o uso de grandes modelos de linguagem mais fáceis e econômicos através de técnicas avançadas de quantização. Seja para pesquisadores, desenvolvedores ou usuários corporativos, esta biblioteca permite o uso eficiente de modelos de IA de última geração em ambientes com recursos limitados. Sua natureza de código aberto e o suporte ativo da comunidade o tornam uma das soluções preferidas no campo da tecnologia de quantização.