littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于PyTorch框架的ChatGLM微调项目

项目简介

本项目聚焦于对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】