
联想
上个月,sglang - v0.3.0和vllm - v0.6.0相继发布之后,我就一直盘算着对当下主流的大模型推理引擎做个总结梳理。在我看来,这算得上是一个颇具意义的节点,自此开源大模型推理引擎总算从极为粗糙但还能用的阶段步入了只是稍微有点粗糙的阶段。大模型推理引擎其实也就是近一两年才开始迅猛发展的。最初是tgi和vllm齐头并进,到如今sglang、lmdeply脱颖而出,整个开源社区充满活力。不过,就像之前提到的,从长远角度看,如今的开源引擎其实都还比较粗糙,大家都在探索中前行。另外一个原因是,现在全世界的注意力都集中在llm上,新技术的更新换代速度太快了,要做好一个大模型推理引擎需要做的事情实在是太多太多了。不但要支持不断更新的新模型和新硬件,还得持续关注学术界最新的论文,并且想方设法将其中的成果落地实现。而这些新的想法可能涉及模型结构、计算策略、调度策略、存储策略、cuda内核、硬件加速等各个层面,这就要求开发者具备极为广泛的知识体系和很强的工程能力。我始终觉得大模型推理引擎最难的地方在于:对模型和硬件的广泛支持,以及如何兼容实现各种不同角度的优化方法。因为写论文的人只需要关注自己的想法,在transformer库的基础上写个简单的演示就可以了,但是在推理引擎中落地时往往会和其他模块产生冲突,就需要想办法去做各种兼容处理。即便没有冲突的情况,也得对其他基础的优化比较熟悉,这样才能在这些基础之上开发新功能。本文主要包含两个部分:第一部分,对一些当下主流推理引擎的现状进行总结,算是给大家在实际应用时提供一些参考。第二部分,总结比较重要的大模型推理优化方法,这部分内容会持续更新。我们先来说说tgi吧。tgi作为原本和vllm并驾齐驱的先行者,有着huggingface的背景,可谓占据了天时地利,但是它的开发人员真的不给力,目前两个月才更新一个版本,看起来像是处于放弃的状态了。这让我不禁
联想到
百度的情况,二者可以说是如出一辙,都是起了个大早却赶了个晚集。那么tgi主要存在哪些问题?