高级 14 分钟llama.cpp

llama-server:支持本地OpenAI API的 llama.cpp

直接回答

llama-server 是 llama.cpp 内置的 HTTP 服务器。通过一条命令(llama-server -m modele.gguf -ngl 99),它即可加载 GGUF 模型,并在 http://localhost:8080 上提供兼容 OpenAI 的 API,同时提供内置网页界面。与 Ollama 不同,它允许直接控制 GPU 卸载(--n-gpu-layers)、上下文和批处理,无需守护进程或抽象层。

Ollama 很方便,但它把所有细节都藏了起来:模型各层在哪里运行、上下文如何设置,以及究竟哪些计算在 GPU 上执行。llama.cpp 随附的 HTTP 服务器 llama-server 则恰恰相反。只需一条命令,就能通过兼容 OpenAI 的 API 为任意 GGUF 文件提供推理服务,同时提供网页界面,并让您完全控制模型层的卸载。本文介绍如何启动它、将您的应用连接到它,以及在哪些情况下用它替代 Ollama 更有优势。

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试

#为什么选择 llama-server?

Ollama, LM Studio 或 Jan 均基于相同的底层引擎:llama.cpp。该引擎内置了自身 HTTP 服务器 llama-server,无需依赖其他层级。只需指定一个 GGUF 文件,即可获得 API 和 Web 界面。无需额外操作。

其价值并不只是表面上的。Ollama 会替您决定将多少层交给 GPU、上下文长度以及如何拆分模型,而 llama-server 则通过命令行开放每一个参数。您可以看到实际运行情况,并自行调整。这就是本地 AI 的“手动模式”——需要写更多命令和参数,但没有黑箱。

i
简而言之
llama-server = llama.cpp的HTTP二进制文件。一个进程、一个GGUF模型、在8080端口提供兼容OpenAI的API,内置网页界面。无后台守护进程,不提供模型库管理服务。
兼容 OpenAI 的 API
接口 /v1/chat/completions, /v1/completions, /v1/models, /v1/embeddings。任意 OpenAI 客户端无需修改即可接入。
控制模型层向 GPU 的卸载(offloading)
--n-gpu-layers 严格指定进入VRAM的层数。当模型超过显存容量时必不可少。
内置网页界面
直接通过服务器根路径提供的聊天界面,无需安装 Open WebUI 或 Docker。
无需重量级依赖
仅一个二进制文件(几十MB)。无需Python、容器或系统服务。
批处理与并行处理
连续批处理默认启用,通过多个槽位支持并发请求。

#先决条件

本地 AI 套件

只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。

  • 在线空间,终身可用
  • PDF + 文件
  • 30 天内退款
一个GGUF格式文件
llama.cpp 的格式。可从 Hugging Face 获取,或通过 llama-server 的 -hf 参数直接下载(详见下文)
VRAM或RAM
在Q4_K_M量化下,3B模型约需2 GB,7B模型约需5 GB,14B模型约需9 GB,32B模型约需19 GB,70B模型约需40 GB。
一块 GPU(强烈推荐)
RTX 3060 12 GB 用于入门,RTX 4070/4080 用于中端,RTX 4090 24 GB 或 Mac M4 Pro 用于大模型。仅使用 CPU 可运行,但速度较慢。
一个终端
llama-server 通过命令行操作。这并不难掌握,但它不像 LM Studio 那样是双击就能启动的应用。
→
您是从 Ollama 开始的吗?
Ollama 下载的模型已经是 GGUF 格式,存储在其 blobs 文件夹中,以哈希值命名。更简单的方法是:从 Hugging Face 下载所需的 GGUF 文件,或让 llama-server 通过 -hf 参数获取。

#1. 获取 llama-server

有三种方式,从最省时的到性能最佳的。在 macOS 上,Homebrew 只需一条命令即可安装二进制程序:

macOS — Homebrew
brew install llama.cpp

# le binaire s'appelle llama-server
llama-server --version

在 Windows 和 Linux 上,最简单的方法是从 llama.cpp 的官方 GitHub 发布版本中获取预编译二进制文件(请选择与您的硬件相匹配的版本:CUDA 适用于 NVIDIA,Vulkan 适用于通用 GPU,CPU 适用于 CPU)。

官方发布
https://github.com/ggml-org/llama.cpp/releases

