Skip to content

llama.cpp 后端架构与使用(基于 GPUStack)

目录


简介

llama.cpp 是 GPUStack 支持的轻量级推理后端,由 C/C++ 编写,支持 CPU 和 GPU 混合推理,使用 GGUF 量化格式。GPUStack 通过 llama-box(捆绑 llama.cpp)提供该后端,适合小模型、边缘设备和低资源环境。

技术架构

  • 纯 C/C++ 实现:无 Python 依赖,可编译为单个可执行文件
  • 跨平台:Linux、macOS、Windows、Android
  • 多后端加速:CUDA、Metal(Apple Silicon)、Vulkan、OpenCL、SYCL
  • GGUF 量化:支持 2-bit 到 8-bit 多级量化,显著降低内存/显存
  • CPU offload:可仅将部分层 offload 到 GPU,灵活分配资源

使用场景

场景说明
小模型(< 30B)轻量快速
边缘设备 / 嵌入式低资源消耗
纯 CPU 环境无 GPU 也能运行
Apple SiliconMetal 加速优秀
GGUF 量化部署灵活显存/内存控制

在 GPUStack 中使用 llama.cpp

自动选择

GPUStack 部署小模型或边缘场景时,自动选择 llama.cpp 后端:

  1. 在 GPUStack UI 部署模型(选择 GGUF 量化版本)
  2. GPUStack 自动使用 llama-box 后端运行
  3. GPUStack 自动处理 GGUF 模型下载和量化选择

手动指定

在 GPUStack 部署模型时手动指定后端为 llama.cpp:

  • 后端 (Backend):选择 llama-box(基于 llama.cpp)
  • 模型:选择 GGUF 格式的量化模型
  • GPU offload 层数n_gpu_layers(控制显存占用)

GGUF 模型

GGUF 是 llama.cpp 后端的量化模型格式,GPUStack 支持从 Hugging Face / ModelScope 拉取:

  • Hugging Face:搜索 <model>-GGUF 仓库
  • ModelScope:国内网络推荐
  • Ollama Library:GPUStack 可直接部署

量化级别选择详见 quantization.md

后端参数配置

GPU 加速

控制 offload 到 GPU 的层数(层数越多越吃显存):

yaml
backend: llama-box
n_gpu_layers: 40               # offload 到 GPU 的层数
  • n_gpu_layers: 0 → 纯 CPU 推理
  • n_gpu_layers: 99 → 全部 offload 到 GPU
  • 根据显存大小调整,避免 OOM

上下文长度

yaml
backend: llama-box
context_length: 8192           # 上下文长度(影响 KV Cache 和内存)

完整示例

yaml
# GPUStack 部署 Qwen3-8B (GGUF Q4_K_M)
backend: llama-box
model: qwen3-8b-q4_k_m.gguf
n_gpu_layers: 40
context_length: 8192

与其他后端对比

维度llama.cppvLLM
硬件CPU / GPUNVIDIA GPU
吞吐中低
量化GGUFAWQ/GPTQ/FP8
分布式单机为主多卡多机
适用小模型、边缘大模型、生产

GPUStack 根据场景自动在两者间切换,详见 index.md


参考资源