构建一个机器学习模型并不算难事,但要高效地创建数百甚至数千个模型,并对现有模型进行迭代更新,则会变得异常复杂。
在如此庞杂的工作中,很容易让人迷失方向。当团队协作时,这种混乱会进一步加剧,因为现在需要跟踪每个成员的工作进展。要理清思路,整个团队必须遵循统一流程并记录各自的活动。这正是 MLOps 的核心所在。
什么是 MLOps?
参考资料:ml-ops.org
根据 MLOps.org 的定义,机器学习运维(MLOps)旨在构建一个端到端的机器学习开发流程,以设计、构建和管理可重现、可测试且可演化的机器学习软件。本质上,MLOps 是将 DevOps 原则应用于机器学习领域。
与 DevOps 类似,MLOps 的关键理念是通过自动化来减少人工步骤并提高效率。此外,与 DevOps 一样,MLOps 也包含持续集成 (CI) 和持续交付 (CD)。除此之外,它还增加了持续训练 (CT)。持续训练的另一方面涉及使用新数据重新训练模型并重新部署它们。
因此,MLOps 是一种工程文化,它提倡一种有条不紊的机器学习模型开发方法,并强调自动化各个步骤。这个过程主要涵盖数据提取、分析、准备、模型训练、评估、模型服务和监控等环节。
MLOps 的优势
总的来说,应用 MLOps 原则的优势与拥有标准操作程序的优势类似。具体优点包括:
- 清晰的流程为模型开发中的每个关键步骤提供了路线图,确保不会遗漏任何重要环节。
- 可以识别并自动化那些可以自动化的过程步骤,从而减少重复劳动并提高开发速度。这不仅减少了人为错误,也降低了整体工作量。
- 通过了解模型在流程中的阶段,可以更轻松地评估模型开发的进度。
- 团队成员之间可以更方便地进行沟通,因为在开发过程中所采取的步骤都有统一的术语。
- 此流程可以重复应用于开发多个模型,提供了一种有效管理复杂性的方法。
综上所述,MLOps 在机器学习中的作用是为模型开发提供一种尽可能自动化且有条不紊的方法。
构建管道的平台
为了帮助您在管道中实施 MLOps,您可以使用我们将在下面讨论的多个平台之一。尽管这些平台的具体功能可能有所不同,但它们基本上都可以帮助您实现以下目标:
- 存储所有模型及其相关的元数据,例如配置、代码、准确性和实验记录。它还包括不同版本的模型以进行版本控制。
- 存储数据集的元数据,例如用于训练模型的数据。
- 监控生产中的模型,以发现模型漂移等问题。
- 将模型部署到生产环境。
- 在低代码或无代码环境中构建模型。
接下来,我们将探讨一些优秀的 MLOps 平台。
MLFlow
MLFlow 可能是最受欢迎的机器学习生命周期管理平台之一。它是一个免费且开源的工具,提供以下功能:
- 跟踪,用于记录机器学习实验、代码、数据、配置和最终结果;
- 项目,以易于复制的格式打包代码;
- 部署,用于部署机器学习模型;
- 注册表,用于将所有模型存储在中央存储库中。
MLFlow 与 TensorFlow 和 PyTorch 等流行的机器学习库集成,同时还支持 Apache Spark、H2O.ai、Google Cloud、Amazon SageMaker、Azure Machine Learning 和 Databricks 等平台。它也兼容不同的云服务提供商,如 AWS、Google Cloud 和 Microsoft Azure。
Azure 机器学习
Azure 机器学习是一个端到端的机器学习平台,可以管理 MLOps 管道中的各种机器学习生命周期活动,包括数据准备、模型构建与训练、验证与部署,以及部署后的管理和监控。
Azure 机器学习允许用户使用他们偏好的 IDE 以及选择的框架(如 PyTorch 或 TensorFlow)来构建模型。
该平台还与 ONNX Runtime 和 DeepSpeed 集成,以优化训练和推理过程,从而提高性能。它利用 Microsoft Azure 上的 AI 基础设施,结合 NVIDIA GPU 和 Mellanox 网络,来帮助用户构建机器学习集群。通过 AML,用户可以创建中央注册表来存储和共享模型及数据集。
Azure 机器学习还与 Git 和 GitHub Actions 集成,以构建工作流。它支持混合或多云环境,并可以与其他 Azure 服务(如 Synapse Analytics、Data Lake、Databricks 和安全中心)集成。
谷歌 Vertex AI
Google Vertex AI 是一个统一的数据和人工智能平台,提供了构建自定义和预训练模型所需的工具,并可作为实现 MLOps 的端到端解决方案。为了方便使用,它与 BigQuery、Dataproc 和 Spark 集成,以在训练过程中实现无缝数据访问。
除了 API 之外,Google Vertex AI 还提供低代码和无代码工具环境,这使得业务分析师、数据工程师等非开发人员也能使用它。API 则方便开发人员将其与现有系统集成。
Google Vertex AI 还允许用户使用 Generative AI Studio 构建生成式 AI 应用程序,并简化了基础设施的部署和管理。Google Vertex AI 的理想用例包括确保数据就绪、特征工程、训练和超参数调整、模型服务、模型调整和理解、模型监控以及模型管理。
Databricks
Databricks 是一个数据湖平台,允许用户准备和处理数据。它帮助用户管理从实验到生产的整个机器学习生命周期。
Databricks 本质上提供了托管的 MLFlow,从而具备了 ML 模型的数据记录和版本控制、实验跟踪、模型服务、模型注册表以及指标跟踪等功能。模型注册表允许用户存储模型以实现可重现性,并帮助用户跟踪模型的版本及其生命周期中的各个阶段。
用户可以使用 Dataricks 一键部署模型,并获得可用于预测的 REST API 端点。在其他功能中,它还可以与现有的预训练生成和大型语言模型(例如来自 hugging face transformers 库的模型)良好集成。
Databricks 提供支持 Python、R、SQL 和 Scala 的协作式 Databricks Notebook。此外,它还提供针对机器学习任务优化的预配置集群,从而简化了基础设施管理。
AWS SageMaker
AWS SageMaker 是一项 AWS 云服务,提供了开发、训练和部署机器学习模型所需的工具。SageMaker 的主要目标是自动化构建机器学习模型过程中涉及的繁琐且重复的人工工作。
因此,它为用户提供了利用各种 AWS 服务(如 Amazon EC2 实例和 Amazon S3 存储)构建机器学习模型生产管道的工具。
SageMaker 与安装在 EC2 实例上的 Jupyter Notebooks 以及对机器学习模型进行编码所需的所有常用软件包和库一起使用。对于数据,SageMaker 可以从 Amazon Simple Storage Service 中提取数据。
默认情况下,用户可以获得常见机器学习算法的实现,如线性回归和图像分类。SageMaker 还配备一个模型监视器,可以进行连续和自动调整,以找到为模型提供最佳性能的参数集。部署过程也得到了简化,用户可以轻松地将模型部署到 AWS,并将其作为可以使用 CloudWatch 监控的安全 HTTP 端点。
DataRobot
DataRobot 是一个流行的 MLOps 平台,允许用户管理机器学习生命周期的不同阶段,如数据准备、ML 实验、验证和模型管理。
它提供了自动化运行不同数据源实验、测试数千个模型并评估最佳模型以部署到生产环境的工具。该平台支持构建不同类型的人工智能模型,以解决时间序列、自然语言处理和计算机视觉等方面的问题。
使用 DataRobot,用户可以使用现成的模型进行构建,而无需编写代码。或者,用户也可以选择代码优先的方法,并使用自定义代码实现模型。
DataRobot 自带笔记本,可用于编写和编辑代码。用户也可以使用 API 在他们选择的 IDE 中开发模型。使用 GUI,用户可以跟踪模型的实验。
Run AI
Run AI 旨在解决 AI 基础设施(尤其是 GPU)利用率不足的问题。它通过提高所有基础设施的可见性并确保在训练期间充分利用来解决这个问题。
为此,Run AI 位于用户的 MLOps 软件和公司硬件之间。在占据这一层时,所有训练作业都通过 Run AI 运行。反过来,该平台会安排每个作业的运行时间。
Run AI 对硬件必须基于云(例如 AWS 和 Google Cloud)、本地或混合解决方案没有限制。它通过充当 GPU 虚拟化平台,为机器学习团队提供了抽象层。用户可以通过 Jupyter Notebook、bash 终端或远程 PyCharm 运行任务。
H2O.ai
H2O 是一个开源的分布式机器学习平台,允许团队协作并为模型创建一个中央存储库,数据科学家可以在其中试验和比较不同的模型。
作为 MLOps 平台,H2O 提供了许多关键功能。首先,H2O 简化了将模型作为 REST 端点部署到服务器的过程。它支持不同的部署场景,例如 A/B 测试、冠军-挑战者模型和简单的单一模型部署。
在训练期间,H2O 会存储和管理数据、工件、实验、模型和部署,从而确保模型的可重现性。它还支持组和用户级别的权限管理,以控制模型和数据访问。在模型运行时,H2O 还提供对模型漂移和其他操作指标的实时监控。
Paperspace Gradient
Gradient 在机器学习开发周期的各个阶段为开发人员提供帮助。它提供了由开源 Jupyter 支持的笔记本,用于在云端使用强大的 GPU 进行模型开发和训练,从而使用户能够快速探索模型并制作原型。
部署管道可以通过创建工作流来实现自动化。这些工作流通过在 YAML 中描述任务来定义。通过使用工作流,可以轻松地创建可重复部署和服务模型,从而实现可扩展性。
总而言之,Gradient 提供容器、机器、数据、模型、指标、日志和密钥,以帮助用户管理机器学习模型开发管道的不同阶段。用户的管道在 Gradient 集群上运行,这些集群可以位于 Paperspace Cloud、AWS、GCP、Azure 或任何其他服务器上。用户可以使用 CLI 或 SDK 以编程方式与 Gradient 交互。
最后的话
MLOps 是一种强大且用途广泛的方法,可以大规模构建、部署和管理机器学习模型。MLOps 易于使用、可扩展且安全,是各种规模组织的理想选择。
在本文中,我们介绍了 MLOps、实现其重要性、涉及的内容以及不同的流行 MLOps 平台。
接下来,您可能想阅读我们对 Dataricks 与 Snowflake 的比较。