如何将HuggingFace 格式的模型文件转换成GGUF 并使用ollama运行
模型文件微调时只能使用HuggingFace格式的文件,微调完成后如果想使用ollama进行统一运行,则需要将HuggingFace格式的文件转换成GGUF格式,之后再进一步使用GGUF格式的文件和ollama的Model File完成ollama模型文件的加载。
第一部分:将HuggingFace文件转换成GGUF文件。
一、从国内开源平台gitee,下载llama.cpp的zip文件。
二、解压缩zip文件,进入llama.cpp主目录。
三、部署llama.cpp的运行环境,我的做法是重新构建了一个conda环境,命令为llama_cpp_env,进入新建的环境中,目录切换到llama.cpp主目录,使用命令安装需要的库文件。
pip install -r requirements.txt
四、环境部署完成后,就可以运行文件转换的命令。
QWen2.5-7B-Instruct_lora_sft文件是我微调后的文件夹名称,放到llama.cpp的主目录中,
QWen2.5-7B-Instruct_lora_sft_f16.gguf为转化后的文件名称,也是放到了llama.cpp的主目录中。
# 如果不量化,保留模型的效果
python convert_hf_to_gguf.py ./qwen2.5-7b-lora --outtype f16 --verbose --outfile QWen2.5-7B-lora.gguf
# 如果需要量化(加速并有损效果),直接执行下面脚本就可以
python convert_hf_to_gguf.py ./QWen2.5-7B-Instruct_lora_sft --outtype q8_0 --verbose --outfile QWen2.5-7B-Instruct_lora_sft_q8_0.gguf
这里--outtype是输出类型,代表含义:
q2_k:特定张量(Tensor)采用较高的精度设置,而其他的则保持基础级别。
q3_k_l、q3_k_m、q3_k_s:这些变体在不同张量上使用不同级别的精度,从而达到性能和效率的平衡。
q4_0:这是最初的量化方案,使用 4 位精度。
q4_1 和 q4_k_m、q4_k_s:这些提供了不同程度的准确性和推理速度,适合需要平衡资源使用的场景。
q5_0、q5_1、q5_k_m、q5_k_s:这些版本在保证更高准确度的同时,会使用更多的资源并且推理速度较慢。
q6_k 和 q8_0:这些提供了最高的精度,但是因为高资源消耗和慢速度,可能不适合所有用户。
fp16 和 f32: 不量化,保留原始精度。
第二部分:使用GGUF文件完成ollama模型文件的加载。
一、在llama.cpp主目录中创建一个ModelFile文件,ollama需要通过这个ModelFile文件完成GGUF文件的加载。
FROM QWen2.5-7B-lora.gguf
# set the temperature to 0.7 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""
# set the system message
SYSTEM """
You are a helpful assistant.
"""
二、使用ollama创建一个属于自己的自定义模型。
ollama create qwen2.5-7b-lora --file ./ModelFile
三、使用ollama运行微调后的自定义模型。
#查看ollama模型是否添加成功
ollama list
#运行新加载的模型,测试效果。
ollama run qwen2.5_7b_instruct_lora_f16
更多推荐



所有评论(0)