Todos los 6 centros de datos operativos

Pagado en cripto · Sin verificación de identidad · Acceso root en en menos de 5 minutos

Guía de Práctica · 10 min de lectura

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.

Pesos congelados4 bits por parámetro35 GB para un modelo de 70B. Se leen en cada paso, nunca se actualizan, por lo que nunca necesitan un gradiente.
AdaptadoresAlrededor del 1–2 % de los parámetrosUno o dos gigabytes en BF16. Estos son los únicos pesos que cambian, y lo único que conserva al final.
Estado del optimizadorAdam, solo en los adaptadoresDos momentos por parámetro entrenado. Es el término que domina el fine-tuning completo y aquí casi desaparece.
ActivacionesLa parte variableEscala con el tamaño de lote y la longitud de secuencia. El gradient checkpointing cambia aproximadamente un 30 % más de cómputo por una gran reducción —la palanca habitual cuando una ejecución no cabe.

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.

Memoria de entrenamiento: QLoRA frente a fine-tuning completo
ModeloQLoRAFine-tuning completoProporciónQué significa eso
Llama 3.1 8B8B de parámetros 13 GB 141 GB 11× Una tarjeta de 24 GB Completo: un nodo de 8 GPU
Gemma 3 27B27B de parámetros 27 GB 475 GB 17× Una tarjeta de 48 GB Completo: un nodo de 8 GPU
Qwen 3 32B32B de parámetros 31 GB 563 GB 18× Una tarjeta de 48 GB Completo: un nodo de 8 GPU
Llama 3.3 70B70B de parámetros 61 GB 1,232 GB 20× Una tarjeta de 80 GB Completo: más de un nodo

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.

Nodo más barato para entrenar con QLoRA, y para servir el resultado
ModeloMemoria de entrenamientoNodo más barato para entrenarNodo más barato para servir
Llama 3.1 8B 13 GB NVIDIA L424 GB por tarjeta · $125/mes NVIDIA L4$125/mes
Mistral Small 24B 25 GB NVIDIA RTX A600048 GB por tarjeta · $286/mes NVIDIA L4$125/mes
Gemma 3 27B 27 GB NVIDIA RTX A600048 GB por tarjeta · $286/mes NVIDIA L4$125/mes
Qwen 3 32B 31 GB NVIDIA RTX A600048 GB por tarjeta · $286/mes NVIDIA L4$125/mes
Llama 3.3 70B 61 GB NVIDIA A100 PCIe80 GB por tarjeta · $1,091/mes 2 × NVIDIA L4$285/mes

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.

Una ejecución de QLoRA en una tarjeta
$ 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
Vigile la memoria, no la pérdida, durante los dos primeros minutos
$ 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

lora_r16 to 64El rango, y el principal control de compromiso entre calidad y memoria. 16 es un valor predeterminado sensato; subir de 64 rara vez merece la pena, salvo que esté enseñando conocimiento genuinamente nuevo en vez de un formato o un estilo.
lora_target_lineartrueAdapta todas las capas lineales en vez de solo la atención. Cuesta poco y supera de forma constante al valor predeterminado de solo atención.
sequence_lenLa palanca de memoria más importanteLas activaciones escalan con ello. Reducirlo a la mitad reduce aproximadamente a la mitad la parte variable de su memoria. Ajústelo a la longitud real de sus datos, no al máximo del modelo.
gradient_checkpointingtrue, casi siempreAlrededor de un 30 % más lento, y es lo que permite que una ejecución de 70B llegue a caber en una sola tarjeta. Desactívelo solo cuando le sobre memoria.
micro_batch_size & acumulaciónCompensar uno con otroEl lote efectivo es su producto. Mantenga el micro-lote en 1 y suba la acumulación cuando la memoria esté ajustada —mismo gradiente, menos memoria pico, algo más lento.
optimizadorpaged_adamw_8bitEstados del optimizador en ocho bits con paginación a CPU como válvula de seguridad. Absorbe los picos que, si no, acabarían con una ejecución en la cuarta hora.

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.

Coste de un proyecto de fine-tuning, por máquina
MáquinaMemoria de la tarjetaAl mesAdecuado para
NVIDIA L4300 GB/s 24 GB $125/mes QLoRA hasta 8B
NVIDIA RTX 50901,792 GB/s 32 GB $335/mes QLoRA hasta 32B
NVIDIA A100 PCIe1,555 GB/s 40 GB $392/mes QLoRA hasta 32B
NVIDIA RTX A6000768 GB/s 48 GB $286/mes QLoRA hasta 32B
NVIDIA A100 PCIe1,935 GB/s 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.

Iniciar sesión

Consola, facturas y acceso fuera de banda.

¿Aún no tiene cuenta?

No hay un registro aparte. Su cuenta se crea mientras realiza su primer pedido — elige el correo electrónico y la contraseña en el paso de pago, y la consola está abierta para cuando lo está la máquina.

Configurar un servidor

Language