大模型训练

  MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件: 提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。

  MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点: 一行代码实现从单卡到大规模集群训练的无缝切换;

  • 提供灵活易用的个性化并行配置;

  • 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略;

  • 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程;

  • 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等;

  • 提供Trainer、pipeline、AutoClass等高阶易用性接口;

  • 提供预置SOTA权重自动下载及加载功能;

  • 支持人工智能计算中心无缝迁移部署;

  当前支持的模型列表查询,每个模型均有单独的使用说明。

训练准备三部曲

以下三部曲,是大模型训练的三个通用的步骤,不同模型具体细节会有不一致,具体看每个模型单独的使用说明。以下以llama为例。

docker pull swr.cn-central-221.ovaijisuan.com/wuh-aicc_dxy/mindspore_2_0_0:mindspore2.0.0-cann6.3rc1-py_3.9-euler_2.8

下载镜像后参考使用手册第四部分上传镜像

1.权重转换

开发者可以下载获取官方权重后,通过下面提供的权重转换脚本,将bin格式转换为ckpt格式。

# 先安装mindformers套件
git clone -b dev https://gitee.com/mindspore/mindformers.git
cd mindformers
bash build.sh
# 再转换
python mindformers/models/llama/convert_weight.py \
--torch_ckpt_dir TORCH_CKPT_DIR \
--mindspore_ckpt_path {path}/MS_CKPT_NAME
# 参数说明
torch_ckpt_dir: huggingface权重保存目录路径
mindspore_ckpt_path: 权重保存文件名,可以指定自定义保存路径

2.数据处理

不同的下游任务数据处理方式不一样,可咨询工程师。此例是将原始数据集转换为多轮对话格式。

python tools/dataset_preprocess/llama/alpaca_converter.py \
--data_path /{path}/alpaca_data.json \
--output_path /{path}/alpaca-data-conversation.json
# 参数说明
data_path: 存放alpaca数据的路径
output_path: 输出转换后对话格式的数据路径

然后转换为mindrecord格式

python tools/dataset_preprocess/llama/llama_preprocess.py \
--dataset_type qa \
--input_glob /{path}/alpaca-data-conversation.json \
--model_file /{path}/tokenizer.model \
--seq_length 2048 \
--output_file /{path}/alpaca-fastchat2048.mindrecord

3.参数配置&&拉起训练

3.1按照推荐,修改训练时学习率和优化器参数,并上传yaml文件

3.2第一次按照以下设置

  • 训练输入

train_dataset_dir:训练数据集路径 
load_checkpoint:预训练权重路径,{dir}/rank_0/xxx.ckpt,此处只填{dir}所在的路径
  • 超参

run_mode                finetune
auto_trans_ckpt         True
remote_save_url         obs://XXX/XXX/
config                  /home/ma-user/modelarts/user-job-dir/mindformers/configs/XXXX
epoch                   2

Alt text

Alt text

auto_trans_ckpt设成true会根据当前pp/mp/dp自动切分,生成strategy和transformed_checkpoint两个文件夹,将这两个文件夹重新保存到其他目录。

3.3第二次按照以下设置

Alt text

  • 训练输入

train_dataset_dir:训练数据集路径 
load_checkpoint:预训练权重路径,指向重新保存的目录的transformed_checkpoint
  • 超参

run_mode                finetune
auto_trans_ckpt         false
remote_save_url         obs://XXX/XXX/
config                  /home/ma-user/modelarts/user-job-dir/mindformers/configs/XXXX
epoch                   2