Unsloth无法识别Llama.cpp,无法将微调LLM转为GGUF格式
解决Unsloth
save_pretrained_gguf量化失败但手动转换GGUF成功的问题 问题背景
- 运行环境:AzureML Standard_NC24ads_A100_v4虚拟机,Unsloth版本2025.5.6,初始模型为
unsloth/Meta-Llama-3.1-8B-Instruct - 执行操作:运行Llama3 Ollama笔记本时,调用Unsloth的API保存量化GGUF:
model.save_pretrained_gguf("model", tokenizer, quantization_method="q4_k_m")
- 出现错误:抛出RuntimeError,提示量化失败。已按提示编译llama.cpp、尝试旧版本commit、移动
llama-quantize文件到工作目录,问题仍未解决 - 例外情况:手动执行llama.cpp的转换脚本可成功生成GGUF文件:
python3 llama.cpp/convert_lora_to_gguf.py my_model
替代解决方案
既然手动转换流程有效,可绕过Unsloth的save_pretrained_gguf方法,采用以下步骤:
- 先将微调后的模型保存为标准Hugging Face格式:
model.save_pretrained("my_finetuned_model", tokenizer)
- 调用llama.cpp转换脚本生成GGUF文件:
python3 llama.cpp/convert_lora_to_gguf.py my_finetuned_model
- 若需指定量化方式,转换后手动执行
llama-quantize工具:
./llama.cpp/llama-quantize my_finetuned_model/gguf-model-f16.gguf my_finetuned_model/gguf-model-q4_k_m.gguf q4_k_m
根因排查方向
Unsloth内部调用llama.cpp工具时可能存在路径或版本适配问题:
- 确保
llama-quantize可执行文件在系统PATH中:将llama.cpp目录添加到PATH后重试Unsloth的保存方法
export PATH=$PATH:/path/to/llama.cpp/
- 验证版本兼容性:Unsloth 2025.5.6可能与最新llama.cpp存在适配问题,可尝试回退Unsloth到稳定版本,或使用Unsloth文档推荐的llama.cpp特定commit版本
内容的提问来源于stack exchange,提问作者rikyeah




