Ir al contenido

Nanotron - Entrenamiento de LLM paralelismo 3D minimalista

Nanotron - Entrenamiento de LLM paralelismo 3D minimalista

Nanotron (de Hugging Face) es un marco minimalista para entrenar previamente modelos de lenguaje grandes con paralelismo 3D — paralelo de datos, tensor y pipeline — implementado en Python deliberadamente legible. Su objetivo es ser lo suficientemente pequeño y hackable para entender realmente, mientras sigue distribuyendo el entrenamiento entre muchas GPUs. Es una opción fuerte cuando deseas aprender o personalizar la mecánica del preentrenamiento distribuido sin la complejidad de los marcos más grandes.

El preentrenamiento requiere muchos cálculos; comienza pequeño. Valida una configuración en un modelo diminuto y un par de GPUs antes de escalar.

Instalación

MétodoComando
Desde fuentegit clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e .
Atención flashpip install flash-attn (recomendado)
RequerimientosPyTorch + GPUs CUDA
Verificarejecuta una configuración de ejemplo en 1–2 GPUs

Paralelismo 3D

DimensiónDivideClave de configuración
Paralelo de datos (DP)El lote entre réplicasdp
Paralelo de tensor (TP)Capas entre GPUstp
Paralelo de pipeline (PP)El modelo en etapaspp

El producto dp × tp × pp debe ser igual a tu conteo total de GPUs.

Configuración (YAML)

El entrenamiento de Nanotron se define mediante una configuración YAML que describe el modelo, datos, paralelismo y optimizador.

parallelism:
  dp: 2
  tp: 2
  pp: 2
  pp_engine: 1f1b        # pipeline schedule

model:
  model_config:
    hidden_size: 2048
    num_hidden_layers: 24
    num_attention_heads: 16

optimizer:
  learning_rate_scheduler:
    learning_rate: 3.0e-4
  optimizer_factory:
    adam_beta1: 0.9
    adam_beta2: 0.95

tokens:
  sequence_length: 2048
  micro_batch_size: 4
  batch_accumulation_per_replica: 8

Lanzamiento del entrenamiento

# Nodo único, múltiples GPUs
torchrun --nproc_per_node=8 run_train.py --config-file config.yaml

# Genera una configuración de inicio
python examples/config_tiny_llama.py
ClaveSignificado
run_train.pyPunto de entrada principal de entrenamiento
--config-fileLa configuración YAML de entrenamiento
pp_enginePrograma de pipeline (por ejemplo 1F1B, AFAB)
micro_batch_sizeLote micro por paso
batch_accumulation_per_replicaAcumulación de gradiente

Datos

OpciónNota
Conjuntos de datos pretokenizadosApunta la configuración a datos tokenizados
Conjuntos de datos de HFStream/carga a través de Hugging Face
NanosetFormato de conjunto de datos eficiente de Nanotron
TokenizadorEstablece a través de la configuración del tokenizador

Puntos de control y reanudar

AspectoCómo
Guardar frecuenciacheckpoints.checkpoint_interval
Ruta de guardadocheckpoints.checkpoints_path
Reanudar--config-file + apunta a un punto de control guardado
ParticionadoLos puntos de control son conscientes del paralelismo

Monitoreo

MétricaSignificado
pérdida / lm_lossPérdida de entrenamiento
tokens/sRendimiento
grad normMagnitud del gradiente (estabilidad)
LoggingIntegración W&B / TensorBoard

Nanotron vs otros marcos de entrenamiento

AspectoNanotronTorchTitanMegatron-LM
FilosofíaMinimalista, hackableReferencia nativa de PyTorchCompleto, escala máxima
Paralelismo3D (dp/tp/pp)4D (agrega contexto)3D+ extenso
LegibilidadAlta (aprender de ella)AltaInferior (base de código grande)
Mejor paraComprensión/personalización de 3DEscalado nativo de PyTorchEntrenamiento a escala de frontera

Recursos