当前位置: 首页 > 工具软件 > Alpaca Form > 使用案例 >

在kaggle上训练自己的Alpaca-Lora

吴炎彬
2023-12-01

最近一段时间LLM可谓是出尽了风头。Alpaca-Lora也是大放光彩。笔者不是从事这个行业的,但对这方面比较感兴趣,于是尝试着训练了一下,给大家分享一些经验。
我使用的是一台联想的笔记本(不是游戏本),虽然有独显,但几乎没有任何用(nVidia MX350)。因此我做的深度学习基本上都是在kaggle或者Google Colab上跑的,这次也不例外,我在kaggle上运行了它。
首先我们需要拷贝这个项目:

#下载源码
!git clone https://github.com/tloen/alpaca-lora.git

然后下载数据集

!wget https://raw.githubusercontent.com/LC1332/Chinese-alpaca-lora/main/data/trans_chinese_alpaca_data.json

安装依赖项

#安装依赖项
%cd alpaca-lora
!pip install -r requirements.txt
!pip install accelerate==0.18.0
!pip install datasets==2.10.1

这里大家可以看到我们额外安装了0.18.0版本的accelerate和2.10.1的datasets。
这是因为使用 pip install -r requirements.txt 命令安装的版本分别是0.12.0和2.2.0。会在后面运行是报错。笔者在这里卡了很久,希望帮助大家跳过这个bug

然后我们就可以愉快地运行了

!python finetune.py --base_model 'decapoda-research/llama-7b-hf' --data_path '/kaggle/working/trans_chinese_alpaca_data.json' --output_dir './lora-alpaca-zh' --micro_batch_size 2 --num_epochs 1

如果在kaggle上跑过yolov5的小伙伴肯定知道wandb。跑yolov5的时候可以在前面加一句 !wandb off 但是经过笔者实测这里貌似不行。于是我们便跟着它的意思,注册一个wandb的账号,然后在卡更改了上配置登陆,并修改代码:

import wandb
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
wandb_api = user_secrets.get_secret("wandb_key")
wandb.login(key = wandb_api)
!python finetune.py --base_model 'decapoda-research/llama-7b-hf' --data_path '/kaggle/working/trans_chinese_alpaca_data.json' --output_dir './lora-alpaca-zh' --micro_batch_size 2

kaggle还可以选择使用两张nVidia Tesla T4进行训练,这里附上双卡训练的命令:

WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \
--nproc_per_node=2 \
--master_port=1234 \
finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path '/kaggle/working/trans_chinese_alpaca_data.json' \
--output_dir './lora-alpaca-zh'

配置登录的过程有些复杂,这里推荐一篇博文很详细:
https://blog.csdn.net/tkyjqh/article/details/124515833
最后就可以愉快地运行了。我最终使用kaggle提供的P100训练了2个epoch,共耗时47h,属于是很慢了。所以还是推荐大家可以用3090或者4090训练,毕竟别人用2张3090ti训练3个epoch只用了4.5h

 类似资料: