快速上手

本章用 未门控小模型 跑通两件事:离线生成,以及 OpenAI 兼容 HTTP。请先完成 安装,并确认 nvidia-smi 可见 GPU。

默认对话模型:

Qwen/Qwen2.5-0.5B-Instruct

更小的补全模型(无聊天模板,适合 /v1/completionsLLM.generate):

facebook/opt-125m

两者都不必申请 Llama 许可证。显存仍紧张就换更小的 Instruct,或加 --max-model-len 2048


启动 OpenAI 兼容服务

推荐(新 CLI):

vllm serve Qwen/Qwen2.5-0.5B-Instruct

首次会从 Hugging Face 拉权重,然后监听 8000 端口。日志里出现 Uvicorn / 就绪提示后再发请求。

旧模块入口(仍出现在大量博客里,源码侧已标弃用,以当前文档为准):

python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-0.5B-Instruct

部分更新的提示可能写 vllm server 而不是 vllm serve。不确定就运行 vllm --help

常用开关(完整列表以 --help 为准):

vllm serve Qwen/Qwen2.5-0.5B-Instruct \
  --host 127.0.0.1 \
  --port 8000 \
  --dtype auto \
  --max-model-len 4096

用 curl 打对话接口

基址:http://localhost:8000/v1。Instruct 模型走 Chat Completions

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-0.5B-Instruct",
    "messages": [
      {"role": "user", "content": "用一句话解释什么是 PagedAttention。"}
    ],
    "max_tokens": 128
  }'

Windows 的 WSL 外若用 PowerShell,请用 curl.exe,或:

Invoke-RestMethod -Method Post -Uri "http://localhost:8000/v1/chat/completions" `
  -ContentType "application/json" `
  -Body '{"model":"Qwen/Qwen2.5-0.5B-Instruct","messages":[{"role":"user","content":"Say hello in one sentence."}],"max_tokens":64}'

model 字段通常填你启动时的模型 ID(或 /v1/models 返回的名字)。对上即可。

列出模型:

curl http://localhost:8000/v1/models

用 OpenAI Python SDK

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")

resp = client.chat.completions.create(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    messages=[{"role": "user", "content": "Give two bullets on continuous batching."}],
    max_tokens=128,
)
print(resp.choices[0].message.content)

本机默认往往不校验 Key;若启动时加了 --api-key token-abc123,这里就要填相同字符串。鉴权范围见 生产服务


离线:LLM + SamplingParams

不必起 HTTP,适合批处理脚本:

from vllm import LLM, SamplingParams

llm = LLM(model="facebook/opt-125m")
params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=64)
outputs = llm.generate(
    ["Hello, my name is", "The capital of France is"],
    params,
)
for o in outputs:
    print(o.prompt, "→", o.outputs[0].text)

对话模型可用 llm.chat(...)(API 以你安装的版本为准)。采样细节见 采样与生成参数


第一天清单

  1. nvidia-smi 能看到 GPU
  2. pip install vllmimport vllm 成功
  3. vllm serve Qwen/Qwen2.5-0.5B-Instruct 保持运行
  4. curl 或 SDK 拿到非空 choices[0].message.content
  5. 选做:用 facebook/opt-125m 跑一段离线 generate

失败时先看:显存是否不够(减小 --max-model-len)、Hub 是否下完、端口 8000 是否被占用。


下一步

评论