在企业中构建和部署生成式 AI 和机器学习模型

Last reviewed 2024-03-28 UTC

随着生成式 AI 和机器学习 (ML) 模型在企业的业务活动和业务流程中变得越来越常见,企业越来越需要模型开发指导,以确保一致性、可重复性和安全性。为了帮助大型企业构建和部署生成式 AI 和机器学习模型,我们创建了企业生成式 AI 和机器学习蓝图。本蓝图为您提供了从初步的数据探索和实验到模型训练、部署和监控的整个 AI 开发生命周期的全面指南。

企业生成式 AI 和机器学习蓝图可为您带来诸多好处,包括:

  • 规范性指导:明确指导如何创建、配置和部署基于 Vertex AI 的生成式 AI 和机器学习开发环境。您可以使用 Vertex AI 开发自己的模型。
  • 提高效率:广泛自动化,有助于减少部署基础设施以及开发生成式 AI 和机器学习模型时的重复劳动。自动化功能可让您专注于增值任务,例如模型设计和实验。
  • 增强的治理能力和可审核性:此蓝图的设计中纳入了模型的可重现性、可追溯性和受控部署。借助此优势,您可以更好地管理生成式 AI 和机器学习模型生命周期,并确保能够以清晰的审核跟踪记录一致地重新训练和评估模型。
  • 安全:此蓝图旨在符合美国国家标准与技术研究院 (NIST) 框架网络风险研究所 (CRI) 框架的要求。

企业生成式 AI 和机器学习蓝图包括以下内容:

  • 包含一组 Terraform 配置的 GitHub 仓库Jupyter 笔记本Vertex AI Pipelines 定义、Cloud Composer 有向无环图 (DAG) 和辅助脚本。仓库中的组件完成以下操作:
    • Terraform 配置设置一个可支持多个模型开发团队的 Vertex AI 模型开发平台。
    • Jupyter 笔记本可让您以交互方式开发模型。
    • Vertex AI Pipelines 定义将 Jupyter 笔记本转换为可用于生产环境的可重现模式。
    • Cloud Composer DAG 提供了一种 Vertex AI Pipelines 的替代方法。
    • 辅助脚本有助于部署 Terraform 代码和流水线。
  • 使用此蓝图实现的架构、设计、安全控制和操作流程的指南(本文档)。

根据设计,企业生成式 AI 和机器学习蓝图与企业基础蓝图兼容。企业基础蓝图提供了此蓝图所依赖的许多基本级层服务,例如 VPC 网络。如果您的 Google Cloud 环境提供了支持企业生成式 AI 和机器学习蓝图所必需的功能,那么您可以部署企业生成式 AI 和机器学习蓝图,而无需部署企业基础蓝图。

本文档适用于可以使用蓝图在 Google Cloud 上构建和部署新的生成式 AI 或机器学习模型的云架构师、数据科学家和数据工程师。本文档假定您熟悉生成式 AI 和机器学习模型开发以及 Vertex AI 机器学习平台

企业生成式 AI 和机器学习蓝图概览

企业生成式 AI 和机器学习蓝图采用分层方法,提供支持生成式 AI 和机器学习模型训练的功能。此蓝图旨在通过机器学习运营 (MLOps) 工作流进行部署和控制。下图显示了此蓝图部署的 MLOps 层与环境中的其他层之间的关系。

蓝图层。

该图包含以下部分:

  • Google Cloud 基础设施为您提供静态加密传输加密等安全功能,以及计算和存储等基本基础组件。
  • 企业基础为您提供身份、网络、日志记录、监控和部署系统等资源基准,让您能够采用 Google Cloud 来处理 AI 工作负载。
  • 数据层是开发技术栈中的可选层,可为您提供各种功能,例如数据注入、数据存储、数据访问权限控制、数据治理、数据监控和数据共享。
  • 生成式 AI 和机器学习层(本蓝图)可让您构建和部署模型。您可以使用此层进行初步数据探索和实验、模型训练、模型服务和监控。
  • CI/CD 提供了多种工具,可自动预配、配置、管理和部署基础设施、工作流和软件组件。这些组件可帮助您确保一致、可靠且可审核的部署;最大限度地减少手动错误;加快整个开发周期。

为了展示如何使用生成式 AI 和机器学习环境,此蓝图包含示例机器学习模型开发。示例模型开发将引导您构建模型、创建运营流水线、训练模型、测试模型以及部署模型。