要获得最高的每秒 token 数,请使用与您的 GPU 对应的后端从源码编译。以 NVIDIA GPU 搭配 CUDA 为例:

使用CUDA编译
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j

# le binaire se trouve dans build/bin/
./build/bin/llama-server --version
i
可执行文件名称已更改
历史上,该服务器曾是llama.cpp的「server」示例。自工具重组后,其名称已更改为llama-server。如果旧教程中提到./server,指的是同一个程序。

#2. 通过单条命令启动一个GGUF模型

最简命令指定一个模型并启动服务器。这里使用的是 Q4_K_M 量化的 Qwen 3.5 9B(2026 年 8 GB 显存配置的标杆选择,256k 上下文),所有层均放到 GPU 上运行:

终端
llama-server -m ./qwen3.5-9b-instruct-q4_k_m.gguf -ngl 99 -c 8192
-m
用于提供模型服务的 GGUF 文件路径。
-ngl 99
在GPU上卸载的层数。99 = 「全部」(模型层数更少则以实际层数为准,多余部分被忽略且不报错)
-c 8192
上下文长度(以 token 计)。默认通常为 4096;请根据实际需求和 VRAM 进行调整。

您手头没有文件?llama-server可直接从Hugging Face下载并缓存该文件,如同 ollama pull mais 集成功能一样:

从Hugging Face下载
llama-server -hf bartowski/Qwen3.5-9B-Instruct-GGUF:Q4_K_M -ngl 99 -c 8192

启动后,服务器默认监听 http://127.0.0.1:8080。请确认它正在运行:

健康检查
curl http://localhost:8080/health
# {"status":"ok"}
!
网络暴露 = 风险
默认情况下,llama-server 仅监听 localhost。若要让其他机器能够访问,请添加 --host 0.0.0.0,但此时网络上的任何人都能访问该 API。请使用 --api-key 保护它,最好再配合使用 HTTPS 的反向代理。

#3. 兼容 OpenAI 的 API:可连接任意应用程序

这是 llama-server 的核心优势。它支持 OpenAI 协议,因此任何为 OpenAI API 设计的工具,只需简单修改基础 URL 即可兼容。通过 curl 直接调用聊天接口:

调用 /v1/chat/completions
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [
      {"role": "system", "content": "Tu réponds en français, de façon concise."},
      {"role": "user", "content": "Explique le format GGUF en une phrase."}
    ],
    "temperature": 0.7
  }'

model 字段可以任意填写:llama-server 一次只提供一个模型的服务,基本上会忽略这个值。使用 OpenAI 的 Python SDK 时,只需将 base_url 指向您的服务器。如果没有设置 --api-key,API 密钥可以是任意字符串:

OpenAI Python客户端
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="sk-no-key-required",
)

resp = client.chat.completions.create(
    model="local",
    messages=[
        {"role": "user", "content": "Donne-moi trois idées de noms pour un projet open source."}
    ],
)
print(resp.choices[0].message.content)
/v1/chat/completions
对话模式,自动应用该模型的聊天模板。
/v1/completions
原始文本补全,不使用角色格式。
/v1/models
列出已加载的模型——方便那些会先查询可用模型的客户端使用。
/v1/embeddings
如果服务器启动时使用了 --embedding,则生成嵌入向量(方便构建自己的 RAG 系统)。
→
聊天模板很重要
为使模型正确格式化对话,请在启动时添加 --jinja 参数:llama-server 将应用嵌入 GGUF 的聊天模板。缺少该参数时,部分新模型的回答会出现偏差。

#4. n-gpu-layers:Ollama 隐藏的精细化 GPU 卸载控制

模型由多层(layers)堆叠而成。放入显存的每一层都由 GPU 计算,速度很快;留在系统内存中的层则由 CPU 计算,速度较慢。--n-gpu-layers(或 -ngl)决定有多少层放到 GPU 上。这是影响速度最重要的设置。

-ngl 99
全部放在 GPU 上。如果模型能完全装入显存,应优先采用这种配置。速度最快。
-ngl 20
部分卸载:20 层在 GPU 上运行,其余层在 CPU 上运行。这是模型所需显存超过 VRAM 容量时的折中方案。
-ngl 0
全部在 CPU 上运行。速度较慢,但能运行远超显卡容量的模型。

