双机模型训练:Llama3-8B
1. 演练目标与架构
本节基于单机8卡MTT S5000完成LLaMA3-8B模型的完整训练闭环,基于FP8混合精度,覆盖从容器部署到模型产出的全链路操作。
2. 环境准备:Docker容器配置
使用摩尔线程预训练容器 training-suite:v2.1.7,
容器内置MUSA SDK 4.3.8、MT Megatron-LM 0.14.0、MT DeepSpeed 0.17.2、Torch-Musa 2.7.1。
步骤1:创建并启动训练容器 注意:两台机器都要进行下面docker部署!!!
# 创建容器
sudo docker create \
--privileged \
--env MTHREADS_VISIBLE_DEVICES=all \
--net host \
-v /data/:/data/ \
--name train \
registry.mthreads.com/mcconline/training-suite:v2.1.7 \
sleep infinity
# 启动并进入容器
sudo docker start train
sudo docker exec -it train bash
# 在容器里,启动ssh服务
service ssh restart
步骤2:GPU识别验证
进入容器后,验证8卡MTT S5000的识别状态与拓扑连接:
# 查看GPU硬件识别与状态
mthreads-gmi
# 验证MCCL通信能力(需已经安装mccl-test,进入目录)
# ./mccl_test
3. 训练脚本配置
步骤3:配置LLaMA3-8B训练参数
在 /home/megatron-lm-musa-patch/examples/llama3/8B/ 目录下,run_pretrain_llama3_musa.sh 已预置标准训练配置。该脚本采用参数化设计,通过命令行接收并行策略与路径配置。
脚本核心特性(已内置):
# 模型架构参数(标准LLaMA3-8B)
--num-layers 32
--hidden-size 4096
--ffn-hidden-size 14336
--num-attention-heads 32
--group-query-attention
--num-query-groups 8
--seq-length 4096
--max-position-embeddings 4096
# 启动FlashAttention加速
--use-flash-attn # MUSA FlashAttention加速
# FP8精度设置
TRANSFORMER_ENGINE_ARGS=(
--transformer-impl transformer_engine
--fp8-format hybrid
--fp8-param-gather
)
创建双机Hostfile:
cd /home/megatron-lm-musa-patch/examples/llama3
# 单机8卡配置,写入本机IP,slots=8表示使用8张GPU
echo "10.10.142.133 slots=8" > hostfile #第一行默认为master,其他行为worker
echo "10.10.142.134 slots=8" > hostfile
脚本参数说明:
执行 8B/run_pretrain_llama3_musa.sh 时需按顺序传入11个参数:
bash 8B/run_pretrain_llama3_musa.sh \
<WORK_HOME> \ # $1: 工作根目录(自动创建checkpoints/logs子目录)
<PATCH_HOME> \ # $2: Megatron补丁路径(/home/megatron-lm-musa-patch)
<EXPNAME> \ # $3: 实验名称
<HOSTFILE> \ # $4: 机器列表文件(使用上面创建的hostfile)
<DATA_DIR> \ # $5: 数据路径前缀(自动补全.bin/.idx后缀)
<TP_SIZE> \ # $6: 张量并行度
<PP_SIZE> \ # $7: 流水线并行度
<MICRO_BATCH_SIZE> \ # $8: 微批次大小
<GLOBAL_BATCH_SIZE> \ # $9: 全局批次大小
<TOKENIZED_MODEL> # $10: Tokenizer路径(tokenizer.model文件)
<RDZV_ID> # $11: 当前时间,获取方式$(date "+%Y-%m-%d_%H:%M:%S")