跳到主要内容

vLLM

vLLM 是一个开源的 LLM 推理和服务引擎。它特别适合作为在本地自行部署 Mistral 模型的平台。

前提条件

  • vLLM 的硬件要求在其安装文档页面上列出。
  • 默认情况下,vLLM 从 Hugging Face 获取模型权重。要访问 Mistral 模型仓库,您需要在 Hugging Face 上进行身份验证,因此需要一个具有 `READ` 权限的访问令牌 `HF_TOKEN`。您还应确保已在每个模型卡页面上接受访问条件。
  • 如果您已经在您的基础设施上拥有模型文件,您可以直接使用它们,只需将 vLLM 指向它们的本地路径,而不是 Hugging Face 模型 ID。在这种情况下,您可以跳过所有与 Hugging Face 相关的设置步骤。

入门

以下部分将指导您在 vLLM 上部署和查询 Mistral 模型的过程。

安装 vLLM

  • 创建一个 Python 虚拟环境并安装 `vllm` 包(版本 `>=0.6.1.post1` 以确保与所有 Mistral 模型最大兼容)。

  • 使用您的访问令牌 `$HF_TOKEN` 在 HuggingFace Hub 上进行身份验证

    huggingface-cli login --token $HF_TOKEN

离线模式推理

在使用 vLLM 的*离线模式*时,模型会被加载并用于一次性的批量推理工作负载。

from vllm import LLM
from vllm.sampling_params import SamplingParams

model_name = "mistralai/Mistral-NeMo-Instruct-2407"
sampling_params = SamplingParams(max_tokens=8192)

llm = LLM(
model=model_name,
tokenizer_mode="mistral",
load_format="mistral",
config_format="mistral",
)

messages = [
{
"role": "user",
"content": "Who is the best French painter. Answer with detailed explanations.",
}
]

res = llm.chat(messages=messages, sampling_params=sampling_params)
print(res[0].outputs[0].text)

服务模式推理

在*服务模式*下,vLLM 会启动一个 HTTP 服务器,该服务器持续等待客户端连接并并发发送请求。该服务器公开了一个实现 OpenAI 协议的 REST API,允许您直接重用依赖 OpenAI API 的现有代码。

启动推理服务器以部署您的模型,例如 Mistral NeMo。

vllm serve mistralai/Mistral-Nemo-Instruct-2407 \
--tokenizer_mode mistral \
--config_format mistral \
--load_format mistral

您现在可以运行带有文本输入的推理请求。

curl --location 'http://localhost:8000/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data '{
"model": "mistralai/Mistral-Nemo-Instruct-2407",
"messages": [
{
"role": "user",
"content": "Who is the best French painter? Answer in one short sentence."
}
]
}'

使用 Docker 部署

如果您希望将 vLLM 部署为容器化推理服务器,您可以利用该项目的官方 Docker 镜像(更多详情请参阅vLLM Docker 文档)。

  • 在您的 shell 中设置 HuggingFace 访问令牌环境变量。

    export HF_TOKEN=your-access-token
  • 运行 Docker 命令以启动容器。

    docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --env "HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}" \
    -p 8000:8000 \
    --ipc=host \
    vllm/vllm-openai:latest \
    --model mistralai/Mistral-NeMo-Instruct-2407 \
    --tokenizer_mode mistral \
    --load_format mistral \
    --config_format mistral

容器启动并运行后,您就可以使用与独立部署相同的代码对您的模型运行推理。