使用 OCI 原生服务和 MLflow 在 OCI 上构建可扩展的 MLOps 管道

此参考架构介绍了如何在 Oracle Cloud Infrastructure (OCI) 上实施可扩展的自动化 MLOps 管道。

该架构可帮助企业通过一致性、治理、速度、可重现性、自动化部署、模型生命周期管理和可观测性来运营机器学习模型。

该解决方案集成了 OCI DevOpsOracle Cloud Infrastructure Data ScienceOracle Cloud Infrastructure Kubernetes Engine ( OKE ),可实现端到端的机器学习生命周期自动化。培训工作负载是容器化的,作为 DevOps 管道触发的 Oracle Cloud Infrastructure Data Science 作业运行,而部署在 OKE 上的 MLflow 提供实验跟踪和模型注册表功能,并将对象存储在 OCI Object Storage 中。培训后, OCI DevOps 会自动将最新批准的模型从 MLflow 模型注册表部署到 OKE ,并通过 OCI Load Balancer 来访问 MLflow 和推断服务。

使用须知

在部署此解决方案之前,请确保满足以下先决条件:

  • 一个具有足够服务限制的活动 Oracle Cloud Infrastructure 租户。
  • 为环境隔离(例如开发、测试和生产)配置了区间。
  • OCI Identity and Access Management 策略:
    • OCI 开发运维
    • Oracle Cloud Infrastructure Data Science
    • OKE
    • OCI 对象存储
    • OCI Vault
    • OCI 通知
    • OCI 负载均衡器
  • 配置的虚拟云网络 (VCN),具有:
    • OKEOracle Cloud Infrastructure Data Science 的专用子网。
    • OCI Load Balancer 的公共子网(如果需要外部访问)。
    • OCI Service Gateway
    • NAT 网关,
  • 为以下项预配的 OKE 群集:
    • MLflow 作为 MLOps 服务。
    • 推断工作量。
  • 部署在 OKE 上的 MLflow,配置有:
    • OCI Object Storage 作为构件存储。
    • 已启用模型注册表。
  • OCI DevOps 项目:
    • 源存储库。
    • 构建和部署管道。
  • 配置了 OCI 通知主题和订阅。
  • 熟悉 Docker、Kubernetes 和机器学习工作流。

体系结构

此架构实现了自动化 MLOps 管道,其中 Oracle Cloud Infrastructure DevOps 构建训练容器并触发 Oracle Cloud Infrastructure Data Science 作业进行模型训练。

培训任务从 OCI Container Registry (OCIR) 提取容器映像,并通过 Oracle Cloud Infrastructure Service Gateway 访问 Oracle Cloud Infrastructure Object Storage 中的数据集。运行时,训练度量和对象将记录到在 OCI Kubernetes 引擎上运行的 MLflow 中,对象将持久性和可扩展性保留在 OCI 对象存储中。

训练完成后,模型在 MLflow 模型注册表中进行注册,并通过定义的阶段进行提升。OCI DevOps 会自动触发部署管道,以检索最新批准的模型版本并将其作为推断服务部署到 OCI Kubernetes Engine 。MLflow 服务(MLOps 控制层)和推断端点均通过 Oracle Cloud Infrastructure Load Balancer 公开,可提供统一、可扩展的访问层。在整个管道中,Oracle Cloud Infrastructure Notifications 可为构建、培训和部署阶段提供实时更新。该解决方案使用专用网络在安全的 VCN 中运行,使用 Oracle Cloud Infrastructure Vault 进行密钥管理,使用 Oracle Cloud Infrastructure LoggingOracle Cloud Infrastructure Monitoring 进行观测。

下图说明了此参考体系结构。



auto-mlops-pipeline-ocidevops-arch-oracle.zip#GUID-3A0A729D-6AD6-4CC7-9EFA-51F02B8941EA

