此文将介绍如何使用 llama.cppModelScope 上的 Qwen/Qwen3-4B-Instruct-2507 模型转换为 GGUF 格式 ,并进一步量化为 q4_k_m 类型。


一、准备工作

1. 安装 uv

安装方法

也可以使用llama.cpp默认的poetry环境

2. 编译llama.cpp

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

# CPU Build,如果不需要量化,可以不用编译
cmake -B build
cmake --build build --config Release

其他类型的build可以参照文档

3. 迁移 poetry 到uv

llama.cpp默认使用的是poetry管理的虚拟环境,这里改为使用uv

uvx migrate-to-uv --skip-lock
uvx sync -p 3.10

(可选)修改pip镜像源

vim pyproject.toml

找到[tool.uv],在下面新增index-url = "https://mirrors.aliyun.com/pypi/simple/"

安装依赖(使用python3.10版本)

uv sync -p 3.10

4. 下载模型

huggingface上下载比较慢,使用modelscope下载

uv add modelscope
uv run modelscope download Qwen/Qwen3-4B-Instruct-2507

二、将模型转换为 GGUF 格式

1. 转换模型为未量化的 GGUF(f16)

uv run convert_hf_to_gguf.py --outtype f16 ~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/

⚠️ 注意:--outtype 不支持直接指定 q4_k_m,需要后续步骤量化。

这一步将生成文件:

~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/Qwen3-4B-Instruct-2507-F16.gguf

四、量化为 q4_k_m 格式

要量化为q4_k_m格式需要编译llama.cpp

使用 llama.cpp 自带的 quantize 工具进行量化:

./build/bin/llama-quantize ~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/Qwen3-4B-Instruct-2507-F16.gguf  ~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/Qwen3-4B-Instruct-2507-Q4_K_M.gguf q4_k_m

最终你将获得一个轻量、本地可运行的模型文件:

~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/Qwen3-4B-Instruct-2507-Q4_K_M.gguf

五、本地运行模型

使用 llama.cpp 启动模型:

./build/bin/llama-cli -m ~/.cache/modelscope/hub/models/Qwen/Qwen3-4B-Instruct-2507/Qwen3-4B-Instruct-2507-Q4_K_M.gguf -p "Hey!"

关于不同量化格式的区别可以参照这篇文章