快速开始
备注
阅读本篇前,请确保已按照 安装教程 准备好昇腾环境及 TorchTitan
本文档帮助昇腾开发者快速使用 TorchTitan × 昇腾 进行LLM预训练。你可以访问 这篇官方论文 获取更多信息。
概览
TorchTitan是一个用于LLM预训练的PyTorch原生库,用于大规模的分布式训练。TorchTitan支持不同种类的并行训练方式,包括FSDP、TP、PP、CP,也支持2D、3D的多种并行技术的组合。另外,项目还支持Float8以及混合精度训练等方式提高训练速度。
配置训练参数
备注
在 TorchTitan 中,每个训练任务的参数可以由CLI和TOML文件来进行配置。其优先级是CLI > TOML文件 > 默认值
以下选取部分可配置参数进行介绍,用户可以在 torchtitan/config_manager.py 中找到所有可配置参数的说明。
配置项参数 |
描述 |
默认数值 |
---|---|---|
--training.dataset |
使用的数据集 |
c4_test |
--training.batch_size |
批量大小 |
8 |
--training.seq_len |
序列长度 |
2048 |
--training.steps |
训练步数 |
10000 |
--parallelism.data_parallel_replicate_degree |
权重复制的数据并行程度,1表示禁用 |
1 |
--parallelism.data_parallel_shard_degree |
权重分片的数据并行程度,-1表示自动使用所有可用设备数量,1表示禁用 |
-1 |
--parallelism.tensor_parallel_degree |
张量并行度,1表示禁用 |
1 |
--parallelism.pipeline_parallel_degree |
流水线并行度,1表示禁用 |
1 |
--parallelism.context_parallel_degree |
上下文并行度,1表示禁用 |
1 |
--float8.enable_fsdp_float8_all_gather |
是否在FSDP应用float8 all gather |
false |
训练示例
下面示例有单机8张NPU卡下配置不同的分布式策略,多卡场景根据卡数进行调整:
DDP
1data_parallel_replicate_degree = 8
2data_parallel_shard_degree = -1
3tensor_parallel_degree = 1
4pipeline_parallel_degree = 1
5context_parallel_degree = 1
FSDP
1data_parallel_replicate_degree = 1
2data_parallel_shard_degree = -1 #-1为默认FSDP
3tensor_parallel_degree = 1
4pipeline_parallel_degree = 1
5context_parallel_degree = 1
TP
1data_parallel_replicate_degree = 1
2data_parallel_shard_degree = -1
3tensor_parallel_degree = 8
4pipeline_parallel_degree = 1
5context_parallel_degree = 1
FSDP+TP
1data_parallel_replicate_degree = 1
2data_parallel_shard_degree = -1 #自动计算剩余度数
3tensor_parallel_degree = 2 or 4
4pipeline_parallel_degree = 1
5context_parallel_degree = 1
FSDP+TP+PP
1data_parallel_replicate_degree = 1
2data_parallel_shard_degree = -1 #自动计算剩余度数
3tensor_parallel_degree = 2
4pipeline_parallel_degree = 2
5context_parallel_degree = 1
如需改变NPU的数量,可以在 ./run_train.sh 中进行修改
1# use envs as local overrides for convenience
2# e.g.
3# LOG_RANK=0,1 NGPU=4 ./run_train.sh
4NGPU=${NGPU:-"8"}
5export LOG_RANK=${LOG_RANK:-0}
6CONFIG_FILE=${CONFIG_FILE:-"./torchtitan/models/llama3/train_configs/debug_model.toml"}
完成配置后,即可按照debug_model.toml文件配置开始预训练,该模型较小,可以用于进行测试:
1./run_train.sh
或指定llama3_8b.toml文件配置开始预训练Llama3-8B模型:
1CONFIG_FILE="./torchtitan/models/llama3/train_configs/llama3_8b.toml" ./run_train.sh
当看到每个训练步骤的训练参数信息,即已经开始训练,看到 Training Completed 为训练成功完成。