> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-es/entrenamiento/litgpt.md).

# LitGPT

**LitGPT** es una biblioteca de alto rendimiento para el preentrenamiento, el ajuste fino y el despliegue de más de 20 modelos de lenguaje grandes construida sobre PyTorch Lightning. Con más de 12 mil estrellas en GitHub, es una herramienta de referencia para ingenieros que necesitan código de entrenamiento de LLM limpio y fácil de modificar sin la sobrecarga de abstracción de HuggingFace Transformers.

Cada modelo en LitGPT tiene \~1.000 líneas de PyTorch limpio — sin cadenas de herencia de 10 niveles, sin magia. Puedes leer la implementación de Llama 3 de principio a fin en una tarde y modificarla con confianza.

{% hint style="success" %}
Todos los ejemplos se pueden ejecutar en servidores GPU alquilados a través de [Marketplace de CLORE.AI](https://clore.ai/marketplace).
{% endhint %}

***

## ¿Qué es LitGPT?

LitGPT ofrece implementaciones listas para producción de LLM de última generación con una interfaz de entrenamiento unificada:

* **Más de 20 modelos compatibles** — Llama 3, Gemma 2, Mistral, Phi-3, Falcon, StableLM y más
* **Preentrena desde cero** — preentrenamiento completo con Flash Attention, FSDP y checkpointing de gradientes
* **Ajusta fino de forma eficiente** — ajuste fino completo, LoRA, QLoRA y métodos Adapter
* **Sirve con confianza** — servidor de inferencia integrado con cuantización
* **Compatibilidad con varias GPUs** — DDP, FSDP y paralelismo tensorial listos para usar
* **Eficiente en memoria** — cuantización de 4 bits, checkpointing de gradientes, checkpointing de activaciones

***

## Requisitos del servidor

| Componente     | Mínimo           | Recomendado           |
| -------------- | ---------------- | --------------------- |
| GPU            | RTX 3090 (24 GB) | A100 80 GB / H100     |
| VRAM           | 16 GB (7B LoRA)  | 80 GB+ (70B completo) |
| RAM            | 32 GB            | 64 GB+                |
| CPU            | 8 núcleos        | 16+ núcleos           |
| Almacenamiento | 100 GB           | 500 GB+               |
| SO             | Ubuntu 20.04+    | Ubuntu 22.04          |
| Python         | 3.10+            | 3.11                  |
| CUDA           | 12.8+            | 12.8+                 |

### Requisitos de VRAM por tarea

| Tarea                | Modelo      | VRAM              |
| -------------------- | ----------- | ----------------- |
| Inferencia (4 bits)  | Llama-3 8B  | \~6 GB            |
| Ajuste fino LoRA     | Llama-3 8B  | \~16 GB           |
| Ajuste fino completo | Llama-3 8B  | \~80 GB           |
| Ajuste fino LoRA     | Llama-3 70B | \~48 GB (2×A100)  |
| Ajuste fino completo | Llama-3 70B | \~640 GB (8×A100) |
| Ajuste fino QLoRA    | Llama-3 8B  | \~8 GB            |

***

## Puertos

| Puerto | Servicio                         | Notas                                           |
| ------ | -------------------------------- | ----------------------------------------------- |
| 22     | SSH                              | Acceso por terminal y transferencia de archivos |
| 8000   | Servidor de inferencia de LitGPT | API REST para servir modelos                    |

***

## Inicio rápido con Docker

```bash
# Descarga la imagen oficial de LitGPT
docker pull pytorchlightning/litgpt:latest

# Ejecuta un contenedor interactivo con GPU
docker run -it --gpus all \\
  -p 8000:8000 \
  -v $(pwd)/checkpoints:/checkpoints \\
  -v $(pwd)/data:/data \\
  pytorchlightning/litgpt:latest \\
  bash

# O ejecuta un comando específico directamente
docker run --gpus all \\
  -v $(pwd)/checkpoints:/checkpoints \\
  pytorchlightning/litgpt:latest \\
  litgpt download --repo_id meta-llama/Llama-3.2-3B-Instruct
```

***

## Instalación en Clore.ai

### Paso 1 — Alquilar un servidor

1. Ve a [Marketplace de Clore.ai](https://clore.ai/marketplace)
2. Filtrar por **VRAM ≥ 24 GB** (RTX 3090 o mejor)
3. Elige una imagen base de **PyTorch** o **CUDA 12.8** base
4. Abre puertos **22** y **8000** en la configuración de tu pedido
5. Selecciona **almacenamiento ≥ 200 GB** para los pesos del modelo

### Paso 2 — Conectarse vía SSH

```bash
ssh root@<ip-del-servidor> -p <puerto-ssh>
```

### Paso 3 — Instala LitGPT

```bash
# Instala con pip (recomendado)
pip install litgpt

# Con todos los extras (cuantización, servidor, etc.)
pip install 'litgpt[all]'

# O instálalo desde el código fuente para obtener las funciones más recientes
git clone https://github.com/Lightning-AI/litgpt.git
cd litgpt
pip install -e '.[all]'
```

### Paso 4 — Verifica la instalación

```bash
litgpt --help
```

Salida esperada:

```
Uso: litgpt [OPTIONS] COMMAND [ARGS]...
  
Comandos:
  chat       Chatea con un modelo
  convert    Convierte los pesos del modelo
  download   Descarga los pesos del modelo
  evaluate   Evalúa un modelo
  finetune   Ajusta fino un modelo
  generate   Genera texto
  pretrain   Preentrena un modelo
  serve      Sirve un modelo para inferencia
```

***

## Descarga de modelos

LitGPT descarga modelos desde Hugging Face:

```bash
# Lista los modelos disponibles
litgpt download --list

# Descarga Llama 3.2 3B (requiere un token de HF para modelos con acceso restringido)
litgpt download \\
  --repo_id meta-llama/Llama-3.2-3B-Instruct \\
  --checkpoint_dir checkpoints/

# Descarga Mistral 7B (acceso abierto)
litgpt download \\
  --repo_id mistralai/Mistral-7B-Instruct-v0.3

# Descarga Gemma 2 2B
litgpt download \\
  --repo_id google/gemma-2-2b-it \\
  --access_token your-hf-token

# Descarga Phi-3 (pequeño pero potente)
litgpt download \\
  --repo_id microsoft/Phi-3-mini-4k-instruct
```

### Configura el token de Hugging Face

```bash
# Para modelos con acceso restringido (Llama, Gemma)
export HF_TOKEN=hf_your-token-here

# O autentícate mediante la CLI
pip install huggingface_hub
huggingface-cli login
```

***

## Inferencia (chat y generación)

```bash
# Chat interactivo
litgpt chat \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct

# Generación única
litgpt generate \\
  --prompt "Explica la computación en GPU en términos simples" \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --max_new_tokens 200

# Con temperatura y muestreo
litgpt generate \\
  --prompt "Escribe una función de Python para ordenar una lista" \\
  --checkpoint_dir checkpoints/mistralai/Mistral-7B-Instruct-v0.3 \\
  --temperature 0.7 \\
  --top_p 0.9 \\
  --max_new_tokens 500
```

***

## Ajuste fino

### Ajuste fino LoRA (recomendado)

LoRA entrena un pequeño conjunto de parámetros adaptadores (normalmente 0,1–1 % de los pesos totales) mientras el modelo base permanece congelado. LoRA en Llama 3 8B con 10K ejemplos tarda \~2 horas en una RTX 3090 con `r=16`.

```bash
# Prepara tu conjunto de datos
# Formato: líneas JSON con {"instruction": "...", "input": "...", "output": "..."}
cat > data/train.json << 'EOF'
{"instruction": "¿Qué es la computación en la nube con GPU?", "input": "", "output": "La computación en la nube con GPU proporciona acceso bajo demanda al hardware GPU a través de internet, lo que permite entrenar e inferir con IA sin poseer hardware físico."}
{"instruction": "¿Cómo alquilo una GPU en Clore.ai?", "input": "", "output": "Visita clore.ai/marketplace, filtra por especificaciones de GPU, selecciona un servidor, configura los puertos y haz clic en alquilar. El acceso SSH se proporciona inmediatamente."}
EOF

# Ajusta fino con LoRA
litgpt finetune lora \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --data JSON \\
  --data.json_path data/train.json \\
  --train.epochs 3 \\
  --train.micro_batch_size 4 \\
  --lora_r 8 \\
  --lora_alpha 16 \\
  --out_dir out/llama-lora-finetuned

# Supervisa el entrenamiento
# LitGPT genera registros con la pérdida, la tasa de aprendizaje y el tiempo restante estimado
```

### QLoRA (4 bits + LoRA)

Usa QLoRA para ajustar fino modelos grandes con VRAM limitada. Llama 3 8B cabe en una sola RTX 3090 con 24 GB:

```bash
litgpt finetune lora \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-8B-Instruct \\
  --quantize bnb.nf4 \\
  --train.epochs 3 \\
  --train.micro_batch_size 2 \\
  --lora_r 16 \
  --lora_alpha 32 \\
  --out_dir out/llama-qlora
```

### Ajuste fino completo

```bash
litgpt finetune full \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --data JSON \\
  --data.json_path data/train.json \\
  --train.epochs 2 \\
  --train.micro_batch_size 2 \\
  --train.accumulate_gradients 8 \\
  --out_dir out/llama-full-finetuned
```

### Entrenamiento multi-GPU

```bash
# Usa FSDP en varias GPUs
litgpt finetune full \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-8B-Instruct \\
  --devices 4 \\
  --strategy fsdp \\
  --train.epochs 3 \\
  --out_dir out/llama-multigpu
```

***

## Sirviendo modelos (API REST)

```bash
# Inicia el servidor de inferencia
litgpt serve \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --host 0.0.0.0 \\
  --port 8000

# Prueba la API
curl -X POST http://localhost:8000/predict \\
  -H "Content-Type: application/json" \\
  -d '{
    "prompt": "¿Cuál es la capital de Francia?",
    "max_new_tokens": 100,
    "temperature": 0.7
  }'
```

### Cliente Python

```python
import requests

response = requests.post(
    "http://<server-ip>:8000/predict",
    json={
        "prompt": "Explica el aprendizaje por refuerzo",
        "max_new_tokens": 500,
        "temperature": 0.8,
        "top_p": 0.9,
    }
)
print(response.json()["output"])
```

***

## Preentrenamiento desde cero

Para entrenar un LLM personalizado desde cero con tus propios datos:

```bash
# Prepara los datos de preentrenamiento (tokenizados y divididos en fragmentos)
python scripts/prepare_redpajama.py \\
  --source_path /data/raw_text \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --destination_path /data/tokenized

# Inicia el preentrenamiento
litgpt pretrain \\
  --model_name Llama-3.2 \\
  --data /data/tokenized \\
  --train.micro_batch_size 4 \\
  --train.max_tokens 10_000_000_000 \\
  --devices 8 \\
  --strategy fsdp \\
  --out_dir out/my-pretrained-llm
```

***

## Conversión y exportación de modelos

```bash
# Fusiona los pesos de LoRA en el modelo base
litgpt merge_lora \\
  --checkpoint_dir out/llama-lora-finetuned

# Convierte al formato de HuggingFace para distribuirlo
litgpt convert to_hf \\
  --checkpoint_dir out/llama-lora-finetuned/final \\
  --output_dir hf_model/

# Exporta al formato GGUF (para Ollama/LlamaCpp)
# Usa el script de conversión de llama.cpp después de exportar desde HF
python llama.cpp/convert.py hf_model/ --outfile model.gguf
```

***

## Evaluación de modelos

```bash
# Ejecuta el benchmark MMLU
litgpt evaluate \\
  --checkpoint_dir checkpoints/meta-llama/Llama-3.2-3B-Instruct \\
  --tasks mmlu \\
  --num_fewshot 5

# Ejecuta varios benchmarks
litgpt evaluate \\
  --checkpoint_dir out/llama-lora-finetuned/final \\
  --tasks "mmlu,hellaswag,truthfulqa_mc"
```

***

## Recomendaciones de GPU para Clore.ai

{% hint style="warning" %}
**Los equipos multinodo de clase 80GB no aparecen listados en el marketplace de Clore.ai.** Los equipos más grandes listados hoy son 4× RTX PRO 6000 Blackwell (96GB cada una, 380GB en total) y 8–11× RTX 5090 (32GB cada una). La capacidad A100 / H200 / B200 se vende como [bare metal](https://clore.ai/bare-metal) bajo pedido. Consulta [Precios y disponibilidad de GPU](/guides/guides_v2-es/primeros-pasos/pricing.md) antes de dimensionar un despliegue.
{% endhint %}

LitGPT cubre tres cargas de trabajo distintas — inferencia, ajuste fino LoRA y preentrenamiento completo — cada una con diferentes requisitos de GPU.

| Carga de trabajo                                              | GPU            | VRAM  | Notas                                                             |
| ------------------------------------------------------------- | -------------- | ----- | ----------------------------------------------------------------- |
| Inferencia / chat (modelos de 7–8B)                           | **RTX 3090**   | 24 GB | Cabe Llama 3 8B en bf16; generación de \~95 tok/s                 |
| Ajuste fino LoRA (modelos de 7–8B)                            | **RTX 3090**   | 24 GB | Opción económica; QLoRA mantiene la VRAM por debajo de 10 GB      |
| Ajuste fino LoRA (7–8B), iteración rápida                     | **RTX 4090**   | 24 GB | \~35 % más rápida que la 3090; reduce un trabajo de 2 h a \~1,4 h |
| Ajuste fino completo (7B) o QLoRA (70B)                       | **A100 40 GB** | 40 GB | 40 GB alcanzan para 7B en precisión completa o 70B en 4 bits      |
| Ajuste fino completo (13B+) o ejecuciones de preentrenamiento | **A100 80 GB** | 80 GB | Máximo rendimiento; \~2.800 tok/s de entrenamiento en 8B          |

**Recomendado para la mayoría de los usuarios:** Par de RTX 3090 (2×24 GB = 48 GB efectivos con FSDP). Maneja QLoRA en modelos de 70B, o ajuste fino completo en modelos de 7B con paralelismo tensorial. Coste en Clore.ai: $0.07–0.21/h para dos 3090.

**Para preentrenamiento o ajuste fino de >70B:** Usa 4×A100 de 80 GB con FSDP. La integración de FSDP de LitGPT gestiona el sharding de forma transparente — solo pasa `--devices 4 --strategy fsdp`.

***

## Solución de problemas

### Memoria insuficiente en CUDA

```bash
# Reduce el tamaño del lote
--train.micro_batch_size 1

# Habilita gradient checkpointing
--train.gradient_checkpointing true

# Usa QLoRA en lugar de LoRA
--quantize bnb.nf4

# Comprueba la memoria de la GPU
nvidia-smi
```

### La descarga falla / HuggingFace 401

```bash
# Configura el token de HF
export HF_TOKEN=hf_your-token-here
huggingface-cli login

# O pásalo directamente
litgpt download \\
  --repo_id meta-llama/Llama-3.2-3B-Instruct \\
  --access_token hf_your-token
```

### La pérdida de entrenamiento no disminuye

```bash
# Revisa el formato de tus datos — debe ser JSON Lines válido
python -c "
import json
with open('data/train.json') as f:
    for i, line in enumerate(f):
        json.loads(line)
        if i < 3: print(f'Línea {i}: OK')
print('Todas las líneas son válidas')
"

# Reduce la tasa de aprendizaje
--train.lr 1e-5  # El valor predeterminado suele ser demasiado alto para conjuntos de datos pequeños

# Comprueba el tamaño de los datos — LoRA necesita al menos 100-1000 ejemplos
wc -l data/train.json
```

### El puerto 8000 del servidor no es accesible

```bash
# Verifica que el servidor esté escuchando
ss -tlnp | grep 8000

# Abre el firewall
ufw allow 8000/tcp

# Reinicia el servidor con un host explícito
litgpt serve \\
  --checkpoint_dir checkpoints/... \\
  --host 0.0.0.0 \\
  --port 8000
```

### El entrenamiento en varias GPUs se cuelga

```bash
# Comprueba la conectividad de NCCL
python -c "import torch; print(torch.cuda.device_count())"

# Prueba DDP en lugar de FSDP para modelos más pequeños
--strategy ddp

# Define variables de entorno de NCCL
export NCCL_DEBUG=INFO
export NCCL_IB_DISABLE=1  # Si InfiniBand no está disponible
```

***

## Enlaces útiles

* **GitHub**: <https://github.com/Lightning-AI/litgpt> ⭐ 12K+
* **Documentación**: <https://lightning.ai/docs/litgpt>
* **PyTorch Lightning**: <https://lightning.ai>
* **Modelos de HuggingFace**: <https://huggingface.co/models>
* **Discord**: <https://discord.gg/lightning-ai>
* **Marketplace de Clore.ai**: <https://clore.ai/marketplace>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-es/entrenamiento/litgpt.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
