sjzhou4

Results 8 comments of sjzhou4

@lvhan028 hello,感谢你的指导,我再llama2-70B上使用ntk,发现8K的长度是ok的,但是再长,比如到16k,就会有乱码了,请问这个问题怎么处理,使用q_scaling吗?

你这个需要修改下server的逻辑吧,对有图片进行VIT网络后生成的embedding和ranges只计算一次,然后进行LLM的时候,设置采样,增加种子等,可以提高多样性

嗨,我也发现了类似的问题,我这边简单分析了下,lmdeploy比vllm在vit部分平均增加的耗时是由于lmdeploy需要将vit的feature遍历从gpu到cpu,也就是下面图中的x.cpu()引起的。vllm不需要此环节 ![image](https://github.com/user-attachments/assets/fd4c83dc-8c6a-4e16-a192-9274674e86d2)

我这边注释掉之后基本上就少了对应的to cpu的时间,而且vit整体的性能我测试来看lmdeploy和vllm是近似的(去掉to cpu的话)。 ![image](https://github.com/user-attachments/assets/0c484d16-8bf7-44c1-80d7-9f67b4bbe1bb) ![image](https://github.com/user-attachments/assets/cb76552b-2cc4-4ac2-a635-87e0bf1205a5)

但是这里虽然是去掉了to cpu时间,后面还是会进行gpu到cpu同步的,lmdeploy逻辑是这样实现的

@irexyc @fong-git 是的,lmdeploy的to cpu 是不能缺少的,就像 @Dimensionzw 说的那样,lmdeploy和vllm的架构设计有区别的,lmdeploy更多的是在上层进行模版拼接、特征提取等工作,最后把这些inputs信息传递到turomind backend端进行处理。而且像 @irexyc 说的,后面的prefix caching等,也可能会使用内存、甚至硬盘来存储特征信息,进而优化显存的占用,这些都是需要to cpu操作的

原因基本是:lmdeploy在al或者vl模型使用的特征抽取,其实都是用的python去做的,而vllm是用算子kernel实现的,我这边简单测试了下,在vit网络的foward,基本上lmdeploy的性能是vllm的1/3。然后大batch,性能下降更明显

还有就是上面提到的.cpu()的问题,其实这部分的时间在目前al和vl消耗并不大,比如vl上面,256 * n * hidden_size * 2 / 1024 /1024/ 1024 /pcie带宽 * 1000 ms,基本上都在10ms以内了