Win10微调大语言模型ChatGLM2-6B

打印 上一主题 下一主题

主题 901|帖子 901|积分 2703

在《Win10本地部署大语言模型ChatGLM2-6B-CSDN博客》基础上进行,官方文档在这里,参考了这篇文章
首先确保ChatGLM2-6B下的有ptuning

 AdvertiseGen下载地点1,地点2,文件中数据留几行


模型文件下载地点 (注意:ChatGLM2-6B对话用到的的模型文件不能简朴的用到这里,bin文件可以复用,但其他文件一定要重新下载,否则要报一些错)

anaconda prompt中运行,进行假造环境
  1. cd /d D:\openai.wiki\ChatGLM2-6B
  2. conda activate D:\openai.wiki\ChatGLM2-6B\ENV
复制代码
运行微调除 ChatGLM2-6B 的依赖之外,还需要安装以下依赖
  1. pip install rouge_chinese nltk jieba datasets
复制代码
先相识一下train.sh(仅在Linux中利用)内里各行的意义
  1. PRE_SEQ_LEN=128 #  soft prompt 长度
  2. LR=2e-2     # 训练学习率
  3. NUM_GPUS=2  # GPU卡的数量
  4. torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
  5.     --do_train \   # 执行训练功能,还可以执行评估功能
  6.     --train_file AdvertiseGen/train.json \   # 训练文件目录
  7.     --validation_file AdvertiseGen/fval.json \   # 验证文件目录
  8.     --prompt_column content \       # 训练集中prompt提示名称,对应训练文件,测试文件的"content"
  9.     --response_column summary \      # 训练集中答案名称,对应训练文件,测试文件的"summary"
  10.     --overwrite_cache \              # 缓存,重复训练一次的时候可删除
  11.     --model_name_or_path THUDM/chatglm-6b \  # 加载模型文件目录,也可修改为本地模型的路径
  12.     --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \    # 保存训练模型文件目录
  13.     --overwrite_output_dir \     # 覆盖训练文件目录
  14.     --max_source_length 64 \     # 最大输入文本的长度
  15.     --max_target_length 128 \
  16.     --per_device_train_batch_size 1 \    # batch_size 训练批次根据显存调节
  17.     --per_device_eval_batch_size 1 \     # 验证批次
  18.     --gradient_accumulation_steps 16 \   # 梯度累加的步数
  19.     --predict_with_generate \
  20.     --max_steps 3000 \    # 最大训练模型的步数
  21.     --logging_steps 10 \  # 多少步打印日志一次
  22.     --save_steps 1000 \    # 多少步保存模型一次
  23.     --learning_rate $LR \  # 学习率
  24.     --pre_seq_len $PRE_SEQ_LEN \
  25.     --quantization_bit 4   # 量化,也可修改为int8
复制代码
 Windows下用以下的train.bat
因我的电脑显存只有8G,故将per_device_train_batch_size改为8
去掉--quantization_bit 4
  1. set PRE_SEQ_LEN=128
  2. set LR=1e-4
  3. python main.py ^
  4.     --do_train ^
  5.     --train_file AdvertiseGen/train.json ^
  6.     --validation_file AdvertiseGen/dev.json ^
  7.     --preprocessing_num_workers 10 ^
  8.     --prompt_column content ^
  9.     --response_column summary ^
  10.     --overwrite_cache ^
  11.     --model_name_or_path D:\\openai.wiki\\ChatGLM2-6B\\ptuning\\THUDM\\chatglm2-6b ^
  12.     --output_dir D:/openai.wiki/ChatGLM2-6B/ptuning/output ^
  13.     --overwrite_output_dir ^
  14.     --max_source_length 64 ^
  15.     --max_target_length 128 ^
  16.     --per_device_train_batch_size 8 ^# batch_size 训练批次根据显存调节
  17.     --per_device_eval_batch_size 1 ^
  18.     --gradient_accumulation_steps 16 ^
  19.     --predict_with_generate ^
  20.     --max_steps 3000 ^
  21.     --logging_steps 10 ^
  22.     --save_steps 1000 ^
  23.     --learning_rate %LR% ^
  24.     --pre_seq_len %PRE_SEQ_LEN%
复制代码
进入ptuning文件夹
  1. cd ptuning
复制代码
运行train.bat,即可开始训练(有问题的话继承今后看)
  1. train.bat
复制代码

 可能碰到的几个问题


  • 问题一
TypeError: JsonConfig.init() got an unexpected keyword argument 'use_auth_token’
办理方式
  1. pip uninstall datasets
  2. pip install datasets==2.21.0
复制代码


  • 问题二
name ‘round_up‘ is not defined
办理方式
将train.bat中的–quantization_bit 4删除
或者pip install cpm_kernels


  • 问题三
AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘
办理方式
https://huggingface.co/THUDM/chatglm2-6b/tree/main
下载除bin文件以外的最新文件


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表