ChatGLM2 PyCharm模型训练
训练模型,需要先下载训练代码:
https://github.com/hiyouga/ChatGLM-Efficient-Tuning
博主下载的是“ChatGLM-Efficient-Tuning-main”版本,应该算是比较新的版本了。
1、创建虚拟环境
首先,利用Miniconda3创建我们的虚拟环境“ChatGLM-ET”,python版本3.8
conda create -n ChatGLM-ET python==3.8
2、打开PyCharm安装依赖
执行下面命令
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
3、修改训练文件
训练的数据存放在data/self_cognition.json,数据格式如下,博主这里保留了旧数据,追加了一些自己的数据。
4、单 GPU 微调训练
官方文档中的命令只能在Linux下执行,博主是win11的环境,所以跑不了。
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--stage sft \
--model_name_or_path path_to_your_chatglm_model \
--do_train \
--dataset alpaca_gpt4_zh \
--finetuning_type lora \
--output_dir path_to_sft_checkpoint \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 1000 \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--plot_loss \
--fp16
windows下执行,可以参考:https://blog.csdn.net/qq_40682833/article/details/119215398
直接修改src/train_bash.py文件,在开头加上下面代码即可
import os
os.environ["CUDA_VISIBLE_DEVICES"]='0'
升级trl(版本不要太高)、安装transformers
pip install trl==0.7.2 -i https://mirror.baidu.com/pypi/simple
pip install transformers==4.33.2 -i https://mirror.baidu.com/pypi/simple
pip install icetk
安装CUDA(请根据自己电脑cuda版本,安装对应cuda)
pip install torch==2.2.1+cu121 torchvision==0.17.1+cu121 -f https://download.pytorch.org/whl/torch_stable.html
下载“THUDM/chatglm-6b”
进入https://huggingface.co,下载“THUDM/chatglm-6b”,地址如下:(这是外网地址,需要科学上网,然后一个个下载)
https://huggingface.co/THUDM/chatglm-6b/tree/main
下载完之后,在“config.json”文件中可以看到目录名称
在ChatGLM-Efficient-Tuning-main项目目录下新建“THUDM\chatglm-6b”目录,将前面下载的chatglm-6b文件都扔进去
改变peft的版本,不然运行会报错。
pip install peft==0.4.0
然后执行下面命令开始训练
python src/train_bash.py --stage sft --model_name_or_path THUDM/chatglm-6b --do_train --dataset alpaca_gpt4_zh --finetuning_type lora --output_dir path_to_sft_checkpoint --per_device_train_batch_size 4 --gradient_accumulation_steps 4 --lr_scheduler_type cosine --logging_steps 10 --save_steps 1000 --learning_rate 5e-5 --num_train_epochs 3.0 --plot_loss --fp16
注意:
1、官方命令默认没有“--model_name_or_path”参数,这是我后面自己加的。
2、官方“--save_steps”参数默认值是1000,博主电脑配置是RTX3090,估计了一下,大概得训练个3天3夜,实在耗不起,博主改成30了,差不多训练了10个小时左右。但是训练结束后貌似没啥效果,估计是值太小了。。。
来源:ChatGLM-Efficient-Tuning-main\examples\alter_self_cognition.md
运行起来差不多就是下面这个样子,应该算是跑起来了~~
训练结束,差不多就是这个样子
5、模型测试
命令如下:
python src/cli_demo.py --finetuning_type lora --checkpoint_dir path_to_sft_checkpoint
官方命令如下:
python src/cli_demo.py \
--model_name_or_path path_to_your_chatglm_model \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint
运行效果如下:
6、导出微调模型
命令如下:
python src/export_model.py --model_name_or_path THUDM/chatglm-6b --finetuning_type lora --checkpoint_dir path_to_sft_checkpoint --output_dir path_to_export
官方命令是这样的:
python src/export_model.py \
--model_name_or_path path_to_your_chatglm_model \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint \
--output_dir path_to_export
最后会导出到path_to_export目录下