bm1684x的芯片是否在seq_length增加时,推理时间就会变得很长的问题?
Opened this issue · 1 comments
iwantofun commented
如标题,以qwen为例子(int4),如果模型编译时,seq_length 为 512,推理时就很快,FTL1秒以内
如果seq_length 为8192,那FTL为16秒多
其它模型GLM4也有类似问题,seq_length 的长度对于生产应用非常重要,如果FTL 16秒这个几乎没法用于实际生产了,有办法改进吗?
chuxiaoyi2023 commented
存在,首token延时业界方案比较少,因为这个是个compute bound问题,目前解决方案有
- 动态编译,首token用dynamic动态编译,长度可变。这个要看输入长度的最大值和均值,看值不值得做,因为如果做动态,最大输入与静态编译相比,耗时是增加30%。如果每批次输入均值接近动态的最大长度的20~50%,那可以用这个方案
- 公共序列复用,如果多输入情况下,有一部分序列是完全一样的,那么可以复用
- 公共序列缓存。同上,如果输入句式前面部分比较固定,并且很少,可以直接缓存下来,不用当场计算
- slidewindow、去掉一部分layer这种方案,基本上都以牺牲性能为代价