基于MindSpore对llama进行lora微调

预训练权重

llama原版--->HF版--->mindspore版

下载原版llama权重

可以直接用启智平台上的权重(还需要自己寻找tokenizer.model文件)

启智大模型基地-llama

转换为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版本过低等等。希望官方能规整一下镜像环境并完善对镜像环境的使用说明~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值