Fine-tuning de un modelo de 70B en una tarjeta.
QLoRA convierte un trabajo de entrenamiento que necesita un rack en uno que necesita una sola GPU de 48 GB. Esto es lo que cabe, lo que cuesta al mes, y dónde deja de funcionar la técnica.
La respuesta corta
- QLoRA en 70B
- ~61 GB — cabe en una tarjeta de 48 GB con longitudes de secuencia cortas, y con holgura en una de 80 GB
- Fine-tuning completo de 70B
- ~1,232 GB — un clúster multinodo, que no alquilamos
- La proporción
- Aproximadamente 20× menos memoria, para una técnica que alcanza la mayor parte de la calidad en la mayoría de las tareas
- Lo que cuesta aquí
- Desde $286/mes, con la tarjeta suya durante todo el mes en lugar de solo la ejecución
Lo que realmente cabe
LoRA congela el modelo y entrena un pequeño par de matrices de bajo rango junto a cada matriz de pesos. QLoRA va más allá y mantiene los pesos congelados en 4 bits. Lo que debe mantener en memoria cambia por completo como resultado.
Por qué el fine-tuning completo no
El fine-tuning completo en BF16 necesita unos 16 bytes por parámetro: 2 para el peso, 2 para su gradiente, y 8 para los dos momentos de Adam en FP32, más la copia maestra. Es un multiplicador fijo, y es brutal.
| Modelo | QLoRA | Fine-tuning completo | Proporción | Qué significa eso |
|---|---|---|---|---|
| Llama 3.1 8B | 13 GB | 141 GB | 11× | Una tarjeta de 24 GB |
| Gemma 3 27B | 27 GB | 475 GB | 17× | Una tarjeta de 48 GB |
| Qwen 3 32B | 31 GB | 563 GB | 18× | Una tarjeta de 48 GB |
| Llama 3.3 70B | 61 GB | 1,232 GB | 20× | Una tarjeta de 80 GB |
Son cifras de orden de magnitud con un margen moderado para las activaciones: suficientes para elegir una máquina, no para prometer una ejecución concreta. La longitud de secuencia y el tamaño de lote mueven bastante la columna de QLoRA; la columna de fine-tuning completo apenas se mueve, porque está dominada por los 16 bytes fijos por parámetro.
Modelo por modelo
El nodo más barato de nuestro catálogo capaz de entrenar cada modelo con QLoRA, junto con la máquina que necesitaría para servir el resultado.
| Modelo | Memoria de entrenamiento | Nodo más barato para entrenar | Nodo más barato para servir |
|---|---|---|---|
| Llama 3.1 8B | 13 GB | NVIDIA L4 | NVIDIA L4 |
| Mistral Small 24B | 25 GB | NVIDIA RTX A6000 | NVIDIA L4 |
| Gemma 3 27B | 27 GB | NVIDIA RTX A6000 | NVIDIA L4 |
| Qwen 3 32B | 31 GB | NVIDIA RTX A6000 | NVIDIA L4 |
| Llama 3.3 70B | 61 GB | NVIDIA A100 PCIe | 2 × NVIDIA L4 |
El entrenamiento necesita memoria; el servicio necesita memoria y ancho de banda. Es habitual que la tarjeta adecuada para entrenar sea una barata y con mucha memoria, y la adecuada para servir sea una cara y rápida — y, como aquí ambas son mensuales, usar dos máquinas distintas suele salir más barato que ceder en una sola.
Ejecutarlo
Axolotl viene preinstalado como una de las imágenes del configurador. Esta es una ejecución completa en una sola tarjeta, partiendo de una máquina vacía.
$ mkdir -p /scratch/ft && cd /scratch/ft
$ cat > qlora.yml <<'YAML'
base_model: meta-llama/Llama-3.3-70B-Instruct
load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_linear: true
sequence_len: 2048
sample_packing: true
gradient_checkpointing: true
micro_batch_size: 1
gradient_accumulation_steps: 16
num_epochs: 2
learning_rate: 0.0001
optimizer: paged_adamw_8bit
bf16: true
datasets:
- path: /scratch/ft/data.jsonl
type: chat_template
output_dir: /scratch/ft/out
YAML
$ docker run --rm --gpus all --ipc=host --shm-size=16g \
-v /scratch/ft:/workspace -v /scratch/models:/root/.cache/huggingface \
-e HF_TOKEN="$HF_TOKEN" \
axolotlai/axolotl:main-latest \
axolotl train /workspace/qlora.yml
$ nvidia-smi dmon -s um
# If memory sits just under the card's total, you are one long batch
# away from an out-of-memory error four hours into the run.
# Lower sequence_len or micro_batch_size now, not then.
Los ajustes que importan
Lo que cuesta un mes
La razón por la que lo mensual importa más para entrenar que para servir: un proyecto de fine-tuning no es una sola ejecución. Es una primera ejecución que falla por un error en los datos, una segunda que sufre sobreajuste, una tercera que funciona, y luego cinco más con distintos rangos.
| Máquina | Memoria de la tarjeta | Al mes | Adecuado para |
|---|---|---|---|
| NVIDIA L4 | 24 GB | $125/mes | QLoRA hasta 8B |
| NVIDIA RTX 5090 | 32 GB | $335/mes | QLoRA hasta 32B |
| NVIDIA A100 PCIe | 40 GB | $392/mes | QLoRA hasta 32B |
| NVIDIA RTX A6000 | 48 GB | $286/mes | QLoRA hasta 32B |
| NVIDIA A100 PCIe | 80 GB | $1,091/mes | QLoRA hasta 70B |
Compare eso con la facturación por horas a lo largo de un proyecto, no de una sola ejecución: la guía del punto de equilibrio hace los cálculos. Una máquina que existe durante tres semanas mientras usted itera es exactamente el caso en el que un contador cuesta más que un plazo.
Dónde deja de funcionar LoRA
Es una técnica muy buena con un límite real, y merece la pena saber de qué lado está antes de alquilar nada.
Enseñar un dominio genuinamente nuevo. LoRA adapta bien el comportamiento y añade mal el conocimiento. Un modelo que nunca ha visto su campo no lo va a aprender de un adaptador de bajo rango.
Cambiar el vocabulario o el tokenizador. Los tokens nuevos necesitan que se entrenen sus embeddings, lo cual queda fuera de lo que toca un adaptador.
El preentrenamiento continuado sobre miles de millones de tokens. Eso es un fine-tuning completo, y necesita la máquina de la columna derecha de la tabla de arriba —que es más de un nodo, y más de lo que alquilamos.
Exprimir los dos últimos puntos de un benchmark. El fine-tuning completo sigue ganando en el margen. Si ese margen es por lo que le pagan, LoRA es la herramienta equivocada.
Para todo lo demás —un tono, un formato, un esquema, un dominio que el modelo base ya conoce a medias— QLoRA en una sola tarjeta alcanza la mayor parte de la calidad por una fracción de la máquina. Ese es el trato, y en los modelos a los que la mayoría de la gente realmente le hace fine-tuning, es un buen trato.
Elija la tarjeta y consérvela durante todo el proyecto.
Todas las configuraciones son mensuales, con acceso root y sin contador —que es justo lo que hace falta para iterar sobre un fine-tuning.
Otras guías
- Pago · 8 min
Pagar un servidor en cripto
Qué ocurre realmente entre pulsar pagar y obtener root, qué moneda elegir, y los cuatro errores que hacen perder dinero en un primer pago.
Leer la guía - Dimensionamiento · 9 min
Cuánta VRAM necesita realmente un modelo
La aritmética que hay detrás de «¿cabe?»: los pesos, la caché KV, y los dos puntos en los que una regla general se equivoca por un factor de tres.
Leer la guía - Dimensionamiento · 7 min
NVLink o PCIe: cuál necesita su carga de trabajo
Cuándo el enlace entre tarjetas decide su rendimiento, cuándo no cambia nada, y cómo saber en qué caso está antes de pagar por el nodo equivocado.
Leer la guía