主流ML模型部署工具

270 阅读6分钟

本文列出用于模型部署的最佳工具。可帮助扩展和管理机器学习生命周期的所有要素,包括服务、监控和管理 API 端点。

1 Seldon.io

该框架简化并加速了ML模型部署。Seldon处理和服务在任何其他开源 ML 框架中构建的模型。 ML模型部署在Kubernetes中。 随着它与 Kubernetes一起扩展,它使我们能够使用最先进的 Kubernetes功能,例如自定义资源定义来处理模型图。

Seldon 还提供将项目与持续集成和部署 (CI/CD) 工具连接起来的功能,以扩展和更新模型部署。它有一个警报系统,可以在监控生产中的模型时出现问题时通知你。 可以定义模型来解释某些预测。 该工具可在云端和本地使用。

优点:

  • 定制离线模型。
  • 向外部客户端公开 API实时预测。
  • 简化部署过程。

缺点:

  • 设置可能有点复杂。
  • 对于新人来说学习可能会很困难。

2 BentoML

BentoML 简化了构建机器学习服务的过程。 它提供了一个基于 Python 的标准架构,用于部署和维护生产级 API。 该架构允许用户使用任何 ML 框架轻松打包经过训练的模型,以进行在线和离线模型服务。
BentoML 的高性能模型服务器支持自适应微批处理以及独立于业务逻辑扩展模型推理工作人员的能力。 UI 仪表板提供了一个集中式系统来组织模型和监控部署流程。 其模块化设计使得配置可与现有的 GitOps工作流程重用,并且自动 docker 映像生成使部署到生产成为一个简单且版本化的过程。

多用途框架解决了 ML 模型的服务、组织和部署问题。 主要重点是将数据科学和 DevOps 部门连接起来,以提供更高效的工作环境并生成高性能的可扩展 API端点。

优点:

  • 用于轻松大规模部署预测服务的实用格式
  • 支持以单一统一格式提供高性能模型服务和部署
  • 支持模型部署到多个平台,而不仅仅是Kubernetes

缺点:

  • 不专注于实验管理。
  • 不处理开箱即用的水平缩放。

3 TensorFlow Serving

如果想将经过训练的模型部署为端点,可以使用 TensorFlow Serving 来实现。它允许您创建一个将为经过训练的模型提供服务的 REST API 端点。

TensorFlow Serving 是一个强大的高性能系统,用于为机器学习模型提供服务。你可以轻松部署最先进的机器学习算法,同时维护与其各自端点相同的服务器架构。 它功能强大,足以为不同类型的模型和数据以及 TensorFlow 模型提供服务。

优点:

  • 一旦部署模型准备就绪,该工具就可以轻松提供服务。
  • 它可以向同一模型发起批量请求,从而有效地利用硬件。
  • 它还提供模型版本管理。
  • 该工具易于使用,负责模型和服务管理。

缺点:

  • 当加载新模型或更新旧模型时,无法确保零停机。
  • 仅适用于 TensorFlow 模型。

4 Kubeflow

Kubeflow简化了机器学习工作流程的开发和部署,从而使模型可追溯。 它提供了一组强大的 ML 工具和架构框架来高效执行各种 ML 任务。

多功能 UI 仪表板可以轻松管理和跟踪实验、任务和部署运行。 Notebook 功能使我们能够使用指定的平台开发套件与 ML 系统进行交互。

组件和管道是模块化的,可以重复使用以提供快速解决方案。 该平台由 Google 启动,旨在通过 Kubernetes 为 TensorFlow 任务提供服务。 后来它扩展到执行整个机器学习管道的多云、多架构框架。
优点:

  • 一致的基础设施,提供监控、运行状况检查、每次复制以及新功能的扩展。
  • 简化新团队成员的入职流程。
  • 标准化流程有助于建立安全性并更好地控制基础设施。

缺点:

  • 很难手动设置和配置。
  • 高可用性不是自动的,需要手动配置。
  • 工具的学习曲线很陡。

5 Cortex

Cortex 是一种开源多框架工具,足够灵活,可以用作模型服务工具,也可以用于模型监控等目的。 凭借其处理不同机器学习工作流程的能力,它使你能够完全控制模型管理操作。 它还可以作为使用 SageMaker 工具提供模型的替代方案,以及基于 AWS 服务(例如 Elastic Kubernetes Service (EKS)、Lambda 或 Fargate)的模型部署平台。

Cortex 扩展到 Docker、Kubernetes、TensorFlow Serving 和 TorchServe 等开源项目。 它可以与任何 ML 库或工具结合使用。 它提供端点的可扩展性来管理负载。

优点:

  • 自动缩放功能可确保 API 在网络流量波动时保持安全。
  • 支持Keras、TensorFlow、Scikit-learn、PyTorch等多个平台。
  • 更新模型时无需停机。

缺点:

  • 设置过程可能有点令人畏惧

6 AWS Sagemaker

AWS Sagemaker 是 Amazon 提供的一项强大服务。 它使机器学习开发人员能够快速构建、训练和部署机器学习模型。

优点

  • 设置过程很简单,可以与 Jupyter Notebook 一起运行。 因此,简化了脚本的管理和部署。
  • 成本是模块化的,具体取决于您使用的功能。
  • 模型训练是在多台服务器上完成的。

缺点:

  • 初级开发人员的学习曲线陡峭。
  • 严格的工作流程使得定制变得困难。
  • 仅适用于 AWS 生态系统

7 MLflow

如果你正在寻找一个开源工具来组织整个机器学习生命周期,那么MLflow可能就是适合你的平台。 MLflow 提供用于管理 ML 流程和部署的解决方案。 它可以进行实验、再现、部署,或者成为中央模型注册表。

该平台可供个人开发人员和团队用于机器学习部署。 它可以合并到任何编程生态系统中。 该库是为了满足各种技术需求而构建的,可以与不同的机器学习库一起使用。 组织整个机器学习生命周期围绕四个主要功能:跟踪、项目、模型和模型注册表。

优点:

  • 模型跟踪机制易于设置。
  • 它提供了非常直观的 API 服务。
  • 日志记录实用且简化,因此很容易进行实验。
  • 代码优先的方法。

缺点:

  • 向模型添加额外的工作并不是自动的。
  • 不太容易,但非常适合将模型部署到不同的平台。

8 Torchserve

Torchserve 是一个 Pytorch 模型服务框架。 它简化了经过训练的 PyTorch 模型的大规模部署。它消除了为模型部署编写自定义代码的需要。

优点:

  • 简化了部署模型的扩展
  • 服务端点是轻量级的,具有高性能规模。

缺点:

  • 由于该工具是实验性的,因此经常会发生更改和更新。
  • 仅适用于 PyTorch 模型

参考:
neptune.ai/blog/best-m…