vllm常用参数总结

1. VLLM常用参数详解

具体参数:
OpenAI 兼容服务器 — vLLM

引擎参数 — vLLM

常用参数:

--host
  主机地址
--port
  端口
--model  
  加载的模型路径
 --trust-remote-code 
  允许模型加载来自 huggingface的远程代码
--tensor-parallel-size 
  采用的卡数,此处为单机多卡状态,多级多卡需先配置ray
--pipeline-parallel-size
  多机配置,多级多卡可采用此配置,但也可以直接在tensor-parallel-size指定足够的卡
  多机多卡文档后续补充
--served-model-name 
  此处为远程API调用时指定的模型名称
--device
  使用的设备名称,常用的为cuda
--dtype
  模型权重和激活的数据类型,常用的为bfloat16,不指定为auto
--max-model-len
  模型处理的上下文长度。如果未指定,将自动从模型配置中派生
--gpu-memory-utilization
  模型GPU利用率,未指定为0.9,长期稳定0.9,不会以为你的模型参数大或小而变化
--enable-prefix-caching
  启用自动前缀缓存,可以避免在多次推理时重复计算相同的前缀
--enforce-eager
  强制使用 Eager 模式,确保所有操作即时执行。默认为False,将在混合模式下使用 Eager 模式和 CUDA 图,以获得最大的性能和灵活性。
以OpenAI形式启动该启动本地模型命令为:(该案例为4卡启动)
python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-72B-Instruct --model /data/models/Qwen2-72B-Instruct --max-model-len 32768 --gpu-memory-utilization 0.9 --tensor-parallel-size 4

API调用方式:

import openai

client = openai.OpenAI(
    base_url="http://启动服务器IP:8000/v1",  若本机调用可使用127.0.0.1
    api_key="可以任意指定",
)

def generate_response(user_input):
    # print("Generating response for engine: ", engine)
    response = client.chat.completions.create(
        messages=[  
            {"role": "system", "content": ''},
            {"role": "user", "content": user_input}
        ],
        model="启动命令时时的served-model-name参数",
    )
    response = response.choices[0].message.content
    return response
source_text = "你是谁"
generate_response(source_text)

2. 终端分析

2.1 查看终端内容

Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 0.0 tokens/s, Running: 2 reqs, Swapped: 0 reqs, Pending: 0 reqs, GPU KV cache usage: 0.2%, CPU KV cache usage: 0.0%.

Avg prompt throughput:平均每秒吞吐量
Avg generation throughput:系统每秒钟生成的token数量
Running:正在处理的请求数量,此处为并发的两个请求正在处理
Swapped:正在交换和挂起的请求
Pending:等待请求的请求数
GPU KV cache usage:GPU KV缓存使用率
CPU KV cache usage:CPU KV缓存使用率

2.2 /metircs接口

请求: curl http://localhost:8000/metircs

输出结果较长,主要分析vllm:

3. 问题汇总

采用的框架为vllm,

部署的Qwen72B是选择环境0.4.3

部署的Llama70B选择的环境是0.5.3

3.1. vllm适配问题

vllm低版本无法适配Llama模型,在vllm0.5.3修复了该问题

Issue:

[Model] Meta Llama 3.1 Know Issues & FAQ · Issue #6689 · vllm-project/vllm (github.com)

原因:HuggingFace 决定在所有 Llama 3.1 模型的 repo 中重命名这个键(“rope_type”而不是“type”),0.5.3及以上版本修复

如果使用0.5.3版本vllm 启动Llama70B时需要添加参数 --rope-scaling='{"type": "extended", "factor": 8.0}'

0.5.4及以上版本不需要该参数

3.2. 请求超时问题

出现情况如图所示:

在请求超过一分钟未响应会默认重新请求

需要修改的为两个地方

  1. VLLM_ENGINE_ITERATION_TIMEOUT_S 此处为vllm配置
    1. 该参数控制引擎每次迭代的超时时间,主要用于处理长时间运行的请求。
      1. 默认为60,单位s,若需要修改,直接使用环境变量即可,vllm源码如下
    2. 请求端配置,需要 把request请求时间延长

3.3. Engine iteration timed out. This should never happen!

Engine iteration timed out. This should never happen!

issue:

[Bug]: Engine iteration timed out. This should never happen! · Issue #4430 · vllm-project/vllm (github.com)

解决办法:启动参数中添加--disable-custom-all-reduce

                                                --enforce-eager可加可不加

3.4. 多并发请求报错

vllm高并发请求,模型报错,可修改的参数列表

  1. --max-model-len 参数用于设置模型的上下文长度。如果未指定,该值将自动从模型配置中派生。如果可以设置模型处理请求的最大token长度,避免服务器压力过大。
  2. --memory-utilization GPU 内存的利用率,范围在 0 到 1 之间,默认值在0.9,可以根据情况修改
  3. --dtype 模型权重和激活值的数据类型。

3.5. NCC连接报错

因为本人在集群上进行配置,须在docker启动中添加NCCL链接,此处也可以配置VLLM的超时时间,单位s

    spec:
      containers:
        - name: XXX
          resources:
             limits:
               memory: 128Gi
               cpu: 128
             requests:
               memory: 64Gi
               cpu: 64
          volumeMounts:
            - mountPath: /data
              name: data
          env:
            - name: GLOO_SOCKET_IFNAME
              value: "eth0"
            - name: NCCL_SOCKET_IFNAME
              value: "eth0"
            - name: VLLM_ENGINE_ITERATION_TIMEOUT_S
              value: "180"

3.6. 推理报错

vllm.engine.async_llm_engine.AsyncEngineDeadError: Background loop has errored already

官方issue:
[Bug]: vllm.engine.async_llm_engine.AsyncEngineDeadError: Background loop has errored already. · Issue #5060 · vllm-project/vllm (github.com)

ENGINE_ITERATION_TIMEOUT_S 设置为 180

timeout=configuration.request_timeout or 180.0

以及添加参数

3.7. ray假死

具体表现为卡在此处

解决办法:

ray 服务启动添加参数 --num-cpus=16 --num-gpus=8

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值