模型部署¶
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 技术可以在有限显存下运行更大模型。