架构

企业生成式 AI 和机器学习蓝图让您能够直接处理数据。您可以在交互式(开发)环境中创建模型,并将模型提升到运营(生产或非生产)环境中。

在交互式环境中,您可以使用 Vertex AI Workbench 开发机器学习模型,该服务是由 Google 管理的 Jupyter 笔记本服务。您可以在交互式环境中构建数据提取、数据转换和模型调优功能,并将其提升到运营环境中。

在运营(非生产)环境中,您可以使用流水线以可重复且可控的方式构建和测试其模型。对模型的性能感到满意后,您可以将该模型部署到运营(生产)环境中。下图显示了交互式和运营环境的各种组件。

蓝图架构。

该图包含以下部分:

  1. 部署系统:Service CatalogCloud Build 等服务会将 Google Cloud 资源部署到交互式环境中。Cloud Build 还会将 Google Cloud 资源和模型构建工作流部署到运营环境中。
  2. 数据源BigQueryCloud StorageSpannerAlloyDB for PostgreSQL 等服务托管您的数据。此蓝图会在 BigQuery 和 Cloud Storage 中提供示例数据。
  3. 交互式环境:在此环境中,您可以直接与数据交互、对模型进行实验,以及构建要在运营环境中使用的流水线。
  4. 运营环境:在这种环境中,您可以采用可重复的方式构建和测试模型,然后将模型部署到生产环境中。
  5. 模型服务:以下服务支持各种 MLOps 活动:
  6. 制品存储:这些服务用于存储代码和容器,并用于模型开发和流水线。这些服务包括:
    • Artifact Registry 会存储运营环境中的流水线使用的容器,以便控制模型开发的各个阶段。
    • Git 仓库存储模型开发中使用的各种组件的代码库。

平台角色

部署蓝图时,您需要创建四种类型的用户群组:MLOps 工程师群组、DevOps 工程师群组、数据科学家群组和数据工程师群组。这些群组承担以下责任:

  • MLOps 工程师群组负责开发 Service Catalog 使用的 Terraform 模板。该团队提供许多模型使用的模板。
  • DevOps 工程师群组负责批准 MLOps 开发者群组创建的 Terraform 模板。
  • 数据科学家群组负责开发模型、流水线以及流水线使用的容器。通常,一个团队专注于构建单个模型。
  • 数据工程师群组负责批准使用数据科学组创建的制品。

组织结构

此蓝图使用企业基础蓝图的组织结构作为部署 AI 和机器学习工作负载的基础。下图显示了添加到基础以启用 AI 和机器学习工作负载的项目。

蓝图组织结构。

下表介绍了生成式 AI 和机器学习蓝图使用的项目。

文件夹 项目 说明

common

prj-c-infra-pipeline

包含用于构建蓝图的生成式 AI 和机器学习组件的部署流水线。如需了解详情,请参阅企业基础蓝图中的基础设施流水线

prj-c-service-catalog

包含 Service Catalog 用于在交互式环境中部署资源的基础设施。

development

prj-d-machine-learning

包含用于在交互模式中开发 AI 和机器学习应用场景的组件。

non-production

prj-n-machine-learning

包含用于测试和评估可部署到生产环境的 AI 和机器学习应用场景的组件。

production

prj-p-machine-learning

包含用于将 AI 和机器学习应用场景部署到生产环境的组件。

网络

此蓝图使用在企业基础蓝图中创建的共享 VPC 网络。在交互式(开发)环境中,Vertex AI Workbench 笔记本会部署在服务项目中。本地用户可以使用共享 VPC 网络中的专用 IP 地址空间访问该项目。本地用户可以通过 Private Service Connect 访问 Google Cloud API(例如 Cloud Storage)。每个共享 VPC 网络(开发、非生产和生产)都有一个不同的 Private Service Connect 端点。

蓝图网络。

运营环境(非生产和生产)有两个独立的共享 VPC 网络,本地资源可以通过专用 IP 地址访问这些网络。交互式和运营环境使用 VPC Service Controls 进行保护。

Cloud Logging

此蓝图使用企业基础蓝图提供的 Cloud Logging 功能。

Cloud Monitoring

为了监控自定义训练作业,此蓝图包含一个信息中心,可让您监控以下指标:

  • 每个训练节点的 CPU 利用率
  • 每个训练节点的内存利用率
  • 网络用量

