实操是按照如下链接按部就班:
https://github.com/wuwulin/Tutorial/blob/camp3/docs/L1/XTuner/readme.md
下面是未微调前的对话效果
之后,我们用 internlm2-chat-1_8b 模型,通过 QLoRA 的方式来微调一个自己的小助手认知作为案例来进行演示
下面是xtuner_generate_assistant.py程序的代码,其中name、n的值根据自己需要进行修改,n值太大容易导致过拟合,无法有效回答其他问题
微调结束后,需要读模型进行转换,模型转换的本质其实就是将原本使用 Pytorch 训练出来的模型权重文件转换为目前通用的 HuggingFace 格式文件,最终模型被转换为 HuggingFace 中常用的 .bin 格式文件
对于 LoRA 或者 QLoRA 微调出来的模型其实并不是一个完整的模型,而是一个额外的层(Adapter),训练完的这个层最终还是要与原模型进行合并才能被正常的使用。
对于全量微调的模型(full)其实是不需要进行整合这一步的,因为全量微调修改的是原模型的权重而非微调一个新的 Adapter ,因此是不需要进行模型整合的。
在 XTuner 中提供了一键合并的命令 xtuner convert merge
更详细的内容可参考链接:
https://github.com/wuwulin/Tutorial/blob/camp3/docs/L1/XTuner/readme.md
模型微调后的对话效果如下:
可见模型微调后,模型权重文件发生了改变,影响了对话效果。