预训练权重
llama原版--->HF版--->mindspore版
下载原版llama权重
可以直接用启智平台上的权重(还需要自己寻找tokenizer.model文件)
转换为HF权重
下载convert_llama_weights_to_hf.py
git clone https://github.com/huggingface/transformers.git
cd transformers
安装依赖
pip install torch==1.13.1
pip install transformers==4.28.1
pip install sentencepiece==0.1.97
pip install git+https://github.com/huggingface/peft.git@13e53fc
进行转换,结果保存在hf_weight_dir文件夹中
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir /home/ma-user/work/hf_weight_dir \
--model_size 7B \
--output_dir /home/ma-user/work/mindformer/hf_weight_dir
将HF权重转换为mindspore可用的ckpt权重
export LD_PRELOAD=$LD_PRELOAD:/home/ma-user/anaconda3/envs/MindSpore/lib/python3.7/site-packages/torch/lib/libgomp-d22c30c5.so.1
cd mindformer
python mindformers/models/llama/convert_weight.py \
--torch_ckpt_dir ./mindformers/models/llama/hf_weight_dir \
--mindspore_ckpt_path ./llama
结果保存在./mindformers/models/llama/hf_weight_dir文件夹中:llama.ckpt
数据集处理
ps:启智平台上的python版本太旧了,本地处理好再上传
使用数据集alpaca_data
执行alpaca_converter.py
alpaca_data.json ---> alpaca-data-conversation.json
执行llama_preprocess.py
alpaca-data-conversation.json --->
alpaca-fastchat2048.mindrecord
alpaca-fastchat2048.mindrecord.db
lora微调
1. 修改配置文件
config/llama/run_llama_7b_lora.yaml
2. 使用高阶API进行微调
1. 创建文件 mindformer/train.py
from mindformers.trainer import Trainer
# 初始化预训练任务
trainer = Trainer(task='text_generation',
model='llama_7b',
pet_method='lora',
train_dataset="./alpaca-fastchat2048.mindrecord")
# 调用finetune接口进行微调
trainer.finetune(finetune_checkpoint="./llama.ckpt")
2. 运行train.py
总结:
整体来说,mindformer的说明文档还是很清晰的,每一步都简单易懂。体验过程中唯一的遗憾就是,平台提供的镜像环境太杂乱了,要么是so.1报错,要么是Python版本过低等等。希望官方能规整一下镜像环境并完善对镜像环境的使用说明~