数据中心/云端

实践中的机器学习: ML 工作流

本系列介绍 开发和部署  ( M L ) 模型 。本文概述了 ML 工作流,考虑到使用机器学习和数据科学来实现业务价值所涉及的各个阶段。在第 2 部分中,训练并保存 ML 模型 可以将其部署为 ML 系统的一部分。第 3 部分向您展示了 如何部署 ML 模型到 Google 云平台 ( GCP )。

当使用 machine learning 解决问题并提供业务价值时,您使用的技术、工具和模型会根据用例而变化。然而,当从一个想法转移到一个已部署的模型时,需要经过一组通用的工作流阶段。

之前,我讨论过 如何搭建机器学习微服务如何使用 Streamlit 和 FastAPI 构建即时机器学习 Web 应用程序 。在这两个教程中, ML 模型仅在本地运行。这对于演示来说已经足够了,但如果您的模型必须在互联网上持续提供预测,则这是不切实际的。

机器学习工作流

ML 工作流包含以下主要组件:

  • 勘探和数据处理
  • 建模
  • 部署

每个阶段都可以细分为更小的程序。

Diagram of end-to-end machine learning workflow including the steps of exploring and processing data, modeling, and deployment.
图 1. 机器学习工作流
(Source: Become a Machine Learning Engineer Nanodegree (Udacity)

图 1 显示了典型机器学习项目的端到端工作流的可视化表示。下面是有关每个组件的更多信息。

勘探和加工

重要的工作是确保用于 ML 项目的数据集质量良好,因为这些数据是建模阶段可靠性能的基础。如果您向模型提供低质量的数据,则可能会产生较差或错误的结果。

这部分工作流程通常占用最多的时间。数据勘探和处理可进一步分为以下几个阶段:

  • Data retrieval : ML 项目需要高质量的数据,而这些数据并不总是可以立即访问的。您可能需要实施数据采集技术,例如刮取或手动数据采集。
  • 数据清理和探索 :数据也很少能够立即处理。您必须对其进行清理,以在所需的用例中获得最佳性能。您还应该了解正在使用的数据集,因此需要进行探索。
  • 数据准备或转换 :在最后阶段,对数据进行设计,以提取正在解决的现实世界问题的代表性特征。然后将数据转换为 ML 模型可以使用的格式。

建模

当大多数数据从业者想到机器学习时,他们的注意力都集中在建模组件上。建模阶段包括以下阶段:

  • 模型开发和培训 :这一阶段是关于向机器学习模型提供数据,然后调整超参数,以便模型可以很好地推广到不可见的数据输入。
  • 模型验证和评估 :必须评估机器学习模型的性能,以确定其行为是否符合预期。这涉及到确定一个数字度量,以评估模型对未知数据输入的性能。

模型部署

最后,部署阶段涉及使最终用户可以访问 ML 模型,监控模型在生产中的性能,并更新模型。

部署 ML 模型不仅仅是孤立的模型。数据从业者部署整个 ML 管道,这决定了如何编码和自动化端到端工作流。

如何实现这一点有几个选项。

不同的模型部署选项

生成 ML 应用程序是为了解决特定问题。因此,任何 ML 应用程序的真正价值通常只有在模型或算法在生产环境中被积极使用时才能实现。

将 ML 模型从离线研究环境转换到实时生产环境的过程称为 deployment

部署是 ML 工作流的一个关键组件。它使模型能够达到其预期目的。在项目规划阶段,必须考虑如何部署 ML 模型。在决定部署类型时要考虑的因素超出了本文的范围。然而,我提供了一些关于可用选项的见解。

Web 服务

部署机器学习模型最直接的选择是创建 web 服务。这意味着通过查询 web 服务来获得来自模型的预测。

使用 web 服务部署机器学习模型包括以下主要步骤:

  • Building the model: 必须创建 ML 模型,然后将其包装在 web 服务中。然而,模型构建通常需要与主 web 服务应用程序不同的一组资源。将模型培训和 web 服务应用程序环境分开是有意义的。
  • 构建 web 应用程序: 训练模型后,必须将其持久化,以便将其导入 web 应用程序。 web 应用程序是使用开发 web 服务的框架(如 FlaskFastAPIDjango )包装的推理逻辑。
  • 托管 web 服务: 为了让您的 web 服务全天候、自动化和可扩展,您必须托管应用程序。这可以通过使用托管提供商来完成。在本系列的第三部分中,您将使用 Google App Engine 。

有关前两个步骤的更多信息,请参见 Building a Machine Learning Microservice with FastAPI

无服务器计算

使用无服务器计算部署机器学习模型意味着您希望为模型预测提供服务,而不必担心如何管理底层基础设施,例如计算资源。

仍然有一个服务器。所发生的一切是,您将管理服务器的责任交给了云提供商。现在,您可以更加专注于编写性能更好的代码。

无服务器计算提供程序的示例包括:

要使用 Google Cloud Functions 部署机器学习模型,请参阅本系列的第 3 部分“实践中的机器学习:在 Google Cloud Provider 上部署 ML 模型[LINK]”。

托管 AI 云

一个管理的人工智能云正是它在锡上所说的。您提供了一个串行化模型,云提供商以较少的控制为代价,为您完全管理基础架构。换句话说,您可以获得云计算的优化好处,而不必成为任何方面的专家。

托管 AI 云提供商的示例包括:

接下来是什么?

现在您已经了解了端到端 ML 工作流,并且已经看到了部署 ML 模型的可能方法,请继续第 2 部分 Machine Learning in Practice: Build an ML Model ,在这里您将根据一些数据训练模型。

 

Tags