使用 OpenVINO 安装#

由 OpenVINO 驱动的 vLLM 支持来自 vLLM 支持的模型列表 的所有 LLM 模型,并且可以在所有支持 AVX2 的 x86-64 CPU 上以及集成和独立 Intel® GPU 上执行最佳模型服务(支持的 GPU 列表)。OpenVINO vLLM 后端支持以下高级 vLLM 功能:

  • 前缀缓存(--enable-prefix-caching

  • 分块预填充 (--enable-chunked-prefill)

目录:

要求#

  • 操作系统: Linux

  • 指令集架构 (ISA) 要求:至少 AVX2。

使用 Dockerfile 快速开始#

$ docker build -f Dockerfile.openvino -t vllm-openvino-env .
$ docker run -it --rm vllm-openvino-env

从源码安装#

  • 首先,安装 Python。例如,在 Ubuntu 22.04 上,你可以运行:

    $ sudo apt-get update  -y
    $ sudo apt-get install python3
    
  • 其次,安装 vLLM OpenVINO 后端安装的先决条件:

    $ pip install --upgrade pip
    $ pip install -r requirements-build.txt --extra-index-url https://download.pytorch.org/whl/cpu
    
  • 最后,使用 OpenVINO 后端安装 vLLM:

    $ PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" VLLM_TARGET_DEVICE=openvino python -m pip install -v .
    
  • [可选] 要使用带有GPU设备的vLLM OpenVINO后端,请确保您的系统已正确设置。请按照此处提供的说明操作:https://docs.openvino.ai/2024/get-started/configurations/configurations-intel-gpu.html

性能提示#

vLLM OpenVINO 后端环境变量#

  • VLLM_OPENVINO_DEVICE 用于指定推理使用的设备。如果系统中有多个GPU,可以使用额外的索引来选择合适的设备(例如,VLLM_OPENVINO_DEVICE=GPU.1)。如果未指定值,默认使用CPU设备。

  • VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS=ON 以在模型加载阶段启用U8权重压缩。默认情况下,压缩是关闭的。您还可以使用 optimum-cli 以不同的压缩技术导出模型,并将导出的文件夹作为 <model_id> 传递。

CPU 性能提示#

CPU 使用以下环境变量来控制行为:

  • VLLM_OPENVINO_KVCACHE_SPACE 用于指定 KV 缓存大小(例如,VLLM_OPENVINO_KVCACHE_SPACE=40 表示为 KV 缓存分配 40 GB 空间),更大的设置将允许 vLLM 并行处理更多请求。此参数应根据用户的硬件配置和内存管理模式进行设置。

  • VLLM_OPENVINO_CPU_KV_CACHE_PRECISION=u8 用于控制 KV 缓存精度。默认情况下,根据平台使用 FP16 / BF16。

为了提高 TPOT / TTFT 的延迟,您可以使用 vLLM 的分块预填充功能(--enable-chunked-prefill)。根据实验结果,推荐的批处理大小为 256``(–max-num-batched-tokens``)。

OpenVINO 最广为人知的 CPU 配置是:

$ VLLM_OPENVINO_KVCACHE_SPACE=100 VLLM_OPENVINO_CPU_KV_CACHE_PRECISION=u8 VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS=ON \
    python3 vllm/benchmarks/benchmark_throughput.py --model meta-llama/Llama-2-7b-chat-hf --dataset vllm/benchmarks/ShareGPT_V3_unfiltered_cleaned_split.json --enable-chunked-prefill --max-num-batched-tokens 256

GPU 性能提示#

GPU 设备实现了自动检测可用 GPU 内存的逻辑,默认情况下,它会尝试为 KV 缓存保留尽可能多的内存(考虑到 gpu_memory_utilization 选项)。然而,这种行为可以通过使用 VLLM_OPENVINO_KVCACHE_SPACE 环境变量显式指定 KV 缓存所需的内存量来覆盖(例如,VLLM_OPENVINO_KVCACHE_SPACE=8 表示为 KV 缓存分配 8 GB 空间)。

目前,使用GPU可以达到最佳性能的是使用默认的vLLM执行参数,适用于量化权重模型(支持8和4位整数数据类型)和`preemption-mode=swap`。

OpenVINO 最知名的 GPU 配置是:

$ VLLM_OPENVINO_DEVICE=GPU VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS=ON \
    python3 vllm/benchmarks/benchmark_throughput.py --model meta-llama/Llama-2-7b-chat-hf --dataset vllm/benchmarks/ShareGPT_V3_unfiltered_cleaned_split.json

限制#

  • 不支持LoRA服务。

  • 目前仅支持 LLM 模型。LLaVa 和编码器-解码器模型在 vLLM OpenVINO 集成中尚未启用。

  • 张量并行和流水线并行目前在 vLLM 集成中未启用。