欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云OCI -APP应用开发-机器学习与人工智能的前沿探索

2024-03-20 原创文章

数据科学家和机器学习工程师不希望花费时间在配置、升级、打补丁和保护基础设施上。他们希望将时间用于构建、训练和部署对业务产生影响的模型。一个机器学习平台应该是完全托管的,并且应该允许他们执行模型开发生命周期中的所有步骤(构建、训练、部署和监控)。此外,机器学习平台不应局限于特定的数据存储。相反,它应该是源不可知的,让数据科学家能够连接到不同云上的各种数据存储。大多数现代机器学习工具包是开源的,并用Python编写。因此,机器学习平台应该为开源框架和Python提供原生支持。它还应该让用户通过安装自己的库或升级已安装的库来自定义他们的机器学习环境。该平台应该让数据科学家能够在结构化、非结构化或半结构化数据上训练他们的模型,同时在多个计算资源上垂直或水平扩展提取、转换和加载(ETL)或训练步骤。


最后,机器学习平台应确保模型可以轻松部署以实时消费,最小化摩擦(理想情况下通过简单的REST调用),同时保留部署模型的血统,以确保它可以被审计和复制。


本文档提出了与创建机器学习平台相关的设计原则和最佳实施路径。使用此模式创建满足数据科学家用户需求的机器学习平台。



设计原则

以下方式实现现代应用开发原则:

  • 原则:使用轻量级开源框架和成熟的编程语言

使用conda环境而不是Python虚拟环境或Docker镜像。我们提供了精选的数据科学conda环境,其中包含为特定用例选择的Python库集合。Conda环境通常在Python中提供正确的隔离级别,通过允许在同一笔记本环境或批处理作业中运行多个环境来提供灵活性,并且比Docker镜像更易于构建。Conda环境也易于导出和导入,因为它们是简单的存档(gzip和zip)。从我们提供的现成的conda环境集合开始。这些环境定期升级,以确保它们包含的包反映了最新可用的版本。每个环境都附有文档和代码示例。这些环境可用于Python 3.6及更高版本中构建、训练和部署机器学习模型。采用这些环境以确保不同架构组件之间的兼容性。

  • 原则:构建通过API通信的服务应用
  1. 采用数据科学中的模型部署功能,将模型从模型目录部署为可扩展的HTTP端点,供其他应用消费。确保模型训练环境包含与部署环境相同的第三方依赖项可能是一个挑战。数据科学模型部署通过拉取正确的conda环境来运行您的模型,解决了这个挑战。模型部署还提供Oracle云基础设施(OCI)身份和访问管理(IAM)认证和授权,因此您无需构建和配置自己的用户和访问管理协议。
  2. 另一种可接受的选择是通过Oracle Functions部署机器学习模型,它可以用作API网关的后端。这个选项在定义API或使用不同的授权协议(如OAuth或基本认证)时提供灵活性。然而,它需要您做更多的工作,自动化程度较低,且更容易出现用户错误。Oracle Functions要求您构建自己的Docker镜像,并确保所有所需的依赖项和Python运行时版本与训练环境相匹配。大多数数据科学团队应避免此选项。


  • 原则:自动化构建、测试和部署

DevOps是软件开发的核心,而MLOps是机器学习的核心:围绕构建、测试、评估、部署和监控生产中模型的一系列流程和自动化。优先使用数据科学中的作业和模型部署来实现可重复、可审计、可复制的模式。避免直接从笔记本会话中训练和部署模型,因为在这种环境中更难构建、运行和自动化测试。确保准备数据、训练模型和定义测试的所有代码都进行了版本控制。通过OCI DevOps服务或数据科学中的作业直接运行构建和部署管道。运行模型目录工件样板代码中包含的一系列模型内省测试。成功运行时,这些测试将最小化模型部署到生产时出现的错误数量。

  • 原则:使用完全托管的服务消除应用开发、运行时和数据管理中的复杂性

无论数据科学家是通过OCI数据目录记录其数据资产、使用OCI数据流进行大规模数据处理作业,还是通过数据科学构建、训练和部署机器学习模型,所有这些解决方案都是完全托管的。我们为您处理配置、打补丁和保护这些环境。完全托管的解决方案显著降低了数据科学团队的运营负担,他们的目标是训练和部署模型,而不是管理基础设施。一个好的机器学习平台提供各种基础设施选项(CPU、GPU、灵活形状)无需额外配置。

  • 原则:实施端到端监控和跟踪

