跳到内容

高级配置选项

为了根据您的具体需求调整设置,您可以使用 vLLM 服务器和基准测试的可选高级配置。这些配置允许您通过其他环境变量或配置文件来精细调整性能、内存使用和请求处理。对于大多数用户来说,基本设置已足够,但高级用户可能会从这些自定义设置中受益。

使用带自定义参数的 Docker Compose 运行 vLLM

此配置允许您在启动服务器时提供额外的环境变量来覆盖默认设置。这允许对性能和内存使用进行精细调整。

下表列出了可用变量

可变 描述
PT_HPU_LAZY_MODE 启用惰性执行模式,可能通过批处理操作来提高性能。
VLLM_SKIP_WARMUP 跳过模型预热阶段以减少启动时间。这可能会影响初始延迟。
MAX_MODEL_LEN 设置模型支持的最大序列长度。
MAX_NUM_SEQS 指定并发处理的最大序列数。
TENSOR_PARALLEL_SIZE 定义张量并行度。
VLLM_EXPONENTIAL_BUCKETING 启用或禁用用于预热策略的指数分桶。
VLLM_DECODE_BLOCK_BUCKET_STEP 配置解码块分配的步长,影响内存粒度。
VLLM_DECODE_BS_BUCKET_STEP 设置解码操作的批量大小步长,影响解码批次的组合方式。
VLLM_PROMPT_BS_BUCKET_STEP 调整提示处理的批量大小步长。
VLLM_PROMPT_SEQ_BUCKET_STEP 控制提示序列分配的步长。

如以下示例所示,在运行 vLLM 服务器时设置首选变量,使用 Docker Compose

MODEL="Qwen/Qwen2.5-14B-Instruct" \
HF_TOKEN="<your huggingface token>" \
DOCKER_IMAGE="vault.habana.ai/gaudi-docker/1.22.2/ubuntu24.04/habanalabs/vllm-plugin-2.7.1:latest" \
TENSOR_PARALLEL_SIZE=1 \
MAX_MODEL_LEN=2048 \
docker compose up

使用自定义参数运行 vLLM 和基准测试

此配置允许您在运行 Docker Compose 之前设置其他环境变量来自定义基准测试行为。

下表列出了可用变量

可变 描述
INPUT_TOK 每个提示的输入 token 数。
OUTPUT_TOK 每个提示要生成的输出 token 数。
CON_REQ 基准测试期间的并发请求数。
NUM_PROMPTS 基准测试中要使用的提示总数。

如以下示例所示,在运行 vLLM 服务器时设置首选变量,使用 Docker Compose

MODEL="Qwen/Qwen2.5-14B-Instruct" \
HF_TOKEN="<your huggingface token>" \
DOCKER_IMAGE="vault.habana.ai/gaudi-docker/1.22.2/ubuntu24.04/habanalabs/vllm-plugin-2.7.1:latest" \
INPUT_TOK=128 \
OUTPUT_TOK=128 \
CON_REQ=16 \
NUM_PROMPTS=64 \
docker compose --profile benchmark up

这将启动 vLLM 服务器并使用您指定的参数运行基准测试。

使用组合自定义参数运行 vLLM 和基准测试

此配置允许您一起启动 vLLM 服务器和基准测试。您可以设置前面提到的服务器和基准测试特定变量的任何组合。如以下示例所示,在运行 vLLM 服务器时使用 Docker Compose 设置首选变量

MODEL="Qwen/Qwen2.5-14B-Instruct" \
HF_TOKEN="<your huggingface token>" \
DOCKER_IMAGE="vault.habana.ai/gaudi-docker/1.22.2/ubuntu24.04/habanalabs/vllm-plugin-2.7.1:latest" \
TENSOR_PARALLEL_SIZE=1 \
MAX_MODEL_LEN=2048 \
INPUT_TOK=128 \
OUTPUT_TOK=128 \
CON_REQ=16 \
NUM_PROMPTS=64 \
docker compose --profile benchmark up

