chatGLM微调,transformers_modules模块不存在问题

一、问题描述
在本地基于 P-Tuning v2 微调chatGLM模型的时候出现了一些问题。问题为ModuleNotFoundError: No module named 'transformers_modules.'
操作步骤如下:
1、下载项目,ChatGLM-6B项目P-tuning-v2项目,并下载了chatglm-6B模型,将三个文件放置在同一文件夹下;如下图所示:

img

2、创建conda环境,进入环境,切换到项目文件夹下,下载项目依赖pip install -r requirements.txt;
3、测试启动python web_demo.py,可以正常启动chatGLM模型,会跳转到一个网页,可以正常问答;
4、关闭模型,重新进入环境,并将目录切换到微调文件夹下(D:\myAImodel\ChatGLM-6B-main\ptuning),下载依赖pip install rouge_chinese nltk jieba datasets和官方提供的广告数据集,解压,放在ptuning文件夹下;

img

5、启动训练bash train.sh,出现如下错误:

img

二、问题溯源
1、检查是否正确安装transformers和版本是否官方要求:

img

没有问题。

2、升级transformers版本,官方要求4.27.1,升级至最新4.29.1

img

再运行训练bash train.sh,老问题,并没有解决。

img

train.sh里面的--model_name_or_path 参数传入模型路径,如果使用本地路径,我传入相对路径就报错,传入绝对路径就能正常运行。

img

这是我运行成功后的图片,显卡太辣鸡,训练时间太长。

img


如果tran.sh运行有问题,可以重新写个py文件作为启动程序,代码如下:

import os

option = "--do_train " \
         "--train_file AdvertiseGen/train.json " \
         "--validation_file AdvertiseGen/dev.json " \
         "--prompt_column content " \
         "--response_column summary " \
         "--overwrite_cache " \
         "--model_name_or_path D:\\project\\pyproject\\project\\chatglm-6b-main\\model " \
         "--output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR " \
         "--overwrite_output_dir " \
         "--max_source_length 64 " \
         "--max_target_length 64 " \
         "--per_device_train_batch_size 1 " \
         "--per_device_eval_batch_size 1 " \
         "--gradient_accumulation_steps 16 " \
         "--predict_with_generate " \
         "--max_steps 3000 " \
         "--logging_steps 10 " \
         "--save_steps 1000 " \
         "--learning_rate 2e-2 " \
         "--pre_seq_len 128 " \
         "--quantization_bit 4"

os.system(f"python main.py {option}")




transformer我应该写过对应博客,可以根据关键词搜索然后看一下我主页的描述~