训练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 "类型#裙*版型#显瘦*材质#网纱*风 格#性感*裙型#百褶*裙下摆#压褶*裙长#连衣裙*裙衣门襟#拉链*裙衣门襟#套头*裙款式#拼接*裙款式#拉链*裙款式#木耳边*裙款式#抽褶*裙款式#不规则"
成功~