Recursos para Fine-Tuning de LLM
Uma coleção selecionada de notebooks, conjuntos de dados, artigos, ferramentas e comunidades para fine-tuning de LLM.
📓 Notebooks Oficiais do Curso
Notebooks por Módulo
| Módulo | Notebook | Descrição |
|---|---|---|
| Módulo 4 | Treinamento LoRA | Fine-tuning básico LoRA com PEFT |
| Módulo 5 | Treinamento QLoRA | Treinamento quantizado em 4 bits |
| Módulo 6 | Preparação de Dados | Pipelines de formatação de dataset |
| Módulo 7 | SFTTrainer | Fluxo de treinamento completo |
| Módulo 8 | Treinamento DPO | Otimização por preferência |
| Módulo 10 | Deploy | Exportação e serving de modelo |
🤗 Recursos Hugging Face
Bibliotecas Essenciais
| Biblioteca | Finalidade | Instalação |
|---|---|---|
| transformers | Carregamento e inferência de modelos | pip install transformers |
| peft | Fine-tuning eficiente em parâmetros | pip install peft |
| trl | Treinamento com RL e SFT | pip install trl |
| datasets | Carregamento e processamento de datasets | pip install datasets |
| accelerate | Treinamento distribuído | pip install accelerate |
| bitsandbytes | Quantização | pip install bitsandbytes |
Modelos Base Recomendados
| Modelo | Parâmetros | Caso de Uso | Link HF |
|---|---|---|---|
| Llama-3.1 | 8B/70B | Uso geral | meta-llama/Llama-3.1-8B |
| Mistral | 7B | Performance eficiente | mistralai/Mistral-7B-v0.3 |
| Qwen2.5 | 0.5B-72B | Multilíngue | Qwen/Qwen2.5-7B |
| Phi-3 | 3.8B | Pequeno e capaz | microsoft/Phi-3-mini-4k-instruct |
| Gemma 2 | 2B/9B/27B | Modelo aberto do Google | google/gemma-2-9b |
📊 Conjuntos de Dados para Treinamento
Datasets para Instruction Tuning
| Dataset | Tamanho | Formato | Caso de Uso |
|---|---|---|---|
| databricks/dolly-15k | 15K | Alpaca | Instruções gerais |
| OpenAssistant/oasst1 | 161K | Conversas | Modelos de chat |
| teknium/OpenHermes-2.5 | 1M+ | ShareGPT | Alta qualidade |
| HuggingFaceH4/ultrachat_200k | 200K | Conversas | Chat |
| meta-math/MetaMathQA | 395K | Matemática | Raciocínio matemático |
Datasets de Preferência/DPO
| Dataset | Pares | Caso de Uso |
|---|---|---|
| Anthropic/hh-rlhf | 170K | Utilidade e segurança |
| argilla/ultrafeedback-binarized | 60K | Preferências gerais |
| Intel/orca_dpo_pairs | 12K | Treinamento DPO |
Datasets de Código
| Dataset | Tamanho | Linguagens |
|---|---|---|
| codeparrot/github-code | Grande | Diversas |
| sahil2801/CodeAlpaca-20k | 20K | Diversas |
| iamtarun/python_code_instructions_18k | 18K | Python |
📚 Artigos Científicos
Artigos Fundamentais
| Artigo | Ano | Contribuição Principal |
|---|---|---|
| LoRA: Low-Rank Adaptation | 2021 | Método LoRA introduzido |
| QLoRA: Efficient Finetuning | 2023 | LoRA quantizado em 4 bits |
| Prefix-Tuning | 2021 | Prompts contínuos |
| P-Tuning v2 | 2021 | Deep prompt tuning |
| AdaLoRA | 2023 | Alocação adaptativa de rank |
Artigos sobre Alinhamento
| Artigo | Ano | Contribuição Principal |
|---|---|---|
| DPO: Direct Preference Optimization | 2023 | RLHF simplificado |
| ORPO: Monolithic Preference Optimization | 2024 | SFT+alinhamento combinados |
| Constitutional AI | 2022 | Alinhamento baseado em princípios |
| RLHF Training at Scale | 2022 | Artigo do InstructGPT |
Artigos sobre Mesclagem de Modelos
| Artigo | Ano | Método |
|---|---|---|
| TIES-Merging | 2023 | Resolução de conflitos |
| DARE | 2023 | Drop e rescale |
| Model Soups | 2022 | Média de pesos |
🛠️ Ferramentas & Frameworks
Ferramentas de Treinamento
| Ferramenta | Finalidade | Link |
|---|---|---|
| Axolotl | CLI fácil para fine-tuning | OpenAccess-AI-Collective/axolotl |
| LLaMA-Factory | Framework unificado de fine-tuning | hiyouga/LLaMA-Factory |
| Unsloth | Fine-tuning 2x mais rápido | unslothai/unsloth |
| MLX | Treinamento em Apple Silicon | ml-explore/mlx |
Inferência & Deploy
| Ferramenta | Finalidade | Link |
|---|---|---|
| vLLM | Serving de alta vazão | vllm-project/vllm |
| Text Generation Inference | Serving HuggingFace | huggingface/text-generation-inference |
| llama.cpp | Inferência em CPU | ggerganov/llama.cpp |
| Ollama | Execução local de modelos | ollama/ollama |
Mesclagem de Modelos
| Ferramenta | Finalidade |
|---|---|
| mergekit | Toolkit para mesclagem de modelos |
| LazyMergeKit | Notebook Colab para mesclagem |
Rastreamento de Experimentos
| Ferramenta | Finalidade |
|---|---|
| Weights & Biases | Rastreamento de experimentos |
| MLflow | Ciclo de vida de ML |
| TensorBoard | Visualização de treinamento |
☁️ Recursos de Computação
Provedores de GPU em Nuvem
| Provedor | Melhor Para | Modelo de Preço |
|---|---|---|
| Google Colab | Aprendizado, pequenos experimentos | Gratuito + Pro |
| Lambda Labs | Acesso a A100/H100 | Por hora |
| RunPod | Aluguel flexível de GPU | Por hora |
| Vast.ai | GPU de baixo custo | Marketplace |
| AWS SageMaker | Corporativo | Por instância |
Requisitos de Memória de GPU
| Tamanho do Modelo | FT Completo | QLoRA | LoRA |
|---|---|---|---|
| 7B | ~28GB | ~6GB | ~14GB |
| 13B | ~52GB | ~10GB | ~26GB |
| 70B | ~280GB | ~48GB | ~140GB |
🌐 Comunidades
Servidores Discord
- Hugging Face - Comunidade oficial HF
- EleutherAI - Pesquisa open source em IA
- Unsloth - Discussões sobre fine-tuning rápido
Fóruns & Discussões
- Fóruns Hugging Face - Discussões técnicas
- r/LocalLLaMA - Execução local de modelos
- r/MachineLearning - Pesquisa em ML
Blogs & Newsletters
- Blog Hugging Face - Tutoriais oficiais
- Newsletter do Sebastian Raschka - Insights em deep learning
- The Batch - Notícias de IA por Andrew Ng
📖 Livros & Cursos
Livros Recomendados
| Livro | Autor | Foco |
|---|---|---|
| Natural Language Processing with Transformers | Tunstall, von Werra, Wolf | NLP prático com HF |
| Build a Large Language Model (From Scratch) | Sebastian Raschka | Fundamentos de LLM |
Cursos Online
| Curso | Plataforma | Foco |
|---|---|---|
| Curso de NLP da Hugging Face | HF | Transformers & NLP |
| Full Stack LLM Bootcamp | FSDL | LLMs em produção |
| Fast.ai | Fast.ai | Deep learning |
🧪 Benchmarks & Avaliação
LLM Leaderboards
- Open LLM Leaderboard - Comparação de modelos
- LMSYS Chatbot Arena - Avaliação humana
- AlpacaEval - Seguir instruções
Ferramentas de Avaliação
| Ferramenta | Finalidade |
|---|---|
| lm-evaluation-harness | Benchmarks abrangentes |
| HELM | Avaliação holística |
| MT-Bench | Conversas multi-turn |
💡 Templates de Início Rápido
Treinamento QLoRA Básico
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer
# 4-bit quantization config
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# Load model
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
)
# LoRA config
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
# Prepare and train
model = prepare_model_for_kbit_training(model)
model = get_peft_model(model, lora_config)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
# ... training args
)
trainer.train()