科泉网站,找网站公司制作网站,阿里巴巴做轮播网站,凡科做的网站百度收不收录目录 写在前面1. 环境依赖更新2. 微调数据格式更新3. 微调方式更新4. 微调后模型推理验证方式更新 写在前面
仅作个人学习记录用。本文对上一篇 【工程记录】ChatGLM3-6B微调实践#xff08;Windows#xff09; 的内容进行更新与补充说明。
1. 环境依赖更新
注意#xff… 目录 写在前面1. 环境依赖更新2. 微调数据格式更新3. 微调方式更新4. 微调后模型推理验证方式更新 写在前面
仅作个人学习记录用。本文对上一篇 【工程记录】ChatGLM3-6B微调实践Windows 的内容进行更新与补充说明。
1. 环境依赖更新
注意ChatGLM3-6B 微调示例需要 python3.10除基础的 torch 依赖外其他重要依赖与上一篇文章发布时相比发生了变化
protobuf4.25.3
transformers4.39.3
tokenizers0.15.0
cpm_kernels1.0.11
torch2.1.0
gradio4.26.0
sentencepiece0.2.0
sentence_transformers2.4.0
accelerate0.29.2
streamlit1.33.0
fastapi0.110.0
loguru~0.7.2
mdtex2html1.3.0
latex2mathml3.77.0
jupyter_client8.6.12. 微调数据格式更新
ChatGLM3-6B模型的官方文档更新了微调示例。微调方法上提供SFTLoRA和 P-Tuning v2。格式上提供多轮对话微调样例和输入输出格式微调样例。
如果想要使用自己的数据集进行模型微调需要首先统一样例格式。同时ChatGLM3-6B微调对话和微调工具能力的数据格式也不相同。
本文实践仅使用输入输出格式来微调对话与上一篇文章发布时相比输入输出格式要求发生了变化。我针对此变化编写了一段将上一篇文章发布时的输入输出格式转换成当前格式的代码
import json
with open(.../train.jsonl, r, encodingutf-8) as f:data [json.loads(line) for line in f]train_examples [{conversations: [{role: user, content: x[promt]},{role: assistant, content:x[response]}]} for x in data]with open(.../train.json, wt, encodingutf-8) as f:for e in train_examples:f.write(json.dumps(e, ensure_asciiFalse) \n)效果如下
# 输入输出格式前
[{prompt: prompt text,response: response text}// ...
]# 输入输出格式后
json
[{conversations: [{role: user, content: prompt text},{role: assistant, content:response text}]}{conversations: [{role: user, content: prompt text},{role: assistant, content:response text}]}...
]作为示例使用 AdvertiseGen 数据集进行微调实践。之前的train.jsonl格式如下
[// ... {prompt: 类型#上衣*版型#宽松*版型#显瘦*图案#线条*图案#刺绣*衣样式#针织衫*衣领型#v领,response: 一款温暖柔软又富有弹性的针织衫不仅可以抵御严寒侵袭还能更好地进行搭配。v领的设计能勾勒出迷人的天鹅颈以及衬托出娇小的脸型。宽松又别致的剪裁能从视觉上显露纤长的下半身起到显瘦的效果。直筒造型的袖子修饰出优美的手臂线条衣身上的方格刺绣时尚又吸睛。}// ...
]经过上述步骤得到train.json
[... {conversations: [{role: user, content: 类型#上衣*版型#宽松*版型#显瘦*图案#线条*图案#刺绣*衣样式#针织衫*衣领型#v领},{role: assistant, content:一款温暖柔软又富有弹性的针织衫不仅可以抵御严寒侵袭还能更好地进行搭配。v领的设计能勾勒出迷人的天鹅颈以及衬托出娇小的脸型。宽松又别致的剪裁能从视觉上显露纤长的下半身起到显瘦的效果。直筒造型的袖子修饰出优美的手臂线条衣身上的方格刺绣时尚又吸睛。}]}...
]这样AdvertiseGen 数据集样本就满足了 ChatGLM3-6B 要求的输入输出格式也可以根据上述多轮对话或输入输出格式准备个性化领域数据来微调模型。
注意最新的微调代码中加入了验证集因此对于一组完整的微调数据集必须包含训练数据集train.json和验证数据集dev.json测试数据集可以不填写或者直接用验证数据集代替。
3. 微调方式更新
更新后的微调方式包括SFTLoRA和 P-Tuning v2非常简单具体可参考【官方文档】。
注意上一篇文章提到的 “ 需要将accelerate包的state.py文件中的backendnccl’改为backend‘gloo’ ”的问题 在目前的版本要求accelerate0.29.2下并不存在直接忽略即可。
训练完成后checkpoint 保存至你自己设置的output_dir位置在configs文件夹对应的微调方式的yaml文件中。
4. 微调后模型推理验证方式更新
更新后可使用 inference_hf.py 进行基本的推理验证。在finetune_demo 文件夹目录下终端输入
python inference_hf.py your_finetune_path --prompt [your prompt]