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 congelados 4 bits por parámetro 35 GB para un modelo de 70B. Se leen en cada paso, nunca se actualizan, por lo que nunca necesitan un gradiente.

Adaptadores Alrededor del 1–2 % de los parámetros Uno o dos gigabytes en BF16. Estos son los únicos pesos que cambian, y lo único que conserva al final.

Estado del optimizador Adam, solo en los adaptadores Dos momentos por parámetro entrenado. Es el término que domina el fine-tuning completo y aquí casi desaparece.

Activaciones La parte variable Escala 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**

| Modelo | QLoRA | Fine-tuning completo | Proporción | Qué significa eso |
|---|---|---|---|---|
| Llama 3.1 8B 8B de parámetros | 13 GB | 141 GB | 11× | Una tarjeta de 24 GB Completo: un nodo de 8 GPU |
| Gemma 3 27B 27B de parámetros | 27 GB | 475 GB | 17× | Una tarjeta de 48 GB Completo: un nodo de 8 GPU |
| Qwen 3 32B 32B de parámetros | 31 GB | 563 GB | 18× | Una tarjeta de 48 GB Completo: un nodo de 8 GPU |
| Llama 3.3 70B 70B 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**

| Modelo | Memoria de entrenamiento | Nodo más barato para entrenar | Nodo más barato para servir |
|---|---|---|---|
| Llama 3.1 8B | 13 GB | [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) 24 GB por tarjeta · $125/mes | [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) $125/mes |
| Mistral Small 24B | 25 GB | [NVIDIA RTX A6000](https://gpuserver.io/es/gpu/rtx-a6000) 48 GB por tarjeta · $286/mes | [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) $125/mes |
| Gemma 3 27B | 27 GB | [NVIDIA RTX A6000](https://gpuserver.io/es/gpu/rtx-a6000) 48 GB por tarjeta · $286/mes | [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) $125/mes |
| Qwen 3 32B | 31 GB | [NVIDIA RTX A6000](https://gpuserver.io/es/gpu/rtx-a6000) 48 GB por tarjeta · $286/mes | [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) $125/mes |
| Llama 3.3 70B | 61 GB | [NVIDIA A100 PCIe](https://gpuserver.io/es/gpu/a100-80gb) 80 GB por tarjeta · $1,091/mes | [2 × NVIDIA L4](https://gpuserver.io/es/gpu/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_r 16 to 64 El 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_linear true Adapta 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_len La palanca de memoria más importante Las 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_checkpointing true, casi siempre Alrededor 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ón Compensar uno con otro El 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.

optimizador paged_adamw_8bit Estados 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áquina | Memoria de la tarjeta | Al mes | Adecuado para |
|---|---|---|---|
| [NVIDIA L4](https://gpuserver.io/es/gpu/nvidia-l4) 300 GB/s | 24 GB | $125/mes | QLoRA hasta 8B |
| [NVIDIA RTX 5090](https://gpuserver.io/es/gpu/rtx-5090) 1,792 GB/s | 32 GB | $335/mes | QLoRA hasta 32B |
| [NVIDIA A100 PCIe](https://gpuserver.io/es/gpu/a100-40gb) 1,555 GB/s | 40 GB | $392/mes | QLoRA hasta 32B |
| [NVIDIA RTX A6000](https://gpuserver.io/es/gpu/rtx-a6000) 768 GB/s | 48 GB | $286/mes | QLoRA hasta 32B |
| [NVIDIA A100 PCIe](https://gpuserver.io/es/gpu/a100-80gb) 1,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](https://gpuserver.io/es/guides/monthly-vs-hourly) 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.

[Explorar el catálogo](https://gpuserver.io/es/#catalog) [Leer las guías](https://gpuserver.io/es/guides)

## 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](https://gpuserver.io/es/guides/pay-in-crypto)
- [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](https://gpuserver.io/es/guides/vram-sizing)
- [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](https://gpuserver.io/es/guides/nvlink-vs-pcie)

---

Fuente: https://gpuserver.io/es/guides/lora-finetune/. Este archivo se genera a partir de los mismos datos que el sitio web; si una cifra aquí difiere de la de una página, prevalece la página y este archivo está desactualizado: la fuente canónica es https://gpuserver.io/.
