离线推理#
您可以在您自己的代码中,在一系列提示上运行 vLLM。
离线 API 基于 LLM
类。要初始化 vLLM 引擎,请创建 LLM
的新实例并指定要运行的模型。
例如,以下代码从 HuggingFace 下载 facebook/opt-125m
模型,并使用默认配置在 vLLM 中运行它。
from vllm import LLM
llm = LLM(model="facebook/opt-125m")
初始化 LLM
实例后,您可以使用各种 API 执行模型推理。可用的 API 取决于正在运行的模型类型
有关每个 API 的更多详细信息,请参阅以上页面。
另请参阅
配置选项#
本节列出了运行 vLLM 引擎最常用的选项。有关完整列表,请参阅引擎参数页面。
模型解析#
vLLM 通过检查模型仓库的 config.json
中的 architectures
字段,并查找注册到 vLLM 的相应实现来加载兼容 HuggingFace 的模型。然而,由于以下原因,我们的模型解析可能会失败
模型仓库的
config.json
缺少architectures
字段。非官方仓库使用 vLLM 中未记录的替代名称来引用模型。
相同的架构名称用于多个模型,从而造成应加载哪个模型的不明确性。
为了解决这个问题,请通过将 config.json
覆盖传递给 hf_overrides
选项来显式指定模型架构。例如
from vllm import LLM
model = LLM(
model="cerebras/Cerebras-GPT-1.3B",
hf_overrides={"architectures": ["GPT2LMHeadModel"]}, # GPT-2
)
我们的支持的模型列表显示了 vLLM 识别的模型架构。
减少内存使用#
大型模型可能会导致您的机器内存不足 (OOM)。以下是一些有助于缓解此问题的选项。
张量并行 (TP)#
张量并行(tensor_parallel_size
选项)可用于跨多个 GPU 拆分模型。
以下代码将模型拆分到 2 个 GPU 上。
llm = LLM(model="ibm-granite/granite-3.1-8b-instruct",
tensor_parallel_size=2)
重要提示
为确保 vLLM 正确初始化 CUDA,您应避免在初始化 vLLM 之前调用相关函数(例如 torch.cuda.set_device()
)。否则,您可能会遇到类似 RuntimeError: Cannot re-initialize CUDA in forked subprocess
的错误。
要控制使用哪些设备,请改为设置 CUDA_VISIBLE_DEVICES
环境变量。
量化#
量化模型占用更少的内存,但会降低精度。
静态量化模型可以从 HF Hub 下载(一些流行的模型可在 Neural Magic 上找到),并直接使用,无需额外配置。
动态量化也通过 quantization
选项支持 – 有关更多详细信息,请参阅此处。
上下文长度和批大小#
您可以通过限制模型的上下文长度(max_model_len
选项)和最大批大小(max_num_seqs
选项)来进一步减少内存使用。
from vllm import LLM
llm = LLM(model="adept/fuyu-8b",
max_model_len=2048,
max_num_seqs=2)
调整缓存大小#
如果您的 CPU RAM 耗尽,请尝试以下选项
(仅限多模态模型)您可以使用
VLLM_MM_INPUT_CACHE_GIB
环境变量(默认为 4 GiB)设置多模态输入缓存的大小。(仅限 CPU 后端)您可以使用
VLLM_CPU_KVCACHE_SPACE
环境变量(默认为 4 GiB)设置 KV 缓存的大小。
性能优化和调优#
您可以通过微调各种选项来潜在地提高 vLLM 的性能。有关更多详细信息,请参阅本指南。