如果自定义训练作业失败,此蓝图会使用 Cloud Monitoring 为您提供电子邮件提醒机制,以通知您自定义训练作业失败了。为了监控使用 Vertex AI 端点的已部署模型,此蓝图附带一个信息中心,其中包含以下指标:

  • 性能指标:
    • 每秒预测次数
    • 模型延迟时间
  • 资源使用情况:
    • CPU 使用率
    • 内存用量

组织政策设置

除了企业基础蓝图创建的组织政策之外,此蓝图还添加了安全 AI 的预定义状况(扩展)中列出的组织政策。

运维

本部分介绍了此蓝图中包含的环境。

交互式环境

为了让您探索数据和开发模型,同时保持组织的安全状况,交互式环境为您提供了一组可执行的受控操作。您可以使用以下方法之一部署 Google Cloud 资源:

  • 使用 Service Catalog(通过自动化功能预先配置了资源模板)
  • 使用 Vertex AI Workbench 笔记本构建代码工件并将其提交到 Git 仓库

下图描绘了交互式环境。

蓝图交互式环境。

典型的交互式流程包含以下步骤和与之关联的组件:

  1. Service Catalog 提供了数据科学家可以部署到交互式环境的一系列精选的 Google Cloud 资源。数据科学家会从 Service Catalog 部署 Vertex AI Workbench 笔记本资源。
  2. Vertex AI Workbench 笔记本是数据科学家用于处理在交互式环境中部署的 Google Cloud 资源的主界面。借助这些笔记本,数据科学家可以从 Git 中拉取其代码,并根据需要更新其代码。
  3. 源数据存储在交互式环境之外,并与此蓝图分开管理。对数据的访问权限由数据所有者控制。数据科学家可以请求对源数据的读取权限,但无法向源数据写入。
  4. 数据科学家可以将源数据转移到交互式环境中,并转移到通过 Service Catalog 创建的资源。在交互式环境中,数据科学家可以读取、写入和处理数据。不过,数据科学家无法从交互式环境中转出数据,也无法授予对 Service Catalog 创建的资源的访问权限。BigQuery 存储结构化数据和半结构化数据,Cloud Storage 存储非结构化数据。
  5. Feature Store 让数据科学家能够以低延迟的方式访问特征以进行模型训练。
  6. 数据科学家使用 Vertex AI 自定义训练作业训练模型。此蓝图还会使用 Vertex AI 进行超参数调优

  7. 数据科学家使用 Vertex AI ExperimentsVertex AI TensorBoard 评估模型。借助 Vertex AI Experiments,您可以使用不同的参数、建模技术、架构和输入对模型运行多次训练。借助 Vertex AI TensorBoard,您可以跟踪、直观呈现和比较运行的各种实验,然后选择具有观察到的最佳特性的模型进行验证。

  8. 数据科学家使用 Vertex AI 评估验证其模型。为了验证模型,数据科学家将源数据拆分为训练数据集和验证数据集,并针对模型运行 Vertex AI 评估

  9. 数据科学家使用 Cloud Build 构建容器,将容器存储在 Artifact Registry 中,并在处于运营环境的流水线中使用容器。

运营环境

运营环境使用 Git 仓库和流水线。此环境包括企业基础架构蓝图的生产环境和非生产环境。在非生产环境中,数据科学家会从交互式环境中开发的其中一个流水线选择流水线。数据科学家可以在非生产环境中运行流水线,评估结果,然后确定要提升到生产环境中的模型。

该蓝图包含一个使用 Cloud Composer 构建的示例流水线,以及一个使用 Vertex AI Pipelines 构建的示例流水线。下图显示了运营环境。

蓝图运营环境。

