当前位置:   article > 正文

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

chatglm3 lora微调

训练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":"宽松的卫衣版型包裹着整个身材,宽大的衣身与身材形成鲜明的对比描绘出纤瘦的身形。下摆与袖口的不规则剪裁设计,彰显出时尚前卫的形态。被剪裁过的样式呈现出布条状自然地垂坠下来,别具有一番设计感。线条分明的字母样式有着花式的外观,棱角分明加上具有少女元气的枣红色十分有年轻活力感。粉红色的衣身把肌肤衬托得很白嫩又健康。"}]}
]
  • 1
  • 2
  • 3
  • 4

调用Lora权重模型

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

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

报错
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
  • 1
  • 2

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

(1)添加依赖

from peft import PeftModel, PeftConfig
  • 1

(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)
  • 1
  • 2
  • 3

如下图

运行

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/611220
推荐阅读
相关标签
  

闽ICP备14008679号