Skip to content

模型部署

ONNX(Open Neural Network Exchange)是一种深度学习模型的“通用格式”。

vLLM, Hugging Face等

vLLM 详解

vLLM 是一个高速大语言模型推理服务框架,由 UC Berkeley 于 2023 年开源。


核心问题:为什么需要 vLLM?

传统 LLM 推理的 KV Cache 痛点:

传统方式(连续内存分配) ┌────────────────────────────────────┐ │ Request 1: ████████░░░░░░░░░░░░░░ │ 浪费 │ Request 2: ░░░░░░████████░░░░░░░░ │ 浪费 │ Request 3: ░░░░░░░░░░░░██████████ │ └────────────────────────────────────┘ ❌ 问题: 1. 预分配固定大小,序列短了浪费显存 2. 序列长了无法扩展,必须重新分配 3. 不同请求的显存无法共享利用


vLLM 的解决方案:PagedAttention

借鉴操作系统 虚拟内存 + 分页管理 思想:

vLLM 方式(分页管理) ┌────────────────────────────────────┐ │ Block Pool (共享显存池) │ │ ┌────┐┌────┐┌────┐┌────┐┌────┐ │ │ │ B1 ││ B2 ││ B3 ││ B4 ││ B5 │ ... │ │ └────┘└────┘└────┘└────┘└────┘ │ └────────────────────────────────────┘ ↓ ↓ Request 1 Request 2 (B1+B2) (B3+B4+B5)

✅ 优势: 1. 按需分配 Block,不浪费 2. 序列增长只需追加新 Block 3. 多请求共享 Block Pool 4. 实现高效的连续批处理


性能对比

┌────────────┬─────────────┬────────┬──────┐ │ 指标 │ HuggingFace │ vLLM │ 提升 │ ├────────────┼─────────────┼────────┼──────┤ │ 吞吐量 │ 1x │ 10-20x │ 🔥 │ ├────────────┼─────────────┼────────┼──────┤ │ 显存利用率 │ ~60% │ ~95% │ 🔥 │ ├────────────┼─────────────┼────────┼──────┤ │ 并发能力 │ 弱 │ 强 │ 🔥 │ └────────────┴─────────────┴────────┴──────┘


简单使用示例

from vllm import LLM, SamplingParams

初始化模型

约 505 个字 预计阅读时间 2 分钟

llm = LLM(model="meta-llama/Llama-2-7b-hf")

生成参数

sampling_params = SamplingParams(temperature=0.8, top_p=0.95)

批量生成

prompts = ["Hello, my name is", "The future of AI is"] outputs = llm.generate(prompts, sampling_params)

输出结果

for output in outputs: print(output.outputs[0].text)


面试常问问题

┌───────────────────────────┬────────────────────────────────────────────────┐ │ 问题 │ 简答 │ ├───────────────────────────┼────────────────────────────────────────────────┤ │ PagedAttention 核心思想? │ 将 KV Cache 分块管理,类似 OS 虚拟内存分页 │ ├───────────────────────────┼────────────────────────────────────────────────┤ │ 为什么吞吐量高? │ 连续批处理 + 显存高效利用 + 减少 fragmentation │ ├───────────────────────────┼────────────────────────────────────────────────┤ │ 和 Flash Attention 区别? │ Flash Attention 优化计算;vLLM 优化显存管理 │ ├───────────────────────────┼────────────────────────────────────────────────┤ │ 适用场景? │ 高并发 API 服务、多用户同时访问 │ └───────────────────────────┴────────────────────────────────────────────────┘


关键技术点总结

vLLM = PagedAttention + Continuous Batching + KV Cache 管理 ↓ ↓ ↓ 分页显存管理 动态批处理 高效内存复用

在大模型场景下,主要关注 VRAM(显存)和 RAM(内存)。

VRAM 存储模型参数和计算数据,速度最快;RAM 可用于 CPU Offload临时存储参数。

vLLM 通过 PagedAttention 高效管理 VRAM,结合 CPU Offload 技术可以在有限显存下运行更大模型。