通过批处理并行化,LLM推理整体吞吐量速度提高60倍,这项工作潜力可能会很大,优化了如此多,推理市场硬件需求可能会比之前预想的要小的多
用一个A10推理卡跑LLaMA2的7B模型,单个推理40 tokens/s,但当128个推理并行时,每个推理仍能得到10+token/s,优化之后甚至能达到总吞吐量每秒2400 tokens
我没有看到具体原理,但我大概能猜出来,应该是因为并行化对memory的利用要好的多
简单的说,LLaMA2的7B模型参数大概占用13.5GB的空间,推理一个token需要把这13.5GB的参数都要从GDDR6里读一遍,Nvidia的A10推理卡GDDR6的最大带宽是600 GB/s(但一般达不到,因为DDR efficiency不可能100%),所以每秒大概能把13.5GB的数据读取40遍,这也是为什么单个推理只能达到每秒40个tokens
但是当128个推理并行的时候,每个推理都能利用相同的参数,每读取一部分参数就能给128个推理共用,这样相当于从前是串行的读13.5GB参数产生1个token,现在读一次13.5GB参数就能给128个推理请求产生128个token
这就是为什么最快能加速60倍,因为LLM每次读一个token出来都要过一遍所有参数,对于memory带宽的要求实在是惊人
目前的显卡做单线程处于严重的compute过剩,memory带宽利用不足的情况,而并行化对于memory的利用优化了太多,从而从memory bound变成了compute bound,当两个bound边界同时达到的时候,那就是最大化硬件利用率的时候
这确实是一个很好的优化idea,毕竟LLM多线程化,可能会需要一些框架支持,提供这些框架的服务会是一个很好的生意
这对显卡推理市场带来的影响其实也是不小的,Nvidia在训练端的市场占比95%+,而在推理市场的占比大概是70%。训练端的显卡需求在最初的恐慌性一次性购买后,热度会维持12~24个月,然后会陷入一个低迷期,之前觉得LLM以后的推理需求会逐渐占比扩大,替代训练卡的营收,但现在出现了game change未知因素了
当推理端真的能通过并行优化十倍乃至数十倍的时候,推理端的成本和硬件需求都会大幅缩小,但另一方面推理成本的大幅降低会让LLM使用门槛降低,极大的让整个生态更加繁荣,哪边的因素影响更大还未可知