1. 调优前的准备:建立你的性能基线
在昇腾NPU上折腾vLLM,最忌讳的就是上来就一顿参数猛改。我见过不少朋友,模型一跑起来,看到吞吐量不太满意,就立刻去改--block-size、调--max-num-seqs,结果调了半天,性能不仅没上去,还可能引入了新的问题,最后连问题出在哪都搞不清楚。
所以我的第一条经验是:先别急着调,把现状摸清楚。这就好比医生看病,总得先量个体温、测个血压,才知道从哪儿下手。性能调优也一样,我们需要一个客观、可量化的“体检报告”。
vLLM官方提供了两个非常好用的基准测试脚本,就在benchmarks目录下。在昇腾环境里,你得先确保vllm_ascend插件装好了,不然这些脚本可能跑不起来。
吞吐量测试,测的是你系统的“极限体力”。想象一下,让模型一刻不停地处理海量请求,看看它每秒能吐出多少个Token。这个指标对于评估硬件算力上限、做容量规划特别有用。命令很简单:
python3 benchmarks/benchmark_throughput.py \
--model /你的/模型/路径 \
--input-len 128 \
--output-len 128 \
--num-prompts 5000 \
--dtype float16 \
--tensor-parallel-size 1
这里有几个参数你得留意:--num-prompts是总的请求数,我建议你设大一点,比如5000或10000,这样才能让NPU充分“热”起来,跑出稳定值。--input-len和--output-len模拟了请求的输入输出长度,你可以根据自己业务的典型场景来调整。跑完以后,你会看到一个Throughput: xxxx tokens/s的结果。拿这个数去跟官方公布的性能数据或者同配置下的社区数据比比看,如果差距明显(比如别人能跑3000,你只有2000),那说明优化空间很大。
延迟测试,测的是系统的“反应速度”。这对在线服务、聊天机器人这类交互式应用至关重要。用户可不想等半天才看到第一个字。这个测试需要先启动一个API服务,再用另一个脚本去模拟客户端请求:
# 终端1:启动服务
python3 -m vllm.entrypoints.api_server \
--model /你的/模型/路径 \
--port 8000 \
--block-size 128 &
# 终端2:运行延迟测试
python3 benchmarks/benchmark_serving.py \
--backend vllm \
--model /你的/模型/路径 \
--dataset-name random \
--request-rate 5
关键是要关注--request-rate,它模拟了每秒的请求量(QPS)。你可以从低到高慢慢增加这个值,比如从1、5、10一直加到50,观察延迟的


851

被折叠的 条评论
为什么被折叠?



