# 大模型训练   MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件: 提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。   MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点: 一行代码实现从单卡到大规模集群训练的无缝切换; * 提供灵活易用的个性化并行配置; * 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略; * 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程; * 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等; * 提供Trainer、pipeline、AutoClass等高阶易用性接口; * 提供预置SOTA权重自动下载及加载功能; * 支持人工智能计算中心无缝迁移部署;   当前支持的[模型列表查询](https://gitee.com/mindspore/mindformers),每个模型均有单独的使用说明。 ## 训练准备三部曲 以下三部曲,是大模型训练的三个通用的步骤,不同模型具体细节会有不一致,具体看每个模型单独的使用说明。以下以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 ``` 下载镜像后参考使用手册第四部分[上传镜像](https://hzaicc.readthedocs.io/zh_CN/latest/part2/1.html#id3)。 ## 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](image.png) ![Alt text](image-1.png) **auto_trans_ckpt设成true会根据当前pp/mp/dp自动切分,生成strategy和transformed_checkpoint两个文件夹,将这两个文件夹重新保存到其他目录。** ### 3.3第二次按照以下设置 ![Alt text](image-3.png) * 训练输入 ``` 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