典型的运营流程包括以下步骤:

  1. 数据科学家成功将开发分支合并到部署分支。
  2. 合并到部署分支会触发 Cloud Build 流水线。
  3. 出现以下情况之一:
    • 如果数据科学家使用 Cloud Composer 作为编排器,Cloud Build 流水线会将 DAG 移至 Cloud Storage。
    • 如果数据科学家使用 Vertex AI Pipelines 作为编排器,流水线会将 Python 文件移至 Cloud Storage。
  4. Cloud Build 流水线触发编排器(Cloud Composer 或 Vertex AI Pipelines)。
  5. 编排器从 Cloud Storage 中拉取其流水线定义并开始执行流水线。
  6. 流水线从 Artifact Registry 中拉取一个容器,流水线的所有阶段都会使用该容器来触发 Vertex AI 服务。
  7. 流水线使用该容器触发从源数据项目到运营环境的数据转移。
  8. 数据会经过转换、验证、拆分和准备,以便流水线进行模型训练和验证。
  9. 如果需要,流水线会将数据移至 Vertex AI Feature Store,以便在模型训练期间轻松访问。
  10. 流水线使用 Vertex AI 自定义模型训练来训练模型。
  11. 流水线使用 Vertex AI 评估来验证模型。
  12. 经过验证的模型会由流水线导入 Model Registry 中。
  13. 然后,导入的模型通过在线预测批量预测用于生成预测结果。
  14. 将模型部署到生产环境后,流水线使用 Vertex AI Model Monitoring 通过监控训练-应用偏差预测偏移来检测模型性能是否下降。

部署

此蓝图使用一系列 Cloud Build 流水线来预配蓝图基础设施、运营环境中的流水线以及用于创建生成式 AI 和机器学习模型的容器。使用的流水线和预配的资源如下:

  • 基础设施流水线:此流水线是企业基础蓝图的一部分。此流水线会预配与交互式环境和运营环境相关联的 Google Cloud 资源。
  • 交互式流水线:交互式流水线是交互式环境的一部分。此流水线将 Terraform 模板从 Git 仓库复制到 Service Catalog 可以读取的 Cloud Storage 存储桶。当发送拉取请求以与主分支合并时,交互式流水线会被触发。
  • 容器流水线:此蓝图包含 Cloud Build 流水线,用于构建运营流水线中使用的容器。在不同环境中部署的容器是不可变的容器映像。不可变的容器映像有助于确保在所有环境中部署相同的映像,并且该映像在容器运行时不能被修改。如果您需要修改应用,则必须重新构建并重新部署映像。此蓝图中使用的容器映像存储在 Artifact Registry 中,并由运营流水线中使用的配置文件引用。
  • 运营流水线:运营流水线是运营环境的一部分。此流水线会复制 Cloud Composer 或 Vertex AI Pipelines 的 DAG,然后用于构建、测试和部署模型。

Service Catalog

借助 Service Catalog,开发者和云管理员可以让内部企业用户使用其解决方案。Service Catalog 中的 Terraform 模块通过 Cloud Build CI/CD 流水线作为工件发布到 Cloud Storage 存储桶。将模块复制到存储桶后,开发者可以使用这些模块在 Service Catalog“管理”页面上创建 Terraform 解决方案,将解决方案添加到 Service Catalog 并与交互式环境项目共享解决方案,以便用户部署资源。

交互式环境使用 Service Catalog 让数据科学家以符合企业安全状况的方式部署 Google Cloud 资源。在开发需要 Google Cloud 资源(例如 Cloud Storage 存储桶)的模型时,数据科学家会从 Service Catalog 中选择资源,配置资源,并在交互式环境中部署该资源。Service Catalog 包含数据科学家可以在交互式环境中部署的各种 Google Cloud 资源的预配置模板。数据科学家无法更改资源模板,但可以通过模板公开的配置变量来配置资源。下图展示了 Service Catalog 与交互式环境的相互关系的结构。

蓝图目录。

数据科学家使用 Service Catalog 部署资源,具体步骤如下:

  1. MLOps 工程师将 Google Cloud 的 Terraform 资源模板放入 Git 仓库中。
  2. 向 Git 提交内容会触发 Cloud Build 流水线。
  3. Cloud Build 将模板以及所有关联的配置文件复制到 Cloud Storage 中。
  4. MLOps 工程师手动设置 Service Catalog 解决方案和 Service Catalog。然后,工程师在交互式环境中与服务项目共享 Service Catalog。
  5. 数据科学家从 Service Catalog 中选择资源。
  6. Service Catalog 将模板部署到交互式环境中。
  7. 该资源拉取所有必要的配置脚本。
  8. 数据科学家与资源进行交互。

代码库

部署中描述的流水线由其相应仓库中的更改触发。为确保任何人都无法独立更改生产环境,我们在可以提交代码的用户和可以批准代码更改的用户之间进行了职责分离。下表介绍了蓝图仓库及其提交者和审批者。

