从自然语言处理到创意内容生成,生成式人工智能(GenAI)的兴起改变了各行各业。然而,如何大规模高效地部署这些强大的模型仍然是一项挑战。
推理引擎在优化性能、减少延迟和最大化资源利用率方面发挥着至关重要的作用。在本文中,我们将深入探讨四种领先的解决方案:TensorRT-LLM、vLLM、Hugging Face TGI 和 LMDeploy。
无论是英伟达™(NVIDIA®)的硬件加速精度、vLLM 的创新内存管理、TGI 的生产就绪生态系统,还是 LMDeploy 对速度和简便性的专注,每一个引擎都能带来独特的优势。让我们一起比较这些引擎,帮助您找到最适合您的 GenAI 工作负载的引擎。
TensorRT-LLM 是英伟达™(NVIDIA®)为使大型语言模型快速流畅运行而推出的解决方案。它基于 TensorRT 框架构建,旨在榨取英伟达™(NVIDIA®)GPU 的每一滴性能。它采用了层融合、精度调整(FP16、INT8、FP8......)和内核优化等技巧,在不破坏模型精度的情况下缩短了计算时间。
这不仅仅是速度的问题。TensorRT-LLM 通过智能管理内存来高效处理大型模型,因此不会在运行过程中崩溃。它还支持动态批处理,让你一次处理多个请求而不会耗尽内存。如果你已经在使用英伟达™(NVIDIA®)硬件,那么使用 TensorRT-LLM 就不难了,因为它与英伟达™(NVIDIA®)的生态系统(如 CUDA 和 cuDNN)紧密相连,甚至还集成了英伟达™(NVIDIA®)的 Triton Inference Server 和英伟达™(NVIDIA®)Dynamo。
尽管如此,它并不适合每一个人。如果你不熟悉英伟达™(NVIDIA®)的工具,设置起来可能会很麻烦;如果你使用的是非英伟达™(NVIDIA®)硬件,它的灵活性也会大打折扣。尽管如此,对于英伟达™(NVIDIA®)GPU 的原始性能和优化而言,它仍是无可匹敌的。
vLLM 擅长快速处理大量推理作业。它是一个开源项目,在需要高吞吐量而又不降低速度的情况下大显身手。vLLM 的秘诀在于 PagedAttention,这是一种能比大多数软件更好地管理内存的技巧。它不会一次性加载所有内容并占用内存,而是将键值缓存分成几块,只抓取需要的内容。浪费更少,速度更快。
它还非常灵活。开箱即可使用 LLaMA 或 Mistral 等流行型号,并支持包括英伟达或 AMD GPU 在内的多种硬件。你还能获得动态批处理功能,对请求进行高效分组,保持流水线顺畅运行。如果你熟悉 Python 和 PyTorch,设置就会非常简单。
vLLM 的主要局限性在于其在市场上的相对不成熟,这意味着它可能还无法提供更成熟的解决方案所提供的全面功能集。不过,对于寻求高效推理解决方案的企业来说,vLLM 是一个极佳的选择。
Hugging Face TGI(文本生成推理)是专为那些想轻松建立并运行模型的人设计的。它是由 Hugging Face 团队开发的工具,因此可以与他们的海量预训练模型库(如 BERT、GPT 等)很好地配合使用。它专为实际应用而设计,比如为聊天机器人或应用程序提供动力,在这些应用中,文本生成必须快速运行且不会崩溃。
TGI 利用连续批处理等功能处理繁重的工作,通过在旧请求完成时交换新请求来保持系统繁忙。它支持 GPU 加速,如果硬件条件允许,还可以进行扩展。此外,它还有内置的安全功能,比如过滤不良输出,这对生产来说非常方便。你只需几步就能用 Docker 部署它,因此设置起来相对简单。
问题是什么?它与 Hugging Face 的生态系统绑定,所以如果你还没有进入那个世界,可能会感觉受到限制。不过,如果想即插即用,TGI 还是一个不错的选择。
LMDeploy 是 MMRazor 和 MMDeploy 团队开发的一款工具包,用于压缩、部署和运行大型语言模型,无需繁琐操作。它有何与众不同之处?它拥有出色的解码速度--在 A100 GPU 上,每秒请求数是 vLLM 的 1.8 倍。这要归功于持久批处理、阻塞式 KV 缓存和让 GPU 保持忙碌的 CUDA 内核等技巧。
它有两个引擎:TurboMind 提供最高性能,而 PyTorch 引擎则更易于修补。TurboMind 是这里的主角--它的 4 位推理速度是 FP16 的 2.4 倍,能轻松处理 Llama-2 70B 等大型模型。你还可以量化权重和 KV 缓存,在不影响精度的情况下节省内存。部署也很简单,只需一个命令就能在多台机器上设置服务器。此外,它还能在多轮会谈中记住聊天记录,因此不会浪费时间重做旧工作。
缺点是什么?TurboMind 很挑剔,它还不能很好地与 Mistral 等滑动窗口注意力模型配合使用。如果你使用的不是英伟达™(NVIDIA®)图形处理器,就只能使用速度较慢的 PyTorch 引擎。尽管如此,在合适的硬件上,LMDeploy 仍然是速度和简单性的最佳选择。
让我们来分析一下这些引擎在延迟(完成一个请求的速度)、吞吐量(能摄取多少请求)和可扩展性(处理更大负载或更多硬件的能力)方面的优势。
如果使用英伟达™(NVIDIA®)图形处理器,TensorRT-LLM 在延迟方面会更出色。它针对英伟达™(NVIDIA®)硬件进行了高度优化,因此单个请求很快就能完成:在 A100 上,大多数型号的请求都能在 50 毫秒内完成。吞吐量也非常出色,尤其是在动态批处理的情况下。BentoML 的基准测试表明,在 A100 80GB GPU 上运行 Llama 3 70B Q4 时,该引擎在 100 个并发用户的情况下可达到每秒 700 个 token。TensorRT-LLM 在长输入和高请求率的场景中表现出色,提供了良好的吞吐量。TensorRT-LLM 支持在多个 GPU 上进行扩展,性能卓越。
vLLM 的吞吐量也很高,特别是在解码繁重的工作负载中,最近更新后的吞吐量很高,延迟很低。BentoML 的基准测试表明,在 A100 80GB GPU 上运行 Llama 3 70B Q4 时,该引擎在 100 个并发用户的情况下可达到每秒 600-650 个 token。延迟很好,但不如 TensorRT-LLM:单独运行时约为 60-80ms。它在不同 GPU 上的扩展性很好,甚至可以混合使用不同品牌的 GPU,但在大型设置上就不那么完美了。
Hugging Face TGI 的性能与 vLLM 类似,在性能和易用性之间取得了平衡。延迟也不错:在良好的 GPU 上为 50-70ms。BenentoML 的基准测试表明,在 A100 80GB GPU 上运行 Llama 3 70B Q4 时,在 100 个并发用户的情况下,该引擎每秒可处理 600-650 个代币。它是为生产扩展而构建的,因此可以顺利处理更多用户或机器,尤其是在使用 Docker 时。
LMDeploy 以解码速度取胜。它在令牌生成率方面表现出色,尤其是对于较小的模型,而对于量化的大型模型,它的首次令牌生成时间(TTFT)很短。延迟很低:40-60 毫秒。吞吐量也非常出色。BentoML 的基准测试表明,在 A100 80GB GPU 上使用 Llama 3 70B Q4 的 100 个并发用户中,该引擎的吞吐量达到了每秒 700 个令牌。通过服务器设置,扩展非常容易,但要达到最佳效果,还得倚重英伟达™(NVIDIA®)图形处理器;PyTorch 模式则相对落后。
一句话:TensorRT-LLM 和 LMDeploy 在原始速度上遥遥领先。您的选择取决于您的硬件和您要处理的请求数量。
量化降低了模型精度,从而降低了内存使用率,加快了推理速度,这对于资源有限的环境非常重要。以下是每个引擎的性能:
TensorRT-LLM 支持 FP8、FP4、带有激活感知权重量化(AWQ)的 INT4 和带有 SmoothQuant 的 INT8,为优化英伟达™(NVIDIA®)GPU 性能提供了强大的选项。
vLLM 具有 GPTQ、AWQ、INT4、INT8 和 FP8 的灵活性,可适应各种硬件和精度需求。
Hugging Face TGI 集成了用于 8 位和 4 位量化的 bitsandbytes 和用于仅加权量化的 GPT-Q,适用于生产部署。
LMDeploy 提供 4 位 AWQ、8 位量化和在线 INT8/INT4 KV 缓存量化功能,提高了在有限硬件上运行大型模型的效率。
硬件支持决定了你可以在哪里部署这些引擎,从而影响可扩展性和性能:
TensorRT-LLM 是英伟达™(NVIDIA®)CUDA 的独有技术,可利用 GPU 加速器实现高性能。
vLLM 支持 NVIDIA CUDA、AMD ROCm、AWS Neuron 和 CPU,为各种设置提供广泛的兼容性。
Hugging Face TGI 可与 NVIDIA CUDA、AMD ROCm、Intel Gaudi 和 AWS Inferentia 协同工作,为各种硬件环境提供灵活性。
LMDeploy 针对英伟达™(NVIDIA®)CUDA 进行了优化,确保在英伟达™(NVIDIA®)GPU 上实现最佳性能,但对其他平台的支持有限。
设置和集成过程会影响开发时间。以下是每种引擎的表现:
TensorRT-LLM 需要转换检查点、构建 TensorRT 引擎和配置参数,这对工程师来说既具有挑战性又耗时。
vLLM 用户界面友好,文档全面,安装简单,可与 Python 库无缝集成。
Hugging Face TGI 受益于 Hugging Face 的生态系统,提供预构建的 Docker 映像和全面的文档,以便快速部署。
LMDeploy 的特点是设置简单,只需一条命令即可启动服务器,并使用 Python API 进行自定义,兼顾了简便性和灵活性。
选择合适的引擎取决于您的使用情况、硬件和技能。
如果您要在英伟达™(NVIDIA®)GPU 上运行大型模型,并且需要尽可能快的速度(考虑实时聊天机器人或人工智能助手等低延迟应用,这些应用必须在几毫秒内生成回复),那么 TensorRT-LLM 就是您的首选推理引擎。它非常适合已经深入英伟达世界的公司,但如果你正在寻找简单的解决方案,它可能就显得多余了。
vLLM 在速度和简单性之间做了很好的权衡。它非常适合需要灵活、快速设置的初创公司或研究人员。
Hugging Face TGI 在速度和简便性方面与 vLLM 相当。它易于部署,可平滑扩展,并与 Hugging Face 的模型中枢相连接,因此非常适合希望获得简单解决方案的团队。
LMDeploy 和 TensorRT-LLM 一样,在性能方面表现出色。它适合使用英伟达™(NVIDIA®)GPU、希望简单设置和顶级性能的用户,但如果你的模型与 TurboMind 不兼容,它就不那么方便了。
如果您不能或不想自己部署 GenAI 模型,您可以使用 NLP Cloud,在生产中大规模利用快速生成的人工智能模型。 现在就尝试在 NLP Cloud 上进行快速推理!
如果您对推理引擎有任何疑问,请随时咨询我们,我们很乐意为您提供建议!
Julien
NLP Cloud 首席技术官