结论:使用Jetson能够实现Qwen14B模型的微调、量化、部署,解决了前文中遗留的Lora量化精度损失的问题。主要是依赖llamacpp。

前言: 之前按照网络上的帖子,直接把lora和base合并后,使用llama cpp进行量化,但结果非常不理想,量化后的模型不但失去了Lora权重的能力,并且本身的推理能力也下降了。

具体表现在(system prompt相同的情况下):

先merge再量化(int5_1) 最差,完全无法理解指令任务,增加两轮对话样本能够稳定格式

不使用Lora直接量化,使用一轮对话样本,能够稳定输出格式和指令

使用Lora(int8)和量化的base模型(int5_0),表现稳定。

记录其中踩的坑点(主要是jetson的特性)

1. 使用llamacpp,带cuda编译完成后,运行发现gpu未使用,需要增加某个参数,把模型从CPU转到GPU,具体看llamacpp的官方文档。

2. 量化后的base直接加载lora,速度很慢,把lora转换为int8的gguf格式,速度正常(最终约比base慢10%)

3. 抛弃ollama镜像,ollama的docker镜像可能不支持lora加载,不建议使用,但其速度几乎与直接用llamacpp推理速度相当。

4. llamacpp不支持AutoGPTQ(目前看来),而且AutoGPTQ在jetson上推理会报错(未解决),并且transformers也会出现类似的问题。

5. llamacpp server支持自由切换多个Lora

Todo:准备测试集以及更多功能和方向的数据集

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