llama-server 与 OpenAI 端点部署指南

通过 llama-server 部署并提供 OpenAI 兼容端点

我们正要部署 Devstral-2 - 参见 Devstral 2 以获取有关该模型的更多详细信息。

获取最新的 llama.cppGitHub(此处)arrow-up-right。你也可以按照下面的构建说明。将 -DGGML_CUDA=ON 更改为 -DGGML_CUDA=OFF 如果你没有 GPU 或者只想使用 CPU 推理。

apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
circle-info

在使用 --jinja 时,如果支持工具,llama-server 会追加以下系统消息: 以 JSON 格式响应,要么使用 tool_call(请求调用工具),要么使用 response 回复用户的请求 。这有时会对微调造成问题!详见 llama.cpp 仓库arrow-up-right 以获取更多细节。

首先下载 Devstral 2:

# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/Devstral-2-123B-Instruct-2512-GGUF",
    local_dir = "Devstral-2-123B-Instruct-2512-GGUF",
    allow_patterns = ["*UD-Q2_K_XL*", "*mmproj-F16*"],
)

要在生产环境中部署 Devstral 2,我们使用 llama-server 在一个新终端(例如通过 tmux)中,通过以下命令部署模型:

当你运行上述命令时,你会得到:

然后在一个新终端,在执行 pip install openai之后,运行:

这将简单地打印出 4。 你可以回到 llama-server 的屏幕,你可能会看到一些可能有趣的统计信息:

关于像使用推测性解码(speculative decoding)这样的参数,参见 https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.mdarrow-up-right

Llama-server 的怪异行为

  • 在使用 --jinja 时,如果支持工具,llama-server 会追加以下系统消息: 以 JSON 格式响应,要么使用 tool_call(请求调用工具),要么使用 response 回复用户的请求 。这有时会对微调造成问题!详见 llama.cpp 仓库arrow-up-right 以获取更多细节。 你可以使用以下方式停止此行为: --no-jinja 但这样一来 tools 将不再被支持。 例如,默认情况下 FunctionGemma 使用:

    但由于 llama-server 追加了一条额外消息,我们得到:

    我们已将此问题报告给 https://github.com/ggml-org/llama.cpp/issues/18323arrow-up-right 并且 llama.cpp 的开发者正在修复中! 在此期间,对于所有微调,请特别为工具调用添加提示!

🧰使用 llama-server 的工具调用

参见 工具调用 LLM 指南 了解如何进行工具调用!

最后更新于

这有帮助吗?