赞
踩
博文1:本地部署中文LLaMA模型实战教程,民间羊驼模型
博文2:本地训练中文LLaMA模型实战教程,民间羊驼模型
博文3:精调训练中文LLaMA模型实战教程,民间羊驼模型(本博客)
在学习完上篇【博文2:本地训练中文LLaMA模型实战教程,民间羊驼模型】后,我们已经学会了使用无监督的语料预训练LLaMA模型,无监督的语料能让模型学会预测下一个字符是什么,但是还不能让模型理解人类的对话意图,经过指令精调之后模型就可以具备对话能力了。
本博客主要包含以下内容:
1训练数据准备,精调指令.json。
2训练脚本编写,主要参数讲解,消耗显存控制在24GB以内
3训练实战,测评。
系统:Ubuntu 20.10
CUDA Version: 11.8
GPU: RTX3090 24G
内存: 64 G
anaconda(python版本管理)
RTX3090 24G显存刚好够用,设置合理的参数可以正常训练!
GitHub地址
v3.2版本代码 https://github.com/ymcui/Chinese-LLaMA-Alpaca/archive/refs/tags/v3.2.zip
requirements.txt
torch==1.13.1
peft==0.3.0dev
transformers==4.28.1
sentencepiece==0.1.97
wandb
datasets
这个我写的比作者仓库的多了wandb、datasets,亲测这个是需要安装的。
1 torch大家可以去官网寻找安装命令 https://pytorch.org/
我的cuda是11.8,使用官方教程的cu117安装,也是可以使用的
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
2 peft可能提示找不到包,选择手动安装,下载代码peft 0.3.0 zip 解压后,进入代码目录,然后安装
cd peft-0.3.0
python setup.py install
3 其余的使用pip install 命令安装
pip install transformers==4.28.1
pip install sentencepiece==0.1.97
pip install wandb
pip install datasets
词表无需训练,一个3090 24g一方面显存会不够用,另一方面词表训练需要很大训练量。![在这里插入图片描述](https://img-blog.csdnimg.cn/faa05cbe172c4e01b6dfca43ba977c62.png
在scripts/run_clm_sft_with_peft.py文件365行新增一行代码
modules_to_save=None
lr=1e-4 lora_rank=8 lora_alpha=32 lora_trainable="q_proj,v_proj,k_proj,o_proj,gate_proj,down_proj,up_proj" modules_to_save="embed_tokens,lm_head" lora_dropout=0.05 RANDOM=0 pretrained_model=/home/zhaoxin/workspace/chatGPT/model/llama_hf_chinese chinese_tokenizer_path=/home/zhaoxin/workspace/chatGPT/model/llama_hf_chinese/tokenizer.model dataset_dir=/home/zhaoxin/workspace/chatGPT/datas/alpaca/train per_device_train_batch_size=1 per_device_eval_batch_size=1 training_steps=100 gradient_accumulation_steps=1 output_dir=/home/zhaoxin/workspace/chatGPT/model/buddy_alphca validation_file=/home/zhaoxin/workspace/chatGPT/datas/alpaca/val/alpaca_data_val.json deepspeed_config_file=ds_zero2_no_offload.json torchrun --nnodes 1 --nproc_per_node 1 run_clm_sft_with_peft.py \ --deepspeed ${deepspeed_config_file} \ --model_name_or_path ${pretrained_model} \ --tokenizer_name_or_path ${chinese_tokenizer_path} \ --dataset_dir ${dataset_dir} \ --validation_split_percentage 0.001 \ --per_device_train_batch_size ${per_device_train_batch_size} \ --per_device_eval_batch_size ${per_device_eval_batch_size} \ --do_train \ --do_eval \ --seed $RANDOM \ --fp16 \ --max_steps ${training_steps} \ --lr_scheduler_type cosine \ --learning_rate ${lr} \ --warmup_ratio 0.03 \ --weight_decay 0 \ --logging_strategy steps \ --logging_steps 10 \ --save_strategy steps \ --save_total_limit 3 \ --evaluation_strategy steps \ --eval_steps 250 \ --save_steps 500 \ --gradient_accumulation_steps ${gradient_accumulation_steps} \ --preprocessing_num_workers 8 \ --max_seq_length 500 \ --output_dir ${output_dir} \ --overwrite_output_dir \ --ddp_timeout 30000 \ --logging_first_step True \ --lora_rank ${lora_rank} \ --lora_alpha ${lora_alpha} \ --trainable ${lora_trainable} \ --lora_dropout ${lora_dropout} \ --torch_dtype float16 \ --validation_file ${validation_file} \ --ddp_find_unused_parameters False
validation_file是从项目下的data/alpaca_data_zh_51k.json取了部分数据,大家可根据实际情况制作验证集。
ds_zero2_no_offload.json在项目的scripts/下面
项目目录下data/alpaca_data_zh_51k.json是一份精调训练数据
每一条训练数据包含三个部分:instruction、input、output
其中input可以没有,这样就相当于是一个问答数据集。数据集可以通过调用gpt3.5turbo接口来制作。
稍后发布哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。