Home
Login

🤗 PEFT é uma biblioteca avançada de ajuste fino com parâmetros eficientes desenvolvida pela Hugging Face, que permite o ajuste fino de baixo custo de grandes modelos através de tecnologias como LoRA e AdaLoRA.

Apache-2.0Python 18.8khuggingface Last Updated: 2025-06-19

🤗 PEFT - Introdução Detalhada à Biblioteca de Ajuste Fino Eficiente em Parâmetros

Visão Geral do Projeto

PEFT (Parameter-Efficient Fine-Tuning) é uma biblioteca avançada de ajuste fino eficiente em parâmetros desenvolvida pela Hugging Face. O projeto visa resolver os problemas de altos custos computacionais e grandes requisitos de armazenamento no processo de ajuste fino de grandes modelos pré-treinados.

Endereço do GitHub: https://github.com/huggingface/peft

Valor Central e Vantagens

1. Custo-Benefício

  • Reduz drasticamente os custos computacionais: Em comparação com o ajuste fino tradicional de todos os parâmetros, os métodos PEFT exigem o treinamento de apenas uma pequena parte dos parâmetros do modelo.
  • Reduz significativamente os requisitos de armazenamento: Os arquivos de checkpoint do modelo ajustado geralmente têm apenas alguns MB, em vez de alguns GB.
  • Otimização do uso de memória: Capaz de lidar com modelos maiores nas mesmas condições de hardware.

2. Manutenção do Desempenho

  • Desempenho comparável ao ajuste fino de todos os parâmetros: Atinge um desempenho comparável ao ajuste fino completo na maioria das tarefas.
  • Evita o esquecimento catastrófico: Protege o conhecimento original do modelo base, reduzindo o risco de overfitting.

3. Flexibilidade e Conveniência

  • Adaptação multitarefa: Permite treinar vários adaptadores leves para diferentes tarefas.
  • Integração perfeita: Integra-se perfeitamente com ecossistemas como Transformers, Diffusers e Accelerate.

Métodos de Ajuste Fino Suportados

Principais Técnicas PEFT

  1. LoRA (Low-Rank Adaptation)
  • O método de ajuste fino eficiente em parâmetros mais popular.
  • Reduz drasticamente o número de parâmetros treináveis através da decomposição de matrizes de baixo posto.
  • Em cenários típicos, requer o treinamento de apenas 0,1% a 1% dos parâmetros originais.
  1. AdaLoRA
  • Uma versão aprimorada do LoRA.
  • Ajusta adaptativamente o tamanho do posto, otimizando ainda mais a eficiência.
  1. Prefix Tuning
  • Adiciona um prefixo aprendível à sequência de entrada.
  • Adequado para tarefas de geração.
  1. P-Tuning v2
  • Um método aprimorado de ajuste de prompts.
  • Adiciona parâmetros aprendíveis em várias camadas.
  1. IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)
  • Adapta o modelo inibindo e amplificando as ativações internas.

Efeitos Práticos da Aplicação

Comparação do Uso de Memória (GPU A100 80GB)

Modelo Ajuste Fino Completo PEFT-LoRA PEFT-LoRA + Descarregamento de CPU DeepSpeed
T0_3B (3 bilhões de parâmetros) 47.14GB GPU / 2.96GB CPU 14.4GB GPU / 2.96GB CPU 9.8GB GPU / 17.8GB CPU
mt0-xxl (120 bilhões de parâmetros) Memória insuficiente 56GB GPU / 3GB CPU 22GB GPU / 52GB CPU
bloomz-7b1 (7 bilhões de parâmetros) Memória insuficiente 32GB GPU / 3.8GB CPU 18.1GB GPU / 35GB CPU

Desempenho

Comparação da precisão na tarefa de classificação de reclamações no Twitter:

  • Linha de base humana: 89.7%
  • Flan-T5: 89.2%
  • LoRA-T0-3B: 86.3%

Instalação e Início Rápido

Instalação

pip install peft

Exemplo de Uso Básico

from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType

# Configurar PEFT
model_name_or_path = "bigscience/mt0-large"
peft_config = LoraConfig(
    task_type=TaskType.SEQ_2_SEQ_LM, 
    inference_mode=False, 
    r=8, 
    lora_alpha=32, 
    lora_dropout=0.1
)

# Carregar e empacotar o modelo
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)

# Visualizar parâmetros treináveis
model.print_trainable_parameters()
# Saída: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19

Uso para Inferência

from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

# Carregar o modelo ajustado
model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")

# Realizar inferência
model.eval()
inputs = tokenizer("Seu texto de entrada", return_tensors="pt")
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)

Integração com o Ecossistema

1. Integração com Transformers

  • Suporta várias arquiteturas de modelos pré-treinados.
  • Fluxo de treinamento e inferência contínuo.
  • Configuração e otimização automática do modelo.

2. Integração com Diffusers

  • Suporta o ajuste fino eficiente de modelos de difusão.
  • Adequado para tarefas como geração e edição de imagens.
  • Reduz significativamente os requisitos de memória de treinamento.

3. Integração com Accelerate

  • Suporta treinamento distribuído.
  • Otimização de treinamento multi-GPU e TPU.
  • Amigável ao hardware de consumo.

4. Integração com TRL (Transformer Reinforcement Learning)

  • Suporta RLHF (Aprendizado por Reforço com Feedback Humano).
  • DPO (Otimização Direta de Preferência).
  • Treinamento de alinhamento de grandes modelos.

Cenários de Aplicação

1. Ajuste Fino de Grandes Modelos de Linguagem

  • Ajuste fino de instruções.
  • Otimização de sistemas de diálogo.
  • Adaptação a domínios específicos.

2. Modelos Multimodais

  • Ajuste fino de modelos de visão-linguagem.
  • Adaptação de modelos de processamento de áudio.

3. Modelos de Difusão

  • Personalização do Stable Diffusion.
  • Treinamento do DreamBooth.
  • Conversão de estilo.

4. Aprendizado por Reforço

  • Ajuste fino de modelos de política.
  • Treinamento de modelos de recompensa.
  • Alinhamento de preferências humanas.

Vantagens Técnicas e Pontos de Inovação

1. Eficiência de Parâmetros

  • Treina apenas 0,1% a 1% dos parâmetros originais.
  • Mantém mais de 95% do desempenho.
  • Reduz os arquivos de checkpoint para 1/100 do tamanho original.

2. Otimização de Memória

  • Reduz drasticamente os requisitos de memória da GPU.
  • Suporta o treinamento de grandes modelos em hardware de consumo.
  • Verificação de gradiente para otimizar ainda mais a memória.

3. Compatibilidade com Quantização

  • Combina-se perfeitamente com quantização de 8 bits e 4 bits.
  • Suporte para tecnologia QLoRA.
  • Reduz ainda mais os requisitos de hardware.

4. Design Modular

  • Suporta vários métodos PEFT.
  • Opções de configuração flexíveis.
  • Fácil de estender com novos métodos.

Comunidade e Ecossistema

Recursos Oficiais

Conclusão

🤗 PEFT é uma biblioteca revolucionária de ajuste fino eficiente em parâmetros que não apenas resolve o problema de custo do ajuste fino de grandes modelos, mas também mantém um excelente desempenho. Seja para pesquisadores ou desenvolvedores da indústria, o PEFT oferece uma solução econômica e eficiente para a personalização de grandes modelos, impulsionando a democratização da tecnologia de IA.