Pular para o conteúdo

Nanotron - Cheatsheet de Treinamento de LLM Paralelo Minimalista 3D

Nanotron - Cheatsheet de Treinamento de LLM Paralelo Minimalista 3D

Nanotron (por Hugging Face) é um framework minimalista para pré-treinamento de modelos de linguagem grande com paralelismo 3D — paralelos de dados, tensor e pipeline — implementado em Python deliberadamente legível. Seu objetivo é ser pequeno e hackeável o suficiente para realmente entender, enquanto ainda distribui treinamento em muitas GPUs. É uma escolha forte quando você deseja aprender ou personalizar a mecânica do pré-treinamento distribuído sem a complexidade dos maiores frameworks.

Pré-treinamento consome muito computador; começar pequeno. Valide um config em um modelo pequeno e um par de GPUs antes de escalar.

Instalação

MétodoComando
From sourcegit clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e .
Flash attentionpip install flash-attn (recomendado)
RequirementsPyTorch + GPUs CUDA
Verifyexecute um config de exemplo em 1–2 GPUs

Paralelismo 3D

DimensãoDivideChave de Config
Data Parallel (DP)O lote em réplicasdp
Tensor Parallel (TP)Camadas em GPUstp
Pipeline Parallel (PP)O modelo em estágiospp

O produto dp × tp × pp deve ser igual à contagem total de GPUs.

Configuração (YAML)

O treinamento do Nanotron é definido por um config YAML descrevendo o modelo, dados, paralelismo e otimizador.

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

Iniciando Treinamento

# Single node, multiple GPUs
torchrun --nproc_per_node=8 run_train.py --config-file config.yaml

# Generate a starter config
python examples/config_tiny_llama.py
ChaveSignificado
run_train.pyPonto de entrada de treinamento principal
--config-fileO config YAML de treinamento
pp_engineCronograma de pipeline (ex. 1F1B, AFAB)
micro_batch_sizeMicro lote por etapa
batch_accumulation_per_replicaAcumulação de gradiente

Dados

OpçãoNota
Pretokenized datasetsAponte o config para dados tokenizados
HF datasetsStream/carregue via Hugging Face
NanosetFormato de conjunto de dados eficiente do Nanotron
TokenizerDefinir via config do tokenizer

Pontos de Verificação e Retomar

AspectoComo
Save frequencycheckpoints.checkpoint_interval
Save pathcheckpoints.checkpoints_path
Resume--config-file + aponte para um ponto de verificação salvo
ShardedPontos de verificação são cientes de paralelismo

Monitoramento

MétricaSignificado
loss / lm_lossPerda de treinamento
tokens/sRendimento
grad normMagnitude de gradiente (estabilidade)
LoggingIntegração W&B / TensorBoard

Nanotron vs Outros Frameworks de Treinamento

AspectoNanotronTorchTitanMegatron-LM
FilosofiaMínimo, hackeávelReferência nativa PyTorchRecursos-ricos, escala máxima
Paralelismo3D (dp/tp/pp)4D (adiciona contexto)3D+ extenso
LegibilidadeAlta (aprenda com isso)AltaMais baixa (grande base de código)
Melhor paraCompreender/personalizar 3DDimensionamento nativo PyTorchTreinamento em escala de fronteira

Recursos