Saltar al contenido principal

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óduloNotebookDescripción
Módulo 4Entrenamiento LoRAFine-tuning básico con LoRA usando PEFT
Módulo 5Entrenamiento QLoRAEntrenamiento cuantizado a 4 bits
Módulo 6Preparación de DatosPipelines de formateo de datasets
Módulo 7SFTTrainerFlujo de trabajo de entrenamiento completo
Módulo 8Entrenamiento DPOOptimización por preferencias
Módulo 10DespliegueExportación y servicio del modelo

🤗 Recursos de Hugging Face​

Librerías Esenciales​

LibreríaPropósitoInstalación
transformersCarga de modelos e inferenciapip install transformers
peftFine-tuning eficiente en parámetrospip install peft
trlEntrenamiento con RL y SFTpip install trl
datasetsCarga y procesamiento de datasetspip install datasets
accelerateEntrenamiento distribuidopip install accelerate
bitsandbytesCuantizaciónpip install bitsandbytes

Modelos Base Recomendados​

ModeloParámetrosCaso de usoEnlace HF
Llama-3.18B/70BPropósito generalmeta-llama/Llama-3.1-8B
Mistral7BRendimiento eficientemistralai/Mistral-7B-v0.3
Qwen2.50.5B-72BMultilingüeQwen/Qwen2.5-7B
Phi-33.8BPequeño pero capazmicrosoft/Phi-3-mini-4k-instruct
Gemma 22B/9B/27BModelo abierto de Googlegoogle/gemma-2-9b

📊 Conjuntos de Datos de Entrenamiento​

Datasets para Instruction Tuning​

DatasetTamañoFormatoCaso de uso
databricks/dolly-15k15KAlpacaInstrucciones generales
OpenAssistant/oasst1161KConversacionesModelos de chat
teknium/OpenHermes-2.51M+ShareGPTAlta calidad
HuggingFaceH4/ultrachat_200k200KConversacionesChat
meta-math/MetaMathQA395KMatemáticasRazonamiento matemático

Datasets de Preferencias/DPO​

DatasetParesCaso de uso
Anthropic/hh-rlhf170KUtilidad e inocuidad
argilla/ultrafeedback-binarized60KPreferencias generales
Intel/orca_dpo_pairs12KEntrenamiento DPO

Datasets de Código​

DatasetTamañoLenguajes
codeparrot/github-codeGrandeMúltiples
sahil2801/CodeAlpaca-20k20KMúltiples
iamtarun/python_code_instructions_18k18KPython

📚 Artículos de Investigación​

Artículos Fundamentales​

ArtículoAñoContribución clave
LoRA: Low-Rank Adaptation2021Introducción del método LoRA
QLoRA: Efficient Finetuning2023LoRA cuantizado a 4 bits
Prefix-Tuning2021Prompts continuos
P-Tuning v22021Deep prompt tuning
AdaLoRA2023Asignación adaptativa de rango

Artículos de Alineamiento​

ArtículoAñoContribución clave
DPO: Direct Preference Optimization2023RLHF simplificado
ORPO: Monolithic Preference Optimization2024SFT+alineamiento combinado
Constitutional AI2022Alineamiento basado en principios
RLHF Training at Scale2022Artículo de InstructGPT

Artículos sobre Fusión de Modelos​

ArtículoAñoMétodo
TIES-Merging2023Resolución de conflictos
DARE2023Drop y rescale
Model Soups2022Promedio de pesos

🛠️ Herramientas y Frameworks​

Herramientas de Entrenamiento​

HerramientaPropósitoEnlace
AxolotlCLI fácil para fine-tuningOpenAccess-AI-Collective/axolotl
LLaMA-FactoryFramework unificado de fine-tuninghiyouga/LLaMA-Factory
UnslothFine-tuning 2x más rápidounslothai/unsloth
MLXEntrenamiento en Apple Siliconml-explore/mlx

Inferencia y Despliegue​

HerramientaPropósitoEnlace
vLLMServicio de alto rendimientovllm-project/vllm
Text Generation InferenceServicio de HuggingFacehuggingface/text-generation-inference
llama.cppInferencia en CPUggerganov/llama.cpp
OllamaEjecución local de modelosollama/ollama

Fusión de Modelos​

HerramientaPropósito
mergekitKit de herramientas para fusión de modelos
LazyMergeKitNotebook de Colab para fusión

Seguimiento de Experimentos​

HerramientaPropósito
Weights & BiasesSeguimiento de experimentos
MLflowCiclo de vida de ML
TensorBoardVisualización de entrenamiento

☁️ Recursos de Cómputo​

Proveedores de GPU en la Nube​

ProveedorMejor paraModelo de precios
Google ColabAprendizaje, pequeños experimentosNivel gratuito + Pro
Lambda LabsAcceso a A100/H100Por hora
RunPodAlquiler flexible de GPUPor hora
Vast.aiAcceso económico a GPUMarketplace
AWS SageMakerEmpresarialPor instancia

Requerimientos de Memoria GPU​

Tamaño del modeloFull FTQLoRALoRA
7B~28GB~6GB~14GB
13B~52GB~10GB~26GB
70B~280GB~48GB~140GB

🌐 Comunidades​

Servidores de Discord​

Foros y Debates​

Blogs y Newsletters​


📖 Libros y Cursos​

Libros Recomendados​

LibroAutorEnfoque
Natural Language Processing with TransformersTunstall, von Werra, WolfNLP práctico con HF
Build a Large Language Model (From Scratch)Sebastian RaschkaFundamentos de LLM

Cursos en Línea​

CursoPlataformaEnfoque
Curso de NLP de Hugging FaceHFTransformers y NLP
Full Stack LLM BootcampFSDLLLMs en producción
Fast.aiFast.aiDeep learning

🧪 Benchmarks y Evaluación​

LLM Leaderboards​

Herramientas de Evaluación​

HerramientaPropósito
lm-evaluation-harnessBenchmarks integrales
HELMEvaluación holística
MT-BenchConversaciones 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()

Volver al inicio del curso