【背景】
我使用llamafactory这个框架LoRA了微调了Qwen3-8B这个纯文本的大模型,并将LoRA权重和原始的模型权重合并得到最终的模型。然后使用llama.cpp将合并后的权重转换为gguf格式,使用llama.cpp部署这个转换后的gguf模型使用没有问题,根据模型回答确实学到了训练集的内容。
但是,将这个gguf格式的模型导入到ollama后,再次运行模型直接胡说八道,输出如下:
【解决方法】
使用llamafactory合并模型的时候生成的Modelfile文件将模型导入到ollama,这个文件中包含了这个微调后模型推理的正确模板,使用这个模板就没有问题了。
【实操过程】
1. 编辑modelfile文件
将转换后的gguf文件和这个modelfile文件放到同一个路径下,这个modelfile文件也可以改个名字,例如2000.modelfile,只要是最后的后缀是.modelfile就可以了。
然后改下这个文件里面的gguf模型路径,我这里把modelfile文件和gguf文件放到同一个路径下了,所以FROM后面的路径直接写相对路径就可以了,例如:
2. 导入ollama
在终端进入模型和modelfile文件所在路径,使用以下命令导入ollama
ollama create 2000 -f 2000.modelfile其中,create后面的2000是ollama中显示的模型名字,-f后面就是前面编辑的modelfile文件。
当类似下图出现“success”字样就代表成功了
3. 验证
使用ollama list看看ollama中已有的模型,可以看到前面设置的名为2000的模型可以正常显示了。
然后使用ollama run 2000推理一下试试,模型名称后面的latest可以不用管。
一般就没问题了。