项目介绍:ChatGLM-LoRA-RLHF-PyTorch
ChatGLM-LoRA-RLHF-PyTorch 是一个旨在利用商业硬件设备来微调 ChatGLM 大型语言模型的完整流程。该项目结合了 LoRA (Low-Rank Adaptation of Large Language Models) 和 RLHF (Reinforcement Learning from Human Feedback) 技术,以提升语言模型的性能。
环境配置
为了运行本项目,您需要以下环境配置:
- 显卡:2080Ti 12G
- 安装
torch==2.0.0
- 安装
cuda==11.8
计划列表
当前项目的发展计划如下:
- 完成监督微调 (Supervised Finetune, SFT)
- 将适配器合并到模型中
- 暂未完成的任务包括:
- 使用强化学习进行调优
运行流程
项目的运行流程可以分为以下几个步骤:
数据处理
-
数据集转化:将 alpaca 数据集转换为 JSONL 格式
python cover_alpaca2jsonl.py --data_path data/alpaca_data.json --save_path data/alpaca_data.jsonl
-
数据标记化:对数据集进行分词处理
python tokenize_dataset_rows.py --jsonl_path data/alpaca_data.jsonl --save_path data/alpaca --max_seq_length 200 --skip_overlength True
监督微调
进行监督微调需要使用最新版本的 PEFT:
-
安装最新 PEFT 版本(>=0.3.0.dev0)
pip uninstall peft -y pip install git+https://github.com/huggingface/peft.git
-
开始微调
python supervised_finetune.py --dataset_path data/alpaca --lora_rank 8 --per_device_train_batch_size 1 --gradient_accumulation_steps 32 --save_steps 200 --save_total_limit 3 --learning_rate 1e-4 --fp16 --remove_unused_columns false --logging_steps 10 --output_dir output
将 PEFT 适配器合并到模型中
由于 PEFT 的不同版本可能导致问题,因此建议使用 0.2.0 版本来合并适配器。
pip uninstall peft -y
pip install peft==0.2.0
python merge_peft_adapter.py --model_name ./output
奖励模型
训练奖励模型,之后可以合并到总模型中:
python train_reward_model.py --model_name 'THUDM/chatglm-6b' --gradient_accumulation_steps 32 --per_device_train_batch_size 1 --train_subset 100 --eval_subset 10 --local_rank 0 --bf16 False
并将其合并:
python merge_peft_adapter.py --model_name ./reward_model_chatglm-6b
注意事项
- PEFT 的最新版本在合并时可能会遇到问题,应使用版本 0.2.0。
- Huggingface 的 Transformer 暂不支持 ChatGLM 的接口,需要从 ChatGLM 的代码库中手动获取代码。
- Reward Model 的训练需要使用 SeqCLS 任务,推荐自定义实现。
参考资料
该项目在数据处理和环境配置上借鉴了下列项目的代码和结构:
- alpaca-lora
- ChatGLM-Tuning
- trl
- llama-trl
Star-History
项目的 Star 历史图:
捐赠
如果该项目对您的开发有所帮助,可以通过以下方式请我喝杯咖啡 :)
- 支付宝和微信的二维码位于项目的相关文件夹中。
许可证
本项目采用 MIT 许可证进行授权。