LoRA y QLoRA para un ajuste eficiente en costes
Entrene únicamente adaptadores de bajo rango sobre una base cuantizada: permite ajustar un modelo 70B en una sola GPU.
LoRA y QLoRA para un ajuste eficiente en costes es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
¿Por qué PEFT?
El ajuste fino completo de Llama 70B necesita más de 8 H100 y actualiza 70 mil millones de parámetros. PEFT (ajuste fino eficiente en parámetros) actualiza < 1 % de los parámetros con una calidad similar. El ahorro de costes es enorme.
LoRA: adaptación de bajo rango
LoRA (Hu et al. 2021) entrena pequeñas matrices de "adaptadores" junto con los pesos base congelados:
- Añade matrices A x B donde A es dxr y B es rxd; r es pequeño (8, 16, 64)
- Paso hacia delante: y = Wx + (BA)x
- Solo se entrenan A y B: hay órdenes de magnitud menos parámetros
QLoRA: LoRA cuantizado
QLoRA (Dettmers et al. 2023) reduce aún más los costes al cuantizar el modelo base a 4 bits durante el entrenamiento:
- Modelo base en NF4 (4 bits)
- Adaptadores LoRA con mayor precisión
- Permite aplicar ajuste fino a un modelo 70B en una sola A100/H100
Setup with peft + transformers
# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True, # QLoRA
device_map='auto'
)
lora_config = LoraConfig(
r=16, # rank
lora_alpha=32,
target_modules=['q_proj', 'v_proj'],
lora_dropout=0.05,
bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of totalTraining Loop with TRL
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
tokenizer=tokenizer,
args=TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
output_dir='./lora-out'
)
)
trainer.train()
model.save_pretrained('./adapter')Uso de Unsloth
Unsloth es la biblioteca de LoRA más rápida: 2 veces más rápida que peft sin optimizar. API de integración directa:
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name='meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)Estimación de costes
QLoRA en Llama 3.1 8B con 10k ejemplos:
- ~4 horas en una sola H100
- ~5-10 $ de coste de GPU en la nube
- Archivo del adaptador: 100-300 MB
Elección del rango r
- r = 8 — mínimo; cambios de formato o estilo
- r = 16-32 — para la mayoría de los casos
- r = 64 o más — comportamiento nuevo considerable y mayor capacidad
Módulos objetivo
Use de forma predeterminada las proyecciones de atención (q, v). Para obtener más capacidad, incluya todas las capas lineales: mejor calidad y más parámetros.
Hiperparámetros importantes
- Tasa de aprendizaje — de 1e-4 a 5e-4 es lo habitual
- Épocas — de 2 a 5 para SFT
- Tamaño del lote — depende de la VRAM; use acumulación de gradientes para simular un lote mayor
Fusión del adaptador con el modelo base
Para la inferencia, puede volver a fusionar LoRA con los pesos base:
merged = model.merge_and_unload()
merged.save_pretrained('./full-model')Servir varios LoRA
vLLM permite intercambiar LoRA en caliente durante la inferencia. Resulta útil para ajustes específicos de cada cliente sobre un modelo base compartido:
llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))Evaluación del adaptador
Ejecute siempre SU conjunto de evaluación en el modelo ajustado. A veces el ajuste empeora el rendimiento en casos límite; sea honesto sobre las regresiones.
Ventaja de LoRA
¿Cuál es la principal ventaja práctica de LoRA frente al ajuste fino completo?
Resumen
LoRA + QLoRA ofrecen un ajuste fino rentable. Use Unsloth para obtener velocidad y peft/TRL para mayor amplitud. Elija un rango de 16-32 para la mayoría de los casos. Evalúe frente a su conjunto de referencia.
Preguntas frecuentes
¿La lección «LoRA y QLoRA para un ajuste eficiente en costes» es gratis?
Sí — el texto completo de «LoRA y QLoRA para un ajuste eficiente en costes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «LoRA y QLoRA para un ajuste eficiente en costes»?
Entrene únicamente adaptadores de bajo rango sobre una base cuantizada: permite ajustar un modelo 70B en una sola GPU. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «LoRA y QLoRA para un ajuste eficiente en costes»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cuándo el ajuste fino supera al prompting
- Recopilación de datos: trayectorias y reproducción de trazas
- LoRA y QLoRA para un ajuste eficiente en costes
- Evaluación de modelos ajustados frente al modelo base