当前位置: 首页 > ai >正文

Vllm-0.10.1:通过vllm bench serve测试TTFT、TPOT、ITL、E2EL四个指标

一、KVM 虚拟机环境

GPU:4张英伟达A6000(48G)

内存:128G

海光Cpu:128核

大模型:DeepSeek-R1-Distill-Qwen-32B

推理框架Vllm:0.10.1

二、四个性能指标介绍

2.1、TTFT:Time to First token

首次生成token时间(ms),TTFT 越短,用户体验越好,TTFT 受 prompt 长度影响很大,如果输入的prompt越长,TTFT就越长。

2.2、TPOT:Time per output token

除首token之后,每个 token 的平均生成时间(ms),TPOT 反映模型的解码速度,受 GPU 性能、KV Cache、batch size 影响。

2.3、ITL:Inter-Token Latency

两个连续 token 之间的实际时间间隔(ms),如果 ITL 波动大,说明生成不平稳

2.4、E2EL:End-to-End Latency

从首token到最后token完成的全部时间(ms)

E2EL=TTFT + TPOT × 输出长度

2.5举个例子

假设你问模型:“请写一篇 1000 字的作文。”

TTFT:800ms(你等了 0.8 秒看到第一个字)

TPOT:60ms(每个字平均 60 毫秒)

ITL:[58, 62, 59, 70, 57, ...](有时快,有时慢)

E2EL:800 + 60 × 999 ≈ 60.74 秒

→ 你等了 1 分钟才看到完整答案。

2.6、优化目标

想优化

关注指标

方法

让模型“更快响应”

TTFT

减少 prompt 长度、启用 chunked prefill、优化 KV Cache

让回答“说得更流畅”

TPOT

升级 GPU、使用 vLLM、减少 batch size

让生成“更稳定”

 ITL

避免资源争抢、使用 PagedAttention

让整体“更快完成”

 E2EL

降低 TTFT 和 TPOT,或减少输出长度

三、测试过程

3.1、启动命令

vllm serve "/mnt/data/models/DeepSeek-R1-Distill-Qwen-32B" \--host "127.0.0.1" \--port 9400 \--gpu-memory-utilization 0.7 \--served-model-name "qwen32b" \--tensor-parallel-size 4 \--chat-template "/mnt/data/models/qwen32_nonthinking.jinja" \--chat-template-content-format "string" \--enable-chunked-prefill \--max-model-len 65536 \--max-num-seqs 32 \--max-num-batched-tokens 131072 \--block-size 32 \--disable-log-requests

3.1.1、如何设置max-model-len?

max-model-len最大可以设置为131072(对应config.json的max_position_embeddings)。

哪max-model-len到底设置多大合适呢?

场景

推荐 max-model-len

普通对话、摘要

32768

长文档处理

65536

超长上下文(如整本书)

131072

我的应用牵涉长文档处理,所以我采用65536。

3.1.2、如何设置max-num-batched-tokens?

max-num-batched-tokens 占用显存,利用下面的公式来计算max-num-batched-tokens设置多大合适?
KV Cache Size (bytes)=2×num_layers×num_kv_heads×head_dim×dtype_size*max-num-batched-tokens
=2*64*8*128*2*131072
=32 GB
大概每张GPU有8G显存用户kv缓存。

剩余:48*0.7-16-8=9.6G(用于其他,如调度开销)

参数

含义

范围

--max-model-len

单个请求的最大 token 数(prompt + 生成)

单 sequence

--max-num-batched-tokens

所有并发请求的 token 总数上限(用于批处理调度)

整个 batch

3.2、测试命令(sharegpt

vllm bench serve \--backend vllm \--base_url  http://127.0.0.1:9400 \--model qwen32b \--tokenizer /mnt/data/models/DeepSeek-R1-Distill-Qwen-32B \--endpoint-type openai-chat \--endpoint /v1/chat/completions \--dataset-name sharegpt \--dataset-path /mnt/data/tools/vllm/ShareGPT_V3_unfiltered_cleaned_split.json \--sharegpt-output-len 1024 \--percentile-metrics ttft,tpot,itl,e2el \--metric-percentiles 95,99 \--num-prompts 16 \--request-rate 8

我的应用要求输出token都比较大,所以我设置成1024。

注:sharegpt-output-len不要设置2048及以上,否则报
Token indices sequence length is longer than the specified maximum sequence length for this model (29557 > 16384). Running this sequence through the model will result in indexing errors

3.2、测试结果

http://www.xdnf.cn/news/20261.html

相关文章:

  • 多线程任务执行窗体框架jjychengTaskWinForm
  • 浅析Linux内核scatter-gather list实现
  • SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
  • WordPress过滤文章插入链接rel属性noopener noreferrer值
  • 开源与定制化对比:哪种在线教育系统源码更适合教育培训APP开发?
  • 企业微信智能表格高效使用指南
  • Kafka Exactly-Once 语义深度解析与性能优化实践指南
  • 串口发送数据
  • 如何离线安装 VirtualMachinePlatform
  • 基于STM32单片机的家庭医护血氧体温血压吃药监测APP系统
  • 万字长文详解 MyCat 分表分库:从 0 到 1 构建高可用订单系统
  • 能发弹幕的简单视频网站
  • 计算机网络:调制解调器
  • Docker-volume数据卷
  • 为什么固态硬盘断电后数据还能保存不丢失?
  • 【LeetCode热题100道笔记】二叉树展开为链表
  • 激光频率梳 3D 轮廓测量 - 油路板的凹槽深度和平面度测量
  • Spring核心-Bean周期
  • ElmentUI之DateTimePicker 日期时间选择器
  • 避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
  • SQLSERVER数据备份
  • Java8 Comparator接口 和 List Steam 排序使用案例
  • 人工智能在医学图像中的应用:从机器学习到深度学习
  • 技术方案详解:如何安全移动已安装软件?
  • C语言精讲(视频教程)
  • 打包 Uniapp
  • Redisson分布式锁:看门狗机制与续期原理
  • nginx安装部署(备忘)
  • ecplise配置maven插件
  • 【知识点讲解】稀疏注意力与LSH技术:从基础到前沿的完整指南