query长度影响首个token的预测时延

#23
by rayleee - opened

在V100上复现模型推理速度,发现推理速度受prompt长度影响很大。首个token的时间会随prompt+query的长度增长很明显。后面的token速度会快很多,平均在20ms/token左右。 这样平均下来时延波动很大。

  1. torch的也会,不过第一条query比较长(1~2s左右),之后的query明显好转。token之间基本上没有很大波动。
  2. lyraChatGLM同样的输入query,首个token要长很多。而且每个query都会在首个token等很久。

这个有啥优化的方案没?

@rayleee 你好,请问可否告知一下你的cuda配置等软硬件信息呢?

cuda12.0,V100,在提供的镜像上跑的。
测试了一批长query,平均长度900+性能如下, batch size 为1
torch throughput 平均57ms/token
lyraChatGLM throughput 平均76ms/token

cuda12.0,V100,在提供的镜像上跑的。
测试了一批长query,平均长度900+性能如下, batch size 为1
torch throughput 平均57ms/token
lyraChatGLM throughput 平均76ms/token

那不是比torch还慢?

Tencent Music Entertainment Lyra Lab org
edited Jun 6, 2023

@rayleee @dengjun 我们未在长 query 上做定制优化,ChatGLM 的加速计算设计在源码里是分为 context 计算和 decode 计算两块的。两块的优化策略是不同的,我们有大量的优化策略在生成和解码部分,如我们在 decode 部分是将 MHA 进行了 Fused。然 长 query 是在 context 部分有很重计算,若你的生成部分还很短的话,意味着生成很少结束了,这无法发挥到较多优化手段的性能,如 KVCACHE、FUSEDMHA、FUSEDDECODE 等。

之前我们并未在这种 case 上做过评测,理论上来说,长 query 短生成的情况下收益可能确实不是很大。 我们才刚依据你的反馈,在 tokens 为 1121 的输入长度上进行了反复评估,机器为 A100-40G 机器,batchsize 我们就 1 和 8(显存范围内) 进行测试,评测下来未见慢于 torch,具体情况如下。

  • Torch 结果
    image.png

  • 加速后的结果
    image.png

我们暂时不确定是否会立即针对这个场景做更多的优化,会先记录该反馈,后续可以多多交流

Tencent Music Entertainment Lyra Lab org

@rayleee @dengjun 详见回复

感谢答复,实际上优化效果已经很强了。还是期待在这个场景的优化,比如一些场景利用搜索结果生成答案时往往需要长输入,能否尽快优化下

在V100上复现模型推理速度,发现推理速度受prompt长度影响很大。首个token的时间会随prompt+query的长度增长很明显。后面的token速度会快很多,平均在20ms/token左右。 这样平均下来时延波动很大。

  1. torch的也会,不过第一条query比较长(1~2s左右),之后的query明显好转。token之间基本上没有很大波动。
  2. lyraChatGLM同样的输入query,首个token要长很多。而且每个query都会在首个token等很久。

这个有啥优化的方案没?

@rayleee 问这里 query 是什么意思?和 prompt 是啥关系?

另外请教 @vanewu 咱们的性能数据是什么标准测试的?我的理解 token/s 只在确定的 prompt 和生成长度下有意义?

Sign up or log in to comment