首页 > 其他分享 >vllm常用参数总结

vllm常用参数总结

时间:2024-09-06 11:21:41浏览次数:12  
标签:总结 请求 -- 模型 参数 vllm name

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 图,以获得最大的性能和灵活性。
常用启动本地模型命令为:
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

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

标签:总结,请求,--,模型,参数,vllm,name
From: https://blog.csdn.net/baiyipiao/article/details/141930442

相关文章

  • llama_vllm对话问答基础语言模型集合
    LLAMA论文https://arxiv.org/pdf/2302.13971.pdf模型结构LLAMA网络基于Transformer架构。提出了各种改进,并用于不同的模型,例如PaLM。以下是与原始架构的主要区别:预归一化。为了提高训练稳定性,对每个transformer子层的输入进行归一化,而不是对输出进行归一化。使用RMSN......
  • 文件和路径相关的函数和方法总结
    1.文件操作open(file,mode):打开文件,模式常见选项:'r':读取'w':写入(覆盖)'a':追加fileObj.write(content):将内容写入文件,返回写入的字符数。fileObj.readlines():读取所有行并返回一个列表。fileObj.readline():读取文件的一行。withopen(file):上下文管理,自动关闭文件。2.os......
  • python 命令行参数解析
    追加参数pythonexample.pyNewYorkLosAngelesChicago给参数申明分配内存Locations:['NewYork','LosAngeles','Chicago']具体实现importargparseparser=argparse.ArgumentParser(description='Processsomelocations.')parser.ad......
  • JavaWeb - Spring Boot - 请求参数
    @RequestMapping从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。SpringMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。@RequestMapping标识一个类:设置映射请求的请求路径的初始信......
  • Java泛型-类型参数化
    一.泛型解决支持多类型参数的方案:1,重载:在同一个类中,方法名相同,参数不同不足之处:代码过于重复publicclassTool{  publicStringarrToStr(String[]arr,Stringsymbol){    Stringstr="";    for(Stringv:arr){      str+=s......
  • Postman请求参数:Query、Path、Body 详解
    Postman作为一个功能强大的工具,极大地简化了API测试和调试的过程,提供了发送请求和检查响应的直接方法。本文将着重介绍如何在Postman中高效地处理请求参数,以提高API测试和开发的便利性。1、解析请求参数首先,我们需要明白什么是请求参数。简单来说,请求参数是传递......
  • Unet改进21:添加AKConv||具有任意采样形状和任意数目参数的卷积核
    本文内容:添加PCONV论文简介摘要。基于卷积运算的神经网络在深度学习领域取得了显著的成果,但标准卷积运算存在两个固有缺陷。一方面,卷积运算被限制在一个局部窗口,不能从其他位置捕获信息,并且其采样形状是固定的;另一方面,卷积核的大小是固定为k×k的,它是一个固定的方形形......
  • python学习总结之面向对象
    1.面向对象(上)1.1定义面向对象编程:oop[objectorientedprogramming]是一种python的编程思路;面向过程:就是我们一开始学习的,按照解决问题的步骤去写代码【根据业务逻辑去写代码】,在思考问题的时候,首先分析'怎么按照步骤去实现'然后将问题解决拆解成若干个步骤,并将这些步骤对......
  • 【编码技巧】批量校验或处理关联引用数据的优化总结
    问题描述:      之前有信创项目反馈了一个批量导入的性能问题,400条数据需要3分钟,5000条需要20分钟以上,系统初始需要导入的各类数据有上百万。原因分析:      联系项目导入20~30条数据,并启用程序跟踪收集性能数据发现,有大量对字典表的SQL查询。      与功能......
  • 业务复杂度治理方法论--十年系统设计经验总结
    一、复杂度综述1、什么是复杂度软件设计的核心在于降低复杂性。--《软件设计的哲学》业界对于复杂度并没有统一的定义,斯坦福教授JohnOusterhout从认知负担和工作量方面给出了一个复杂度量公式子模块的复杂度cp乘以该模块对应的开发时间权重值tp,累加后得到系统的整体复杂度C这里的......