1. VLLM常用参数详解
具体参数:
OpenAI 兼容服务器 — 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. 请求超时问题
出现情况如图所示:
在请求超过一分钟未响应会默认重新请求
需要修改的为两个地方
- VLLM_ENGINE_ITERATION_TIMEOUT_S 此处为vllm配置
- 该参数控制引擎每次迭代的超时时间,主要用于处理长时间运行的请求。
- 默认为60,单位s,若需要修改,直接使用环境变量即可,vllm源码如下
- 请求端配置,需要 把request请求时间延长
- 该参数控制引擎每次迭代的超时时间,主要用于处理长时间运行的请求。
3.3. Engine iteration timed out. This should never happen!
Engine iteration timed out. This should never happen!
issue:
解决办法:启动参数中添加--disable-custom-all-reduce
--enforce-eager可加可不加
3.4. 多并发请求报错
vllm高并发请求,模型报错,可修改的参数列表
- --max-model-len 参数用于设置模型的上下文长度。如果未指定,该值将自动从模型配置中派生。如果可以设置模型处理请求的最大token长度,避免服务器压力过大。
- --memory-utilization GPU 内存的利用率,范围在 0 到 1 之间,默认值在0.9,可以根据情况修改
- --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
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