{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}

Распределенная предварительная подготовка Llm Torchtitan

Обеспечивает предварительное обучение распределенному LLM на основе PyTorch с использованием torchtitan с 4D-параллелизмом (FSDP2, TP, PP, CP). Используйте при предварительном обучении Llama 3.1, DeepSeek V3 или пользовательских моделей в масштабе от 8 до 512+ графических процессоров с Float8, torch.compile и распределенными контрольными точками.

Метаданные навыков

Источник Необязательно — установите с помощью hermesskills installofficial/mlops/torchtitan
Путь optional-skills/mlops/torchtitan
Версия 1.0.0
Автор Исследование оркестра
Лицензия Массачусетский технологический институт
Зависимости факел>=2.6.0, торхтитан>=0.2.0, торчао>=0.5.0
Платформы Linux, MacOS
Теги «Архитектура модели», «Распределенное обучение», «TorchTitan», «FSDP2», «Тензорная параллель», «Конвейерная параллель», «Контекстная параллель», «Float8», «Ллама», «Предварительное обучение»

Ссылка: полная версия SKILL.md:::информация

Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.

TorchTitan — предварительное обучение PyTorch Distributed LLM

Быстрый старт

TorchTitan — это официальная платформа PyTorch для крупномасштабного предварительного обучения LLM с компонуемым 4D-параллелизмом (FSDP2, TP, PP, CP), обеспечивающая ускорение более чем на 65 % по сравнению с базовыми показателями на графических процессорах H100.

Установка:

# From PyPI (stable)
pip install torchtitan

# From source (latest features, requires PyTorch nightly)
git clone https://github.com/pytorch/torchtitan
cd torchtitan
pip install -r requirements.txt

Загрузить токенайзер:

# Get HF token from https://huggingface.co/settings/tokens
python scripts/download_hf_assets.py --repo_id meta-llama/Llama-3.1-8B --assets tokenizer --hf_token=...

Начните обучение на 8 графических процессорах:

CONFIG_FILE="./torchtitan/models/llama3/train_configs/llama3_8b.toml"./run_train.sh

Общие рабочие процессы

Рабочий процесс 1: предварительное обучение Llama 3.1 8B на одном узле

Скопируйте этот контрольный список:

Single Node Pretraining:
- [ ] Step 1: Download tokenizer
- [ ] Step 2: Configure training
- [ ] Step 3: Launch training
- [ ] Step 4: Monitor and checkpoint

Шаг 1. Загрузите токенайзер

python scripts/download_hf_assets.py \
  --repo_id meta-llama/Llama-3.1-8B \
  --assets tokenizer \
  --hf_token=YOUR_HF_TOKEN

Шаг 2. Настройте обучение

Отредактируйте или создайте файл конфигурации TOML:

# llama3_8b_custom.toml
[job]
dump_folder = "./outputs"
description = "Llama 3.1 8B training"

[model]
name = "llama3"
flavor = "8B"
hf_assets_path = "./assets/hf/Llama-3.1-8B"

[optimizer]
name = "AdamW"
lr = 3e-4

[lr_scheduler]
warmup_steps = 200

[training]
local_batch_size = 2
seq_len = 8192
max_norm = 1.0
steps = 1000
dataset = "c4"

[parallelism]
data_parallel_shard_degree = -1  # Use all GPUs for FSDP

[activation_checkpoint]
mode = "selective"
selective_ac_option = "op"

[checkpoint]
enable = true
folder = "checkpoint"
interval = 500

Шаг 3. Запустите обучение

# 8 GPUs on single node
CONFIG_FILE="./llama3_8b_custom.toml"./run_train.sh

# Or explicitly with torchrun
torchrun --nproc_per_node=8 \
  -m torchtitan.train \
  --job.config_file./llama3_8b_custom.toml

Шаг 4. Мониторинг и контрольная точка

Журналы TensorBoard сохраняются в ./outputs/tb/:

tensorboard --logdir./outputs/tb

Рабочий процесс 2: многоузловое обучение с помощью SLURM

Multi-Node Training:
- [ ] Step 1: Configure parallelism for scale
- [ ] Step 2: Set up SLURM script
- [ ] Step 3: Submit job
- [ ] Step 4: Resume from checkpoint

Шаг 1. Настройте параллелизм для масштабирования

Для модели 70B на 256 графических процессорах (32 узла):

[parallelism]
data_parallel_shard_degree = 32  # FSDP across 32 ranks
tensor_parallel_degree = 8        # TP within node
pipeline_parallel_degree = 1      # No PP for 70B
context_parallel_degree = 1       # Increase for long sequences

Шаг 2. Настройте сценарий SLURM

#!/bin/bash
#SBATCH --job-name=llama70b
#SBATCH --nodes=32
#SBATCH --ntasks-per-node=8
#SBATCH --gpus-per-node=8

srun torchrun \
  --nnodes=32 \
  --nproc_per_node=8 \
  --rdzv_backend=c10d \
  --rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT \
  -m torchtitan.train \
  --job.config_file./llama3_70b.toml

Шаг 3. Отправьте задание

sbatch multinode_trainer.slurm

Шаг 4. Возобновите работу с контрольной точки

Обучение автоматически возобновляется, если в настроенной папке существует контрольная точка.

Рабочий процесс 3: включите обучение Float8 для H100

Float8 обеспечивает ускорение на 30-50% на графических процессорах H100.

