Ir al contenido

TorchTitan - Preentrenamiento de LLM nativo de PyTorch

TorchTitan - Preentrenamiento de LLM nativo de PyTorch

TorchTitan es una plataforma de código abierto nativa de PyTorch para preentrenamiento de modelos generativos (LLM) a gran escala. Es una implementación de referencia de espacio en blanco de las técnicas de entrenamiento distribuido más recientes de PyTorch, componiendo paralelismo 4D — datos, tensor, pipeline y paralelo de contexto — de manera modular, sobre FSDP2, torch.compile y punto de control distribuido, con escalado elástico. Es el punto de partida para equipos que desean entrenar previamente modelos usando escalado nativo de PyTorch en lugar de una pila de terceros.

El preentrenamiento distribuido requiere muchos recursos. Valida configuraciones en un modelo/escala pequeña antes de comprometerse en una ejecución multi-nodo grande.

Instalación

MétodoComando
Desde fuentegit clone https://github.com/pytorch/torchtitan && cd torchtitan && pip install -e .
RequerimientosPyTorch reciente (nightly a menudo recomendado), GPUs CUDA
Conjuntos de datosUsa conjuntos de datos de HF / tokenizadores
Verificarejecuta una configuración de depuración en 1 GPU

Dimensiones de paralelismo (4D)

DimensiónDivide
Paralelo de datos (FSDP2)El lote, parámetros de particionamiento/optimizador/gradientes
Paralelo de tensorCapas individuales entre GPUs
Paralelo de pipelineEl modelo en etapas entre GPUs
Paralelo de contextoSecuencias largas entre GPUs

Estos se componen: por ejemplo, dp × tp × pp × cp mapea un modelo sobre una malla de GPU grande.

Configuración

TorchTitan es impulsado por archivos de configuración TOML más anulaciones de línea de comandos.

# Inicia el entrenamiento con una configuración (multi-GPU a través de torchrun)
CONFIG_FILE=./train_configs/llama3_8b.toml ./run_train.sh
Sección de configuraciónControla
[model]Arquitectura, tamaño, sabor
[training]Tamaño de lote, pasos, longitud de secuencia, LR
[parallelism]data_parallel_shard_degree, tensor_parallel_degree, pipeline_parallel_degree, context_parallel_degree
[optimizer]Optimizador + hiperparámetros
[checkpoint]Frecuencia/rutas de punto de control distribuido
[activation_checkpoint]Política de recomputación

Características principales

CaracterísticaBeneficio
FSDP2Paralelo de datos completamente cortante moderno
torch.compileCompilación gráfica para velocidad
Punto de control distribuido asincrónicoGuarda/reanuda ejecuciones enormes de manera eficiente
Float8 / precisión bajaEntrenamiento más rápido en hardware compatible
Escalado elásticoAdaptar a la disponibilidad de GPU cambiante
Inicialización de dispositivo MetaConstruye modelos enormes sin OOM en la inicialización

Lanzamiento de múltiples nodos

# torchrun entre nodos (conceptual)
torchrun --nnodes=4 --nproc_per_node=8 \
  --rdzv_backend=c10d --rdzv_endpoint=$MASTER:29500 \
  -m torchtitan.train --job.config_file llama3_70b.toml
AnulaciónEjemplo
Grados de paralelismo--parallelism.tensor_parallel_degree 8
Pasos--training.steps 10000
Longitud de secuencia--training.seq_len 8192
Compilar--training.compile

Monitoreo y puntos de control

AspectoCómo
LoggingIntegración TensorBoard / W&B
MétricasPérdida, tokens/seg, MFU (utilización de FLOPs de modelo)
Puntos de controlPunto de control distribuido (DCP) guardar/cargar
ReanudarApunta la configuración en un paso de punto de control

TorchTitan vs otros marcos de entrenamiento

AspectoTorchTitanMegatron-LMNanotron
OrigenEquipo PyTorchNVIDIAHugging Face
EstiloNativo de PyTorch, composableCompleto, maduroMinimalista 3D
Paralelismo4D (dp/tp/pp/cp)3D+ (extenso)3D
Mejor paraEscalado de referencia nativo de PyTorchEscala máxima MoE/densaEntrenamiento 3D pequeño hackable

Recursos