最近一段时间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