所有工作负载都应通过OCI监控服务发出基本健康度量。用户可以为警报定义自定义度量阈值,并在达到给定阈值时收到通知或采取行动。这使他们能夠监控其作业、笔记本会话或模型部署的运营健康状况。启用用户从作业和模型部署向OCI日志服务发出自定义日志。在大多数情况下,数据科学家还希望监控作业中运行的流程(例如,训练迭代或离线验证得分)或从模型部署中捕获特征向量或模型预测。这是一个常见模式。确保他们可以访问OCI日志服务并通过OCI日志分析服务进行简单的探索性分析。

  • 原则:实施深度防御方法以保护应用和数据
  1. 一个好的机器学习平台限制数据科学家仅访问他们需要完成工作的资源。遵循对数据科学家团队的最小权限原则。此外,使用资源主体而不是用户主体来认证或授权其他资源。这种做法防止用户在笔记本会话或作业中插入他们的用户主体凭据。
  2. 确保所有用户都可以访问OCI Vault,并将其访问第三方数据源的凭据存储和加密在Vault中。特别是,笔记本会话应仅对创建它们的用户可访问;配置访问策略以仅授予对笔记本会话和作业的创建者的访问权限。这种做法防止多个用户访问同一个笔记本环境、共享私钥和覆盖相同的代码片段。在合理的情况下限制对公共互联网的出口访问。配置并选择辅助VNIC(虚拟云网络和子网选择)来启动笔记本会话和作业,并防止用户从不安全的网站下载数据集或库。


架构

您可以通过基于这一固定观点的架构的部署来实现设计原则。

该架构包含以下组件:

数据集成服务

  • Oracle云基础设施数据集成是一个完全托管的、多租户的、无服务器的、原生云服务,帮助您执行常见的ETL任务,如从不同来源摄取数据;清洗、转换和重塑数据;以及高效地将其加载到OCI上的目标数据源。
  • 从各种来源(例如亚马逊Redshift、Azure SQL数据库和亚马逊S3)摄取数据到对象存储和自治数据仓库是此过程的第一步。

对象存储和自治数据库

  • 对象存储和自治数据仓库为训练机器学习模型所用的历史数据提供存储层。对象存储可以作为自定义数据处理和ETL作业使用数据流的源和目标数据存储层。

OCI数据目录

  • 由自治数据仓库中的多个表、对象存储中的桶和成千上万的数据资产组成的数据湖很快变得难以管理。对于数据科学家来说,问题在于可发现性。他们不是数据库管理员,但他们需要快速识别哪些数据资产与解决特定业务问题相关。Oracle云基础设施数据目录允许数据科学家快速识别候选数据资产以训练机器学习模型。
  • 数据目录是一个完全托管的、自助服务的数据发现和治理解决方案,用于企业数据。它提供了一个用于管理技术、业务和运营元数据的单一协作环境。您可以收集、组织、查找、访问、了解、丰富和激活这些元数据。

OCI数据流服务

  • 在数据准备好进行机器学习训练之前,需要在对象存储或自治数据仓库中的原始数据上应用多种数据“整理”操作,且需要大规模执行。数据科学家需要的数据应该是干净的、连接的、非规范化的、去重的、插补的、缩放的,并且以适合模型训练的格式(通常是数据框)整理。这一步通常由数据工程师完成,但越来越多的数据科学家正在参与此步骤。执行这些步骤的事实上的工具包是Apache Spark,我们推荐使用Oracle云基础设施数据流。
  • 数据流是一个用于运行Spark应用的完全托管服务。它让您专注于您的应用并提供一个简单的运行环境。它有一个简单易用的用户界面,并支持API,以便与应用和工作流程集成。您无需花费任何时间在底层基础设施、集群配置或软件安装上。


OCI数据科学

  • Oracle云基础设施数据科学是一个完全托管的平台,数据科学团队可以用它在OCI上构建、训练、管理和部署他们的机器学习模型。数据科学包括笔记本会话、作业、模型目录、模型部署以及加速数据科学(ADS)Python SDK。数据可以在笔记本会话或作业中从各种数据源摄取,并转换为模型训练的预测特征。笔记本会话是数据科学家可以原型化所需的特征工程和模型训练转换流程的IDE。这些步骤可以通过作业在大规模上生产化。训练后的模型存储在托管的模型存储层(模型目录)中,并准备部署。模型可以通过模型部署作为HTTP端点部署。部署后,模型可以由第三方应用程序使用,无论这些应用程序是托管在OCI上还是其他地方。

