ChatGLM-LoRA-RLHF-PyTorch 是一个旨在利用商业硬件设备来微调 ChatGLM 大型语言模型的完整流程。该项目结合了 LoRA (Low-Rank Adaptation of Large Language Models) 和 RLHF (Reinforcement Learning from Human Feedback) 技术,以提升语言模型的性能。
为了运行本项目,您需要以下环境配置:
torch==2.0.0cuda==11.8当前项目的发展计划如下:
项目的运行流程可以分为以下几个步骤:
数据集转化:将 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 的不同版本可能导致问题,因此建议使用 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
该项目在数据处理和环境配置上借鉴了下列项目的代码和结构:
项目的 Star 历史图:
如果该项目对您的开发有所帮助,可以通过以下方式请我喝杯咖啡 :)
本项目采用 MIT 许可证进行授权。