什么时候需要看这页
如果你的 Provider 节点准备用 vLLM 承接推理任务,先按这页把 vLLM 服务和模型实例启动起来。vLLM 暴露的是 OpenAI-compatible 接口,和 Ollama 的 /api 接口不同;Provider Agent 侧需要使用 --api-format vllm。
Token 供应示例里的模型名,例如 qwen3.6:35b、gemma4:26b,是启动 Provider Agent 时使用的平台模型代码。vLLM 本身加载的是 Hugging Face 模型 ID 或本地模型目录;控制台展示的“模型名称”用于下载和启动模型,“模型 ID”用于 vLLM 对外暴露的 OpenAI-compatible 模型标识和 Provider Agent 的 --runtime-model-id。
适用系统和特点
vLLM 主要面向 Linux 服务器和 GPU 推理。官方文档的常规 GPU 路径以 Linux、Python 3.10 到 3.13、NVIDIA CUDA 或 AMD ROCm 为主。
主要优点:
- 吞吐和并发能力强,适合长期在线的 Provider 节点
- 支持 OpenAI-compatible
/v1/models、/v1/chat/completions等接口 - 支持 PagedAttention、连续批处理、prefix caching、chunked prefill 和多 GPU 并行
- 支持 Hugging Face 模型 ID、本地模型目录和多种量化格式
主要限制:
- 安装和驱动环境比 Ollama 更复杂,需要关注 CUDA、ROCm、PyTorch、显存和并行度
- 一次
vllm serve通常服务一个主模型,多个模型一般需要多个进程或额外路由 --max-model-len不能让模型突破自身训练或配置支持的上下文上限
安装 vLLM
NVIDIA CUDA 环境推荐使用 uv 创建独立环境:
uv venv --python 3.12 --seedsource .venv/bin/activateuv pip install vllm --torch-backend=autoAMD ROCm 环境需要使用 ROCm wheel 源,具体版本以 vLLM 官方安装页为准:
uv venv --python 3.12 --seedsource .venv/bin/activateuv pip install vllm --extra-index-url https://wheels.vllm.ai/rocm/也可以直接使用官方 OpenAI-compatible Docker 镜像:
docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=$HF_TOKEN" \ -p 8000:8000 \ --ipc=host \ vllm/vllm-openai:latest \ --model Qwen/Qwen3.6-35B-A3B \ --max-model-len 262144如果模型需要 Hugging Face 鉴权,先设置 HF_TOKEN。首次启动时,vLLM 会把模型下载到 Hugging Face 缓存目录。
准备模型名
vLLM 的 --model 接收 Hugging Face 模型 ID 或本地路径,不接收 Ollama 风格的 name:tag 作为下载目标。
实际使用时,先打开 Provider API 密钥页,在 Token 供应示例中选择目标模型和 vLLM 推理框架,然后分别点击“复制模型名称”和“复制模型 ID”。模型名称用于 vllm serve 的下载来源;模型 ID 是 /v1/models、验证请求里的 model,也是 Provider Agent 的 --runtime-model-id / PROVIDER_AGENT_RUNTIME_MODEL_ID。
常见对应关系可以这样理解,最终以页面里“模型名称 / 模型 ID”显示的值为准:
| Token 供应示例模型名 | vLLM 模型名称 | vLLM 模型 ID | 说明 |
|---|---|---|---|
qwen3.6:35b | Qwen/Qwen3.6-35B-A3B | Qwen/Qwen3.6-35B-A3B | 模型卡标注原生 262144 tokens,适合作为长上下文示例 |
gemma4:26b | google/gemma-4-26B-A4B-it | google/gemma-4-26B-A4B-it | 具体 checkpoint 以你实际下载和平台配置为准 |
vLLM 默认会用 --model 的值作为服务侧模型名。一般保持这个名字即可:
vllm serve Qwen/Qwen3.6-35B-A3B \ --max-model-len 262144 \ --host 0.0.0.0 \ --port 8000如果你确实需要使用 --served-model-name 覆盖返回名称,也应设置为上表中的 vLLM 模型 ID,例如 Qwen/Qwen3.6-35B-A3B,不要设置成 Ollama 风格的 qwen3.6:35b。Provider Agent 的 --runtime-model-id 需要和这个服务侧模型 ID 一致。
设置上下文窗口
vLLM 对应的上下文字段是 max_model_len,命令行参数是 --max-model-len。这个值要根据目标模型要求的“上下文窗口”大小设置,不能默认所有模型都写成同一个数字。下面示例里的 262144 只适用于明确支持 256K 上下文窗口的模型;如果模型要求 128K,则应设置为 131072。
vllm serve Qwen/Qwen3.6-35B-A3B \ --served-model-name Qwen/Qwen3.6-35B-A3B \ --max-model-len 262144 \ --dtype auto \ --host 0.0.0.0 \ --port 8000 \ --api-key runtime-...需要多 GPU 时,按机器情况增加 tensor parallel:
vllm serve Qwen/Qwen3.6-35B-A3B \ --served-model-name Qwen/Qwen3.6-35B-A3B \ --max-model-len 262144 \ --tensor-parallel-size 4 \ --host 0.0.0.0 \ --port 8000注意:
--max-model-len是 prompt 和输出合计的上下文长度- OpenAI 请求体里的
max_tokens只是本次最多生成多少 token,不是上下文窗口 - 如果模型配置本身不支持目标上下文窗口大小,强行设置可能报错、质量下降或显存溢出
- 如果启动时 OOM,先降低
--max-model-len、降低并发、调整量化或增加 GPU 并行
验证 vLLM 服务
如果启动时配置了 --api-key runtime-...,验证时也要带上 Authorization header。
查看模型列表:
curl http://127.0.0.1:8000/v1/models \ -H "Authorization: Bearer runtime-..."做一次非流式推理:
curl http://127.0.0.1:8000/v1/chat/completions \ -H "Authorization: Bearer runtime-..." \ -H "Content-Type: application/json" \ --data-raw '{ "model": "Qwen/Qwen3.6-35B-A3B", "messages": [ { "role": "user", "content": "用一句中文回复:vLLM 服务可用。" } ], "max_tokens": 64, "temperature": 0 }'如果没有配置 --api-key,删掉 Authorization 这一行即可。
启动 Provider Agent
vLLM 服务可用后,再启动 Provider Agent:
./token-provider-agent preflight start \ --model qwen3.6:35b \ --base-url http://127.0.0.1:8000 \ --api-format vllm \ --runtime-model-id Qwen/Qwen3.6-35B-A3B \ --runtime-api-key runtime-...预检通过后正式启动:
./token-provider-agent start \ --api-key stp-... \ --model qwen3.6:35b \ --base-url http://127.0.0.1:8000 \ --api-format vllm \ --runtime-model-id Qwen/Qwen3.6-35B-A3B \ --runtime-api-key runtime-...如果 vLLM 没有启用推理框架 API Key,可以省略 --runtime-api-key。