Float8 Training:
- [ ] Step 1: Install torchao
- [ ] Step 2: Configure Float8
- [ ] Step 3: Launch with compile

Шаг 1. Установите Torchao

USE_CPP=0 pip install git+https://github.com/pytorch/ao.git

Шаг 2. Настройте Float8

Добавьте в свою конфигурацию TOML:

[model]
converters = ["quantize.linear.float8"]

[quantize.linear.float8]
enable_fsdp_float8_all_gather = true
precompute_float8_dynamic_scale_for_fsdp = true
filter_fqns = ["output"]  # Exclude output layer

[compile]
enable = true
components = ["model", "loss"]

Шаг 3. Запуск с помощью компиляции

CONFIG_FILE="./llama3_8b.toml"./run_train.sh \
  --model.converters="quantize.linear.float8" \
  --quantize.linear.float8.enable_fsdp_float8_all_gather \
  --compile.enable

Рабочий процесс 4: 4D-параллелизм для моделей 405B

4D Parallelism (FSDP + TP + PP + CP):
- [ ] Step 1: Create seed checkpoint
- [ ] Step 2: Configure 4D parallelism
- [ ] Step 3: Launch on 512 GPUs

Шаг 1. Создайте исходную контрольную точку

Требуется для последовательной инициализации на всех этапах PP:

NGPU=1 CONFIG_FILE=./llama3_405b.toml./run_train.sh \
  --checkpoint.enable \
  --checkpoint.create_seed_checkpoint \
  --parallelism.data_parallel_shard_degree 1 \
  --parallelism.tensor_parallel_degree 1 \
  --parallelism.pipeline_parallel_degree 1

Шаг 2. Настройте 4D-параллелизм

[parallelism]
data_parallel_shard_degree = 8   # FSDP
tensor_parallel_degree = 8       # TP within node
pipeline_parallel_degree = 8     # PP across nodes
context_parallel_degree = 1      # CP for long sequences

[training]
local_batch_size = 32
seq_len = 8192

Шаг 3. Запуск на 512 графических процессорах

# 64 nodes x 8 GPUs = 512 GPUs
srun torchrun --nnodes=64 --nproc_per_node=8 \
  -m torchtitan.train \
  --job.config_file./llama3_405b.toml

Когда использовать альтернативы

Используйте TorchTitan, когда: - Предварительная подготовка LLM с нуля (от 8B до 405B+) - Требуется собственное решение PyTorch без сторонних зависимостей. - Требовать компонуемый 4D-параллелизм (FSDP2, TP, PP, CP) - Обучение на H100 с поддержкой Float8 - Хотите совместимые контрольно-пропускные пункты с torchtune/HuggingFace

Вместо этого используйте альтернативы: - Megatron-LM: максимальная производительность для развертываний только на NVIDIA. - DeepSpeed: расширенная экосистема оптимизации ZeroRO, поддержка логических выводов. - Аксолотль/TRL: точная настройка, а не предварительная тренировка. - LitGPT: Образовательное, мелкомасштабное обучение.

Распространенные проблемы

Проблема: недостаточно памяти на больших моделях

Включите контрольную точку активации и уменьшите размер пакета:

[activation_checkpoint]
mode = "full"  # Instead of "selective"

[training]
local_batch_size = 1

Или используйте накопление градиента:

[training]
local_batch_size = 1
global_batch_size = 32  # Accumulates gradients

Проблема: TP вызывает нехватку памяти при асинхронных коллективах

Установите переменную среды:

export TORCH_NCCL_AVOID_RECORD_STREAMS=1

Проблема: обучение Float8 не происходит быстрее

Float8 приносит пользу только крупным GEMM. Фильтровать небольшие слои:

[quantize.linear.float8]
filter_fqns = ["attention.wk", "attention.wv", "output", "auto_filter_small_kn"]

Проблема: не загружается контрольная точка после изменения параллелизма

Используйте возможность перешардинга DCP:

# Convert sharded checkpoint to single file
python -m torch.distributed.checkpoint.format_utils \
  dcp_to_torch checkpoint/step-1000 checkpoint.pt

Проблема: инициализация конвейерного параллелизма

Сначала создайте исходную контрольную точку (см. Рабочий процесс 4, шаг 1).

Поддерживаемые модели

Модель Размеры Статус
Лама 3.1 8Б, 70Б, 405Б Производство
Лама 4 Разное Экспериментальный
ДипСик V3 16Б, 236Б, 671Б (МО) Экспериментальный
ГПТ-ОСС 20Б, 120Б (МО) Экспериментальный
Квен 3 Разное Экспериментальный
Флюс Диффузия Экспериментальный

Тесты производительности (H100)

Модель графические процессоры Параллелизм ДПС/ГП Техники
Ламы 8Б 8 ССДП 5,762 Базовый уровень
Ламы 8Б 8 FSDP+компиляция+FP8 8,532 +48%
Лама 70Б 256 ФСДП+ТП+АсинкТП 876 2D-параллель
Лама 405Б 512 ФСДП+ТП+ПП 128 3D-параллель

Расширенные темы

Конфигурация FSDP2: см. references/fsdp.md для подробного сравнения FSDP2 и FSDP1 и эквивалентов ZeRO.

Обучение Float8: рецепты тензорного и построчного масштабирования см. в references/float8.md.

Проверка: см. references/checkpoint.md для преобразования HuggingFace и асинхронной контрольной точки.

Добавление пользовательских моделей: протокол TrainSpec см. в references/custom-models.md.

Ресурсы