此体系结构包含以下组件:

  • 基础结构
    • 可用性域

      可用性域是区域中独立的数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共用基础设施(例如电源或冷却设备)或内部可用性域网络。因此,一个可用性域出现故障不会影响该区域中的其他可用性域。

    • 区间

      区间是 OCI 租户中的跨区域逻辑分区。使用区间来组织、控制访问并为 Oracle Cloud 资源设置使用限额。在给定的区间中,您可以定义策略来控制对资源的访问和设置权限。

    • Internet 网关

      互联网网关允许 VCN 中的公共子网与公共互联网之间的流量。

    • OCI 地区

      OCI 区域是一个本地化的地理区域,其中包含一个或多个托管可用性域的数据中心。区域独立于其他区域,并且很远的距离可以将它们分开(跨越国家甚至大洲)。

    • 安全列表

      您可以为每个子网创建安全规则,以指定允许进出子网的通信的源、目标和类型。

    • 服务网关

      通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量将通过 Oracle 网络结构传输,不会通过互联网。

    • Tenancy

      租户是 Oracle 在您注册 OCI 时在 Oracle Cloud 中设置的安全隔离分区。您可以在租户的 OCI 上创建、组织和管理资源。租户是公司或组织的同义词。通常,公司将具有单个租户,并反映其在该租户中的组织结构。单个租户通常与单个订阅关联,而单个订阅通常只有一个租户。

    • OCI 虚拟云网络和子网

      虚拟云网络 (VCN) 是您可以在 OCI 区域中设置的可定制软件定义网络。与传统数据中心网络一样,VCN 允许您控制网络环境。一个 VCN 可以具有多个不重叠的无类域间路由 (classless inter-domain routing,CIDR) 块,在创建 VCN 后可以更改这些块。您可以将 VCN 细分为多个子网,这些子网可以限定为某个区域或某个可用性域。每个子网由一系列不与 VCN 中的其他子网重叠的连续地址组成。您可以在创建子网后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • Oracle 服务网络 (OSN)
    • OCI 日志记录
      Oracle Cloud Infrastructure Logging 是一项高度可扩展且完全托管的服务,支持您从云端资源访问以下类型的日志:
      • 审计日志:与 OCI Audit 生成的事件相关的日志。
      • 服务日志:各个服务(例如 OCI API GatewayOCI EventsOCI FunctionsOCI Load BalancerOCI Object Storage 和 VCN 流日志)发布的日志。
      • 定制日志:包含来自定制应用程序、其他云提供商或内部部署环境的诊断信息的日志。
    • OCI 监视

      Oracle Cloud Infrastructure Monitoring 主动和被动地监视您的云资源,并使用预警在指标满足指定触发器时通知您。

    • OCI 通知

      OCI 通知使用低延迟的发布 - 订阅模式向分布式组件广播消息,为 OCI 上托管的应用提供安全、高度可靠、持久的消息。

    • Oracle 服务网络

      Oracle 服务网络 (OSN) 是一个基于 OCI 的概念网络,专为 Oracle 服务保留。这些服务具有可通过互联网访问的公共 IP 地址。Oracle Cloud 外部的主机可以使用 Oracle Cloud Infrastructure FastConnect 或 VPN Connect 私下访问 OSN。VCN 中的主机可以通过服务网关以专用方式访问 OSN。

    • OCI Vault

      借助 Oracle Cloud Infrastructure Vault ,您可以创建并集中管理加密密钥,以保护您的数据和用于保护云中资源访问安全的密钥凭证。默认密钥管理是 Oracle 管理的密钥。您还可以使用客户管理的密钥,这些密钥使用 OCI VaultOCI Vault 提供一组丰富的 REST API 来管理 Vault 和密钥。

    • OCI Web 应用防火墙

      Oracle Cloud Infrastructure Web Application Firewall (WAF) 是一种符合支付卡行业 (PCI) 标准、基于区域和边缘实施服务,它连接到实施点(例如负载平衡器或 Web 应用域名)。WAF 可保护应用免受恶意和不需要的互联网流量的侵害。WAF 可以保护任何面向互联网的端点,并在您的应用中提供一致的规则实施。

  • 服务和产品
    • OCI 数据科学

      Oracle Cloud Infrastructure Data Science 是一个完全托管的无服务器平台,数据科学团队可以使用该平台在 OCI 上构建、训练和管理机器学习 (ML) 模型。它可以与其他 OCI 服务(例如 Oracle Autonomous AI LakehouseOracle Cloud Infrastructure Object Storage 等)轻松集成。您可以构建和评估高质量的机器学习模型,通过使企业可信的数据快速工作来提高业务灵活性,并且可以通过更轻松地部署机器学习模型来支持数据驱动的业务目标。

      借助数据科学作业功能,数据科学家可以在完全托管的基础设施上定义和运行可重复的机器学习任务。

      借助数据科学模型部署功能,数据科学家可以将训练的模型部署为完全托管的 HTTP 端点,从而实时提供预测,将智能注入到流程和应用中,并允许企业在发生相关事件时对事件做出响应。

    • OCI 开发运维

      Oracle Cloud Infrastructure DevOps (开发人员运营)是一个完整的连续集成/连续交付 (CI/CD) 平台,可帮助开发人员简化和自动化软件开发生命周期。借助 OCI DevOps ,开发人员和运营商可以协作开发、构建、测试和部署软件。开发人员和操作员可通过构建、测试和部署阶段的源提交历史记录了解整个开发生命周期。

    • OCI 身份和访问管理

      Oracle Cloud Infrastructure Identity and Access Management (IAM) 为 OCI 和 Oracle Cloud Applications 提供用户访问控制。通过 IAM API 和用户界面,您可以管理身份域及其中的资源。每个 OCI IAM 身份域都代表一个独立的身份和访问管理解决方案或不同的用户群体。

    • Kubernetes 集群

      Kubernetes 集群是一组运行容器化应用的计算机。Kubernetes 提供了一个可移植、可扩展的开源平台,用于管理这些节点中的容器化工作负载和服务。Kubernetes 集群由 worker 节点和控制层节点组成。

    • 负载平衡器

      Oracle Cloud Infrastructure Load Balancer 提供从单个入口点到多个服务器的自动流量分配。

    • OCI 对象存储

      OCI Object Storage 可访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以安全地直接从应用或云平台内存储数据。您可以扩展存储,而不会出现性能或服务可靠性下降的情况。

      将标准存储用于您需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留且很少或很少访问的“冷”存储。

  • MLflow(在 Kubernetes 引擎上)

    MLflow 是一个用于管理机器学习生命周期的开源平台,包括实验跟踪和模型注册表。它可以部署在 Kubernetes 上以实现可扩展性。在此架构中,MLflow 在 Kubernetes 引擎上运行,在 OCI 对象存储中存储构件,并将模型注册表作为生产模型的真实来源进行维护。它支持模型的版本控制、治理和控制推广。

  • OCI 容器注册表 (OCIR)

    OCI Container Registry 是一个用于存储和管理容器映像的托管专用 Docker 注册表。它与 OCI Identity and Access Management 集成,可实现安全访问控制。在此架构中,它存储版本化的培训和服务容器映像。这些映像由数据科学作业和 Kubernetes 引擎部署使用。

