Google Cloud 架构完善框架中的本文档介绍了相关原则和建议,可帮助您在 Google Cloud 中设计、构建和管理 AI 和机器学习工作负载,以实现您的运营、安全性、可靠性、费用和性能目标。
本文档的目标受众群体包括在 Google Cloud中设计、构建、部署和维护 AI 及 ML 工作负载的决策者、架构师、管理员、开发者和运维人员。
以下页面针对 Well-Architected 框架的每个支柱,介绍了特定于 AI 和 ML 的原则和建议:
贡献者
作者:
- Benjamin Sadik | AI 和 ML 专家客户工程师
- Charlotte Gistelinck 博士 | 合作伙伴工程师
- Filipe Gracio 博士 | 客户工程师
- Isaac Lo | AI 业务发展经理
- Kamilla Kurta | GenAI/机器学习专家客户工程师
- Mohamed Fawzi | 比荷卢经济联盟安全与合规主管
- Rick (Rugui) Chen | AI 基础设施解决方案架构师
- Sannya Dang | AI 解决方案架构师
其他贡献者:
- Daniel Lees | 云安全架构师
- Gary Harmson | 首席架构师
- Jose Andrade | 企业基础架构客户工程师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Nicolas Pintaux | 客户工程师,应用现代化改造专家
- Radhika Kanakam | 高级计划经理,Cloud GTM
- Ryan Cox | 首席架构师
- Samantha He | 技术文档工程师
- Stef Ruinard | 生成式 AI 现场解决方案架构师
- Wade Holmes | 全球解决方案总监
- Zach Seils | 网络专家
AI 和机器学习视角:卓越运营
架构完善框架: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 现场解决方案架构师
AI 和机器学习视角:安全性
架构完善框架:AI 和机器学习视角中的本文档概述了相关原则和建议,可确保您的 AI 和机器学习部署满足组织的安全和合规性要求。本文档中的建议与 Google Cloud 架构完善框架的安全性支柱保持一致。
安全部署 AI 和机器学习工作负载是一项关键要求,尤其是在企业环境中。为满足此要求,您需要采用全面的安全方法,从 AI 和机器学习解决方案的初始概念化阶段开始,一直延伸到开发、部署和持续运营阶段。 Google Cloud 提供强大的工具和服务,旨在帮助您保护 AI 和机器学习工作负载。
定义明确的目标和要求
在设计和开发流程的早期阶段集成所需的安全和合规控制措施,比在开发完成后添加这些控制措施要容易得多。从设计和开发流程开始,就要根据您的特定风险环境和特定业务优先级做出适当的决策。
请考虑以下建议:
- 从一开始就识别潜在的攻击途径,并从安全和合规的角度出发。在设计和改进 AI 系统时,请密切关注攻击面、潜在风险以及您可能需要承担的义务。
- 使 AI 和 ML 安全工作与业务目标保持一致,并确保安全是整体策略不可或缺的一部分。 了解您的安全选择对主要业务目标的影响。
确保数据安全并防止数据丢失或被误用
数据是一种宝贵而敏感的资产,必须妥善保护。数据安全有助于您维护用户信任、支持业务目标并满足合规性要求。
请考虑以下建议:
- 请勿收集、保留或使用对实现业务目标而言并非绝对必要的数据。如果可能,请使用合成数据或完全匿名化数据。
- 监控数据收集、存储和转换。维护所有数据访问和操纵活动的日志。这些日志有助于您审核数据访问、检测未经授权的访问尝试,以及防止不合规定的访问。
- 根据用户角色实现不同级别的访问权限(例如,无访问权限、只读或写入)。确保根据最小权限原则分配权限。用户必须仅拥有必要的最低权限,才能执行其角色活动。
- 实施加密、安全边界和数据移动限制等措施。这些措施有助于防止数据渗漏和数据丢失。
- 防范机器学习训练系统的数据中毒攻击。
确保 AI 流水线安全可靠,免遭篡改
您的 AI 和机器学习代码以及代码定义的流水线是关键资产。未受保护的代码可能会被篡改,从而导致数据泄露、违规和关键业务活动中断。确保 AI 和 ML 代码的安全性有助于确保模型和模型输出的完整性和价值。
请考虑以下建议:
- 在模型开发期间,采用安全的编码实践,例如依赖项管理或输入验证和清理,以防止出现漏洞。
- 保护您的流水线代码和模型制品(例如文件、模型权重和部署规范)免遭未经授权的访问。 根据用户角色和需求,为每个制品实现不同的访问权限级别。
- 强制执行资产和流水线运行的沿袭和跟踪。这种强制执行有助于您满足合规性要求,并避免损害生产系统。
使用安全工具和工件在安全系统上部署
确保您的代码和模型在安全环境中运行,该环境具有强大的访问权限控制系统,可为部署在环境中的工具和制品提供安全保障。
请考虑以下建议:
- 在安全的环境中训练和部署模型,该环境具有适当的访问权限控制措施,可防止未经授权的使用或操纵。
- 遵循针对 AI 特定制品(例如模型和软件包)的软件制品供应链等级 (SLSA) 标准指南。
- 建议使用经过验证的预构建容器映像,这些映像是专门为 AI 工作负载设计的。
保护和监控输入
AI 系统需要输入内容才能进行预测、生成内容或自动执行操作。某些输入内容可能存在风险或被用作攻击途径,必须检测并清理。尽早检测到潜在的恶意输入有助于确保 AI 系统的安全并按预期运行。
请考虑以下建议:
- 实施安全实践,为生成式 AI 系统开发和管理提示,并确保对提示进行有害意图筛查。
- 监控预测性或生成性系统的输入,以防止出现端点过载或系统无法处理的提示等问题。
- 确保只有已部署系统的预期用户才能使用该系统。
监控、评估并准备好回复输出内容
AI 系统之所以能创造价值,是因为它们生成的输出可以增强、优化或自动化人类的决策过程。为了保持 AI 系统和应用的完整性和可信度,您需要确保输出安全且在预期参数范围内。您还需要制定应对突发事件的方案。
请考虑以下建议:
- 监控生产环境中 AI 和 ML 模型的输出,并发现任何性能、安全性和合规性问题。
- 通过实施可靠的指标和安全措施来评估模型性能,例如在预测模型中识别超出范围的生成式回答或极端输出。收集用户对模型性能的反馈。
- 实施完善的提醒和突发事件响应程序,以解决任何潜在问题。
贡献者
作者:
- Kamilla Kurta | GenAI/机器学习专家客户工程师
- Filipe Gracio 博士 | 客户工程师
- Mohamed Fawzi | 比荷卢经济联盟安全与合规主管
其他贡献者:
- Daniel Lees | 云安全架构师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Wade Holmes | 全球解决方案总监
AI 和机器学习视角:可靠性
架构完善框架:AI 和机器学习视角中的本文档简要介绍了在 Google Cloud上设计和运行可靠的 AI 和机器学习系统的原则和建议。本文探讨了如何将高级可靠性实践和可观测性集成到架构蓝图中。本文档中的建议与 Google Cloud 架构完善框架的可靠性支柱保持一致。
在快速发展的 AI 和 ML 领域,可靠的系统对于确保客户满意度和实现业务目标至关重要。您需要强大、可靠且可适应的 AI 和 ML 系统,以满足预测性 ML 和生成式 AI 的独特需求。为了应对 MLOps(从开发到部署和持续改进)的复杂性,您需要采用可靠性优先的方法。 Google Cloud 提供专门构建的 AI 基础设施,该基础设施符合站点可靠性工程 (SRE) 原则,并为可靠的 AI 和机器学习系统奠定坚实的基础。
确保基础架构可伸缩且具备高可用性
通过在架构中考虑可伸缩性和可用性,您可以让应用在不发生服务中断或性能下降的情况下应对不同程度的需求。这意味着,即使在基础设施中断或流量非常高时,用户仍可使用您的 AI 服务。
请考虑以下建议:
- 设计具有自动和动态伸缩功能的 AI 系统,以应对需求波动。这有助于确保即使在流量高峰期也能获得理想的性能。
- 通过负载测试和性能监控,主动管理资源并预测未来需求。利用历史数据和预测分析来做出明智的资源分配决策。
- 通过在 Google Cloud 中采用多可用区和多区域部署原型并实现冗余和复制,设计出具有高可用性和容错能力的系统。
- 在 AI 和 ML 服务的多个实例和端点之间分配传入流量。负载均衡有助于防止任何单个实例过载,并有助于确保性能和可用性保持一致。
使用模块化且松散耦合的架构
为了使 AI 系统能够应对单个组件的故障,请使用模块化架构。例如,将数据处理和数据验证组件设计为单独的模块。当某个特定组件发生故障时,模块化架构有助于最大限度地缩短停机时间,并让您的团队更快地开发和部署修复程序。
请考虑以下建议:
- 将 AI 和 ML 系统拆分为小的自包含模块或组件。这种方法可提高代码的可重用性,简化测试和维护,并让您独立开发和部署各个组件。
- 设计具有明确定义的接口的松散耦合模块。这种方法可最大限度地减少依赖项,让您能够独立进行更新和更改,而不会影响整个系统。
- 规划优雅降级。当某个组件发生故障时,系统的其他部分必须继续提供足够的功能。
- 使用 API 在模块之间创建清晰的边界,并隐藏模块级实现细节。借助此方法,您可以更新或替换单个组件,而不会影响与系统其他部分的互动。
构建自动化 MLOps 平台
借助自动化 MLOps 平台,模型生命周期的各个阶段和输出会更加可靠。通过提高一致性、松耦合性和模块化程度,并将运营和基础架构表示为代码,您可以消除脆弱的手动步骤,并维护更强大、更可靠的 AI 和机器学习系统。
请考虑以下建议:
- 自动执行模型开发生命周期,从数据准备和验证到模型训练、评估、部署和监控。
- 以代码形式管理基础架构 (IaC)。这种方法可实现高效的版本控制、在必要时快速回滚,以及可重复的部署。
- 验证模型是否能按预期处理相关数据。 自动监控模型的性能,并针对意外输出设置适当的提醒。
- 验证 AI 和 ML 流水线的输入和输出。例如,验证数据、配置、命令实参、文件和预测结果。为意外值或不允许的值配置提醒。
- 为模型端点采用受管理的版本控制策略。这种策略支持增量发布,并可在出现问题时快速恢复。
通过数据和模型治理来维持信任和控制
AI 和 ML 系统的可靠性取决于数据和模型的可信度以及治理能力。AI 输出可能会以无声的方式不符合预期。例如,输出可能在形式上是一致的,但可能不正确或不受欢迎。通过实施可追溯性和严格的治理,您可以确保输出结果可靠且值得信赖。
请考虑以下建议:
- 使用数据和模型目录来有效跟踪和管理您的资产。为了便于跟踪和审核,请在整个生命周期内维护数据和模型版本的全面记录。
- 实施严格的访问权限控制和审核轨迹,以保护敏感数据和模型。
- 解决 AI(尤其是生成式 AI 应用)中存在的严重偏见问题。为了赢得信任,请努力提高模型输出的透明度和可解释性。
- 自动生成特征统计信息并实现异常检测,以主动识别数据问题。为确保模型可靠性,请建立相关机制来检测和缓解数据分布变化的影响。
实施全面的 AI 和机器学习可观测性和可靠性实践
为了不断改进 AI 运营,您需要定义有意义的可靠性目标并衡量进展情况。可观测性是可靠系统的基础要素。可观测性可帮助您管理正在进行的操作和关键事件。妥善实现的可观测性有助于您为用户构建和维护可靠的服务。
请考虑以下建议:
- 跟踪处理器(CPU、GPU 和 TPU)以及其他资源(例如内存用量、网络延迟时间和磁盘用量)的基础设施指标。执行负载测试和性能监控。使用监控中的测试结果和指标来管理 AI 和 ML 系统的伸缩和容量。
- 制定可靠性目标并跟踪应用指标。衡量您构建的 AI 应用的吞吐量和延迟时间等指标。监控应用和公开端点的使用模式。
- 建立特定于模型的指标(例如准确率或安全指标),以便评估模型可靠性。随时间推移跟踪这些指标,以发现任何漂移或退化。为了实现高效的版本控制和自动化,请将监控配置定义为代码。
- 定义和跟踪业务级指标,以了解模型和可靠性对业务成果的影响。如需衡量 AI 和 ML 服务的可靠性,请考虑采用 SRE 方法并定义服务等级目标 (SLO)。
贡献者
作者:
- Rick (Rugui) Chen | AI 基础设施解决方案架构师
- Filipe Gracio 博士 | 客户工程师
其他贡献者:
- Jose Andrade | 企业基础架构客户工程师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
AI 和机器学习视角:费用优化
架构完善框架:AI 和机器学习视角中的本文档概述了相关原则和建议,可帮助您在整个机器学习生命周期内优化 AI 系统的费用。通过采用主动且明智的费用管理方法,组织可以充分发挥 AI 和机器学习系统的潜力,同时保持财务纪律。本文档中的建议与 Google Cloud Well-Architected Framework 的费用优化支柱相符。
AI 和机器学习系统可帮助您从数据中发掘富有价值的分析洞见和预测功能。例如,您可以减少内部流程中的阻力、改善用户体验,并更深入地了解客户。云端提供了大量资源,可快速实现价值,而无需为 AI 和机器学习工作负载进行大量前期投资。为了最大限度地提高业务价值,并使支出与业务目标保持一致,您需要了解费用驱动因素、主动优化费用、设置支出控制措施,并采用 FinOps 实践。
本文档中的建议与以下核心原则相对应:
定义和衡量费用与回报
如需在 Google Cloud中有效管理 AI 和 ML 费用,您必须定义并衡量云资源费用以及 AI 和 ML 计划的业务价值。为了帮助您精细地跟踪支出, Google Cloud 提供了全面的结算和费用管理工具,例如:
- Cloud Billing 报告和表格
- Looker Studio 信息中心、预算和提醒
- Cloud Monitoring
- Cloud Logging
为了在资源分配和优化方面做出明智的决策,请考虑以下建议。
确定业务目标和 KPI
使 AI 和机器学习项目中的技术选择与业务目标和关键绩效指标 (KPI) 保持一致。
确定战略目标和以投资回报率为中心的 KPI
确保 AI 和机器学习项目与收入增长、降低成本、客户满意度和效率等战略目标保持一致。与利益相关者沟通,了解业务重点。确定具体、可衡量、可实现、相关且有时限性 (SMART) 的 AI 和 ML 目标。例如,一个 SMART 目标是:“在 6 个月内,通过使用 AI 聊天机器人将客户支持的聊天处理时间缩短 15%”。
为了实现业务目标并衡量投资回报率 (ROI),请为以下类别的指标定义 KPI:
- 训练、推理、存储和网络资源的费用,包括具体单位费用(例如每次推理、每个数据点或每个任务的费用)。这些指标可帮助您深入了解效率和成本优化机会。您可以使用 Cloud Billing 报告和 Cloud Monitoring 信息中心来跟踪这些费用。
- 收入增长、成本节省、客户满意度、效率、准确性和采用率等业务价值指标。您可以使用 BigQuery Analytics 和 Looker 信息中心来跟踪这些指标。
特定于行业的指标,例如:
- 零售行业:衡量收入升幅和客户流失率
- 医疗保健行业:衡量患者时间和患者结局
- 金融行业:衡量欺诈行为减少情况
项目专用指标。您可以使用 Vertex AI Experiments 和评估来跟踪这些指标。
- 预测性 AI:衡量准确率和精确率
- 生成式 AI:衡量采用情况、满意度和内容质量
- 计算机视觉 AI:衡量准确率
培养费用意识和持续优化文化
采用 FinOps 原则,确保每个 AI 和 ML 项目都有估算费用,并且有方法在整个生命周期内衡量和跟踪实际费用。确保项目的成本和业务效益已分配所有者,并明确责任。
如需了解详情,请参阅 Google Cloud 架构完善框架的“费用优化”支柱中的培养费用意识文化。
通过迭代和反馈实现价值并持续优化
将 AI 和机器学习应用直接与业务目标相关联,并衡量投资回报率。
如需验证投资回报率假设,请先开展试点项目,并使用以下迭代优化周期:
- 持续监控并分析数据:监控 KPI 和费用,以发现偏差和优化机会。
- 根据数据洞见进行数据驱动型调整:优化策略、模型、基础架构和资源分配。
- 迭代优化:根据您学到的知识和不断变化的业务需求,调整业务目标和 KPI。这种迭代有助于您保持相关性并与战略保持一致。
- 建立反馈环:与利益相关者一起审核效果、费用和价值,以便为持续优化和未来项目规划提供依据。
使用 Cloud Billing 和标签管理结算数据
要有效优化成本,您需要了解每个成本要素的来源。本部分中的建议可帮助您使用 Google Cloud工具深入了解 AI 和 ML 费用。您还可以将费用归因于特定的 AI 和 ML 项目、团队和活动。这些数据分析为费用优化奠定了基础。
整理和标记 Google Cloud 资源
- 以反映组织结构以及 AI 和 ML 工作流的层次结构来组织项目和资源。如需跟踪和分析不同层级的费用,请使用组织、文件夹和项目来整理 Google Cloud 资源。如需了解详情,请参阅确定 Google Cloud 着陆区的资源层次结构。
- 为资源应用有意义的标签。您可以使用标签来指明项目、团队、环境、模型名称、数据集、使用情形和性能要求。标签可为结算数据提供有价值的背景信息,并支持精细的费用分析。
- 在所有 AI 和 ML 项目中保持标签惯例的一致性。一致的标签命名惯例可确保您的结算数据井井有条,并可随时进行分析。
使用与结算相关的工具
- 为便于进行详细分析和报告,请将结算数据导出到 BigQuery。 BigQuery 具有强大的查询功能,可让您分析结算数据,从而了解自己的费用。
- 如需按标签、项目或特定时间段汇总费用,您可以在 BigQuery 中编写自定义 SQL 查询。借助此类查询,您可以将费用归因于特定的 AI 和 ML 活动,例如模型训练、超参数调优或推理。
- 如需发现费用异常情况或意外的支出高峰,请使用 BigQuery 中的分析功能。这种方法有助于您检测 AI 和 ML 工作负载中的潜在问题或效率低下的情况。
- 如需发现和管理意外费用,请使用 Cloud Billing 中的异常检测信息中心。
- 如需根据资源使用情况在不同团队或部门之间分摊费用,请使用 Google Cloud的费用分摊功能。费用分摊有助于提高问责制和透明度。
- 如需深入了解支出模式,请探索预建的 Cloud Billing 报告。 您可以过滤和自定义这些报告,以便重点关注特定 AI 和 ML 项目或服务。
通过信息中心、提醒和报告持续监控资源
为了以可伸缩且富有弹性的方式跟踪费用,您需要持续监控和报告。信息中心、提醒和报告是有效跟踪费用的基础。有了这个基础,您就可以随时了解费用信息,找出需要优化的方面,并确保业务目标与费用保持一致。
创建报告系统
创建定期生成的报告,并与合适的利益相关方分享。
使用 Cloud Monitoring 从各种来源(包括您的应用、基础架构和 Google Cloud 服务,例如 Compute Engine、Google Kubernetes Engine (GKE) 和 Cloud Run 函数)收集指标。如需实时直观呈现指标和日志,您可以使用预建的 Cloud Monitoring 信息中心,也可以创建自定义信息中心。借助自定义信息中心,您可以定义和添加指标,以跟踪系统的特定方面,例如模型性能、API 调用或业务级 KPI。
使用 Cloud Logging 集中收集和存储来自应用、系统和 Google Cloud 服务的日志。将日志用于以下用途:
- 跟踪 CPU、内存、存储空间和网络等资源的费用和利用率。
- 确定过度配置(资源未得到充分利用)和配置不足(资源不足)的情况。过度配置会导致不必要的费用。配置不足会延长训练时间,并可能导致性能问题。
- 识别空闲或未充分利用的资源(例如虚拟机和 GPU),并采取措施关闭或合理调整这些资源,以优化成本。
- 识别费用高峰,以检测资源使用量或费用的突然意外增加。
使用 Looker 或 Looker Studio 创建交互式信息中心和报告。将信息中心和报告连接到各种数据源,包括 BigQuery 和 Cloud Monitoring。
根据关键 KPI 设置提醒阈值
为您的 KPI 确定应触发提醒的阈值。有意义的提醒阈值有助于避免提醒疲劳。在 Cloud Monitoring 中创建提醒政策,以便接收与 KPI 相关的通知。例如,当准确率降至某个阈值以下或延迟时间超过定义的限制时,您可以收到通知。基于日志数据的提醒可以实时通知您潜在的费用问题。有了此类提醒,您就可以及时采取纠正措施,防止进一步的经济损失。
优化资源分配
为了在 Google Cloud中实现 AI 和 ML 工作负载的成本效益,您必须优化资源分配。为帮助您避免不必要的支出,并确保工作负载拥有所需的资源以实现最佳性能,请根据工作负载的需求调整资源分配。
如需优化云资源向 AI 和 ML 工作负载的分配,请考虑以下建议。
使用自动扩缩功能动态调整资源
使用支持自动扩缩的 Google Cloud 服务,该服务会自动调整资源分配以满足当前需求。自动扩缩具有以下优势:
- 费用和性能优化:您可以避免为闲置资源付费。同时,自动扩缩功能可确保您的系统拥有必要的资源,即使在高峰负载下也能以最佳状态运行。
- 提高效率:让您的团队可以专注于其他任务。
- 更高的敏捷性:您可以快速响应不断变化的需求,并保持应用的高可用性。
下表总结了可用于在 AI 项目的不同阶段实现自动扩缩的技术。
阶段 | 自动扩缩技术 |
---|---|
培训 | |
推理 |
|
从小型模型和数据集开始
为帮助降低成本,请尽可能小规模地测试机器学习假设,并使用迭代方法。这种方法使用较小的模型和数据集,具有以下优势:
- 从一开始就降低成本:更少的计算能力、存储空间和处理时间可降低初始实验和开发阶段的成本。
- 更快迭代:所需训练时间更少,可让您更快地迭代、探索替代方法,并更高效地确定有前景的方向。
- 降低复杂性:简化调试、分析和结果解读,从而缩短开发周期。
- 高效的资源利用率:减少了过度预配资源的可能性。您只需预配当前工作负载所需的资源。
请考虑以下建议:
- 先使用抽样数据:使用具有代表性的数据子集来训练模型。借助这种方法,您无需处理整个数据集即可评估模型性能并发现潜在问题。
- 使用笔记本进行实验:从较小的实例开始,然后根据需要进行扩缩。您可以使用 Vertex AI Workbench,这是一个代管式 Jupyter 笔记本环境,非常适合用于尝试不同的模型架构和数据集。
从更简单或预训练的模型开始:使用 Vertex AI Model Garden 发现和探索预训练的模型。此类模型所需的计算资源较少。根据性能要求,逐渐增加复杂性。
- 使用预训练模型执行图像分类和自然语言处理等任务。为了节省训练费用,您可以先在较小的数据集上对模型进行微调。
- 对于结构化数据,请使用 BigQuery ML。借助 BigQuery ML,您可以直接在 BigQuery 中创建和部署模型。这种方法对于初始实验来说经济实惠,因为您可以利用 BigQuery 的按查询次数付费价格模式。
扩缩以优化资源:利用 Google Cloud的灵活基础架构,根据需要扩缩资源。从较小的实例开始,并在必要时调整其大小或数量。
通过实验发现资源要求
AI 和 ML 工作负载的资源需求可能差异很大。为了优化资源分配和费用,您必须通过系统性实验了解工作负载的具体需求。为了确定模型的最有效配置,请测试不同的配置并分析其效果。然后,根据要求合理调整用于训练和提供服务的资源规模。
我们建议采用以下实验方法:
- 从基准开始:从根据您对工作负载要求的初步估计得出的基准配置开始。如需创建基准,您可以使用新工作负载的费用估算器,也可以使用现有的结算报告。如需了解详情,请参阅在 Google Cloud上发掘企业 AI 的真实成本。
- 了解您的配额:在开展大规模实验之前,请先熟悉您计划使用的资源和 API 的 Google Cloud 项目配额。配额决定了您可以实际测试的配置范围。熟悉配额后,您可以在实验阶段将资源用量控制在可用限额范围内。
- 系统性地进行实验:调整 CPU 数量、内存容量、GPU 和 TPU 的数量和类型以及存储容量等参数。 借助 Vertex AI Training 和 Vertex AI Predictions,您可以尝试不同的机器类型和配置。
监控利用率、费用和性能:针对您实验的每种配置,跟踪资源利用率、费用和关键性能指标,例如训练时间、推理延迟时间和模型准确率。
- 如需跟踪资源利用率和性能指标,您可以使用 Vertex AI 控制台。
- 如需收集和分析详细的性能指标,请使用 Cloud Monitoring。
- 如需查看费用,请使用 Cloud Billing 报告和 Cloud Monitoring 信息中心。
- 如需识别模型中的性能瓶颈并优化资源利用率,请使用 Vertex AI TensorBoard 等性能分析工具。
分析费用:比较每种配置的费用和性能,以确定最具成本效益的选项。
根据配额确定资源阈值和改进目标:确定伸缩开始产生边际效应递减的性能阈值,例如,在成本大幅增加的情况下,训练时间或延迟时间仅略有减少。设置这些阈值时,请考虑项目配额。确定进一步伸缩容的费用和潜在配额影响不再能通过性能提升来合理化的点。
反复优化:根据您的发现,使用优化后的配置重复实验流程。始终确保资源使用量在分配的配额范围内,并符合既定的成本效益阈值。
使用 MLOps 减少低效情况
随着组织越来越多地使用机器学习来提高创新能力和效率,有效管理机器学习生命周期变得至关重要。机器学习运维 (MLOps) 是一组可自动执行并简化机器学习生命周期(从模型开发到部署和监控)的实践。
使 MLOps 与费用驱动因素保持一致
如需利用 MLOps 提高成本效益,请确定机器学习生命周期中的主要成本驱动因素。然后,您可以采用并实施与成本驱动因素相符的 MLOps 实践。优先采用可解决最具影响力的成本驱动因素的 MLOps 功能。这种方法有助于确保以可管理的方式成功实现显著的成本节省。
实施 MLOps 以优化费用
以下是一些有助于降低成本的常见 MLOps 实践:
- 版本控制:Git 等工具可帮助您跟踪代码、数据和模型的版本。版本控制可确保可重现性、促进协作,并防止因版本控制问题而导致代价高昂的返工。
- 持续集成和持续交付 (CI/CD):借助 Cloud Build 和 Artifact Registry,您可以实现 CI/CD 流水线,以自动执行机器学习模型的构建、测试和部署。CI/CD 流水线可确保高效利用资源,并最大限度地降低与人工干预相关的成本。
- 可观测性:借助 Cloud Monitoring 和 Cloud Logging,您可以跟踪生产环境中的模型性能、发现问题并触发提醒以进行主动干预。借助可观测性,您可以保持模型准确性、优化资源分配,并防止代价高昂的停机或性能下降。
- 模型重新训练:Vertex AI Pipelines 可简化定期或在性能下降时重新训练模型的过程。当您使用 Vertex AI Pipelines 进行重新训练时,它有助于确保模型保持准确高效,从而防止不必要的资源消耗并保持最佳性能。
- 自动化测试和评估:Vertex AI 可帮助您加快模型评估速度并实现标准化。在整个机器学习生命周期中实施自动化测试,以确保模型的质量和可靠性。此类测试有助于您尽早发现错误,防止生产环境中出现代价高昂的问题,并减少进行大量手动测试的需求。
如需了解详情,请参阅 MLOps:机器学习中的持续交付和自动化流水线。
强制执行数据管理和治理实践
有效的数据管理和治理实践对于优化费用至关重要。组织良好的数据可以鼓励团队重复使用数据集,避免不必要的重复,并减少获取高质量数据所需的工作量。通过主动管理数据,您可以降低存储费用、提高数据质量,并确保使用最相关且最有价值的数据来训练机器学习模型。
如需实施数据管理和治理实践,请考虑以下建议。
建立并采用数据治理框架
随着 AI 和 ML 的日益普及,数据已成为正在进行数字化转型的组织最有价值的资产。一个强大的数据治理框架是经济高效地大规模管理 AI 和 ML 工作负载的关键要求。数据治理框架包含明确定义的政策、程序和角色,可为管理整个数据生命周期提供结构化方法。此类框架有助于提高数据质量、增强安全性、提高利用率并减少冗余。
建立数据治理框架
目前已有许多数据治理框架,例如 EDM Council 发布的框架,其中包含适用于不同行业和组织规模的选项。选择并调整符合您特定需求和优先事项的框架。
实施数据治理框架
Google Cloud 提供以下服务和工具,帮助您实现强大的数据治理框架:
Dataplex Universal Catalog 是一种智能数据结构脉络,可帮助您统一分布式数据并自动执行数据治理,而无需将数据集整合到一个位置。这有助于降低数据分发和维护成本,方便数据发现,并促进数据重用。
- 如需整理数据,请使用 Dataplex Universal Catalog 抽象概念并设置逻辑数据湖和区域。
- 如需管理对数据湖和区域的访问权限,请使用 Google 群组和 Dataplex Universal Catalog 角色。
- 如需简化数据质量流程,请启用自动数据质量。
Dataplex Universal Catalog 也是一项全代管式可伸缩元数据管理服务。目录提供了一个基础,可确保数据资产可访问且可重复使用。
- 来自受支持 Google Cloud 的来源的元数据会自动注入到通用目录中。对于 Google Cloud之外的数据源,创建自定义条目。
- 为了提高数据资产的可发现性和可管理性,请使用切面通过业务元数据来丰富技术元数据。
- 确保数据科学家和机器学习从业者拥有足够的权限来访问 Dataplex Universal Catalog 并使用搜索功能。
借助 BigQuery Sharing 功能,您可以在组织间高效安全地交换数据资产,以应对数据可靠性和费用方面的挑战。
在整个机器学习生命周期内重复使用数据集和特征
为了显著提高效率并节省费用,请在多个机器学习项目中重复使用数据集和特征。避免冗余的数据工程和特征开发工作,有助于组织加快模型开发速度、降低基础设施成本,并释放宝贵资源以用于其他关键任务。
Google Cloud 提供以下服务和工具,帮助您重复使用数据集和特征:
- 数据和机器学习从业者可以发布数据产品,以最大限度地提高团队间的数据重用率。然后,可以通过 Dataplex Universal Catalog 和 BigQuery 共享来发现和使用数据产品。
- 对于表格和结构化数据集,您可以使用 Vertex AI Feature Store 通过 BigQuery 提高可重用性并简化特征管理。
- 您可以在 Cloud Storage 中存储非结构化数据,并使用 BigQuery 对象表和签名网址来管理数据。
- 您可以通过在 Vector Search 索引中添加元数据来管理向量嵌入。
利用 MLOps 实现自动化和简化
采用 MLOps 实践的主要好处是降低技术和人员成本。Automation 有助于避免重复的机器学习活动,并减轻数据科学家和机器学习工程师的工作负担。
如需通过 MLOps 自动执行和简化机器学习开发,请考虑以下建议。
自动执行并标准化数据收集和处理流程
为了帮助减少机器学习开发工作量和时间,请实现数据收集和处理技术的自动化和标准化。
自动收集和处理数据
本部分总结了可用于自动执行数据收集和处理的产品、工具和技术。
确定并选择适合 AI 和机器学习任务的相关数据源:
- 数据库选项,例如 Cloud SQL、Spanner、AlloyDB for PostgreSQL、Firestore 和 BigQuery。 您的选择取决于您的需求,例如写入访问延迟时间(静态或动态)、数据量(高或低)和数据格式(结构化、非结构化或半结构化)。如需了解详情,请参阅Google Cloud 数据库。
- 数据湖(例如使用 BigLake 的 Cloud Storage)。
- Dataplex Universal Catalog,用于跨来源治理数据。
- Pub/Sub、Dataflow 或 Apache Kafka 等流式事件平台。
- 外部 API。
为每个数据源选择一个注入工具:
- Dataflow:用于对来自各种来源的数据进行批处理和流式处理,并集成机器学习组件。对于事件驱动型架构,您可以将 Dataflow 与 Eventarc 结合使用,以高效处理机器学习数据。如需提高 MLOps 和机器学习作业的效率,请使用 GPU 和合适的配置。
- Cloud Run functions:用于由数据源中的更改触发的事件驱动型数据注入,适用于实时应用。
- BigQuery:用于频繁访问的经典表格数据注入。
选择用于数据转换和加载的工具:
- 使用 Dataflow 或 Dataform 等工具自动执行数据转换,例如特征伸缩、对分类变量进行编码,以及批量、流式或实时创建新特征。您选择的工具取决于您的需求和所选服务。
- 使用 Vertex AI Feature Store 自动创建和管理特征。您可以集中管理功能,以便在不同模型和项目中重复使用。
标准化数据收集和处理
如需发现、了解和管理数据资产,请使用 Dataplex Universal Catalog 等元数据管理服务。它有助于您标准化数据定义,并确保整个组织内的一致性。
为了强制执行标准化并避免维护多个自定义实现所产生的费用,请使用自动化训练流水线和编排。如需了解详情,请参阅下一部分。
自动执行训练流水线并重复使用现有资源
为了提高 MLOps 的效率和生产力,自动化训练流水线至关重要。 Google Cloud 提供了一套强大的工具和服务来构建和部署训练流水线,并着重强调重用现有资产。自动化训练流水线有助于加快模型开发速度、确保一致性并减少冗余工作。
自动执行训练流水线
下表介绍了可用于自动执行训练流水线不同功能的 Google Cloud 服务和功能。
函数 | Google Cloud 服务和功能 |
---|---|
编排:定义包含多个步骤和依赖项的复杂机器学习工作流。您可以将每个步骤定义为单独的容器化任务,从而轻松管理和扩缩各个任务。 |
|
版本控制:跟踪和控制流水线和组件的不同版本,以确保可重现性和可审核性。 | 将 Kubeflow 流水线模板存储在 Artifact Registry 中的 Kubeflow Pipelines 代码库中。 |
可重用性:重用现有的流水线组件和制品(例如准备好的数据集和训练好的模型),以加快开发速度。 | 将流水线模板存储在 Cloud Storage 中,并在整个组织中共享这些模板。 |
监控:监控流水线执行情况,以发现并解决任何问题。 | 使用 Cloud Logging 和 Cloud Monitoring。如需了解详情,请参阅使用信息中心、提醒和报告持续监控资源。 |
将可重用性扩展到流水线之外
寻找机会,将可重用性扩展到训练流水线之外。以下是 Google Cloud 功能的一些示例,这些功能可让您重复使用机器学习功能、数据集、模型和代码。
- Vertex AI Feature Store 提供了一个用于整理、存储和应用机器学习特征的集中式存储库。借助该功能,您可以在不同的项目和模型中重复使用特征,从而提高一致性并减少特征工程工作量。您可以存储、共享和访问特征,以用于线上和线下用例。
- 借助 Vertex AI 数据集,团队可以集中创建和管理数据集,从而最大限度地提高组织的数据重用率并减少数据重复。您的团队可以使用 Dataplex Universal Catalog 搜索和发现数据集。
- 借助 Vertex AI Model Registry,您可以存储、管理和部署训练好的模型。 借助模型注册表,您可以在后续流水线中或在线预测中重复使用模型,从而充分利用之前的训练成果。
- 借助自定义容器,您可以将训练代码和依赖项打包到容器中,并将容器存储在 Artifact Registry 中。借助自定义容器,您可以在不同的流水线和项目中提供一致且可重现的训练环境。
使用 Google Cloud 服务进行模型评估和调优
Google Cloud 提供了一套功能强大的工具和服务,可简化和自动化模型评估和调优。这些工具和服务可帮助您缩短生产时间,并减少持续训练和监控所需的资源。通过使用这些服务,AI 和机器学习团队可以减少昂贵的迭代次数,更快地获得结果,并最大限度地减少浪费的计算资源,从而提升模型性能。
使用资源高效的模型评估和实验
在扩大解决方案规模之前,先通过实验启动 AI 项目。在实验中,跟踪各种元数据,例如数据集版本、模型参数和模型类型。为了进一步提高结果的可重现性并便于比较结果,除了代码版本控制之外,还可以使用元数据跟踪,这与 Git 中的功能类似。为避免遗漏信息或在生产环境中部署错误的版本,请在实施大规模部署或训练作业之前使用 Vertex AI Experiments。
借助 Vertex AI Experiments,您可以执行以下操作:
- 通过用户友好的界面和 API,简化并自动执行元数据跟踪和发现,以满足生产环境中的工作负载需求。
- 分析模型的性能指标,并比较多个模型之间的指标。
模型训练完成后,持续监控传入数据的性能和随时间推移的数据漂移。为了简化此流程,您可以使用 Vertex AI 模型监控直接访问 Model Registry 中创建的模型。 Model Monitoring 还可以通过在线预测和批量预测自动监控数据和结果。您可以将结果导出到 BigQuery 以进行进一步分析和跟踪。
选择最佳策略以自动执行训练
对于超参数调优,我们建议采用以下方法:
- 如需自动执行为模型寻找最佳超参数的过程,请使用 Vertex AI 超参数调节。Vertex AI 使用高级算法来探索超参数空间并确定最佳配置。
- 为了高效地进行超参数调优,请考虑使用贝叶斯优化技术,尤其是在处理复杂模型和大型数据集时。
对于分布式训练,我们建议采用以下方法:
对于大型数据集和复杂模型,请使用 Vertex AI 的分布式训练基础设施。借助这种方法,您可以在多台机器上训练模型,从而显著缩短训练时间并降低相关费用。使用以下工具:
- Vertex AI 调优,用于对 Gemini、Imagen 和其他模型执行监督式微调。
- Vertex AI 训练或 Vertex AI 上的 Ray,以进行自定义分布式训练。
选择经过优化的机器学习框架,例如支持分布式训练和高效资源利用的 Keras 和 PyTorch。
使用可解释 AI
了解模型做出特定决策的原因,并找出潜在的偏差或需要改进的方面至关重要。使用 Vertex Explainable AI 深入了解模型的预测。Vertex Explainable AI 提供了一种自动生成与 Vertex AI 实验关联的基于特征和基于样本的说明的方法。
- 基于特征:如需了解哪些特征对模型的预测影响最大,请分析特征归因。 这种理解可以指导特征工程工作,并提高模型的可解释性。
- 基于样本:为了返回与输入最相似的样本列表(通常来自训练集),Vertex AI 使用最近邻搜索。由于类似的输入通常会产生类似的预测,因此您可以使用这些说明来探索和解释模型的行为。
使用托管式服务和预训练模型
采用增量方法进行模型选择和模型开发。这种方法有助于避免每次重新开始时产生的过高费用。如需控制费用,请使用机器学习框架、托管式服务和预训练模型。
如需充分利用托管式服务和预训练模型,请考虑以下建议。
使用笔记本进行探索和实验
笔记本环境对于经济高效的机器学习实验至关重要。笔记本为数据科学家和工程师提供了一个互动协作空间,让他们能够探索数据、开发模型、分享知识并高效迭代。通过笔记本开展协作和知识共享可显著加快开发、代码审核和知识转移速度。Notebooks 有助于简化工作流程并减少重复工作。
您无需为开发环境采购和管理昂贵的硬件,而是可以使用 Vertex AI Workbench 和 Colab Enterprise 的可伸缩按需基础设施。
Vertex AI Workbench 是基于 Jupyter 笔记本的开发环境,可用于整个数据科学工作流。您可以在实例的 Jupyter 笔记本中与 Vertex AI 和其他 Google Cloud服务进行交互。Vertex AI Workbench 集成和功能可帮助您执行以下操作:
- 使用 BigQuery 和 Cloud Storage 集成来访问和探索 Jupyter 笔记本中的数据。
- 使用在 Vertex AI 上运行的计划执行代码,定期自动更新模型。
- 通过在 Dataproc 集群上运行笔记本来快速处理数据。
- 使用 Vertex AI Pipelines 将笔记本作为流水线中的一个步骤运行。
Colab Enterprise 是一个具有 Google Cloud安全与合规性功能的托管式协作笔记本环境。 如果项目的首要任务包括协作开发和减少管理基础架构所需的工作量,那么 Colab Enterprise 是理想之选。Colab Enterprise 与Google Cloud 服务和使用 Gemini 的 AI 赋能的辅助功能集成。借助 Colab Enterprise,您可以执行以下操作:
- 在笔记本中工作,无需管理基础架构。
- 与单个用户、Google 群组或 Google Workspace 网域共享笔记本。您可以通过 Identity and Access Management (IAM) 控制笔记本访问权限。
- 与 Vertex AI 和 BigQuery 内置的功能互动。
为了跟踪更改并在必要时恢复到以前的版本,您可以将笔记本与 Git 等版本控制工具集成。
从现有模型和预训练模型开始
从头开始训练复杂的模型(尤其是深度学习模型)需要大量的计算资源和时间。为了加快模型选择和开发流程,请从现有模型和预训练模型开始。这些模型基于庞大的数据集进行训练,无需从头开始训练模型,可显著降低成本并缩短开发时间。
降低培训和开发成本
为每个机器学习任务选择合适的模型或 API,并将它们组合起来以创建端到端的机器学习开发流程。
Vertex AI Model Garden 提供了大量预训练模型,可用于图像分类、对象检测和自然语言处理等任务。这些模型分为以下几类:
- Google 模型,例如 Gemini 系列模型和用于生成图片的 Imagen。
- Gemma 和 Llama 等开源模型。
- 来自 Anthropic 和 Mistral AI 等合作伙伴的第三方模型。
Google Cloud 提供 AI 和机器学习 API,让开发者无需从头开始构建模型,即可将强大的 AI 功能集成到应用中。
- 借助 Cloud Vision API,您可以从图片中获取数据洞见。此 API 对于图像分析、内容审核和自动数据输入等应用非常有用。
- 借助 Cloud Natural Language API,您可以分析文本以了解其结构和含义。此 API 非常适合用于客户反馈分析、内容分类和了解社交媒体趋势等任务。
- Speech-to-Text API 可将音频转换为文本。此 API 支持多种语言和方言。
- Video Intelligence API 可分析视频内容,以识别对象、场景和动作。使用此 API 进行视频内容分析、内容审核和视频搜索。
- Document AI API 可处理文档,以提取、分类和理解数据。此 API 可帮助您自动执行文档处理工作流。
- Dialogflow API 可用于创建对话式界面,例如聊天机器人和语音助理。您可以使用此 API 创建客户服务机器人和虚拟助理。
- Vertex AI 中的 Gemini API 可让您使用 Google 最强大且用途广泛的 AI 模型。
降低调优成本
为了减少对大量数据和计算时间的需求,请针对特定数据集对预训练模型进行微调。我们建议您采取以下方法:
- 知识迁移:使用预训练模型中的知识来完成新任务,而不是从头开始。这种方法需要的数据和计算时间更少,有助于降低费用。
- 适配器调优(参数高效调优):无需完全微调即可使模型适应新任务或领域。这种方法所需的计算资源和数据集要少得多。
- 监督式微调:使用带标签的数据集调整模型行为。这种方法可简化底层基础架构的管理,并减少自定义训练作业所需的开发工作量。
使用 Vertex AI Studio 进行探索和实验
借助 Vertex AI Studio,您可以快速测试、设计原型和部署生成式 AI 应用。
- 与 Model Garden 集成:可快速访问最新模型,并让您高效部署模型,从而节省时间和成本。
- 统一访问专用模型:整合了对各种预训练模型和 API 的访问,包括聊天、文本、媒体、翻译和语音方面的模型和 API。这种统一的访问方式有助于您减少搜索和集成各个服务所花费的时间。
使用托管式服务来训练或提供模型
托管式服务有助于降低模型训练成本并简化基础架构管理,让您可以专注于模型开发和优化。这种方法可以带来显著的成本效益并提高效率。
减少运营开销
为了降低基础架构管理的复杂性和成本,请使用以下托管服务:
- Vertex AI Training 提供全代管式环境,让您能够大规模训练模型。您可以选择各种预构建容器(包含热门的机器学习框架),也可以使用自己的自定义容器。 Google Cloud 负责处理基础架构预配、伸缩和维护,因此您只需承担较低的运营开销。
- Vertex AI 预测可处理基础设施伸缩、负载均衡和请求路由。无需手动干预,即可获得高可用性和高性能。
- Ray on Vertex AI 提供全代管式 Ray 集群。您可以使用集群运行需要执行大量计算的复杂自定义 AI 工作负载(超参数调优、模型微调、分布式模型训练和基于人类反馈的强化学习),而无需管理自己的基础架构。
使用托管式服务优化资源利用率
如需详细了解如何高效利用资源,请参阅优化资源利用率。
贡献者
作者:
- Isaac Lo | AI 业务发展经理
- Anastasia Prokaeva | 现场解决方案架构师,生成式 AI
- Amy Southwood | 技术解决方案顾问,数据分析和 AI
其他贡献者:
- Filipe Gracio 博士 | 客户工程师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Nicolas Pintaux | 客户工程师,应用现代化改造专家
AI 和机器学习视角:性能优化
架构完善框架:AI 和机器学习视角中的本文档概述了相关原则和建议,可帮助您优化 Google Cloud上 AI 和机器学习工作负载的性能。本文档中的建议与 Google Cloud 架构完善框架的性能优化支柱相符。
AI 和机器学习系统可为您的组织带来新的自动化和决策功能。这些系统的性能会直接影响收入、成本和客户满意度等业务驱动因素。若要充分发挥 AI 和机器学习系统的潜力,您需要根据业务目标和技术要求优化其性能。性能优化过程通常涉及某些权衡。例如,提供所需性能的设计选择可能会导致更高的成本。本文档中的建议优先考虑性能,而不是费用等其他因素。
为了优化 AI 和 ML 性能,您需要针对模型架构、参数和训练策略等因素做出决策。在做出这些决策时,请考虑 AI 和 ML 系统的整个生命周期及其部署环境。例如,非常大的 LLM 在大规模训练基础设施上可能表现出色,但在容量受限的环境(例如移动设备)中可能表现不佳。
将业务目标转化为性能目标
若要做出可优化性能的架构决策,请先明确一组业务目标。设计 AI 和机器学习系统,使其提供支持业务目标和优先事项所需的技术性能。您的技术团队必须了解效果目标与业务目标之间的对应关系。
请考虑以下建议:
- 将业务目标转化为技术要求:将 AI 和 ML 系统的业务目标转化为具体的技术性能要求,并评估未达到这些要求的影响。例如,对于预测客户流失的应用,机器学习模型应在准确率和召回率等标准指标方面表现出色,并且应用应满足低延迟等运营要求。
- 在模型生命周期的各个阶段监控效果:在模型部署后的实验和训练期间,监控关键绩效指标 (KPI),并观察是否存在任何与业务目标相背离的情况。
- 自动执行评估,以确保可重现性和标准化:借助标准化且可比较的实验评估平台和方法,您的工程师可以加快性能改进的步伐。
运行并跟踪频繁的实验
若要将创新和创意转化为效果提升,您需要一种支持实验的文化和一个支持实验的平台。性能改进是一个持续的过程,因为 AI 和 ML 技术在不断快速发展。为了保持快节奏的迭代流程,您需要将实验空间与训练和提供平台分开。标准化且可靠的实验流程非常重要。
请考虑以下建议:
- 构建实验环境:要提升性能,需要一个专用、强大且交互式的环境,以支持机器学习流水线的实验和协作开发。
- 将实验融入文化:在任何生产部署之前运行实验。以迭代方式发布新版本,并始终收集性能数据。尝试使用不同的数据类型、特征转换、算法和超参数。
构建并自动化训练和提供服务
训练和提供 AI 模型是 AI 服务的核心组成部分。您需要强大的平台和实践来支持快速可靠地创建、部署和提供 AI 模型。投入时间和精力,为核心 AI 训练和服务任务创建基础平台。这些基础平台有助于减少团队的时间和精力,并从中期和长期来看提高输出质量。
请考虑以下建议:
- 使用训练服务的 AI 专用组件:此类组件包括高性能计算和 MLOps 组件,例如特征存储区、模型注册表、元数据存储区和模型性能评估服务。
- 使用预测服务的 AI 专用组件:此类组件可提供高性能且可伸缩的资源,支持特征监控,并实现模型性能监控。为防止和管理性能下降,请实施可靠的部署和回滚策略。
将设计选择与性能要求匹配
在做出旨在提升效果的设计选择时,请仔细评估这些选择是否符合您的业务需求,或者是否会造成浪费并适得其反。如需选择合适的基础设施、模型或配置,请找出性能瓶颈,并评估它们与性能指标之间的关联。例如,即使在非常强大的 GPU 加速器上,您的训练任务也可能会因存储层的 I/O 数据问题或模型本身的性能限制而遇到性能瓶颈。
请考虑以下建议:
- 根据性能目标优化硬件消耗:为了训练和提供满足性能要求的机器学习模型,您需要在计算、存储和网络层优化基础设施。您必须衡量并了解影响效果目标的变量。训练和推理的变量有所不同。
- 侧重于工作负载的特定要求:将性能优化工作重点放在 AI 和机器学习工作负载的独特要求上。依靠托管服务来确保底层基础设施的性能。
- 选择合适的训练策略:有多种预训练模型和基础模型可供选择,而且此类模型会经常发布。选择可为您的任务提供最佳效果的训练策略。确定您是应该构建自己的模型、根据自己的数据调整预训练模型,还是使用预训练模型 API。
- 认识到效果优化策略可能会带来边际效益递减:如果某个效果优化策略无法带来可衡量的增量业务价值,请停止采用该策略。
将性能指标与设计和配置选择关联
为了创新、排查问题和调查性能问题,请在设计选择与性能结果之间建立清晰的关联。除了实验之外,您还必须可靠地记录资产、部署、模型输出以及生成输出的配置和输入的谱系。
请考虑以下建议:
- 构建数据和模型谱系系统:所有已部署的资产及其效果指标都必须与数据、配置、代码以及促成已部署系统的选择相关联。此外,模型输出必须与特定模型版本以及输出的生成方式相关联。
- 使用可解释性工具提高模型性能:采用并标准化用于模型探索和可解释性的工具和基准。 这些工具可帮助机器学习工程师了解模型行为,并提升性能或消除偏差。
贡献者
作者:
- Benjamin Sadik | AI 和 ML 专家客户工程师
- Filipe Gracio 博士 | 客户工程师
其他贡献者:
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Zach Seils | 网络专家