AI

llama.cpp将safetensors模型转换为gguf

前言 🔖


不同本地部署工具支持的模型格式不同, Ollama、 llama.cpp支持GGUF,PyTorch支持safetensors,本文讲解格式转换方法。

llama.cpp提供了各种LLM的处理工具,其中convert_hf_to_gguf.py,就可以帮助我们将safetensors模型转换为gguf格式,其中,模型的大小不会改变,只是格式被修改了。

  

转换步骤 🔖


🔹1.克隆官方项目

git clone https://github.com/ggerganov/llama.cpp.git

  

🔹2.创建并且激活Python虚拟环境

为了防止环境污染,最好用用Python虚拟环境。

#创建Pyhon 虚拟环境
python -m venv python-llama

# 激活虚拟环境
source python-llama/bin/activate

  

🔹3.安装项目依赖

# cd 到下载好的llama.cpp工程目录
cd /Users/xx/Documents/llama_cpp/llama.cpp 

# 安装相应的依赖
pip install -r requirements.txt

  

🔹4.下载好需要转换的safetensors模型文件到本地目录

  

🔹5.使用convert_hf_to_gguf.py进行转换

用下面的命令可以转换生成gguf文件。

python ./convert_hf_to_gguf.py /Users/xxx/Documents/llama_cpp/safetensors --outtype q8_0

参数说明

参数说明
python convert_hf_to_gguf.py调用 llama.cpp 仓库中用于将 HuggingFace 格式模型转换为 GGUF 格式的 Python 脚本
./my_qwen_model位置参数,指定 HuggingFace 模型所在的本地目录路径。该目录下应包含 config.json 和 .safetensors 权重文件
--outtype f16指定输出模型的精度类型。f16 代表 16‑bit 半精度浮点数(不量化,保留原始精度)。其他可选值包括 f32、bf16 或量化格式(如 q8_0、q4_k_m 等)
--verbose开启详细输出模式,在转换过程中打印详细的日志信息,方便排查问题或查看转换进度
--outfile Qwen3.5‑2B‑gguf.gguf指定转换后生成的 GGUF 文件的保存路径和文件名

  

常用量化类型参考

类型说明
f1616‑bit 半精度,不量化,保留原始精度
f3232‑bit 全精度,体积最大
bf16Brain Float 16,与 f16 类似,部分硬件支持更好
q8_08‑bit 量化,精度较高,体积约为 f16 的一半
q4_k_m4‑bit 量化(推荐),在准确性和推理速度之间取得良好平衡,适合本地运行
q4_04‑bit 量化,体积最小,精度有一定损失