架构完善框架:AI 和机器学习视角中的本文档概述了在 Google Cloud上构建和运行稳健的 AI 和机器学习系统的原则和建议。这些建议可帮助您设置可观测性、自动化和可伸缩性等基本元素。本文档中的建议与 Google Cloud 架构完善框架的卓越运营支柱保持一致。
AI 和 ML 领域的卓越运营是指能够无缝部署、管理和治理 AI 和 ML 系统及流水线,从而帮助实现组织战略目标。卓越运营可让您高效应对变化、降低运营复杂性,并确保运营与业务目标保持一致。
本文档中的建议与以下核心原则相对应:
为模型开发构筑坚实基础
若要开发和部署可伸缩的可靠 AI 系统,以帮助您实现业务目标,就必须具备稳健的模型开发基础。这种基础架构可实现一致的工作流程,自动执行关键步骤以减少错误,并确保模型能够根据需求进行扩缩。扎实的模型开发基础可确保您的机器学习系统能够无缝更新、改进和重新训练。该基础架构还有助于您根据业务需求调整模型的性能、快速部署富有成效的 AI 解决方案,并适应不断变化的需求。
如需为开发 AI 模型构筑坚实基础,请考虑以下建议。
明确问题和所需的结果
在开始任何 AI 或 ML 项目之前,您必须清楚了解要解决的业务问题和所需的结果。首先,概述业务目标,然后将这些目标分解为可衡量的关键绩效指标 (KPI)。如需在 Jupyter 笔记本环境中整理和记录问题定义及假设,请使用 Vertex AI Workbench 等工具。 如需为代码和文档实现版本控制,并记录项目、目标和假设,请使用 Git 等工具。如需为生成式 AI 应用开发和管理提示,您可以使用 Vertex AI Studio。
收集并预处理必要的数据
如需实现数据预处理和转换,您可以根据需要使用 Dataflow(适用于 Apache Beam)、Dataproc(适用于 Apache Spark)或 BigQuery(如果基于 SQL 的流程适合)。如需验证架构和检测异常情况,请使用 TensorFlow Data Validation (TFDV),并在适用的情况下利用 BigQuery 中的自动数据质量扫描。
对于生成式 AI,数据质量包括准确性、相关性、多样性以及与所需输出特征的一致性。如果真实世界的数据不足或不平衡,您可以生成合成数据,以帮助提高模型的稳健性和泛化能力。如需基于现有模式创建合成数据集,或扩充训练数据以提升模型性能,请使用 BigQuery DataFrames 和 Gemini。合成数据对于生成式 AI 尤其有价值,因为它可以帮助提高提示多样性和整体模型鲁棒性。在构建用于对生成式 AI 模型进行微调的数据集时,请考虑使用 Vertex AI 中的合成数据生成功能。
对于生成式 AI 任务(例如微调或基于人类反馈的强化学习 [RLHF]),请确保标签能够准确反映生成输出的质量、相关性和安全性。
选择合适的机器学习方法
设计模型和参数时,请考虑模型的复杂性和计算需求。根据任务(例如分类、回归或生成),考虑使用 Vertex AI 自定义训练进行自定义模型构建,或使用 AutoML 来完成更简单的机器学习任务。对于常见应用,您还可以通过 Vertex AI Model Garden 访问预训练模型。您可以尝试使用各种先进的基础模型,以满足各种使用情形,例如生成文本、图片和代码。
您可能需要对预训练的基础模型进行微调,以针对特定使用场景实现最佳性能。如果自定义训练对性能有较高要求,请配置 Cloud Tensor Processing Unit (TPU) 或 GPU 资源,以加快深度学习模型(例如大型语言模型 [LLM] 和 diffusion 模型)的训练和推理速度。
为代码、模型和数据设置版本控制
如需有效管理和部署代码版本,请使用 GitHub 或 GitLab 等工具。这些工具提供强大的协作功能、分支策略,并与 CI/CD 流水线集成,以确保顺畅的开发流程。
使用适当的解决方案来管理机器学习系统的每个制品,例如:
- 对于容器映像和流水线组件等代码制品,Artifact Registry 提供可伸缩的存储解决方案,有助于提高安全性。Artifact Registry 还支持版本控制,并且可以与 Cloud Build 和 Cloud Deploy 集成。
- 如需管理数据制品(例如用于训练和评估的数据集),请使用 BigQuery 或 Cloud Storage 等解决方案进行存储和版本控制。
- 如需存储元数据和指向数据位置的指针,请使用版本控制系统或单独的数据目录。
为了保持特征数据的一致性和版本控制,请使用 Vertex AI Feature Store。如需跟踪和管理模型制品(包括二进制文件和元数据),请使用 Vertex AI Model Registry,该服务可让您无缝存储、整理和部署模型版本。
为确保模型可靠性,请实现 Vertex AI 模型监控。检测生产环境中的数据漂移、跟踪性能并识别异常情况。对于生成式 AI 系统,请监控输出质量和安全合规性的变化。
自动化模型开发生命周期
Automation 有助于您简化 AI 和机器学习生命周期的每个阶段。 Automation 可减少人工工作量并使流程标准化,从而提高运营效率并降低出错风险。借助自动化工作流,您可以更快地进行迭代,在各个环境中实现一致的部署,并获得更可靠的结果,从而使系统能够无缝扩缩和适应。
如需自动执行 AI 和 ML 系统的开发生命周期,请考虑以下建议。
使用托管式流水线编排系统
使用 Vertex AI Pipelines 自动执行机器学习生命周期的每个步骤,包括从数据准备到模型训练、评估和部署。为了加快部署速度并提高项目之间的一致性,请使用流水线运行时间表自动执行重复性任务,使用执行指标监控工作流,并开发可重用的流水线模板以实现工作流标准化。这些功能也适用于生成式 AI 模型,后者通常需要专门的步骤,例如提示工程、回答过滤和human-in-the-loop评估。对于生成式 AI,Vertex AI Pipelines 可以自动执行这些步骤,包括根据质量指标和安全指南评估生成的输出。为了提高提示的多样性和模型稳健性,自动化工作流还可以包含数据增强技术。
实现 CI/CD 流水线
如需自动构建、测试和部署机器学习模型,请使用 Cloud Build。 当您为应用代码运行测试套件时,此服务尤其有效,可确保基础架构、依赖项和模型封装满足您的部署要求。
机器学习系统通常需要执行代码测试以外的额外步骤。例如,您需要对模型进行压力测试,以了解模型在不同负载下的表现;执行批量评估,以评估模型在各种数据集中的性能;并在重新训练之前验证数据完整性。如需模拟真实的压力测试工作负载,您可以使用 Locust、Grafana k6 或 Apache JMeter 等工具。如需找出瓶颈,请通过 Cloud Monitoring 监控延迟时间、错误率和资源利用率等关键指标。 对于生成式 AI,测试还必须包括针对特定类型生成内容的评估,例如文本质量、图片保真度或代码功能。这些评估可能涉及语言模型的困惑度等自动化指标,也可能涉及人机循环评估,以评估创意和安全性等更细致的方面。
如需实现测试和评估任务,您可以将 Cloud Build 与其他 Google Cloud 服务集成。例如,您可以使用 Vertex AI Pipelines 进行自动化模型评估,使用 BigQuery 进行大规模数据分析,并使用 Dataflow 流水线验证进行特征验证。
您可以使用 Vertex AI 进行持续训练,以实现基于新数据的模型自动重新训练,从而进一步增强 CI/CD 流水线。具体来说,对于生成式 AI,为了保持生成的输出内容相关且多样化,重新训练可能涉及使用新的训练数据或提示自动更新模型。您可以使用 Vertex AI Model Garden 选择可用于调优的最新基础模型。这种做法可确保模型保持最新状态,并针对您不断变化的业务需求进行优化。
实现安全且受控的模型发布
为了最大限度地降低风险并确保部署可靠,请实施一种模型发布方法,以便您尽早检测到问题、验证性能,并在需要时快速回滚。
如需将机器学习模型和应用打包到容器映像中并进行部署,请使用 Cloud Deploy。 您可以将模型部署到 Vertex AI 端点。
通过使用 Canary 版本等策略,为 AI 应用和系统实现受控发布。对于使用 Gemini 等受管模型的应用,我们建议您在全面部署之前,先向部分用户逐步发布新的应用版本。这种方法可让您尽早发现潜在问题,尤其是在使用输出结果可能会变化的生成式 AI 模型时。
如需发布微调后的模型,您可以使用 Cloud Deploy 管理模型版本的部署,并使用 Canary 版本策略来最大限度地降低风险。借助受管理的模型和微调模型,受控发布的目标是在向所有用户发布应用和模型之前,先面向有限的受众群体测试变更。
为了实现稳健的验证,请使用 Vertex AI Experiments 将新模型与现有模型进行比较,并使用 Vertex AI 模型评估来评估模型性能。对于生成式 AI,请定义与预期应用场景和潜在风险相符的评估指标。您可以使用 Vertex AI 中的 Gen AI Evaluation Service 来评估毒性、连贯性、事实准确性和是否遵守安全准则等指标。
为确保部署可靠性,您需要制定稳健的回滚方案。对于传统 ML 系统,请使用 Vertex AI Model Monitoring 来检测数据偏移和性能下降。对于生成式 AI 模型,您可以结合使用 Vertex AI 模型评估与 Cloud Logging 和 Cloud Monitoring,跟踪相关指标并针对输出质量的变化或有害内容的出现设置提醒。根据生成式 AI 特有的指标配置提醒,以便在必要时触发回滚程序。如需跟踪模型谱系并恢复到最新的稳定版本,请使用 Vertex AI Model Registry 中的数据洞见。
实现可观测性
由于数据或环境的变化以及模型的更新,AI 和机器学习系统的行为可能会随时间而变化。这种动态特性使得可观测性对于检测性能问题、偏差或意外行为至关重要。对于生成式 AI 模型来说,情况尤其如此,因为其输出可能具有高度的可变性和主观性。借助可观测性,您可以主动解决意外行为,并确保 AI 和 ML 系统保持可靠、准确和公平。
如需为 AI 和 ML 系统实现可观测性,请考虑以下建议。
持续监控效果
使用指标和成功标准在部署后持续评估模型。
您可以使用 Vertex AI Model Monitoring 主动跟踪模型性能,识别训练与服务偏差和预测偏移,并接收提醒以触发必要的模型重新训练或其他干预措施。为了有效地监控训练-应用偏差,请构建一个表示理想数据分布的黄金数据集,并使用 TFDV 分析训练数据并建立基准架构。
配置模型监控,以将输入数据的分布与黄金数据集进行比较,从而自动检测偏差。对于传统机器学习模型,请重点关注准确率、精确率、召回率、F1 得分、AUC-ROC 和 log loss 等指标。在模型监控中为提醒定义自定义阈值。对于生成式 AI,请使用 Gen AI Evaluation Service 持续监控生产环境中的模型输出。您还可以针对回答质量、安全性、指令遵循情况、依据、写作风格和冗余度启用自动评估指标。为了评估生成输出的质量、相关性、安全性以及是否符合相关准则,您可以采用human-in-the-loop评估。
创建反馈环,以便在模型监控触发提醒时,使用 Vertex AI Pipelines 自动重新训练模型。您可以利用这些数据洞见不断改进模型。
在开发期间评估模型
在部署 LLM 和其他生成式 AI 模型之前,请在开发阶段对其进行全面评估。使用 Vertex AI 模型评估来获得最佳性能并降低风险。使用 Vertex AI 快速评估,让 Google Cloud 根据您提供的数据集和提示自动运行评估。
您还可以定义和集成特定于您的使用情形的自定义指标。如需针对生成的内容提供反馈,请使用 Vertex AI 模型评估功能集成人机循环工作流。
使用对抗性测试来识别漏洞和潜在的故障模式。为了识别和缓解潜在的偏差,请使用子群组分析和反事实生成等技术。利用在开发阶段完成的评估中收集到的数据洞见,在生产环境中定义模型监控策略。按照本文档的持续监控性能部分中的说明,准备好您的解决方案以进行持续监控。
监控发布情况
如需深入了解已部署的端点和基础架构的健康状况和性能,请使用 Cloud Monitoring。对于 Vertex AI 端点,请跟踪请求速率、错误率、延迟时间和资源利用率等关键指标,并针对异常情况设置提醒。如需了解详情,请参阅 Vertex AI 的 Cloud Monitoring 指标。
监控底层基础架构的健康状况,这些基础架构可能包括 Compute Engine 实例、Google Kubernetes Engine (GKE) 集群以及 TPU 和 GPU。通过 Active Assist 获取自动优化建议。 如果您使用自动伸缩功能,请监控伸缩行为,确保自动伸缩功能能够根据流量模式的变化做出适当的响应。
通过将 Cloud Deploy 与 Cloud Monitoring 集成,跟踪模型部署的状态,包括 Canary 版发布和回滚。此外,您还可以使用 Security Command Center 监控潜在的安全威胁和漏洞。
为特定于业务的阈值设置自定义提醒
为了及时发现和纠正异常情况和问题,请根据您的业务目标设置自定义提醒。以下是一些可用于实现自定义提醒系统的 Google Cloud 产品示例:
- Cloud Logging:收集、存储和分析 AI 和 ML 系统所有组件的日志。
- Cloud Monitoring:创建自定义信息中心,直观呈现关键指标和趋势,并根据您的需求定义自定义指标。配置提醒,以便在出现严重问题时收到通知,并将提醒与 PagerDuty 或 Slack 等事件管理工具集成。
- Error Reporting:自动捕获和分析错误及异常。
- Cloud Trace:分析分布式系统的性能并找出瓶颈。 跟踪对于了解 AI 和 ML 流水线不同组件之间的延迟时间特别有用。
- Cloud Profiler:持续分析生产环境中代码的性能,并确定 CPU 或内存使用方面的性能瓶颈。
打造卓越运营文化
将重点从仅构建模型转变为构建可持续、可靠且有影响力的 AI 解决方案。赋能团队持续学习、创新和改进,从而缩短开发周期、减少错误并提高效率。通过优先考虑自动化、标准化和伦理考量,您可以确保 AI 和 ML 计划持续创造价值、降低风险并促进 Responsible AI 开发。
如需为 AI 和机器学习系统打造卓越的运营文化,请考虑以下建议。
实现自动化和标准化
为了强调效率和一致性,请在 AI 和机器学习生命周期的每个阶段都嵌入自动化和标准化实践。Automation 可减少人为错误,让团队腾出时间专注于创新。标准化可确保流程在团队和项目之间可重复且伸缩。
优先考虑持续学习和改进
营造一种将持续教育和实验作为核心原则的环境。鼓励团队及时了解 AI 和机器学习方面的最新进展,并提供从以往项目中学习的机会。好奇心和适应性文化能够推动创新,并确保团队能够应对新的挑战。
培养责任感和主人翁意识
通过明确定义角色、责任和成功指标,建立信任并达成一致。为团队赋能,让他们能够在这些界限内做出明智的决策,并建立透明的方式来衡量进度。主人翁意识可以激励团队,并确保团队对结果承担集体责任。
嵌入 AI 伦理和安全注意事项
在开发过程的每个阶段,都应优先考虑伦理问题。鼓励团队批判性地思考其 AI 解决方案的影响,并就公平性、偏见和社会影响展开讨论。明确的原则和责任机制可确保 AI 系统符合组织价值观并提升信任度。
具备可扩缩的设计
为了应对不断增长的数据量和用户需求,并最大限度地提高 AI 投资的价值,您的 AI 和机器学习系统需要具备可伸缩性。系统必须能够适应并以最佳状态运行,以避免出现阻碍效果的性能瓶颈。在设计时考虑可伸缩性,可确保 AI 基础架构能够应对增长并保持响应能力。使用可伸缩的基础设施,规划容量,并采用横向伸缩和托管服务等策略。
如需设计可扩缩的 AI 和 ML 系统,请考虑以下建议。
规划容量和配额
评估未来的增长情况,并相应地规划基础架构容量和资源配额。与业务利益相关方合作,了解预计的增长情况,然后相应地确定基础架构要求。
使用 Cloud Monitoring 分析历史资源利用率、识别趋势并预测未来需求。定期进行负载测试,以模拟工作负载并找出瓶颈。
熟悉您使用的服务(例如 Compute Engine、Vertex AI 和 Cloud Storage)的Google Cloud 配额。通过 Google Cloud 控制台主动申请增加配额,并使用预测和负载测试中的数据来证明增加配额的合理性。 监控配额用量并设置提醒,以便在用量接近配额限制时收到通知。
如需根据需求优化资源使用情况,请调整资源容量,为容错批量工作负载使用 Spot 虚拟机,并实现自动扩缩。
为峰值事件做好准备
确保您的系统能够应对高峰活动期间突然出现的流量或工作负载高峰。记录您的峰值活动策略,并定期进行演练,以测试系统处理增加的负载的能力。
为了在需求高峰期积极扩充资源,请在 Compute Engine 和 GKE 中配置自动扩缩政策。对于可预测的峰值模式,请考虑使用预测性自动扩缩。如需根据特定于应用的信号触发自动扩缩,请使用 Cloud Monitoring 中的自定义指标。
使用 Cloud Load Balancing 在多个应用实例之间分配流量。根据应用需求选择合适的负载均衡器类型。对于地理位置分散的用户,您可以使用全球负载均衡将流量路由到最近的可用实例。对于复杂的基于微服务的架构,请考虑使用 Cloud Service Mesh。
使用 Cloud CDN 在 Google 网络边缘缓存静态内容。 如需缓存经常访问的数据,您可以使用 Memorystore,它可为 Redis、Valkey 或 Memcached 提供全代管式式内存中服务。
使用 Pub/Sub 进行实时消息传递,并使用 Cloud Tasks 进行异步任务执行,从而解耦系统组件
扩缩应用以用于生产
为确保在生产环境中实现可伸缩的部署,您可以使用托管式服务,例如 Vertex AI 分布式训练和 Vertex AI 推理。借助 Vertex AI 推理,您可以在将模型部署到端点或请求批量预测时,为预测节点配置机器类型。对于某些配置,您可以添加 GPU。选择合适的机器类型和加速器,以优化延迟时间、吞吐量和成本。
如需在分布式计算资源中扩展复杂的 AI 和 Python 应用以及自定义工作负载,您可以使用 Ray on Vertex AI。此功能有助于优化性能,并可与Google Cloud 服务无缝集成。Ray on Vertex AI 通过处理集群管理、任务调度和数据传输来简化分布式计算。它与其他 Vertex AI 服务(例如训练、预测和流水线)集成。Ray 提供容错和自动扩缩功能,并帮助您根据不断变化的工作负载调整基础架构。它提供了一个统一的框架,用于分布式训练、超参数调优、强化学习和模型服务。使用 Ray 通过 Dataflow 或 Dataproc 进行分布式数据预处理、加速模型训练、可伸缩的超参数调优、强化学习和并行化批量预测。
贡献者
作者:
- Charlotte Gistelinck 博士 | 合作伙伴工程师
- Sannya Dang | AI 解决方案架构师
- Filipe Gracio 博士 | 客户工程师
其他贡献者:
- Gary Harmson | 首席架构师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Ryan Cox | 首席架构师
- Stef Ruinard | 生成式 AI 现场解决方案架构师