一、引言
本文将与大家分享我们(EasyLink AI,一家AI初创公司)在LLM推理引擎方面的探索历程,分享从transformers(HuggingFace)的使用,到后续引入vLLM,再到目前正在实验的sglang。通过这些经验的分享,我们希望不仅展示我们的技术实践,更为对于LLM相关技术有兴趣的朋友提供一些有益的启示,推动行业的共同进步。
二、初期探索:transformers阶段
在我们刚开始构建企业知识管理和应用服务的技术栈时,transformers是我们的首选工具。作为一个开源的、功能强大的库,transformers为我们提供了丰富的预训练模型和灵活的架构,使得我们能够快速地建立起一个模型服务,迅速满足了初期的业务需求。
1. 实施过程
在这一阶段,我们主要利用transformers库加载预训练模型。这种方法的最大优势在于其便捷性和快速部署能力,在模型之上,通过一层服务封装即可满足上层应用的远程调用需求。
2. 遇到的挑战
然而,随着业务的不断扩展和复杂度的增加,transformers的局限性逐渐显现:
- **性能瓶颈:**在高并发和大规模请求下,响应速度和吞吐量成为了主要问题。我们发现,随着业务的并发程度上升以及单轮任务的模型依赖度的增加(如agent、multi-agent等)导致系统响应时间延长,影响了用户体验。
- **资源消耗:**由于其底层简单的推理实现,transformers在infer时占用了大量的计算资源,例如庞大的 kv 空间占用,这里下文vllm部分亦有讨论。
- **扩展性不足:**随着业务需求的增加,我们需要灵活应对不同规模和复杂度的场景。然而,单纯依靠transformers库的基础架构,很难在不牺牲性能的前提下进行扩展。
这些挑战促使我们开始思考如何优化和改进现有的技术架构,以更好地满足业务需求并支持未来的扩展。
三、转型升级:引入vLLM
随着业务需求的扩大和复杂性的增加,原有的Transformers库在性能和资源利用方面逐渐暴露出局限性。为了提升系统的整体性能,我们决定引入vLLM,并在一些项目中逐步上线了基于vLLM的模型推理服务,效果显著。
1. vLLM简介
vLLM是一个专为高效LLM推理服务设计的开源项目。它通过PagedAttention技术,实现了显著的性能提升和高效的内存管理,据官方数据,在NVIDIA A100 GPU(40 GB)上的LLaMA-13 B对请求的输入/输出长度进行采样,vLLM的吞吐量比HF高24倍,比TGI高3.5倍。
(素材来源:vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog)
其中,vllm的核心技术为PagedAttention,通过分块存储注意力键值缓存(KV cache),有效减少了内存浪费,提升了GPU的利用率,且自带了Openai 形式的服务封装以及数据监控锚点,极大的简化的我们的开发。在我们的应用中,vLLM在吞吐量和响应速度方面展现出了优异的性能。
2. 选择vLLM的原因
vLLM的高吞吐量和高效内存管理让我们眼前一亮。PagedAttention技术不仅提高了内存使用效率,还支持并行采样等复杂操作,使得我们能够在不增加硬件成本的情况下,显著提升服务能力。
(素材来源:vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog)
3. 实施过程
为了顺利将vLLM集成到我们的系统中,我们采取了以下措施:
-
**架构调整:**我们对现有系统架构进行了优化,将vLLM作为核心推理引擎,并重新设计了服务接口以充分发挥其性能。
-
**迁移策略:**通过分阶段的迁移策略,我们逐步将原有transformers推理的方式切换至vLLM,确保了服务的平稳过渡。
-
**性能调优:**在部署过程中,我们针对业务场景对vLLM进行了深度调优,确保其在实际应用中达到最佳表现。
-
**上线与反馈:**在一些项目中,我们已经成功上线了基于vLLM的模型推理服务,得到了良好的反馈和效果。
4. 成果与收获
vLLM的引入显著提升了系统的性能和资源利用效率。通过优化内存管理和提升并行处理能力,我们不仅提高了响应速度,还显著降低了运营成本。在已经上线的项目中,vLLM展现出了出色的表现,尤其是在高并发场景下,其优势尤为明显。
四、持续优化:迈向SGLang(实验阶段)
1. SGLang简介
SGLang是一种全新的推理引擎,专为应对LLM Programs的复杂需求而设计。这些需求超越了传统的单轮对话形式,涉及多轮推理、工具使用、多模态输入,以及复杂的结构化输出。SGLang通过引入RadixAttention、压缩有限状态机(FSM)、推测执行等创新技术,在处理复杂任务时展现出卓越的性能。
2. 升级动因
在成功部署vLLM后,我们发现仍然有一些未能完全解决的问题,比如已有的kv_cache利用率并不是很高,特别是在多轮对话等长文本任务中。而SGLang以其更加卓越的推理速度和优化能力,吸引了我们的注意。与vLLM相比,SGLang在多个场景中的表现更为优异,尤其在RAG任务中表现出色。RadixAttention技术与我们的需求高度契合,使得SGLang不仅在推理速度上优于vLLM,还能更好地适应我们业务的复杂场景。
(素材来源:吞吐量提升5倍,联合设计后端系统和前端语言的LLM接口来了 | 机器之心)
此外,头部模型公司如 xAI-Grok 的推理框架已完成SGlang的迁移升级;知名的lmsys大模型竞技场也已使用SGlang作为推理引擎。
(素材来源:网络素材)
可见,SGLang正在成为行业内推理引擎的领先选择,其卓越的性能和灵活性正在引领下一代LLM推理技术的发展方向。
3. 实验与集成
**评估与选型:**在选择SGLang之前,我们对其技术可行性进行了深入评估。SGLang的创新设计,特别是其在推理速度和多场景优化方面的表现,使其成为我们的优先选择。
**实验与测试:**目前,我们公司正在内部测试SGLang,以验证其在实际业务场景中的表现。测试过程中,我们发现SGLang在处理多轮对话、结构化输出及RAG任务方面表现优异,特别是在推理速度上,其表现甚至超越了vLLM,官方示例数据如下。
(素材来源:Achieving Faster Open-Source Llama3 Serving with SGLang Runtime (vs. TensorRT-LLM, vLLM) | LMSYS Org)
**团队反馈与调整:**我们的开发团队对SGLang提供了积极的反馈,并针对实验中发现的问题进行了调整。这些反馈和调整帮助我们更好地理解了SGLang的应用场景及其潜力。
4. 综合预期
**初步成果:**尽管SGLang目前仍处于实验阶段,但其在处理复杂任务和优化资源利用方面的表现已经展现出巨大的潜力。我们预计,SGLang在正式上线后将带来显著的性能提升。
**继续优化:**随着实验的深入,我们计划继续优化SGLang的集成方式,并探索其在更广泛业务场景中的应用。我们相信,SGLang的引入将为公司的技术栈带来新的突破,并进一步推动我们的业务发展。
五、综合总结和未来展望
1. 技术演进回顾
回顾我们在LLM推理引擎方面的探索历程,从最初的Transformers,到引入vLLM,再到目前正在实验的SGLang,每一次技术迭代都源于对业务需求的深刻理解和技术创新的持续追求。Transformers帮助我们迅速构建了初步的推理服务,vLLM带来了显著的性能提升,而SGLang则展示了未来推理引擎的潜在优势。在整个技术演进过程中,我们深刻认识到,技术选择与业务发展是相辅相成的。通过不断优化技术栈,我们不仅提升了系统的性能,还增强了对复杂业务场景的适应能力。每一次技术的更新迭代,都为公司的战略目标提供了强有力的支持。
2. 未来展望
展望未来,我们将继续优化现有的推理引擎,并探索更多创新的技术方案。尽管vLLM和SGLang在性能和灵活性方面表现出色,但在某些领域仍存在挑战,例如如何进一步提高KV缓存的利用率、优化大规模任务中的资源管理,以及在多模态和多轮对话中的综合性能。我们计划在这些方面进行深入研究,并持续跟进社区的技术发展,结合实际业务需求,进行扩展与优化,确保在技术前沿保持竞争力。通过持续的技术创新和优化,我们将在LLM推理领域继续保持领先地位,并为客户提供更加智能和高效的解决方案。
3. 对行业的启示
我们EasyLink AI团队希望通过在LLM推理引擎演进过程中的经验,能够带来有益参考。技术的快速更新换代是不可避免的,关键在于如何选择合适的技术,平衡性能与灵活性,从而在竞争激烈的市场中立于不败之地。期望与行业内更多的伙伴进行合作与交流,共同推动技术的进步,提升行业整体水平。
💬 欢迎读者对本文提出反馈和意见,并期待与更多同行进行交流与合作,共同推动行业的发展。