chatglm3 lora微调,训练+预测问题总结

本文介绍了在训练Lora模型时遇到的包版本问题,如Tokenizer类缺失,以及如何通过升级transformers版本和自定义set_input_embeddings方法来解决。还提供了使用PeftModel加载模型的新方法,确保模型顺利运行并处理特定格式的训练集。
摘要由CSDN通过智能技术生成

训练Lora权重

1.依赖缺啥包就import啥包,但是要注意版本问题
比如typer==0.9.0,不然低版本报错有得你找
在这里插入图片描述

2.训练集格式,必须把样本集修改成指定格式,不然小心各种报错,目前只试了问答的,没试多轮对话,后续会更新测试其他类型格式。
(1)文件名后缀:json,格式如下
[
{“conversations”:[{“role”:“user”,“content”:“问题1”},{“role”:“assistant”,“content”:“答案1”}]},
{“conversations”:[{“role”:“user”,“content”:“问题2”},{“role”:“assistant”,“content”:“答案2”}]},
{“conversations”:[{“role”:“user”,“content”:“问题3”},{“role”:“assistant”,“content”:“答案3”}]}
]

[{"conversations":[{"role":"user","content":"类型#裤*版型#宽松*风格#性感*图案#线条*裤型#阔腿裤"},{"role":"assistant","content":"宽松的阔腿裤这两年真的吸粉不少,明星时尚达人的心头爱。毕竟好穿时尚,谁都能穿出腿长2米的效果宽松的裤腿,当然是遮肉小能手啊。上身随性自然不拘束,面料亲肤舒适贴身体验感棒棒哒。系带部分增加设计看点,还让单品的设计感更强。腿部线条若隐若现的,性感撩人。颜色敲温柔的,与裤子本身所呈现的风格有点反差萌。"}]},
{"conversations":[{"role":"user","content":"类型#裙*风格#简约*图案#条纹*图案#线条*图案#撞色*裙型#鱼尾裙*裙袖长#无袖"},{"role":"assistant","content":"圆形领口修饰脖颈线条,适合各种脸型,耐看有气质。无袖设计,尤显清凉,简约横条纹装饰,使得整身人鱼造型更为生动立体。加之撞色的鱼尾下摆,深邃富有诗意。收腰包臀,修饰女性身体曲线,结合别出心裁的鱼尾裙摆设计,勾勒出自然流畅的身体轮廓,展现了婀娜多姿的迷人姿态。"}]},
{"conversations":[{"role":"user","content":"类型#上衣*版型#宽松*颜色#粉红色*图案#字母*图案#文字*图案#线条*衣样式#卫衣*衣款式#不规则"},{"role":"assistant","content":"宽松的卫衣版型包裹着整个身材,宽大的衣身与身材形成鲜明的对比描绘出纤瘦的身形。下摆与袖口的不规则剪裁设计,彰显出时尚前卫的形态。被剪裁过的样式呈现出布条状自然地垂坠下来,别具有一番设计感。线条分明的字母样式有着花式的外观,棱角分明加上具有少女元气的枣红色十分有年轻活力感。粉红色的衣身把肌肤衬托得很白嫩又健康。"}]}
]

调用Lora权重模型

注意:这里是拿finetune_demo文件夹中的inference_hf.py文件举例,你也可以在其他地方使用该方法
在这里插入图片描述
微调后执行

python inference_hf.py output/checkpoint-3000/ --prompt "类型#裙*版型#显瘦*材质#网纱*风 格#性感*裙型#百褶*裙下摆#压褶*裙长#连衣裙*裙衣门襟#拉链*裙衣门襟#套头*裙款式#拼接*裙款式#拉链*裙款式#木耳边*裙款式#抽褶*裙款式#不规则"

报错
ValueError: Tokenizer class ChatGLMTokenizer does not exist or is not currently imported. 如下图
在这里插入图片描述

原因
transformers版本太旧了,换版本~
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple transformers==4.37.1
然后又来新问题~
在这里插入图片描述
chatglm3没有set_input_embeddings,两个解决方案,推荐方法2
1.自写set_input_embeddings方法(网上的没试过)
在元素chatglm3的权重文件中
modeling_chatglm.py的733行:
class ChatGLMModel(ChatGLMPreTrainedModel)处添加了代码:

def set_input_embeddings(self, value):
	self.embedding.word_embeddings = value

2.更换加载peft模型加载方法(亲测可用)

(1)添加依赖

from peft import PeftModel, PeftConfig

(2)修改load_model_and_tokenizer方法中的model

config = PeftConfig.from_pretrained(model_dir)
base_model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path,trust_remote_code=trust_remote_code, device_map='auto')
model = PeftModel.from_pretrained(base_model, model_dir)

如下图

运行

python inference_hf.py output/checkpoint-3000/ --prompt "类型#裙*版型#显瘦*材质#网纱*风 格#性感*裙型#百褶*裙下摆#压褶*裙长#连衣裙*裙衣门襟#拉链*裙衣门襟#套头*裙款式#拼接*裙款式#拉链*裙款式#木耳边*裙款式#抽褶*裙款式#不规则"

成功~
在这里插入图片描述

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值