{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}
Torchtitan đào tạo trước LLM được phân phối
Cung cấp đào tạo trước LLM phân tán gốc PyTorch bằng cách sử dụng torchtitan với tính song song 4D (FSDP2, TP, PP, CP). Sử dụng khi đào tạo trước Llama 3.1, DeepSeek V3 hoặc các mô hình tùy chỉnh ở quy mô từ 8 đến 512+ GPU với Float8, torch.compile và điểm kiểm tra phân tán.
Siêu dữ liệu kỹ năng
| Nguồn | Tùy chọn — cài đặt với |
| `Hermes skills install official/mlops/torchtitan | |
| ` | |
| Đường dẫn |
optional-skills/mlops/torchtitan ` | | Phiên bản |
1.0.0 ` | | Tác giả | Nghiên cứu dàn nhạc | | Giấy phép | MIT | | Phụ thuộc |
torch>=2.6.0
, `torchtitan>=0.2.0
,
torchao>=0.5.0 |
| Nền tảng | Linux, macOS |
| Thẻ |
Model Architecture
, `Distributed Training
, `TorchTitan
, `FSDP2
, `Tensor Parallel
, `pipeline Parallel
, `Context Parallel
, `Float8
, `Llama
,
Pretraining |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
TorchTitan - Đào tạo trước LLM phân tán bản địa PyTorch
Bắt đầu nhanh
TorchTitan là nền tảng chính thức của PyTorch để đào tạo trước LLM quy mô lớn với tính song song 4D có thể tổng hợp (FSDP2, TP, PP, CP), đạt tốc độ tăng tốc hơn 65% so với mức cơ bản trên GPU H100.
Cài đặt:
`
# 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
`
``**Tải xuống mã thông báo**:
`
``` bash
# 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=...
`
``**Bắt đầu đào tạo trên 8 GPU**:
`
``` bash
CONFIG_FILE="./torchtitan/models/Llama3/train_configs/Llama3_8b.TOML" ./run_train.sh
`
## Quy trình công việc chung
### Quy trình 1: Huấn luyện trước Llama 3.1 8B trên một nút
Sao chép danh sách kiểm tra này:
`
Single Node Pretraining:
- [ ] Step 1: Download tokenizer
- [ ] Step 2: Configure training
- [ ] Step 3: Launch training
- [ ] Step 4: Monitor and checkpoint
`
``**Bước 1: Tải xuống mã thông báo**
``` bash
Python scripts/download_hf_assets.py \
--repo_id meta-Llama/Llama-3.1-8B \
--assets tokenizer \
--hf_token=YOUR_HF_TOKEN
`
``**Bước 2: Định cấu hình đào tạo**
Chỉnh sửa hoặc tạo tệp cấu hình TOML:
``` 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
`
``**Bước 3: Bắt đầu đào tạo**
``` bash
# 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
`
``**Bước 4: Theo dõi và kiểm tra**
Nhật ký TensorBoard được lưu vào
./outputs/tb/
:
`
``` bash
tensorboard --logdir ./outputs/tb
`
### Workflow 2: Đào tạo nhiều nút với 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
`
``**Bước 1: Định cấu hình song song cho tỷ lệ**
Đối với model 70B trên 256 GPU (32 nút):
`
``` toml
[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
`
``**Bước 2: Thiết lập tập lệnh SLURM**
`bash
#!/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
`
``**Bước 3: Nộp hồ sơ**
``` bash
sbatch multinode_trainer.slurm
`
``**Bước 4: Tiếp tục từ điểm kiểm tra**
Quá trình đào tạo tự động tiếp tục nếu điểm kiểm tra tồn tại trong thư mục đã định cấu hình.
### Quy trình làm việc 3: Kích hoạt đào tạo Float8 cho H100
Float8 cung cấp khả năng tăng tốc 30-50% trên GPU H100.
`
Float8 Training:
- [ ] Step 1: Install torchao
- [ ] Step 2: Configure Float8
- [ ] Step 3: Launch with compile
`
``**Bước 1: Cài đặt torchao**
``` bash
USE_CPP=0 pip install git+https://GitHub.com/pytorch/ao.git
`
``**Bước 2: Định cấu hình Float8**
Thêm vào cấu hình TOML của bạn:
`
`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"]
`
``**Bước 3: Khởi chạy với trình biên dịch**
`bash
CONFIG_FILE="./Llama3_8b.TOML" ./run_train.sh \
--model.converters="quantize.linear.float8" \
--quantize.linear.float8.enable_fsdp_float8_all_gather \
--compile.enable
`
### Quy trình 4: Song song 4D cho mô hình 405B
`
4D Parallelism (FSDP + TP + PP + CP):
- [ ] Step 1: Create seed checkpoint
- [ ] Step 2: Configure 4D parallelism
- [ ] Step 3: Launch on 512 GPUs
`
``**Bước 1: Tạo điểm kiểm tra hạt giống**
Cần thiết để khởi tạo nhất quán qua các giai đoạn PP:
`
``` bash
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
`
``**Bước 2: Định cấu hình song song 4D**
``` toml
[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
`
``**Bước 3: Khởi chạy trên 512 GPU**
`bash
# 64 nodes x 8 GPUs = 512 GPUs
srun torchrun --nnodes=64 --nproc_per_node=8 \
-m torchtitan.train \
--job.config_file ./Llama3_405b.TOML
`
## Khi nào nên sử dụng so với các lựa chọn thay thế`**Sử dụng TorchTitan khi:**
- Đào tạo trước LLM từ đầu (8B đến 405B+)
- Cần giải pháp gốc PyTorch mà không phụ thuộc vào bên thứ ba
- Yêu cầu tính song song 4D có thể kết hợp (FSDP2, TP, PP, CP)
- Đào tạo trên H100 có hỗ trợ Float8
- Muốn các điểm kiểm tra có thể tương tác với torchtune/HuggingFace`**Sử dụng các lựa chọn thay thế thay thế:**
- **Megatron-LM**: Hiệu suất tối đa cho việc triển khai chỉ dành cho NVIDIA
- **DeepSpeed**: Hệ sinh thái tối ưu hóa Zero rộng hơn, hỗ trợ suy luận
- **Axolotl/TRL**: Tinh chỉnh thay vì huấn luyện trước
- **LitGPT**: Giáo dục, đào tạo quy mô nhỏ hơn
## Các vấn đề thường gặp`**Vấn đề: Hết bộ nhớ trên các mẫu máy lớn**
Kích hoạt điểm kiểm tra kích hoạt và giảm kích thước lô:
`
``` toml
[activation_checkpoint]
mode = "full" # Instead of "selective"`[training]
local_batch_size = 1
`
``Hoặc sử dụng tích lũy độ dốc:
`
`TOML
[training]
local_batch_size = 1
global_batch_size = 32 # Accumulates gradients
`
``**Vấn đề: TP gây ra bộ nhớ cao với tập hợp không đồng bộ**
Đặt biến môi trường:
`
`bash
export TORCH_NCCL_AVOID_RECORD_STREAMS=1
`
``**Vấn đề: Đào tạo Float8 không nhanh hơn**
Float8 chỉ mang lại lợi ích cho các GEMM lớn. Lọc các lớp nhỏ:
`
`TOML
[quantize.linear.float8]
filter_fqns = ["attention.wk", "attention.wv", "output", "auto_filter_small_kn"]
`
``**Vấn đề: Tải điểm kiểm tra không thành công sau khi thay đổi tính song song**
Sử dụng khả năng phân chia lại của DCP:
`
`bash
# Convert sharded checkpoint to single file
Python -m torch.distributed.checkpoint.format_utils \
dcp_to_torch checkpoint/step-1000 checkpoint.pt
`
``**Vấn đề: Khởi tạo song song đường ống**
Trước tiên hãy tạo điểm kiểm tra hạt giống (xem Quy trình làm việc 4, Bước 1).
## Các mẫu được hỗ trợ| Người mẫu | Kích cỡ | Trạng thái |
|-------|-------|--------------|
| Lạc đà 3.1 | 8B, 70B, 405B | Sản xuất |
| Lạc đà 4 | Khác nhau | Thử nghiệm |
| DeepSeek V3 | 16B, 236B, 671B (MoE) | Thử nghiệm |
| GPT-OSS | 20B, 120B (MoE) | Thử nghiệm |
| Qwen 3 | Khác nhau | Thử nghiệm |
| Thông lượng | Khuếch tán | Thử nghiệm |
## Điểm chuẩn hiệu suất (H100)
| Người mẫu | GPU | Song song | TPS/GPU | Kỹ thuật |
|-------|------|-------------|----------|----------||
| Llama 8B | 8 | FSDP | 5,762 | Đường cơ sở |
| Llama 8B | 8 | FSDP+biên dịch+FP8 | 8,532 | +48% |
| Llama 70B | 256 | FSDP+TP+AsyncTP | 876 | Song song 2D |
| Llama 405B | 512 | FSDP+TP+PP | 128 | Song song 3D |
## Chủ đề nâng cao`**Cấu hình FSDP2**: Xem [references/fsdp.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/torchtitan/references/fsdp.md) để biết so sánh chi tiết giữa FSDP2 và FSDP1 và các giá trị tương đương của Zero.
**Đào tạo về Float8**: Xem [references/float8.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/torchtitan/references/float8.md) để biết các công thức chia tỷ lệ theo hàng chục và theo hàng.
**Điểm kiểm tra**: Xem [references/checkpoint.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/torchtitan/references/checkpoint.md) để biết chuyển đổi HuggingFace và điểm kiểm tra không đồng bộ.
**Thêm mô hình tùy chỉnh**: Xem [references/custom-models.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/mlops/torchtitan/references/custom-models.md) để biết giao thức TrainSpec.
## Tài nguyên
- GitHub: https://GitHub.com/pytorch/torchtitan
- Giấy: https://arxiv.org/abs/2410.06511
- ICLR 2025: https://iclr.cc/virtual/2025/poster/29620
- Diễn đàn PyTorch: https://discuss.pytorch.org/c/distributed/torchtitan/44