此命令将启动服务器并使用提供的配置执行基准测试。

使用配置文件运行 vLLM 和基准测试

此配置允许您通过 YAML 配置文件配置服务器和基准测试。

下表列出了可用的环境变量

可变 描述
VLLM_SERVER_CONFIG_FILE Docker 容器内服务器配置文件路径。
VLLM_SERVER_CONFIG_NAME 服务器配置部分的名称。
VLLM_BENCHMARK_CONFIG_FILE 容器内基准测试配置文件路径。
VLLM_BENCHMARK_CONFIG_NAME 基准测试配置部分的名称。

如以下示例所示,在运行 vLLM 服务器时设置首选变量,使用 Docker Compose

HF_TOKEN=<your huggingface token> \
VLLM_SERVER_CONFIG_FILE=server/server_scenarios_text.yaml \
VLLM_SERVER_CONFIG_NAME=llama31_8b_instruct \
VLLM_BENCHMARK_CONFIG_FILE=benchmark/benchmark_scenarios_text.yaml \
VLLM_BENCHMARK_CONFIG_NAME=llama31_8b_instruct \
docker compose --profile benchmark up

注意

使用配置文件时,您不需要设置 MODEL 变量,因为模型详细信息包含在配置文件中。但是,仍然需要 HF_TOKEN 标志。

直接使用 Docker 运行 vLLM

为了获得最大的控制权,您可以使用 docker run 命令直接运行服务器,允许完全自定义 Docker 运行时设置,如下面的示例所示

docker run -it --rm \
    -e MODEL=$MODEL \
    -e HF_TOKEN=$HF_TOKEN \
    -e http_proxy=$http_proxy \
    -e https_proxy=$https_proxy \
    -e no_proxy=$no_proxy \
    --cap-add=sys_nice \
    --ipc=host \
    --runtime=habana \
    -e HABANA_VISIBLE_DEVICES=all \
    -p 8000:8000 \
    --name vllm-server \
    <docker image name>

此方法提供了在容器内执行 vLLM 服务器的完全灵活性。

固定 CPU 核心以提高内存访问一致性

为了提高内存访问一致性并将 CPU 释放给其他仅 CPU 工作负载(例如 Llama3 8B 的 vLLM 服务),您可以使用自动生成的 docker-compose.override.yml 文件,根据不同的 CPU 非一致性内存访问 (NUMA) 节点来固定 CPU 核心。以下过程说明了该过程。

当前经过此设置验证的 Xeon 处理器包括:Intel Xeon 6960P 和 Intel Xeon PLATINUM 8568Y+。

  1. 安装所需的 Python 库。

    pip install -r vllm-gaudi/.cd/server/cpu_binding/requirements_cpu_binding.txt
    
  2. 使用 docker-compose.override.yml 文件固定 CPU 核心。

    export MODEL="Qwen/Qwen2.5-14B-Instruct"
    export HF_TOKEN="<your huggingface token>"
    export DOCKER_IMAGE="<docker image url>"
    python3 server/cpu_binding/generate_cpu_binding_from_csv.py --settings server/cpu_binding/cpu_binding_gnr.csv --output ./docker-compose.override.yml
    docker compose --profile benchmark up
    
  3. docker-compose.override.yml 中指定服务名称,将空闲 CPU 绑定到另一个服务,例如 vllm-cpu-service,如下面的示例所示

    export MODEL="Qwen/Qwen2.5-14B-Instruct"
    export HF_TOKEN="<your huggingface token>"
    export DOCKER_IMAGE="<docker image url>"
    python3 server/cpu_binding/generate_cpu_binding_from_csv.py --settings server/cpu_binding/cpu_binding_gnr.csv --output ./docker-compose.override.yml --cpuservice vllm-cpu-service
    docker compose --profile benchmark -f docker-compose.yml -f docker-compose.vllm-cpu-service.yml -f docker-compose.override.yml up