趋近智
量化虽然显著减少了内存占用,并能加速单个操作的计算,但在服务大型语言模型 (LLM) 时,要实现高吞吐量会带来额外难题,尤其是在并发请求的内存管理方面。传统方法常遇到内存碎片和低效批处理的问题。在此,vLLM 等专用推理引擎显得尤其有价值。vLLM 是一个开源库,专门用于快速且内存高效的 LLM 推理,使其成为在重负载下部署量化模型的理想选择。
服务 LLM 涉及管理大型张量,特别是注意力机制所需的键值 (KV) 缓存。每个用户请求都会生成自己的 KV 缓存,该缓存会随生成的序列长度增加。在高并发环境里,高效管理这些缓存很困难:
vLLM 通过其核心创新:分页注意力 (PagedAttention),直接解决了这些内存难题。受操作系统中虚拟内存和分页技术的启发,分页注意力将 KV 缓存管理在称为“页”的非连续内存块中。
与为每个序列分配一个大块内存不同,序列的 KV 缓存存储在可能许多更小的、固定大小的块中。块表将逻辑块(序列缓存中的位置)映射到物理块(GPU 内存中的实际位置)。
这种方法有以下几个优点:
分页注意力的高效内存管理直接促成了一种更动态、更有效的批处理策略,称为连续批处理。
与静态批处理不同,连续批处理允许推理引擎以更细粒度的步骤运行。当当前批处理中的序列完成生成时,它会立即从批处理中移除,其内存资源(物理块)被回收。调度器可以立即将新的等待请求插入批处理中,确保 GPU 尽可能持续接近其最大能力进行处理。
这消除了与等待静态批处理中最慢序列相关的空闲时间,并大幅提升了整体 GPU 利用率,从而提高吞吐量。
静态批处理常导致 GPU 空闲,等待最长序列完成,而 vLLM 的连续批处理通过使用分页注意力动态管理请求,使 GPU 保持忙碌。
vLLM 原生支持与 LLM 相关的常见量化方法,例如激活感知权重量化 (AWQ) 和 GPTQ。这意味着您可以将量化带来的模型大小减小和潜在的计算加速,与分页注意力和连续批处理带来的吞吐量提升结合起来。
在 vLLM 中加载量化模型通常很简单。该库通常会根据模型文件自动检测量化类型,或允许明确指定。
这是一个使用 vLLM Python API 加载并运行 AWQ 量化模型推理的示例:
from vllm import LLM, SamplingParams
# 指定量化模型的路径或 Hugging Face 标识符
# vLLM 通常会自动检测 AWQ/GPTQ 格式
model_id = "your-org/your-quantized-model-awq"
# 定义生成采样参数
sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=100)
# 初始化 vLLM 引擎
# 如果自动检测失败,明确设置 quantization='awq'
# tensor_parallel_size 可用于多 GPU 推理
llm = LLM(model=model_id,
quantization="awq", # 通常可选,取决于模型格式
trust_remote_code=True, # 某些模型必需
# tensor_parallel_size=2 # 2 块 GPU 示例
)
# 准备提示(可以是列表用于批处理)
prompts = [
"vLLM 中 PagedAttention 的原理是什么?",
"量化 LLM 提供的好处包括",
]
# 运行推理
outputs = llm.generate(prompts, sampling_params)
# 打印结果
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}")
print(f"Generated: {generated_text!r}\n")
# 对于服务,vLLM 还提供一个兼容 OpenAI 的服务器:
# python -m vllm.entrypoints.openai.api_server --model your-org/your-quantized-model-awq --quantization awq
此示例演示了如何加载 AWQ 模型。GPTQ 模型的处理过程类似,通常只需更改 quantization 参数或依赖自动检测。
通过采用分页注意力和连续批处理,vLLM 在处理高并发和可变序列长度时,通常能实现显著更高的吞吐量(按每秒请求数或每秒 token 数衡量),与基线 Hugging Face transformers 实现或 TGI 等其他优化服务器相比。在服务量化模型时,其优势尤为明显,因为每个序列的内存占用更低,允许同时批处理更多请求。
示意性比较,说明了 vLLM 潜在的吞吐量提升,特别是在高并发情况下,服务量化模型时。实际性能因模型、硬件和工作负载而异。
请注意:
总而言之,vLLM 为服务 LLM 提供了一个强大的引擎,其通过分页注意力和连续批处理实现的复杂内存管理使其非常适合部署量化模型。通过使用 vLLM,您可以最大化量化 LLM 的吞吐量,同时服务更多用户并有效使用您的硬件资源。量化与高级服务技术的这种结合对于构建可扩展且经济高效的 LLM 应用程序必不可少。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造