vLLM:高速大语言模型推理指南 | AI生成和翻译

Home 2025.10

vLLM 是一个专为快速、内存高效的大型语言模型推理与服务而设计的开源库。最初由加州大学伯克利分校 Sky Computing 实验室开发,现已发展成为由学术界和工业界共同贡献的社区驱动项目。vLLM 解决了 LLM 部署中的关键挑战,如高延迟、内存碎片化和低吞吐量,使其成为生产环境的理想选择。它支持与 Hugging Face 模型的无缝集成,并提供兼容 OpenAI 的 API 以便快速采用。

核心特性

vLLM 以其卓越性能和灵活性脱颖而出:

这些特性使 vLLM 在保持易用性的同时,能够实现最先进的服务吞吐量。

环境要求

安装指南

可通过 pip 安装 vLLM。推荐使用 uv(快速 Python 环境管理器)进行最优配置:

  1. 按照 uv 文档 安装 uv
  2. 创建虚拟环境并安装 vLLM:

    uv venv --python 3.12 --seed
    source .venv/bin/activate
    uv pip install vllm --torch-backend=auto
    
    • --torch-backend=auto 根据 CUDA 驱动自动选择 PyTorch
    • 特定后端(如 CUDA 12.6):--torch-backend=cu126

也可使用 uv run 执行单次命令而无需永久环境:

   uv run --with vllm vllm --help

Conda 用户可使用:

   conda create -n myenv python=3.12 -y
   conda activate myenv
   pip install --upgrade uv
   uv pip install vllm --torch-backend=auto

非 NVIDIA 环境(如 AMD/Intel)请参考官方安装指南获取平台特定说明,包括 CPU 专用构建。

注意力后端会自动选择;如需覆盖可使用 VLLM_ATTENTION_BACKEND 环境变量。注意:FlashInfer 需要手动安装,因其未包含在预构建轮中。

快速开始

离线批量推理

使用 vLLM 从提示词列表生成文本。示例脚本:

from vllm import LLM, SamplingParams

prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)

llm = LLM(model="facebook/opt-125m")  # 默认从 Hugging Face 下载
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

在线服务(兼容 OpenAI API)

启动服务:

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

服务默认运行在 http://localhost:8000。可通过 --host--port 自定义。

通过 curl 查询(补全端点):

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen/Qwen2.5-1.5B-Instruct",
        "prompt": "San Francisco is a",
        "max_tokens": 7,
        "temperature": 0
    }'

或使用聊天补全:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen/Qwen2.5-1.5B-Instruct",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Who won the world series in 2020?"}
        ]
    }'

使用 Python(OpenAI 客户端):

from openai import OpenAI

openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(api_key=openai_api_key, base_url=openai_api_base)

completion = client.completions.create(
    model="Qwen/Qwen2.5-1.5B-Instruct",
    prompt="San Francisco is a"
)
print("Completion result:", completion)

通过 --api-key <key>VLLM_API_KEY 启用 API 密钥认证。

支持模型

vLLM 通过原生实现或 Hugging Face Transformers 后端支持大量生成式和池化模型,主要类别包括:

完整支持包括 LoRA 适配器、流水线并行和 V1 引擎兼容性。完整支持列表请参阅支持模型文档。自定义模型可通过最小改动集成。

部署方案

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 Qwen/Qwen2.5-1.5B-Instruct

其他部署选项包括 Kubernetes、AWS SageMaker 或直接与 Ray Serve 等框架集成。

性能调优

优化吞吐量和延迟的建议:

进阶使用

详细使用指南请参阅用户文档

参考资源


Back

x-ai/grok-4-fast

Donate