代码库 流水线 说明 提交者 审批人

ml-foundation

基础设施
包含用于创建交互式和运营环境的生成式 AI 和机器学习蓝图的 Terraform 代码。 MLOps 工程师 DevOps 工程师

service-catalog

互动 包含 Service Catalog 可以部署的资源的模板。 MLOps 工程师 DevOps 工程师

artifact-publish

容器 包含运营环境中的流水线可以使用的容器。 数据科学家 数据工程师

machine-learning

操作性 包含运营环境中的流水线可以使用的源代码。 数据科学家 数据工程师

分支策略

此蓝图使用永久性分支将代码部署到关联的环境。该蓝图使用三个分支(开发、非生产和生产)来反映相应的环境。

安全控制

企业生成式 AI 和机器学习蓝图采用分层纵深防御安全模型,该模型使用默认的 Google Cloud 功能、Google Cloud 服务以及通过企业基础蓝图配置的安全性功能。下图显示了此蓝图的各种安全控制的分层。

蓝图安全控制。

各层的功能如下:

  • 接口:为数据科学家提供服务,使他们能够以受控方式与蓝图进行交互。
  • 部署:提供一系列用于部署基础设施、构建容器和创建模型的流水线。使用流水线可以实现可审核性、可追溯性和可重复性。
  • 网络:在 API 层和 IP 层为蓝图资源提供数据渗漏防护。
  • 访问管理:控制谁可以访问哪些资源,并帮助防止未经授权使用您的资源。
  • 加密:可让您控制加密密钥和密文,并通过默认的静态加密和传输加密帮助保护您的数据。
  • 检测性:帮助您检测错误配置和恶意活动。
  • 预防性:为您提供了控制和限制基础设施部署方式的方法。

下表介绍了与各层关联的安全控制。

资源 安全控制
接口 Vertex AI Workbench 提供托管式笔记本体验,其中包括用户访问权限控制网络访问权限控制IAM 访问权限控制已停用文件下载。这些功能可实现更安全的用户体验。
Git 代码库 提供用户访问权限控制以保护您的仓库。
Service Catalog 为数据科学家提供只能在已获批准的配置中部署的一系列精选的资源。
部署 基础架构流水线 使用 Terraform 提供安全流程,以部署蓝图基础设施。
交互式流水线 提供将模板从 Git 仓库转移到 Google Cloud 组织中的存储桶的安全流程。
容器流水线 提供用于构建运营流水线使用的容器的安全流程。
运营流水线 提供受控流程来训练、测试、验证和部署模型。
Artifact Registry 使用资源访问权限控制以安全的方式存储容器映像
网络 Private Service Connect 可让您使用专用 IP 地址与 Google Cloud API 通信,这样您可以避免将流量公开给互联网。
具有专用 IP 地址的 VPC 该蓝图使用具有专用 IP 地址的 VPC,以帮助消除面向互联网的威胁。
VPC Service Controls 帮助保护受保护的资源免遭数据渗漏。
防火墙 帮助保护 VPC 网络免遭未经授权的访问。
访问权限管理 Cloud Identity 提供集中式用户管理,从而降低未经授权的访问风险。
IAM 精细控制哪些人可以对哪些资源执行什么操作,从而在访问权限管理中启用最小权限。
加密 Cloud KMS 可让您控制在 Google Cloud 组织中使用的加密密钥。
Secret Manager 为模型提供由 IAM 控制的 Secret 存储区。
静态加密 默认情况下,Google Cloud 会对静态数据进行加密。
传输加密 默认情况下,Google Cloud 会对传输中的数据进行加密。
检测性 Security Command Center 提供有助于保护您的 Google Cloud 组织的威胁检测器。
持续架构 根据您定义的一系列 Open Policy Agent (OPA) 政策,持续检查您的 Google Cloud 组织。
IAM Recommender 分析用户权限,并提供有关减少权限的建议,以帮助实施最小权限原则。
防火墙数据分析 分析防火墙规则,识别过于宽松的防火墙规则,并建议限制性更强的防火墙,以帮助强化整体安全状况。
Cloud Logging 可让您了解系统活动,并帮助检测异常和恶意活动。
Cloud Monitoring 跟踪有助于识别可疑活动的关键信号和事件。
预防 组织政策服务 可让您限制 Google Cloud 组织中的操作。

后续步骤