一、问题描述
在本地基于 P-Tuning v2 微调chatGLM模型的时候出现了一些问题。问题为ModuleNotFoundError: No module named 'transformers_modules.'
操作步骤如下:
1、下载项目,ChatGLM-6B项目和P-tuning-v2项目,并下载了chatglm-6B模型,将三个文件放置在同一文件夹下;如下图所示:
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文件夹下;
5、启动训练bash train.sh,出现如下错误:
二、问题溯源
1、检查是否正确安装transformers和版本是否官方要求:
没有问题。
2、升级transformers版本,官方要求4.27.1,升级至最新4.29.1
再运行训练bash train.sh,老问题,并没有解决。
train.sh里面的--model_name_or_path 参数传入模型路径,如果使用本地路径,我传入相对路径就报错,传入绝对路径就能正常运行。
这是我运行成功后的图片,显卡太辣鸡,训练时间太长。
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我应该写过对应博客,可以根据关键词搜索然后看一下我主页的描述~