Recursos para Fine-Tuning de LLM
Una colección seleccionada de notebooks, conjuntos de datos, artículos, herramientas y comunidades para el fine-tuning de LLM.
📓 Notebooks Oficiales del Curso
Notebooks por Módulo
| Módulo | Notebook | Descripción |
|---|---|---|
| Módulo 4 | Entrenamiento LoRA | Fine-tuning básico con LoRA usando PEFT |
| Módulo 5 | Entrenamiento QLoRA | Entrenamiento cuantizado a 4 bits |
| Módulo 6 | Preparación de Datos | Pipelines de formateo de datasets |
| Módulo 7 | SFTTrainer | Flujo de trabajo de entrenamiento completo |
| Módulo 8 | Entrenamiento DPO | Optimización por preferencias |
| Módulo 10 | Despliegue | Exportación y servicio del modelo |
🤗 Recursos de Hugging Face
Librerías Esenciales
| Librería | Propósito | Instalación |
|---|---|---|
| transformers | Carga de modelos e inferencia | pip install transformers |
| peft | Fine-tuning eficiente en parámetros | pip install peft |
| trl | Entrenamiento con RL y SFT | pip install trl |
| datasets | Carga y procesamiento de datasets | pip install datasets |
| accelerate | Entrenamiento distribuido | pip install accelerate |
| bitsandbytes | Cuantización | pip install bitsandbytes |
Modelos Base Recomendados
| Modelo | Parámetros | Caso de uso | Enlace HF |
|---|---|---|---|
| Llama-3.1 | 8B/70B | Propósito general | meta-llama/Llama-3.1-8B |
| Mistral | 7B | Rendimiento eficiente | mistralai/Mistral-7B-v0.3 |
| Qwen2.5 | 0.5B-72B | Multilingüe | Qwen/Qwen2.5-7B |
| Phi-3 | 3.8B | Pequeño pero capaz | microsoft/Phi-3-mini-4k-instruct |
| Gemma 2 | 2B/9B/27B | Modelo abierto de Google | google/gemma-2-9b |
📊 Conjuntos de Datos de Entrenamiento
Datasets para Instruction Tuning
| Dataset | Tamaño | Formato | Caso de uso |
|---|---|---|---|
| databricks/dolly-15k | 15K | Alpaca | Instrucciones generales |
| OpenAssistant/oasst1 | 161K | Conversaciones | Modelos de chat |
| teknium/OpenHermes-2.5 | 1M+ | ShareGPT | Alta calidad |
| HuggingFaceH4/ultrachat_200k | 200K | Conversaciones | Chat |
| meta-math/MetaMathQA | 395K | Matemáticas | Razonamiento matemático |
Datasets de Preferencias/DPO
| Dataset | Pares | Caso de uso |
|---|---|---|
| Anthropic/hh-rlhf | 170K | Utilidad e inocuidad |
| argilla/ultrafeedback-binarized | 60K | Preferencias generales |
| Intel/orca_dpo_pairs | 12K | Entrenamiento DPO |
Datasets de Código
| Dataset | Tamaño | Lenguajes |
|---|---|---|
| codeparrot/github-code | Grande | Múltiples |
| sahil2801/CodeAlpaca-20k | 20K | Múltiples |
| iamtarun/python_code_instructions_18k | 18K | Python |
📚 Artículos de Investigación
Artículos Fundamentales
| Artículo | Año | Contribución clave |
|---|---|---|
| LoRA: Low-Rank Adaptation | 2021 | Introducción del método LoRA |
| QLoRA: Efficient Finetuning | 2023 | LoRA cuantizado a 4 bits |
| Prefix-Tuning | 2021 | Prompts continuos |
| P-Tuning v2 | 2021 | Deep prompt tuning |
| AdaLoRA | 2023 | Asignación adaptativa de rango |
Artículos de Alineamiento
| Artículo | Año | Contribución clave |
|---|---|---|
| DPO: Direct Preference Optimization | 2023 | RLHF simplificado |
| ORPO: Monolithic Preference Optimization | 2024 | SFT+alineamiento combinado |
| Constitutional AI | 2022 | Alineamiento basado en principios |
| RLHF Training at Scale | 2022 | Artículo de InstructGPT |
Artículos sobre Fusión de Modelos
| Artículo | Año | Método |
|---|---|---|
| TIES-Merging | 2023 | Resolución de conflictos |
| DARE | 2023 | Drop y rescale |
| Model Soups | 2022 | Promedio de pesos |
🛠️ Herramientas y Frameworks
Herramientas de Entrenamiento
| Herramienta | Propósito | Enlace |
|---|---|---|
| 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 más rápido | unslothai/unsloth |
| MLX | Entrenamiento en Apple Silicon | ml-explore/mlx |
Inferencia y Despliegue
| Herramienta | Propósito | Enlace |
|---|---|---|
| vLLM | Servicio de alto rendimiento | vllm-project/vllm |
| Text Generation Inference | Servicio de HuggingFace | huggingface/text-generation-inference |
| llama.cpp | Inferencia en CPU | ggerganov/llama.cpp |
| Ollama | Ejecución local de modelos | ollama/ollama |
Fusión de Modelos
| Herramienta | Propósito |
|---|---|
| mergekit | Kit de herramientas para fusión de modelos |
| LazyMergeKit | Notebook de Colab para fusión |
Seguimiento de Experimentos
| Herramienta | Propósito |
|---|---|
| Weights & Biases | Seguimiento de experimentos |
| MLflow | Ciclo de vida de ML |
| TensorBoard | Visualización de entrenamiento |
☁️ Recursos de Cómputo
Proveedores de GPU en la Nube
| Proveedor | Mejor para | Modelo de precios |
|---|---|---|
| Google Colab | Aprendizaje, pequeños experimentos | Nivel gratuito + Pro |
| Lambda Labs | Acceso a A100/H100 | Por hora |
| RunPod | Alquiler flexible de GPU | Por hora |
| Vast.ai | Acceso económico a GPU | Marketplace |
| AWS SageMaker | Empresarial | Por instancia |
Requerimientos de Memoria GPU
| Tamaño del modelo | Full FT | QLoRA | LoRA |
|---|---|---|---|
| 7B | ~28GB | ~6GB | ~14GB |
| 13B | ~52GB | ~10GB | ~26GB |
| 70B | ~280GB | ~48GB | ~140GB |
🌐 Comunidades
Servidores de Discord
- Hugging Face - Comunidad oficial de HF
- EleutherAI - Investigación de IA open source
- Unsloth - Discusión sobre fine-tuning rápido
Foros y Debates
- Foros de Hugging Face - Debates técnicos
- r/LocalLLaMA - Ejecución local de modelos
- r/MachineLearning - Investigación en ML
Blogs y Newsletters
- Blog de Hugging Face - Tutoriales oficiales
- Newsletter de Sebastian Raschka - Perspectivas de deep learning
- The Batch - Noticias de IA por Andrew Ng
📖 Libros y Cursos
Libros Recomendados
| Libro | Autor | Enfoque |
|---|---|---|
| Natural Language Processing with Transformers | Tunstall, von Werra, Wolf | NLP práctico con HF |
| Build a Large Language Model (From Scratch) | Sebastian Raschka | Fundamentos de LLM |
Cursos en Línea
| Curso | Plataforma | Enfoque |
|---|---|---|
| Curso de NLP de Hugging Face | HF | Transformers y NLP |
| Full Stack LLM Bootcamp | FSDL | LLMs en producción |
| Fast.ai | Fast.ai | Deep learning |
🧪 Benchmarks y Evaluación
LLM Leaderboards
- Open LLM Leaderboard - Comparación de modelos
- LMSYS Chatbot Arena - Evaluación humana
- AlpacaEval - Seguimiento de instrucciones
Herramientas de Evaluación
| Herramienta | Propósito |
|---|---|
| lm-evaluation-harness | Benchmarks integrales |
| HELM | Evaluación holística |
| MT-Bench | Conversaciones multi-turno |
💡 Plantillas de Inicio Rápido
Entrenamiento Básico con QLoRA
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()