Oracle机器学习

  • Oracle机器学习还提供了构建、训练和部署数据库中数据的模型的功能。Oracle机器学习提供了一个Zeppelin笔记本界面,让数据科学家可以使用OML4Py Python客户端库训练模型。OML还提供了一个无代码的模型训练方法,即AutoML UI。模型作为REST API的部署可以通过Oracle机器学习服务完成。然而,对开源软件的支持有限。

AI服务

  • AI服务提供了一系列预训练和可定制的模型API,涵盖了从语言、视觉、语音、决策到预测的使用场景。AI服务提供通过REST API端点访问的模型预测。这些服务提供了最先进的预训练模型,在使用服务1-6训练自定义机器学习模型之前应该考虑和评估。另外,Oracle机器学习服务还提供了一系列预训练的语言(主题、关键词、摘要、相似性)和视觉模型。



实施考虑

在实施机器学习和人工智能时,请考虑以下选项。

在模型开发生命周期的每个步骤提供水平可扩展性

  • 为ETL和数据处理步骤(通过OCI数据流)、模型训练本身以及模型部署提供水平可扩展性。此外,考虑在模型训练和部署两侧使用GPU。

确保模型可重现性

  • 模型需要进行审计并需要重现。重现模型需要在保存模型时提供对源代码、训练和验证数据集以及环境(第三方库和架构)的引用。使用Git仓库和提交哈希来跟踪代码。使用对象存储来保存训练和验证数据集的快照。将对发布的conda环境的引用作为模型元数据的一部分。

对代码、特征和模型进行版本控制

  • 这个考虑与模型可重现性相关。您可以直接在数据科学模型目录中对模型进行版本控制。将Git的使用集成到数据科学IDE(例如JupyterLab)或训练执行引擎(如数据科学作业)中。您可以通过像对象存储或Git大文件存储(LFS)这样的工具对特征作为数据集进行版本控制,LFS默认支持对象版本控制。

打包、共享和重用第三方运行时依赖

  • 在笔记本、作业和模型部署中重用相同的conda环境。这样做还可以最小化这些步骤之间第三方依赖不匹配的风险。

在限制数据传输的同时保持对数据源的不可知性

  • 将数据传输到模型训练环境是耗时的。尽可能多地使用可以在笔记本环境或训练作业之间共享的块卷。保留本地数据集快照以用于模型训练和验证目的。


替代模式

  • 此架构提供了替代模式,以适应现有投资、运营熟悉度或其他约束。
  • 从OCI市场部署数据科学虚拟机,作为托管数据科学服务的替代方案
  • 数据科学虚拟机镜像适用于CPU和NVIDIA GPU形状家族。该环境提供了一系列可由数据科学家使用的机器学习库和IDE。然而,它不提供模型部署功能。模型部署可以通过OCI数据科学模型部署或通过Oracle Functions实现。
  • 在数据库中使用Oracle机器学习(OML笔记本、AutoML UI、服务、OML4Py)来构建、训练和部署机器学习模型
  • 当需要训练模型的数据位于数据库中时,这种替代模式提供了强大的功能。这种模式在机器学习开源软件支持方面有限制。

  • 通过OCI注册表、Oracle函数和API网关将模型作为REST API部署
  • 此模式适用于在数据科学虚拟机镜像环境中或通过OCI数据科学训练模型的客户。这种模式提供了一种将机器学习模型作为REST API端点部署的替代路径。必须构建包含训练模型工件的Docker镜像,并将其部署到OCI注册表,可以从Docker镜像创建Oracle函数,并将其作为API网关的后端资源部署。
  • 在OKE上部署开源Kubeflow机器学习平台
  • 此模式提供了一个独立的解决方案,并为客户提供了在Oracle Kubernetes容器引擎上执行基于容器的机器学习工作负载的选项。Kubeflow是一个开源产品,提供了机器学习平台的所有关键功能。

反模式

我们不推荐使用自定义机器学习开源软件栈构建的一系列虚拟机。机器学习项目通常建立在多个开源库之上,这些库具有复杂且常常相互冲突的依赖性和安全漏洞,需要不断进行包升级。我们推荐使用托管服务,它们承担了构建可用和安全环境的负担。




开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门