本地部署大模型框架兼容检查
本文用 vLLM、llama.cpp 与 Ollama 的文档核对本地部署大模型时的模型格式、硬件组合和关键参数,并指出 vLLM 的量化兼容表会随支持范围变化。
完成这次本地部署大模型框架检查后,你会得到一条明确路径:vLLM 对应哪种量化与硬件组合,llama.cpp 如何用 GGUF 文件启动,Ollama 的 Modelfile 应指向哪种模型文件或目录。开始前需要准备模型格式与分片清单、CPU/GPU 类型及拟用框架;以下只采用官方文档给出的命令和判定条件。
准备条件:核对本地部署大模型格式
先记录模型是 BF16、FP16、FP8、INT8、INT4、AWQ、GPTQ 还是 GGUF,并确认它是否由多个文件组成。框架名称相同不代表量化方法相同,真正的兼容条件是模型格式、量化方式和硬件要同时对应。
vLLM:核对量化格式与硬件
按 vLLM 的量化文档,量化是在模型精度与更小内存占用之间取舍。该页列出的当前兼容关系如下:
| 格式 | 文档列出的支持项 | 文档列出的不支持项 |
|---|---|---|
| AWQ | Turing、Ampere、Ada、Hopper,Intel GPU,x86 CPU | Volta、AMD GPU |
| llm-compressor FP8 (W8A8) | Ada、Hopper、AMD GPU | 该表中的其他硬件列 |
| GGUF | NVIDIA Volta 至 Hopper、AMD GPU | Intel GPU、CPU |
| bitsandbytes | NVIDIA Volta 至 Hopper | AMD GPU、Intel GPU、CPU |
同页把 Volta、Turing、Ampere、Ada 和 Hopper分别对应到 SM 7.0、7.5、8.0/8.6、8.9 和 9.0。文档也明确提醒兼容表会变化,最终应回到当前文档所指的源码目录复核,不能把一次表格判断当作长期承诺。
llama.cpp:核对 GGUF 与运行后端
按 llama.cpp 的项目说明,它是无外部依赖的 C/C++ 实现,基于 ggml,支持 1.5-bit 至 8-bit 整数量化,也支持在模型超过总显存容量时由 CPU 与 GPU 混合推理。文档列出的后端包括 CUDA、HIP、Metal、Vulkan、SYCL、CANN 和 MUSA;Apple Silicon 则通过 ARM NEON、Accelerate 和 Metal 获得优化。
操作步骤
1. 用 vLLM 启动 GGUF
vLLM 的 GGUF 文档 将 GGUF 支持标为高度实验性且尚未充分优化,并说明它可能与其他功能不兼容。先安装文档指定的 out-of-tree 插件:
uv pip install vllm-gguf-plugin
该命令安装当前文档要求的 GGUF 支持插件。
再使用文档给出的模型与基础 tokenizer 组合启动:
vllm serve unsloth/Qwen3-0.6B-GGUF:Q4_K_M --tokenizer Qwen/Qwen3-0.6B
该命令以 repo_id:quant_type 指定量化模型,并通过 --tokenizer 使用基础模型的 tokenizer;文档指出直接转换 GGUF tokenizer 耗时且不稳定。
2. 用 llama.cpp 启动本地 GGUF
本地文件路径可按官方示例启动:
./llama-server -m models/7B/ggml-model.gguf -c 2048
-m 选择本地模型,-c 2048 设置提示上下文。llama.cpp 的 HTTP Server 文档 说明服务器默认监听 127.0.0.1:8080,同一地址提供 Web UI;-ngl 或 --n-gpu-layers 接受数字、auto 或 all,默认 auto,-c 或 --ctx-size 默认 0 并从模型加载,--port 默认 8080,-np 或 --parallel 默认 -1 并自动决定服务器槽位。
3. 用 Ollama 创建模型配置
Ollama 的 Modelfile 参考 说明 FROM 是唯一必需指令,用来定义基础模型;GGUF 可以使用绝对路径,也可以使用相对于 Modelfile 的路径。下面以相对路径为例:
FROM ./YOUR_VALUE.gguf
PARAMETER temperature 1
PARAMETER num_ctx 4096
把 YOUR_VALUE 替换为实际 GGUF 文件名后,FROM 会指定基础模型,两个 PARAMETER 会写入运行参数;分片 GGUF 必须保留原始分片文件名,并使用能匹配全部分片的通配符。
创建自定义模型:
ollama create my-model
该命令根据 Modelfile 创建自定义模型;Ollama 的模型导入文档 对 Safetensors 权重要求让 FROM 指向权重目录,并明确说明 Ollama 不会在导入时量化 GGUF,需要先用 llama-quantize 等工具准备量化文件。
怎么确认成功
先检查前文文档列出的公开健康端点:
GET /health
该端点在模型加载期间返回 503,因此加载中的 503 不能当作部署完成;所给文档没有固定成功响应正文,加载结束后应按当前版本的 HTTP Server 文档核对状态和响应内容。
模型完成加载后,再按当前请求结构调用聊天端点:
POST /v1/chat/completions
这是项目提供的 OpenAI 兼容聊天路由,但项目明确不声称完整兼容 OpenAI API 规范;本文引用的 vLLM GGUF 与 Ollama 导入文档没有给出各自的健康端点或固定成功输出,不应自行补造验收结果。
常见出错点
- vLLM 只匹配量化名称,没有核对硬件:回到兼容表同时检查格式和硬件;FP8、AWQ、GGUF 与 bitsandbytes 的支持范围并不相同。
- GGUF 启动后 tokenizer 选错:保留文档示例中的基础模型
--tokenizer,不要把 GGUF 转换工具当作默认 tokenizer 来源。 - llama-server 返回
503:先按文档区分模型仍在加载的状态;若持续出现,重新核对-m路径和-c参数,并对照当前版本文档。 - Ollama 找不到 GGUF:相对路径以
Modelfile所在位置为基准;分片模型必须匹配全部分片。 - 把导入当成量化:Ollama 不会自动量化 GGUF,应先准备量化文件,再通过
FROM引用。 - 误以为指令必须按特定顺序书写:Modelfile 指令不区分大小写,也可以任意排序,但
FROM仍然不可缺少。
这些步骤按正文所链接的官方文档整理,未在本站机器上运行或测量;执行前请对照当前版本核验。