推荐

这些建议有助于提高 MLOps 管道的安全性、可扩展性和可维护性。
  • VCN
    • 创建 VCN 时,根据您计划附加到 VCN 中的子网的资源数量,确定所需的 CIDR 块数和每个块的大小。
    • 使用标准专用 IP 地址空间内的 CIDR 块,并选择与 Oracle Cloud Infrastructure 中的任何其他网络、内部部署数据中心或您打算为其设置专用连接的其他云提供商不重叠的 CIDR 块。
    • 创建 VCN 后,您可以更改、添加和删除其 CIDR 块。
    • 设计子网时,请考虑您的流量和安全要求。将特定层或角色中的所有资源附加到同一子网,该子网可以用作安全边界。
    • 使用区域子网。
  • 安全
    • 使用 Oracle Cloud Guard 主动监视和维护 Oracle Cloud Infrastructure 中资源的安全性。Cloud Guard 使用可定义的检测器配方来检查资源是否存在安全漏洞,并监视操作员和用户是否有风险活动。检测到任何错误配置或不安全活动时, Cloud Guard 会根据您可以定义的响应器配方建议更正操作,并协助执行这些操作。
    • 对于需要最大安全性的资源,Oracle 建议您使用安全区域。安全区域是与基于优秀实践的 Oracle 定义的安全策略配方关联的区间。例如,不能从公共 Internet 访问安全区域中的资源,并且必须使用客户管理的密钥对其进行加密。在安全区域中创建和更新资源时,Oracle Cloud Infrastructure 将根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。
  • Cloud Guard
    • 克隆和定制 Oracle 提供的默认配方,以创建定制检测器和响应器配方。通过这些配方,您可以指定生成警告的安全违规类型以及允许对它们执行哪些操作。例如,您可能希望检测可见性设置为公共的对象存储桶。
    • 在租户级别应用 Oracle Cloud Guard ,以涵盖最广泛的范围,并减轻维护多个配置的管理负担。
    • 还可以使用“托管列表”功能将某些配置应用于检测器。
  • 网络安全组 (NSG)
    • 您可以使用 NSG 定义一组适用于特定 VNIC 的入站和出站规则。使用 NSG 而非安全列表,因为 NSG 使您能够将 VCN 子网体系结构与应用的安全要求分开。
  • OKE
    • 在不同的名称空间中部署 MLflow 和推断工作负载。启用自动缩放并使用多个节点池来隔离工作负载。使用入站控制器或负载平衡器安全地公开推断服务。
  • OCI 对象存储
    • OCI 对象存储用于数据集、训练的模型和 MLflow 构件。启用版本控制和生命周期策略以优化存储并维护模型沿袭。
  • Oracle Cloud Infrastructure Data Science
    • 使用容器化作业进行培训以确保可重现性。避免在生产环境中手动执行基于笔记本的工作流。集成 MLflow 以进行实验跟踪。
  • OCI 负载均衡器
    • 使用负载平衡器公开 MLflow UI/API 和推断端点。为不同的服务配置监听程序和后端集。使用 HTTPS 进行安全访问,并在需要时与 DNS 集成。

注意事项

这些注意事项汇总了 MLOps 管道的主要性能、安全性、可用性和成本因素。

部署此参考体系结构时,请考虑以下几点。

  • 性能:在 OKE 中使用自动缩放来支持推断工作负载,并优化数据科学作业配置以进行培训。确保 MLflow 随对象存储支持的构件进行适当缩放,并确保负载平衡器大小正确以处理流量。
  • 安全性:应用最低权限的 OCI Identity and Access Management 策略并使用 OCI Vault 进行密钥管理。限制对 MLflow、 OCI Object Storage 和推断端点的访问。
  • 可用性:跨可用性和容错域进行部署。使用 OKE 高可用性功能并确保 MLflow 服务具有弹性。
  • 成本:使用自动缩放来优化计算使用。在 OCI 对象存储和大小正确的 OKE 节点池中应用生命周期策略。关闭未使用的资源。

了解更多

这些 Oracle 文档资源提供了有关此参考体系结构中使用的服务的更多信息。

要了解有关此体系结构中 Data ScienceOCI DevOpsOKE 和相关服务的更多信息,请参见以下资源:

确认

  • 作者Prasanth Prasad
  • 贡献者Thangaraj, Karol Stuart