更新时间:2024-05-08 GMT+08:00
分享

预训练任务

配置预训练脚本glm3_base.sh中的超参,并执行预训练任务。

Step1 配置预训练超参

预训练脚本glm3_base.sh,存放在“xxx-Ascend/llm_train/AscendSpeed/scripts/glm3”目录下。训练前,可以根据实际需要修改超参配置。xxx-Ascend请根据实际目录替换。

表1 预训练超参配置

参数

示例值

参数说明

DATASET_PATH

/home/ma-user/ws/processed_for_ma_input/GLM3-6B/data/pretrain/alpaca_text_document

必填。训练时指定的输入数据路径。一般为数据地址/处理后的数据前缀名,不加文件类型后缀。

请根据实际规划修改。

TOKENIZER_PATH

/home/ma-user/ws/tokenizers/GLM3-6B

必填。加载tokenizer时,tokenizer存放地址。

请根据实际规划修改。

MODEL_TYPE

6B

必填。表示模型加载类型。

TRAIN_ITERS

200

非必填。表示训练迭代周期,根据实际需要修改。

MBS

1

非必填。表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。

该值与TP和PP以及模型大小相关,可根据实际情况进行调整。

默认值1。单机建议为1,双机建议为2。

GBS

64

非必填。表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。默认值64。单机建议为64,双机建议为128。

TP

2

非必填。表示张量并行。默认值为2。

PP

4

非必填。表示流水线并行。默认值为4。单机建议为4,双机建议为8。

RUN_TYPE

pretrain

必填。表示训练类型,根据实际训练任务类型选择。取值说明:

  • pretrain:表示预训练
  • retrain:表示断点续训
  • sft:表示SFT微调训练
  • lora:表示LoRA微调训练

MASTER_ADDR

localhost

多机必填,单机忽略;指定主节点IP地址,多台机器中需要指定一个节点IP为主节点IP。

一般指定第一个节点IP为主节点IP。

NNODES

1

多机必填,单机忽略;节点总数,单机写1,双机写2。

NODE_RANK

0

多机必填,单机忽略;节点序号,当前节点ID,一般从0开始,单机默认是0。

WORK_DIR

/home/ma-user/ws

非必填。容器的工作目录。训练的权重文件保存在此路径下。默认值为:/home/ma-user/ws。

SEQ_LEN

8192

非必填。默认值为8192。

Step2 启动训练脚本

请根据表1修改超参值后,再启动训练脚本。

单机启动

以GLM3-6B为例,单机训练启动样例命令如下,以自己实际为准。

进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed下执行启动脚本。xxx-Ascend请根据实际目录替换。

MODEL_TYPE=6B  RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/GLM3-6B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/GLM3-6B TRAIN_ITERS=200 MBS=1  GBS=64 TP=2 PP=4 SEQ_LEN=8192 WORK_DIR=/home/ma-user/ws sh scripts/glm3/glm3_base.sh

其中MODEL_TYPE、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填。TRAIN_ITERS、MBS、GBS、TP、PP、SEQ_LEN 为非必填,有默认值。

多机启动

以GLM3-6B为例,多台机器执行训练启动命令如下。多机启动需要在每个节点上执行,以下命令以双机为例。

进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed下执行启动脚本。xxx-Ascend请根据实际目录替。

#第一台节点
MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=0 MODEL_TYPE=6B  RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/GLM3-6B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/GLM3-6B TRAIN_ITERS=200 MBS=2 GBS=128 TP=2 PP=8 SEQ_LEN=8192 WORK_DIR=/home/ma-user/ws sh scripts/glm3/glm3_base.sh
...
...
# 第二台节点 
MASTER_ADDR=xx.xx.xx.xx NNODES=2 NODE_RANK=1 MODEL_TYPE=6B  RUN_TYPE=pretrain DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/GLM3-6B/data/pretrain/alpaca_text_document TOKENIZER_PATH=/home/ma-user/ws/tokenizers/GLM3-6B TRAIN_ITERS=200 MBS=2 GBS=128 TP=2 PP=8 SEQ_LEN=8192 WORK_DIR=/home/ma-user/ws sh scripts/glm3/glm3_base.sh

以上命令多台机器执行时,只有${NODE_RANK}:节点ID值不同,其他参数都保持一致。

其中MASTER_ADDR、NODE_RANK、MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH为必填;TRAIN_ITERS、MBS、GBS、TP、PP、WORK_DIR、SEQ_LEN为非必填,有默认值。

等待模型载入

执行训练启动命令后,等待模型载入,当出现“training”关键字时,表示开始训练。训练过程中,训练日志会在最后的Rank节点打印。

图1 等待模型载入

更多查看训练日志和性能操作,请参考查看日志和性能章节。

如果需要使用断点续训练能力,请参考断点续训练章节修改训练脚本。

分享:

    相关文档

    相关产品