项目简介
本项目聚焦于对ChatGLM和ChatGLM2模型开展多种方式的微调,涵盖Freeze、Lora、P-Tuning和全量参数微调。通过这些微调手段,旨在对比不同方法在信息抽取、生成任务和分类任务中的效果,同时确保模型微调后不会出现灾难性遗忘。
项目的主要特性和功能
- 支持Freeze、Lora、P-Tuning和全量参数等多种微调方法。
- 借助DeepSpeed框架实现单卡和多卡训练,支持gradient_checkpointing、zero3、offload等参数以节省显存。
- 适用于信息抽取、生成任务和分类任务。
- 微调后模型能保持原有任务性能,避免灾难性遗忘。
安装使用步骤
1. 复制项目
shell
cd susu-ChatGLM-Finetuning
2. 创建虚拟环境并安装依赖
shell
python -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 选择微调方法并配置参数
- Freeze方法:冻结部分模型参数,仅训练指定层。
- Lora方法:在模型中增加低秩矩阵,仅训练这些新增参数。
- P-Tuning方法:在模型的Embedding层或每一层前增加新的参数。
- 全量参数微调:对模型所有参数进行训练。
4. 运行训练脚本
例如,使用Freeze方法进行单卡训练:
shell
CUDA_VISIBLE_DEVICES=0 deepspeed --master_port 520 train.py \
--train_path data/spo_0.json \
--model_name_or_path ChatGLM-6B/ \
--per_device_train_batch_size 1 \
--max_len 1560 \
--max_src_len 1024 \
--learning_rate 1e-4 \
--weight_decay 0.1 \
--num_train_epochs 2 \
--gradient_accumulation_steps 4 \
--warmup_ratio 0.1 \
--mode glm \
--train_type freeze \
--freeze_module_name "layers.27.,layers.26.,layers.25.,layers.24." \
--seed 1234 \
--ds_file ds_zero2_no_offload.json \
--gradient_checkpointing \
--show_loss_step 10 \
--output_dir ./output-glm
5. 评估模型性能
使用测试数据集评估微调后的模型性能,比较不同微调方法的效果。
注意事项
- 显存不足时,可开启gradient_checkpointing、zero3、offload等参数节省显存。
- 需选择合适的微调方法以匹配具体任务需求。
- 模型微调耗时较长,需耐心等待训练完成。
参考文档和代码
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】