策略是:在不占满显存的前提下,尽可能提高 -ngl 的值。Q4 量化的 14B 模型(约 9 GB)在设置 -ngl 99 时,可以完整放入配备 12 GB 显存的 RTX 3060。Q4 量化的 Qwen 3.8 27B(约 18 GB)则放不下;在同一张显卡上,只能将部分模型层卸载到 GPU——例如设置 -ngl 40——并接受运行速度下降。

大模型的部分卸载
# Qwen 3.8 27B Q4 (~18 Go) sur un GPU 12 Go : une partie sur GPU, le reste sur CPU
llama-server -m ./qwen3.8-27b-instruct-q4_k_m.gguf -ngl 40 -c 4096

为监控模型加载时实际占用的VRAM,请在另一窗口中持续关注nvidia-smi:

监控VRAM
nvidia-smi -l 1
i
Flash Attention与批处理
添加 --flash-attn 参数以降低兼容 GPU 上上下文的内存消耗。连续批处理(-cb)默认启用:通过并行槽位(--parallel N)可高效处理多个并发请求。

#5. 内置网页界面

无需 Open WebUI 也无需 Docker 即可进行对话:llama-server 直接在根路径提供聊天界面。只需在浏览器中打开服务器地址即可。

网页界面
http://localhost:8080

这里提供完整的聊天界面:包含对话历史、温度和采样参数设置、系统提示词功能,以及 Markdown 渲染。它足以满足个人日常使用,无需安装任何额外组件。

→
设置模型的显示名称
使用 -a(或 --alias)为模型指定一个可读名称,该名称将出现在 /v1/models 和界面中:llama-server -m modele.gguf -a qwen3.5-9b -ngl 99。

#何时应优先选择 llama-server,何时应继续使用 Ollama

llama-server 和 Ollama 运行相同的引擎。选择本质上是控制力与便利性的权衡。

选择 llama-server
当您想精细调整卸载设置、测试由某个指定量化方提供的特定 GGUF、避免常驻守护进程,或在服务器上部署一个无需依赖的单一二进制文件时。
选择 llama-server
当模型超出您的VRAM时:直接控制-ngl参数及内存选项,将决定模型是‘无法运行’还是‘运行缓慢但可工作’。
继续使用Ollama
当你需要随时在多个模型之间切换,无需重启进程,通过 ollama pull/list 管理模型库,或根据需求自动加载/卸载模型时。
继续使用Ollama
当多个应用通过同一个 11434 端口访问不同模型时,Ollama 会为您处理请求路由和模型切换,而 llama-server 的每个进程只运行一个模型。
i
两者可以共存
没有必要二选一。很多人保留 Ollama,以便日常使用,同时启动一个专用的 llama-server,为生产环境提供某个特定模型,或使用 Ollama 不支持的模型卸载(offloading)设置。

#故障排除

加载时出现「CUDA out of memory」
您的 -ngl 设置过高,超出了显存容量。请降低该值(仅将部分层卸载到 GPU),减小 -c,或改用更轻量的量化方式(用 Q4_K_M 替代 Q5/Q8)。
GPU 未被使用
您使用的二进制程序可能是 CPU 版本。请检查是否使用了 CUDA/Metal/Vulkan 构建版本,以及 -ngl 是否大于 0。nvidia-smi 应显示有显存被占用。
回答不连贯或出现可见标记
聊天模板未生效。请使用 --jinja 参数重新启动,以启用GGUF文件内嵌的模板。
客户端未找到模型
有些客户端会先查询 /v1/models。请使用 -a 设置别名,并在应用的 model 字段中填写这个完全一致的名称。
上下文截断 / 响应截断
-c 设置过小。请增大上下文长度,但需注意大上下文会消耗更多 VRAM。

#深入了解

编译得当的 llama.cpp 和精心选择的 GGUF 才能充分发挥 llama-server 的价值。本网站的以下指南可作为部署过程的补充:

使用 CUDA 编译 llama.cpp
用于获得针对 NVIDIA 优化的二进制程序,并让您的显卡达到最高的每秒 token 数。
Q4、Q5、Q8:选择哪种量化
在下载 GGUF 模型前,用于权衡质量、速度与 VRAM。
llama.cpp 与 vLLM、Exllama 对比
帮助您根据吞吐量需求,比较 llama-server 与其他推理引擎。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。