41 · LoRA y fine-tuning eficiente en parámetros (PEFT)
El fine-tuning completo de un modelo de 7B necesita memoria enorme. PEFT entrena solo una fracción diminuta. LoRA congela el peso pre-entrenado y aprende una actualización de bajo rango ΔW = B·A — ~64 veces menos parámetros entrenables.
LoRA congela el peso pre-entrenado W y aprende una actualización de bajo rango ΔW = B·A (con rango r ≪ d), así solo se entrenan los diminutos factores B y A — el peso efectivo en inferencia es W + B·A.
Sin esto:
El fine-tuning completo de un modelo de miles de millones de parámetros necesita estados del optimizador y gradientes para CADA peso — decenas de gigabytes de memoria GPU. Sin PEFT, adaptar LLM grandes queda fuera del alcance de la mayoría.
La advertencia de la lección 40 tiene un costo más profundo: el fine-tuning completo de un modelo grande consume memoria de forma brutal. Actualizar un modelo de 7 mil millones de parámetros significa almacenar no solo los pesos, sino también un gradiente por cada peso Y los estados del optimizador (Adam guarda dos valores extra por parámetro — momento y varianza). Eso son varias copias de un modelo de 7B en memoria GPU a la vez, decenas de gigabytes — mucho más allá de una sola GPU de consumo.
El fine-tuning eficiente en parámetros (PEFT) esquiva esto: mantén el modelo pre-entrenado gigante congelado y entrena solo un conjunto diminuto de parámetros NUEVOS. Muchos menos gradientes y estados del optimizador que almacenar, así la adaptación cabe en hardware modesto.
El método PEFT dominante es LoRA (Low-Rank Adaptation, adaptación de bajo rango). Toma una matriz de pesos pre-entrenada W de forma d×d y CONGÉLALA. En lugar de editar W directamente, aprende una actualización de bajo rango separada ΔW = B · A, donde B es d×r y A es r×d, con el rango r MUCHO menor que d (p. ej. r=8, d=1024). El peso efectivo usado en inferencia es simplemente W + B·A. Solo se entrenan B y A; W nunca cambia.
¿Por qué es tanto más barato? Una matriz completa d×d tiene d² parámetros; los dos factores LoRA juntos tienen solo 2·d·r. Con d=1024 y r=8 eso son 16.384 parámetros entrenables en lugar de 1.048.576 — unas 64 veces menos. Un truco estándar: inicializar B = 0 para que ΔW = 0 al principio, lo que significa que el adaptador empieza como un no-op perfecto y el modelo es idéntico a la base congelada hasta que el entrenamiento aleja B y A de cero. La celda de abajo hace concretas las formas, el ahorro de parámetros y la estructura de bajo rango.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Familias PEFT: adapters (módulos bottleneck), prefix/prompt tuning (tokens virtuales), QLoRA (base congelada en 4-bit + LoRA). La librería peft: LoraConfig(r, lora_alpha, target_modules) + get_peft_model.
En LoRA con d=1024 y rango r=8, ¿cuántos parámetros entrenables reemplazan la matriz de pesos completa d×d?
- El fine-tuning completo de un modelo grande almacena gradientes + estados del optimizador para CADA peso (decenas de GB); PEFT congela la base y entrena solo un conjunto diminuto de parámetros nuevos.
- LoRA congela W y aprende una actualización de bajo rango ΔW = B·A (B es d×r, A es r×d, r ≪ d); solo se entrenan 2·d·r parámetros (~64x menos para d=1024, r=8), con peso efectivo W + B·A. Inicializa B=0 para que el adaptador empiece como un no-op.
- Las actualizaciones del fine-tuning son intrínsecamente de bajo rango, así que un pequeño B·A recupera la mayor parte del beneficio — y una base congelada puede alojar muchos adaptadores de tarea intercambiables de solo unos MB cada uno (QLoRA añade una base de 4-bit para reducir aún más la memoria).
Casi todo fine-tune moderno de LLM usa LoRA/QLoRA vía la librería peft — es como individuos y equipos pequeños adaptan modelos de 7B–70B en una sola GPU, y como los proveedores sirven muchos adaptadores personalizados sobre una base compartida.
Si lo quitas: Creerías que adaptar un LLM grande siempre significa fine-tuning completo y un clúster de GPU, perdiéndote la adaptación barata e intercambiable que hace prácticos los modelos personalizados.