category
TL;DR
- 模型服务是构建机器学习产品的重要步骤。它包括打包模型、构建API、监控性能以及根据传入请求进行调整。
- 模型服务工具的选择取决于特定的项目和团队需求,如框架和基础设施兼容性、易用性、推理优化功能、监控功能和所需的部署策略。
- 广义上讲,模型服务工具可以分为两类:将ML模型打包到推理优化容器中的模型服务运行时,以及专注于部署和扩展这些模型的模型服务平台。
- 当今市场上存在各种工具,每种工具都有特定的优势和劣势。BentML、TensorFlow Serving、TorchServe、Nvidia Triton和Titan Takeoff是模型服务运行时类别的领导者。在模型服务平台方面,KServe、Seldon Core、Bento Cloud和云提供商的集成解决方案是最有力的竞争者。
选择正确的模型服务工具对任何机器学习项目的成功都至关重要。将模型部署到生产中是机器学习生命周期中的关键一步。毕竟,我们训练模型来解决问题,只有部署的模型才能为下游消费者提供预测。
其核心是,模型服务包括使经过训练的机器学习模型可用于接收输入并服务于结果预测。为机器学习模型提供服务的挑战在于对其进行打包,通过推理API将其公开,并保持其性能。每个项目在延迟、吞吐量和可扩展性方面都有独特的要求,这增加了复杂性。
已经开发了大量的框架和平台。很难概括、理解差异并选择正确的解决方案。但别担心!看完这篇文章,你会…
- …了解为团队和项目选择正确工具的最重要标准。
- …对服务景观的模式有着深刻的理解。
- …了解市场上领先的服务工具模型的利弊。
了解模式服务
为体系结构和组件提供服务的规范模型概述。给定模型代码和工件,我们基于一个为运行时服务的模型创建一个Docker映像。这个Docker镜像包含模型服务器,它被部署到一个模型服务平台,该平台提供可扩展性,并向下游用户公开模型。|来源:作者
在MLOps社区中,与模型服务相关的术语经常出现混淆。专业人员经常交替使用服务和部署,这可能会导致误解。
以下是我们对不同组件及其作用的定义和区分。(但请记住,这些定义是基于我们的观点,绝非绝对真理。)
- 模型服务运行时:将经过训练的机器学习模型打包到容器中,并设置API,使其能够处理传入的请求。这允许模型在生产环境中使用,通过预测(推理)对数据输入做出响应。
- 模型服务平台:设计用于动态缩放模型容器数量以响应传入流量的环境。像KServe这样的工具就是服务平台的例子。他们管理高效部署和扩展模型所需的基础设施,无需手动干预即可对不同的流量做出响应。
- 模型部署:将打包模型集成到服务平台中,并将其连接到更广泛的基础设施(如数据库和下游服务)的过程。这确保了模型能够访问必要的数据,执行其预期功能,并将推理结果传递给消费者。
为了帮助您更好地理解角色和关系,让我们考虑一下这个典型的ML模型生命周期:
- 培训:假设我们在Neptune的博客上培训了一名LLM,以帮助MLOps工程师进行决策。
- 封装:我们使用BentML这样的模型服务运行时将LLM封装到Docker映像中,并使用标准化的、功能性的API进行封装。
- 部署:我们将使用BentML打包的模型部署到KServe模型服务平台。这个基于Kubernetes的平台根据传入的请求自动缩放模型容器。
- 集成:我们将模型与Neptune博客侧边栏中的聊天小部件连接,以便用户可以键入问题并接收我们LLM生成的答案。这要求我们将必要的API请求集成到网站前端代码中,并确保我们模型的API可以通过互联网公开访问。
- 带来价值:最后,该模型可以同时帮助许多neptune.ai博客读者。
你需要一个为运行时服务的模型吗?
当你可以使用Docker基础映像将你的模型与你使用Flask或FastAPI快速编码的简单API打包在一起时,为什么服务运行时是必要的?
需要为运行时提供服务的模型的三个原因
- 优化的基本映像:模型服务运行时提供为推理量身定制的优化Docker映像。这些图像支持您正在使用的硬件和ML框架的智能优化技术,确保您的模型尽可能高效地运行。ML优化的Docker基础映像中多年的智慧和优化很难自己复制。
- 节省时间的实用程序:模型服务运行时简化了将模型打包到优化的Docker映像中的任务。它们通常包括一些实用程序,可以帮助将模型转换为更适合快速、高效推理的格式。这使得部署过程比您必须手动完成所有这些操作时更顺畅。
- 设计良好、定义明确的API:这些框架通过提供为ML模型推理量身定制的统一、精心设计的API,简化了集成模型的过程。为运行时提供服务的模型通常涵盖广泛的机器学习用例,包括对数据帧、图像和JSON有效载荷的支持。
然而,在某些情况下,您最好使用自定义解决方案或寻找完全管理的产品。
避免使用运行时模型的三个原因
- 技能差距:一些为模型服务的运行时需要团队具备重要的软件工程技能。如果您的团队没有提供足够的经验,这可能会导致设置、持续维护和集成方面的挑战。
- 批处理:当您不需要实时推理,但所有计算都可以进行批处理时,更简单的解决方案可能比实现具有完整服务运行时的解决方案更直接、更具成本效益。
- 无需缩放:如果您的模型由于推理时间或请求量较低而不需要缩放,那么使用ML优化容器的好处可能不会超过其工程成本。
选择模型服务工具的标准
选择模型服务工具的关键标准概述。关键考虑因素包括框架兼容性、集成、实现复杂性、性能、监控功能、成本和许可。|来源:作者
找到一个满足团队和项目特定需求的模型服务工具可能很有挑战性。本节将指导您了解在调查市场和做出决策时需要考虑的各种标准。
框架兼容性
在选择模型服务工具时,考虑其支持的机器学习框架范围至关重要,如scikit learn、TensorFlow或PyTorch。不幸的是,选择并开始设置TorchServe,但后来发现它不支持您的同事培训过的Keras模型。
此外,重要的是要考虑该工具是否提供GPU支持并与您使用的CUDA版本配合使用。如果您使用大型深度学习模型,这一点尤为重要。
如果您计划跨多台机器扩展模型以处理更大的工作负载,那么对分布式处理的支持至关重要。
集成
评估模型服务工具如何与您当前的MLOps堆栈和计算基础设施或云环境保持一致至关重要。假设您已经有一个Kubernetes集群在运行。使用像KServe这样的Kubernetes本地解决方案,而不是像谷歌的Vertex AI这样的完全管理的解决方案,这将是一个有力的论据。
这不仅适用于您的基础架构,也适用于框架级别。例如,如果您计划使用ArizeAI来实现模型的可观察性,那么最好使用具有开箱即用集成的BentML,而不是没有开箱即用的Tensorflow Serving。
实施复杂性
在评估模型服务工具时,必须认识到并非每个框架都适合每个团队,因为实施的复杂性和所需的背景知识可能会有很大差异。
在决定服务工具之前,请考虑所涉及的学习曲线和团队的技术技能。难以使用的工具可能会减慢进度,尤其是在您不熟悉所需技术的情况下。
从广义上讲,提供高灵活性的工具往往更复杂,学习曲线更陡。这种复杂性的产生是因为这些工具为用户提供了更多的选择和控制。虽然这可以更好地适应具体需求,但也需要更深入的理解。
理想情况下,您应该选择最简单的工具来满足团队和项目的需求。这种方法可以确保您不会使用不必要的功能使设置过于复杂,也不会使用对您的需求过于有限的工具。
性能
模型服务工具旨在优化推理性能。然而,这种优化的程度因框架而异。在实现之前确定框架的效率是一项挑战,因为效率取决于许多因素,包括特定的用例、模型和硬件。
然而,可以通过检查其文档来获得对工具性能的初步估计。讨论该工具的体系结构、关键概念或特定推理功能的部分可以深入了解预期性能。
当涉及到为运行时提供模型服务时,以下是需要查看的主要功能:
- 并发模型执行:生成同一模型的多个实例,在单个硬件处理器(GPU或CPU)上同时运行,并在实例之间对传入请求进行负载平衡。这样,多个较小的型号可以共享一个处理器,从而节省成本。
- 推理并行化:将推理任务分布在多个硬件处理器(GPU或CPU)上,以加快处理速度。
- 自适应批处理:允许服务器将多个推理请求动态组合到一个批处理中,从而优化吞吐量和延迟。
- 高性能运行时支持:计算密集型模型受益于向更高效的运行时(如TensorRT)的转换。
- 异步API:启用非阻塞请求,允许系统同时处理多个请求。这提高了响应能力,因为系统不按顺序处理请求。
- gRPC推理协议:为服务之间的通信提供了传统HTTP/REST的更高效的替代方案。事实上,gRPC协议已经证明在响应时间方面优于REST。
监控
评估模型服务工具的内置监控和日志记录功能是至关重要的。这些功能使您能够确保模型容器的运行状况和性能,帮助诊断问题,并有效地优化资源使用。在分析您的监控需求时,请考虑您需要的详细程度以及访问监控数据的容易程度。
本文中讨论的为运行时服务的模型都产生了普罗米修斯度量。为了在生产中监控模型性能,您需要一个能够使用日志的Prometheus服务器。对此,您有两个主要选项:部署普罗米修斯服务器或使用完全托管选项。
另一个需要研究的方面是与外部监测系统和可观测性平台的集成。使用Arize AI、Fiddler AI或Evidently等完全管理的监控工具,可以显著提高您在生产中管理模型性能的能力,而无需支持复杂的基础设施。
成本和许可
列表中的下一个标准是预测与模型服务工具相关的成本:
- 定价结构:一些模型服务工具是基于订阅的,一些需要一次性付款,一些根据资源利用率收费,另一些是开源的。
- 许可:一些模型服务工具对模型容器的部署或分发施加了限制,特别是在商业环境中。例如,在2024年初,Seldon Core将其许可证更改为Business Source license v1.1(BSL),使其免费用于非生产用途,但需要每年订阅一次生产部署。
- 总成本:评估与模型服务工具相关的总成本需要超越价格标签。这一点很容易被遗忘,尤其是在选择免费下载和运行的开源工具时。您必须考虑正在进行的活动(如支持、更新和基础架构要求)的成本。例如,KServe是开源的,因此可以免费使用,但它需要部署和管理Kubernetes集群才能运行。
支持和文档
我们列表中的最终标准围绕支持和文档:
- 支持:选择一个拥有活跃社区或提供商支持的工具是有益的,因为在实施过程中从专家那里获得建议或错误修复是非常宝贵的。对于开源工具,您可以通过调查Slack上的交互或开发人员对GitHub存储库上问题的响应来评估支持质量。
- 文档:在设置工具之前,检查文档的清晰度和可读性并没有坏处。这一点不容低估,因为文档将在一段时间内成为您的主要伴侣。
- 学习资源:大量的学习材料,如教程、常见问题解答和代码示例,是必不可少的。这些资源可以显著简化团队的学习过程,并增强该工具的整体用户体验。
2024年顶级服务工具模型
我们的评论中包含的模型服务运行时和模型服务平台概述|来源:作者
让我们回顾一下以其功能和广泛使用而脱颖而出的模型服务工具。我们将比较分为两类:服务运行时和服务平台。
模型服务运行时
服务运行时的作用是将模型代码和工件打包到容器中,并构建针对模型推理优化的API。
此类别中讨论的每个工具都支持以下内容:
- 并行处理:支持并行处理,同时处理多个任务。
- 异步API:允许非阻塞请求,允许同时处理请求,以获得比顺序处理更快的响应。
- 自适应批处理:使服务器能够将传入的推理请求合并为批处理,以提高吞吐量并减少延迟。
- RESTAPI:使用HTTP谓词(如POST、GET、PUT和DELETE)处理客户端-服务器通信。
- gRPC:一个高性能、低延迟的远程过程调用框架,用于基于HTTP/2的服务通信。
- 监控日志:我们审查的每个运行时模型都会生成普罗米修斯日志,这些日志可以用于分析硬件和模型性能指标。
BentML
“Bento”是一个包含构建模型Docker映像所需的所有组件的归档文件:一个定义依赖关系、加载和运行模型的源代码、推理API、模型工件和ML模型定义的需求文件。|来源
BentML是一个开源框架,它简化了将模型打包为ML优化的Docker图像的过程。
BentoML于2019年首次发布,引入了“Bentos”的概念:一个包含封装模型所需的所有组件的档案,如源代码、模型架构和配置。
该工具提供了一个Python SDK,其中包含用于构建Bentos的实用程序。用户开发继承BentML接口的Python类来生成API服务器。这非常方便,因为它允许您在创建模型的容器化版本之前测试和调试这些类。
选择BentML的原因
- 易用性:BentML是使用起来最简单的框架之一。自1.2发布以来,只需几行代码就可以构建Bento。
- ML框架支持:BentML支持所有领先的机器学习框架,如PyTorch、Keras、TensorFlow和scikit-learn。
- 并发模型执行:BentML支持分数GPU分配。换句话说,您可以在单个GPU上生成一个模型的多个实例来分配处理。
- 集成:BentML集成了ZenML、Spark、MLflow、fast.ai、Triton推理服务器等。
- 灵活性:BentML是“Python”的,允许您打包任何可以用Python导入的预训练模型,如大型语言模型(LLM)、稳定扩散或CLIP。
- 清晰的文档:文档易于阅读,结构良好,并包含大量有用的示例。
- 监测:BentML与ArizeAI和Prometheus指标相集成。
BentML的主要局限性和缺点
- 需要额外的实现:由于BentML是“Pythonic”,所以需要您自己实现模型加载和推理方法。
- 本机支持高性能运行时:BentML在Python上运行。因此,它不如Tensorflow Serving或TorchServe那样优化,这两种服务都运行在用C++编写的后端,这些后端被编译成机器代码。但是,可以使用ONNX Python API来加快推理时间。
总结
总的来说,BentML是一个非常好的工具,适合大多数用例和团队。主要缺点是需要为每个模型重新实现Python服务,以及从高性能运行时集成模型的潜在复杂性。
要了解更多关于这个框架的信息,请阅读我对BentML的深入评论。您还想看看BentCloud,这是一个完全管理的模型服务平台,专门为扩展BentML容器而设计。
TensorFlow Serving (TFX)
TensorFlow Serving模型的生命周期。“源”检测新的模型权重。它创建一个“Loader”,其中包含指向磁盘上模型的指针。“Source”通知“DynamicManager”,后者告诉“Loader”用新的权重实例化TensorFlow图。|来源
TensorFlow Serving(TFX)是一个开源、高性能的服务运行时,专门设计用于封装TensorFlow和Keras模型。它提供了一个优化的Docker镜像,将TensorFlow导出的模型连接到RESTAPI。
选择TensorFlow服务的原因
- 易用性:对于TensorFlow模型,打包过程非常简单,只需在Docker中使用一个CLI命令和几行Python即可。但是,如果要在servable中包含自定义预处理或后处理,则需要构建自定义签名。
- 高性能运行时:一旦模型从Python导出,我们就可以用Docker对其进行打包。TensorFlow Serving容器在引擎盖下使用C++运行时,使TensorFlow Serving成为性能最好的运行时服务模型之一。
- 定制:这个框架为定制服务模块提供了一个清晰的抽象。但是,要支持具有自定义操作的模型、提供与模型相关的特定数据或实现自定义特性转换逻辑,您需要一些C++知识。
TensorFlow服务的主要局限性和缺点
- ML框架支持:此工具仅支持TensorFlow和Keras模型。
- 文档:我们发现文档有些过于简单,而且不太直观。它没有按顺序引导你了解概念,感觉你只能自己探索。
- 无并发模型执行:TensorFlow Serving不支持在每个设备的多个模型上进行智能负载平衡。
总结
如果您使用TensorFlow或Keras进行模型训练,那么TensorFlow Serving(TFX)就是您的首选框架。该工具提供了一种简单的方法,可以将模型转换为特定于TensorFlow的高性能运行时。
然而,如果TensorFlow或Keras不是您的选择框架,则TensorFlow Serving不是一个选项。虽然扩展它以支持其他ML框架是可能的,但这种方法缺乏明显的优势,因为它需要额外的实现,而替代模型服务运行时提供开箱即用的本地支持。
TorchServe
用于优化模型推理的TorchServe架构|来源
TorchServe是一个模型服务运行时,旨在为生产环境中的PyTorch模型提供服务。它旨在提供实用程序,以简化为模型构建Docker映像的过程,配备API并设计用于优化模型推理。
在PyTorch中为模型提供服务的步骤如下:
- 导出:从模型的PyTorch定义,我们需要使用TorchScript将模型导出为TorchServe可以处理的格式。
- 包:接下来,我们使用“torch model archiver”实用程序来归档模型。
- 构建容器:最后,我们使用Docker CLI从归档文件中创建一个Docker映像。
选择TorchServe的原因
- 易用性:对于简单的用例,只需使用几个CLI命令就可以使用TorchServe为模型提供服务。但是,如果默认处理程序不支持您的用例,则需要在Python中开发自己的处理程序。
- 高性能运行时:TorchServe在模型推理方面是表现最好的。容器在用C++实现的本地运行时上运行模型,从而获得惊人的性能。
- 定制:TorchServe定制服务指南经过深思熟虑,提供了许多关于如何扩展其抽象的示例。
TorchServe的主要局限性和缺点
- ML框架支持:此工具仅支持PyTorch模型。
- 无并发模型执行:TorchServe不支持在单个GPU或CPU上为同一模型的多个实例提供服务。
- 文档:TorchServe的文档是更广泛的PyTorch文档的一部分,很难导航。
总结
TorchServe是一个成熟而强大的工具,适用于使用PyTorch训练模型的团队。与TensorFlow Serving类似,能够轻松地将模型转换为C++运行时是一个巨大的优势。
Triton推理服务器
Triton推理服务器的体系结构。它包括多个调度和批处理算法,可以逐个模型进行配置。|来源
Triton推理服务器是由Nvidia开发的开源服务运行时。它是性能最高的框架,因为它充分利用了底层硬件。
不可否认,Triton体系结构是服务运行时中最复杂的体系结构。毕竟,在优化方面,谁比领先的GPU制造商英伟达更值得信任?
选择Triton推理服务器的原因
- 并发模型执行:Triton的实例组功能允许将一个模型的多个实例加载到一个GPU上。这使得性能能够与同一硬件上的副本数量成比例地提高。然而,重要的是要记住,这种方法不会增加GPU的vRAM。换句话说,你的GPU必须有足够的内存来处理至少两个模型副本,才能通过这种方式获得性能增益。
- ML框架支持:在我们列表中的工具中,Triton提供了最广泛的ML框架支持。阅读更多关于其支持的深度学习框架及其机器学习框架集成的信息。
- 高级优化:Triton具有许多高级功能,如有状态模型的序列批处理或在模型之间传递张量的集成调度器。
- 深度监测:海卫一生产普罗米修斯先进的监测指标。
- 高级实用程序:Triton的设计考虑到了性能。它提供了多种实用程序来减少延迟并提高模型的吞吐量:
- Model Analyzer通过为硬件找到最佳配置(如最大批处理大小、动态批处理和实例组参数),帮助您优化模型性能。
- 性能分析器可以调试性能问题。
- 模型预热可以减少模型的加载时间。
- 文档:此框架具有深入而全面的文档。
Triton推断服务器的主要局限性和缺点
- 复杂性:设置和配置Triton可能具有挑战性。在模型服务领域中,该框架具有最苛刻的学习曲线,因为用户必须熟悉多个概念和抽象。
- 硬件依赖性:此工具主要为高端英伟达GPU设计。不支持在AMD上运行,在CPU上运行也不值得付出这些努力。
结论
Triton是拥有强大软件技能、需要在Nvidia GPU上获得最佳性能的团队的首选。对于要求高吞吐量和低延迟的大规模场景,它没有竞争者,因为它是唯一一个在推理优化的运行时提供并发模型执行的工具。然而,与Triton相关的开发成本和维护成本不容低估。
一些模型服务工具提供与Triton的集成。与标准BentML相比,将BentML与Triton集成可标准化模型封装过程和版本控制,同时提高推理速度。另一方面,Triton On Vertex AI并没有减少Triton的开发和维护开销,而是对Triton实例进行缩放以获得更好的性能。
Titan Takeoff Inference Server
TitanTakekoff是一个为大型语言模型(LLM)的部署和自托管量身定制的闭源服务运行时。它是为有数据隐私问题的团队设计的,它支持云和内部部署。
此工具提供专门用于LLM推理的专有Docker映像。它支持HuggingFace的大多数文本生成和嵌入模型。
Titan Takeoff提供了一个模型内存计算器,可帮助您选择硬件。。此外,它使用量化技术来压缩LLM,以在现有硬件上支持更大的模型。
选择TitanTakekoff推理服务器的原因
- LLM推理:具有针对LLM优化的顶级推理速度和吞吐量的专有推理引擎。然而,TitanML没有分享任何关于其引擎的细节。
- 简化部署:该工具提供现成的Docker镜像,便于自托管。对于支持的模型,容器中附带了已经打包好的模型。对于自定义模型,有文档可以将模型导入TitanML容器。
- 推理优化:Titan Takeoff工具提供多GPU支持和量化,并提供额外的实用程序来优化特定硬件的模型性能。
- 用户友好界面:Titan Takeoff包括用于模型测试和管理的GUI。
- 无云提供商锁定:该框架使您能够在Amazon SageMaker、Vertex AI、EC2、CloudRun、LangChain API或Kubernetes集群上部署您的模型。
Titan起飞推理服务器的主要局限性和缺点
- 定价:TitanML网站上的定价部分没有提供任何关于定价结构或范围的有形信息。
- 专业关注点:Titan Takeoff主要为LLM设计。
- 新产品和新公司:Titan Takeoff是一家相对较新的公司,其背后的公司仍然是一家小型初创公司。该产品及其开发者是否会成为一个有力的竞争者,还有待观察。
总结
Titan Takeoff推理服务器对于为自定义LLM部署优先考虑数据隐私的团队来说是一个可靠的选择。无论如何,考虑到其早期阶段和增长潜力,这个平台值得所有有兴趣为LLM服务的人关注。
模型服务运行时的比较
为了帮助您浏览我们审查过的为运行时服务的模型,以下是它们的核心功能概述:
Serving Runtimes
|
Multi-framework support
|
Complexity
|
Native high-performance runtime support(1)
|
Concurrent model execution
|
Model Versioning
|
LLM support
|
Pricing
|
---|---|---|---|---|---|---|---|
BentoML |
Low |
Free +Paid for fully-managed |
|||||
TensorFlow Serving |
Medium |
Free |
|||||
TorchServe |
Medium |
Free |
|||||
Nvidia Triton |
High |
Free |
|||||
TitanML |
Low |
Paid |
由于我们考虑的所有服务运行时都支持RESTAPI、gRPC、自适应批处理、异步API和生成Prometheus日志。我们决定不在比较表中添加这些功能的列,以保持其简洁和信息丰富。
模型服务平台(Model-serving platforms)
模型服务平台的作用是管理用于部署和扩展机器学习模型的基础设施。
重要的是要明白,决策不是在选择服务平台还是服务运行时之间。在大多数情况下,两者都需要。事实上,与服务运行时打包的模型可以部署在服务平台上进行扩展和监控。
还值得一提的是,大多数服务平台都有自己的本地服务运行时,您可以选择使用或替代外部服务运行时。
让我们以Vertex AI服务平台为例:
- 本地服务运行时:您可以使用Google提供的预构建的模型容器来部署您的模型。
- 外部服务运行时:另一种选择是使用您使用模型服务运行时(如BentML)创建的自定义容器。
- 云提供商平台(亚马逊SageMaker、顶点人工智能、Azure机器学习)
模型服务平台的作用是管理用于部署和扩展机器学习模型的基础设施。
重要的是要明白,决策不是在选择服务平台还是服务运行时之间。在大多数情况下,两者都需要。事实上,与服务运行时打包的模型可以部署在服务平台上进行扩展和监控。
还值得一提的是,大多数服务平台都有自己的本地服务运行时,您可以选择使用或替代外部服务运行时。
让我们以Vertex AI服务平台为例:
- 本地服务运行时:您可以使用Google提供的预构建的模型容器来部署您的模型。
- 外部服务运行时:另一种选择是使用您使用模型服务运行时(如BentML)创建的自定义容器。
云提供商平台(亚马逊SageMaker、顶点人工智能、Azure机器学习)
三大云提供商——亚马逊SageMaker、顶点人工智能和Azure机器学习——为平台服务的模式非常相似。它们是端到端机器学习平台的一部分,管理从数据准备到实验和培训再到部署的整个生命周期。
选择云提供商平台的原因
- 易用性:这些平台的简单性使即使是规模较小且相对缺乏经验的团队也能够快速部署、监控和扩展ML模型。
- 紧密集成:简化机器学习模型与相应云提供商的服务和工具的集成。例如,Vertex AI与谷歌云平台完全集成,而SageMaker与许多其他AWS服务无缝合作。
- 托管基础架构:只需很少的设置和维护即可扩展ML模型。平台将代表您委托和管理必要的计算资源。
- 自动缩放端点:模型端点会根据传入流量自动调整,只需付出最小的努力。(在我们这里讨论的三个解决方案中,Amazon SageMaker是唯一一个能够将其机器学习推理端点扩展到零的解决方案。)
- 支持:通过额外订阅,可以获得相应提供商的广泛支持。
- 内置监控:这些平台不需要额外的基础设施来监控模型容器,但具有在许多场景中足够的集成模型度量。
- 文档:提供全面且定期更新的文档。然而,通常庞大的文档导航起来是出了名的繁琐。
云提供商平台的主要局限性和缺点
- 供应商锁定:紧密的集成产生了对各自云提供商的强烈依赖。迁移到其他平台通常相当于重新设计设置的大部分。
- 高成本:这些平台比自我管理的基础设施更昂贵,尤其是当您的应用程序需要高端GPU时。与常规基础设施价格相比,云提供商收取了相当高的溢价。
- 复杂的定价:通常很难全面评估成本,因为除了使用完全管理的解决方案所需的额外费用外,还存在多种因素,如计算资源、存储需求和网络带宽,这些因素都会导致总体支出。
- 操作限制:云提供商平台强制执行特定于供应商的格式和程序。这限制了灵活性和可定制性,因为您有义务遵守云提供商的限制。
总结
云提供商平台非常适合MLOps专业知识有限的中小型团队。它们也非常适合那些长期致力于云平台并喜欢委托大部分环境维护的公司。然而,它们必须准备好支付与之相关的高昂成本。
KServe
KServe用于大规模服务的ModelMesh体系结构概述。控制器Pod协调多个Kubernetes部署,这些部署加载并服务于多个模型。路由层生成运行时Pods并分发传入请求。|来源
KServe是一个开源工具,专注于在Kubernetes上服务和扩展机器学习模型。
该工具以前被称为KFServing,源于开源的Kubeflow项目。它已被重命名为KServe,现在作为一个独立的服务器运行。
选择KServe的原因
- 自动缩放:此平台提供开箱即用的自动缩放功能。此外,它还支持扩展到零以优化资源成本。
- 在线预测:KServe架构实现了高效的实时推理。
- 批预测:KServe实现了一个复杂的推理批处理器,提供高性能的批预测。
- 复杂推理图:KServe提供了一种优雅的设计,可以有效地处理复杂推理图。
- ML框架支持:支持各种ML框架,如TensorFlow和PyTorch。
- 集成:与ZenML、Kafka、Nvidia Triton、Grafana等一系列工具集成良好。
- 部署策略:KServe提供高级部署策略,如多武装土匪、A/B测试和Canary部署。
- 社区支持:这个平台得益于一个积极支持的社区。
KServe的主要局限性和缺点
- Kubernetes的复杂性:KServe要求您部署和维护自己的Kubernete集群,如果没有专门的DevOps团队,这可能会很有挑战性。
- 缺乏内置监控:KServe不包括用于模型监控的内置解决方案。KServe容器生成普罗米修斯日志,但用户只能安装和维护普罗米修斯服务器。然而,由于KServe已经在K8上运行,添加一个额外的组件应该不会成为问题。
总结
该平台非常适合具有扎实Kubernetes知识的团队,这些团队优先考虑高级部署功能和定制,以根据应用程序定制MLOps基础设施。
Seldon Core
Seldon Core是一个模型服务平台,用于在Kubernetes上部署和扩展机器学习模型。此平台以其高级部署功能而闻名。
在2024年1月22日之前,Seldon Core一直是一个免费的开源工具。然而,它过渡到了商业来源许可证(BSL)1.1。公司现在需要每年18000美元的订阅费,才能将2024年1月22日之后发布的Seldon Core版本的产品商业化。
选择Seldon Core的原因
- 在线预测:通过原生Kafka集成提供强大的在线预测解决方案。
- 批量预测:该工具为批量预测提供了一种结构良好的方法。
- 高级部署:支持Multi-Armed Bandit、Canary部署和A/B测试。
Seldon Core的主要局限性和缺点
- 昂贵的订阅:在没有提供商支持的情况下,Seldon的起价为每年18000美元。
- Kubernetes的复杂性:Seldon Core要求您部署和维护自己的Kubernete集群,如果没有专门的DevOps团队,这可能会很有挑战性。
- 自动缩放:自动缩放需要通过KEDA进行额外设置,并且不支持缩放到零。
总结
对于希望在Kubernetes上扩展机器学习模型并使用高级部署功能的团队来说,Seldon Core是一个可行且可靠的替代方案。
BentCloud
BentCloud用户界面显示支持的预打包ML模型|来源:截图作者
BentCloud是一个用于扩展BentML容器的专有模型服务平台,由制造BentML的同一家公司设计和运营。它的目标是性能和成本效益。
BentCloud利用BentML服务运行时提供预构建的模型容器和高级API,用几行代码扩展机器学习模型。
选择BentCloud的原因
- 易用性:BentCloud为开发人员在各种云提供商上部署BentML容器提供了简单而有效的CLI体验。
- 复杂推理图:BentCloud允许构建具有多个模型的分布式推理图。
- 自动缩放:BentoCloud平台支持开箱即用的自动缩放,并且可以缩放到零。
- 高级部署策略:BentCloud支持canary部署和A/B测试。
- ML框架支持:随着该平台扩展和管理BentML容器,它继承了其广泛的机器学习框架支持。
- 无供应商锁定:企业客户可以将BentCloud部署到他们选择的云提供商。此外,团队始终可以在BentCloud之外部署他们的BentML Docker映像。
- 内置监控:模型指标可从BentCloud UI访问,无需额外设置。
BentCloud的主要局限性和缺点
- 成本:BentCloud平台不是开源的。完全管理的变体采用现收现付的定价模式。企业订阅(定价不公开)允许在您自己的云基础设施上部署BentCloud。
- 需要BentML:BentCloud仅支持与运行时服务的BentML模型打包的模型
- 无多武装土匪:BentCloud不支持多武装土匪部署策略
总结
对于那些愿意使用BentML作为服务运行时并正在寻找易于使用的完全管理平台的团队来说,BentCloud是一个很好的选择。
模型服务平台比较
为了帮助您浏览我们讨论过的模型服务平台,以下是它们的核心功能概述:
Serving Platforms
|
Multi-framework support
|
Complexity
|
Auto Scaling
|
Needs K8s
|
Scales to zero
|
Vendor Lock-in
|
Multi Armed Bandits
|
A/B Testing
|
Canary
|
Built-in Monitoring
|
Pricing
|
---|---|---|---|---|---|---|---|---|---|---|---|
Amazon SageMaker |
Medium |
Paid |
|||||||||
Vertex AI |
Medium |
Paid |
|||||||||
Azure Machine Learning |
Medium |
Paid |
|||||||||
KServe |
High |
Free |
|||||||||
Seldon Core |
High |
Paid |
|||||||||
BentoCloud |
Low |
Paid |
结论
选择正确的模型服务工具对于将机器学习模型转化为具有价值的应用程序至关重要。
在本文中,我们概述了服务运行时和平台,强调了它们的特性、优点和局限性。如果你做到了这一点,你可能已经理解了找到公司最佳模型服务堆栈的困难。
请记住,您的选择应该基于项目的需求、团队的技能以及您需要对部署和扩展进行多大程度的控制。框架兼容性、集成能力以及复杂性和功能性之间的权衡等因素也是这一决策的关键。
这里是我们的最后一点建议:首先缩小哪些工具可以匹配您的特定用例。然后,花一些时间为每个潜在选项构建概念验证(PoC)。没有比快速实施更好的方法来获得框架的感觉了。
- 登录 发表评论
- 60 次浏览
最新内容
- 6 days 13 hours ago
- 6 days 13 hours ago
- 6 days 14 hours ago
- 6 days 14 hours ago
- 6 days 14 hours ago
- 1 week 5 days ago
- 1 week 6 days ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago
- 2 weeks 2 days ago