🤗 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
- 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.
- AdaLoRA
- Uma versão aprimorada do LoRA.
- Ajusta adaptativamente o tamanho do posto, otimizando ainda mais a eficiência.
- Prefix Tuning
- Adiciona um prefixo aprendível à sequência de entrada.
- Adequado para tarefas de geração.
- P-Tuning v2
- Um método aprimorado de ajuste de prompts.
- Adiciona parâmetros aprendíveis em várias camadas.
- 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.