精调训练中文LLaMA模型实战教程,民间羊驼模型

精调训练中文LLaMA模型实战教程,民间羊驼模型

    正在检查是否收录...

羊驼实战系列索引

博文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 

torchrun.sh

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/下面

精调指令.json

项目目录下data/alpaca_data_zh_51k.json是一份精调训练数据

每一条训练数据包含三个部分:instruction、input、output
其中input可以没有,这样就相当于是一个问答数据集。数据集可以通过调用gpt3.5turbo接口来制作。

测评

稍后发布哦

codellamajsongptalpacachatgptchattokentpu训练数据urlpythonscript数据集githubtransformertransformerspytorchgit无需训练预训练gpugpt3本地部署pnghive数据准备版本管理图片描述
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-4963.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

大话Stable-Diffusion-Webui之kohya-ss主题更改

上一篇

Copilot 使用方法

下一篇
  • 复制图片
按住ctrl可打开默认菜单