一、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.pswp.cn/diannao/98177.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98177.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98177.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑回归基础

昨天一直在复盘梯度下降,都没咋预习逻辑回归,好在不是很难,来捋捋逻辑回归简介逻辑回归是解决分类问题数学基础-sigmoid函数还要回顾一下概率论极大似然估计再来看一下对数逻辑回归原理逻辑回归的损失函数例子:分类问题评估混淆矩…

STM32----W25QXX

W25QXX款图W25QXX存储解读块--->扇-->页块分成128块一块64kb一块分成16扇一扇4kb一个扇区分成16页,页的大小是256个字节 当数据传入W25QXX最小的擦除单元是扇区当已经输入了一页的数据,这时RAM的数据会转存进FLASH,这时会置一个标志位&…

【Kafka】Kafka使用场景用例Kafka用例图

【Kafka】Kafka使用场景用例&Kafka用例图一、Kafka用例总图二、Kafka用例图示三、Kafka场景案例图一、Kafka用例总图 二、Kafka用例图示 三、Kafka场景案例图 注:以上图片来源于网络,如有不妥请私信删除!

Altium Designer(AD24)集成开发环境简介

🏡《专栏目录》 目录 1,概述 2,界面介绍 2,搜索功能简介 1,概述 Altium Designer 24的原理图,PCB等设计工作都是在集成开发环境中进行的,本文简单介绍集成开发环境界面。 2,界面介绍 如下图所示,Altium Designer 24的集成开发环境,包括: 标题栏:目前设计中文件的…

[论文阅读] 软件工程 | 告别“线程安全玄学”:基于JMM的Java类静态分析,CodeQL3分钟扫遍GitHub千仓错误

告别“线程安全玄学”:基于JMM的Java类静态分析,CodeQL3分钟扫遍GitHub千仓错误 论文信息类别详情论文原标题Scalable Thread-Safety Analysis of Java Classes with CodeQL主要作者及机构1. Bjrnar Haugstad Jatten(哥本哈根IT大学&#xff…

jQuery.ajax() 方法核心参数详解

大家好,欢迎来到程序视点!我是你们的老朋友.小二!jQuery.ajax() 方法核心参数详解基础参数url类型:String功能:请求地址,默认当前页地址。type类型:String(get/post为主,…

LCR 175. 计算二叉树的深度【简单】

LCR 175. 计算二叉树的深度【简单】 题目描述 某公司架构以二叉树形式记录,请返回该公司的层级数。 示例 1:输入:root [1, 2, 2, 3, null, null, 5, 4, null, null, 4] 输出: 4 解释: 上面示例中的二叉树的最大深度是 4,沿着路…

AI驱动健康升级:新零售企业从“卖产品”到“卖健康”的转型路径

随着健康意识的不断提升,健康管理增值服务正逐渐成为零售企业的核心竞争力。消费者对“产品服务”的需求激增,企业亟需构建覆盖健康评估、干预到跟踪的营养健康管理体系,通过数据化手段提升用户粘性。在此背景下,AI技术正推动健康…

2025年最新三维WebGIS开发学习路线图深度解析

地信小白为何学习webgis?我们在后台经常收到同学们关于地信测绘等专业的吐槽,总结后主要分为以下几类:第一种吐槽学校理论与实践脱节的,学校课程偏重理论,缺乏企业级真实项目经验,导致同学们简历空洞、单一…

15-Java-面向对象-标准JavaBean类

文章目录标准JavaBean类标准JavaBean类 类名需要见名知意成员变量使用private修饰提供至少两个构造方法 无参构造方法带全部参数的构造方法 成员方法 提供每一个成员变量对应的setXxx()/getXxx()如果还有其他行为,也需…

AI大模型应用研发工程师面试知识准备目录

一、大模型核心基础理论 大模型核心架构:Transformer(Encoder/Decoder结构、自注意力机制、多头注意力)、GPT系列(Decoder-only)、BERT系列(Encoder-only)的差异与适用场景关键技术原理&#xf…

基于单片机汽车防撞系统设计

传送门 👉👉👉👉单片机作品题目速选一览表🚀 👉👉👉👉单片机作品题目功能速览🚀 🔥更多文章戳👉小新单片机-CSDN博客&#x1f68…

《Java线程池面试全解析:从原理到实践的高频问题汇总》

线程池作为Java并发编程的核心组件,是面试中的必考知识点。无论是初级开发岗还是资深架构岗,对线程池的理解深度往往能反映候选人的并发编程能力。本文汇总了线程池相关的高频面试题,并提供清晰、深入的解答,助你轻松应对各类面试…

波特率vs比特率

一、核心定义1. 波特率(Baud Rate)定义:单位时间内传输的 “信号符号(Symbol)” 数量,单位为 “波特(Baud)”。这里的 “符号” 是通信中的基本信号单元,指信号在物理层的…

AI 生成式艺术重塑动漫角色创作:从技术逻辑到多元可能性(一)

当《蜘蛛侠:纵横宇宙》中风格迥异的角色群像惊艳银幕,当《鬼灭之刃》的 “柱” 系列角色凭借鲜明人设圈粉无数,动漫角色早已超越 “故事载体” 的属性,成为承载世界观、传递情感的核心符号。传统动漫角色创作往往依赖团队数月甚至…

npm install 报错问题解决 npm install --ignore-scripts

为避免恶意依赖包中的病毒,推荐使用npm命令时添加–ignore-scripts参数,以禁用第三方依赖包的预安装或安装后脚本。然而,某些依赖包需这些脚本才能正常工作。# 原 报错 npm install # 改为 npm install --ignore-scripts我遇到的以下2种报错都…

四个关于云属性的四个卫星数据集的介绍

一、前言 Himawari-8/9 (AHI)、Meteosat (SEVIRI)、GOES (ABI)、CLAAS-3,四个数据集/传感器,它们其实都属于静止气象卫星(GEO)云和辐射产品,在降水、云属性和能量收支研究中应用很广,AHI(亚太&a…

browser use完整梳理

brower use完整逻辑梳理 browser use的完整一次运行过程 INFO [service] Using anonymized telemetry, see https://docs.browser-use.com/development/telemetry. WARNING [Agent] ⚠️ DeepSeek models do not support use_visionTrue yet. Setting use_visionFalse for…

C/C++ 与 Lua 互相调用详解

Lua 是一门轻量级、嵌入式的脚本语言,常常与 C/C 结合使用。通过嵌入 Lua,可以让应用程序获得灵活的配置、脚本化逻辑和可扩展性。本文将介绍如何在 C/C 调用 Lua 函数,以及如何让 Lua 调用 C/C 函数。最后给出一个 完整的示例工程&#xff0…

2025-09-04 HTML2——常用标签与属性

文章目录1 文本标签1.1 标题 (<h1> - <h6>)1.2 段落 (<p>)1.3 文本格式化1.4 列表1.4.1 无序列表 (<ul>)1.4.2 有序列表 (<ol>)1.5 表格 (<table>)2 属性2.1 属性值2.2 全局属性2.3 特定元素的属性2.4 布尔属性2.5 自定义属性2.6 事件处理…