benchmark工具
🚨 弃用说明
本文档已过时,不再进行维护,并将在 1.6.0 版本下架,其中可能包含过时的信息或已被更新的功能替代。建议参考最新的 官方文档 ,以获取准确的信息。
如果您仍需使用本文档中的内容,请仔细核对其适用性,并结合最新版本的相关资源进行验证。
如有任何问题或建议,请通过 社区Issue 提交反馈。感谢您的理解与支持!
概述
大模型训练benchmark,旨在提供高效的工具,支撑用户实现快捷部署。 用户提供模型代码、权重、分词模型、配置文件、训练数据等依赖的信息,即可快捷启动模型训练、微调任务。当前部分训练数据已经支持在线模式,随着开源社区的建设,模型训练、微调所需的各项信息将逐步支持在线模式。当前适配Llama2、Llama3.1、mixtral等模型,后续将持续适配更多模型。
使用介绍
用户只需提供必要的数据、配置文件、权重等信息,执行pretrain_tool.sh脚本即可启动相应训练、微调任务。其中数据支持原始数据、预处理之后的数据,部分数据支持在线模式,即只提供数据集名称即可。脚本参数介绍如下:
| 参数 | 简写 | 单机是否必选 | 多机是否必选 | 默认值 | 说明 |
|---|---|---|---|---|---|
| model_name_or_dir | n | √ | √ | 模型路径,包含模型配置及权重(非必须) | |
| pretrain_data | i | √ | √ | 训练数据支持数据类型: -原始数据集 -预处理后的数据集 -数据集名称(当前仅支持wikitext2) |
|
| worker_num | w | × | √ | 8 | 所有节点中使用计算卡的总数 |
| local_worker | l | × | √ | 8 | 当前节点中使用计算卡的数量 |
| master_addr | a | × | √ | 127.0.0.1 | 指定分布式启动主节点的ip |
| master_port | p | × | √ | 8118 | 指定分布式启动绑定的端口号 |
| node_rank | r | × | √ | 0 | 指定当前节点的rank id |
| log_dir | g | × | √ | output/msrun_log | 日志输出路径,若不存在则递归创建 |
| join | j | × | √ | FALSE | 是否等待所有分布式进程退出 |
| cluster_time_out | t | × | √ | 7200 | 分布式启动的等待时间,单位为秒 |
使用示例
使用在线数据执行训练
以Llama2-7B为例,将模型训练所需的配置文件及对应的tokenizer.model放入${model_pah}目录,执行如下命令:
cd scripts/benchmark
bash pretrain_tool.sh -n ${model_pah} -i wikitext2
使用原始离线数据执行训练
以Llama2-7B为例,将模型训练所需的配置文件及对应的tokenizer.model放入${model_pah}目录,将训练数据wiki.train.tokens放入${data_pah}目录,执行如下命令:
cd scripts/benchmark
bash pretrain_tool.sh -n ${model_pah} -i ${data_pah}/wiki.train.tokens
使用预处理离线数据执行微调
以Llama3.1-8B为例,将模型训练所需的配置文件和权重ckpt文件放入${model_pah},将训练数据alpaca-fastchat8192.mindrecord放入${data_pah},执行如下命令:
cd scripts/benchmark
bash pretrain_tool.sh -n ${model_pah} -i ${data_pah}/alpaca-fastchat8192.mindrecord
使用预处理离线数据执行多机训练
以Mixtral为例,在两台机器上,将模型训练所需的配置文件和权重ckpt文件放入${model_pah}目录,将训练数据alpaca-fastchat8192.mindrecord放入${data_pah}目录,然后分别执行下述命令。
-
机器0
cd scripts/benchmark bash pretrain_tool.sh -n ${model_pah} -i ${data_pah}/wiki.train.tokens -w 16 -l 8 -a ${master_addr} -p 8118 -r 0 -o output/msrun_log -j False -t 300 -
机器1
cd scripts/benchmark bash pretrain_tool.sh -n ${model_pah} -i ${data_pah}/wiki.train.tokens -w 16 -l 8 -a ${master_addr} -p 8118 -r 1 -o output/msrun_log -j False -t 300
两台机器的命令主要是node_rank(即 -r)参数不同。