简介:
vLLM 是一个用于大规模语言模型 (LLM) 推理和服务的高吞吐量和高效的 Python 库。 它旨在简化 LLM 的部署,并显著提高推理速度,同时降低成本。 vLLM 专注于优化内存管理和调度,以实现卓越的性能。
核心特性:
PagedAttention: vLLM 的核心创新是 PagedAttention 算法。 传统的注意力机制需要为每个 token 存储所有先前的 key 和 value,这导致了巨大的内存占用,尤其是在长序列中。 PagedAttention 将注意力 key 和 value 分成页面,类似于操作系统中的虚拟内存分页。 这允许 vLLM 动态地管理和共享注意力内存,从而显著减少内存浪费,并支持更长的序列和更大的批处理大小。
连续批处理: vLLM 支持连续批处理,这意味着它可以动态地将来自不同请求的 token 组合成一个批次进行处理。 这最大限度地利用了 GPU 资源,并提高了吞吐量。
高效的 CUDA 内核: vLLM 使用高度优化的 CUDA 内核来实现 PagedAttention 和其他操作。 这些内核经过精心设计,以充分利用 GPU 的并行处理能力。
易于使用: vLLM 提供了一个简单易用的 Python API,可以轻松地集成到现有的 LLM 应用程序中。 它还支持多种流行的 LLM 框架,如 Hugging Face Transformers。
支持多种模型架构: vLLM 支持多种流行的 LLM 架构,包括:
分布式推理: vLLM 支持分布式推理,允许您跨多个 GPU 扩展 LLM 推理。
Tensor 并行: 支持 Tensor 并行,进一步提升分布式推理的性能。
流式输出: vLLM 支持流式输出,允许您在生成 token 时立即接收它们,而无需等待整个序列完成。
OpenAI API 兼容性: vLLM 提供与 OpenAI API 兼容的服务器,方便从 OpenAI 迁移或集成。
主要优势:
安装:
可以使用 pip 安装 vLLM:
pip install vllm
快速入门:
以下是一个使用 vLLM 进行文本生成的简单示例:
from vllm import LLM, SamplingParams
# 加载模型
llm = LLM(model="facebook/opt-125m")
# 定义采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=256)
# 生成文本
prompts = ["Hello, my name is", "The capital of France is"]
outputs = llm.generate(prompts, sampling_params)
# 打印输出
for output in outputs:
print(output.prompt)
print(output.outputs[0].text)
用例:
vLLM 适用于各种 LLM 应用,包括:
贡献:
vLLM 是一个开源项目,欢迎社区贡献。 您可以通过提交问题、提出功能请求或提交拉取请求来参与。
总结:
vLLM 是一个强大的 LLM 推理和服务引擎,它提供了卓越的性能、易用性和灵活性。 无论您是构建聊天机器人、生成文本还是执行其他 LLM 任务,vLLM 都可以帮助您提高效率并降低成本。 它的 PagedAttention 机制是其核心创新,使其能够处理长序列并实现高吞吐量。 强烈建议您尝试 vLLM,看看它如何改进您的 LLM 工作流程。