Google Cloud 架构完善框架中的本文档介绍了相关原则和建议,可帮助您在 Google Cloud 中设计、构建和管理 AI 和机器学习工作负载,以满足您的运营、安全性、可靠性、费用和性能目标。
本文档的目标受众群体包括在 Google Cloud中设计、构建、部署和维护 AI 及 ML 工作负载的决策者、架构师、管理员、开发者和运维人员。
以下页面针对 Well-Architected 框架的每个支柱,介绍了特定于 AI 和 ML 的原则和建议:
贡献者
作者:
- Benjamin Sadik | AI 和 ML 专家客户工程师
- Charlotte Gistelinck 博士 | 合作伙伴工程师
- Filipe Gracio 博士 | 客户工程师,AI/机器学习专家
- Isaac Lo | AI 业务发展经理
- Kamilla Kurta | GenAI/机器学习专家客户工程师
- Mohamed Fawzi | 比荷卢经济联盟安全与合规主管
- Rick (Rugui) Chen | AI 基础设施现场解决方案架构师
- Sannya Dang | AI 解决方案架构师
其他贡献者:
- Daniel Lees | 云安全架构师
- Gary Harmson | 首席架构师
- Jose Andrade | 客户工程师,SRE 专家
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Nicolas Pintaux | 客户工程师,应用现代化改造专家
- Radhika Kanakam | Google Cloud Well-Architected Framework 计划负责人
- 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) 和扩散模型)的训练和推理速度。
为代码、模型和数据设置版本控制
如需有效管理和部署代码版本,请使用 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 来评估毒性、连贯性、事实准确性和是否遵守安全准则等指标。
为确保部署可靠性,您需要制定稳健的回滚方案。对于传统机器学习系统,请使用 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 博士 | 客户工程师,AI/机器学习专家
其他贡献者:
- 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 博士 | 客户工程师,AI/机器学习专家
- Mohamed Fawzi | 比荷卢经济联盟安全与合规主管
其他贡献者:
- Daniel Lees | 云安全架构师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Wade Holmes | 全球解决方案总监
AI 和机器学习视角:可靠性
Google Cloud 架构完善框架:AI 和机器学习视角中的本文档简要介绍了在 Google Cloud上设计和运行可靠的 AI 和机器学习系统的原则和建议。本文探讨了如何将高级可靠性实践和可观测性集成到架构蓝图中。本文档中的建议与 Google Cloud 架构完善框架的可靠性支柱保持一致。
在快速发展的 AI 和机器学习领域,可靠的系统对于确保客户满意度和实现业务目标至关重要。为了满足预测性机器学习和生成式 AI 的独特需求,您需要强大、可靠且适应性强的 AI 和机器学习系统。为了应对 MLOps(从开发到部署和持续改进)的复杂性,您需要采用可靠性优先的方法。 Google Cloud 提供专门构建的 AI 基础设施,该基础设施符合站点可靠性工程 (SRE) 原则,并为可靠的 AI 和机器学习系统提供强大的基础。
本文档中的建议与以下核心原则相对应:
确保机器学习基础设施可伸缩且具有高可用性
云端可靠的 AI 和 ML 系统需要可伸缩且高度可用的基础架构。这些系统具有动态需求、多样化的资源需求,并且严重依赖于模型可用性。可扩缩的架构可适应不断变化的负载以及数据量或推理请求的变化。 高可用性 (HA) 有助于确保在组件、可用区或区域级故障发生时保持弹性。
如需构建可伸缩的高可用性机器学习基础设施,请考虑以下建议。
实现自动动态伸缩功能
AI 和 ML 工作负载是动态的,其需求会根据数据到达率、训练频率和推理流量而波动。自动动态伸缩功能可根据需求波动无缝调整基础架构资源。有效扩缩工作负载有助于防止停机、保持性能和优化费用。
如需自动扩缩 AI 和机器学习工作负载,请在 Google Cloud中使用以下产品和功能:
- 数据处理流水线:在 Dataflow 中创建数据流水线。 将流水线配置为使用 Dataflow 的横向自动扩缩功能,该功能可根据 CPU 利用率、流水线并行性和待处理数据动态调整工作器实例的数量。您可以在启动作业时通过流水线选项配置自动扩缩参数。
- 训练作业:使用 Vertex AI 自定义训练自动伸缩训练作业。 您可以定义工作器池规范,例如机器类型、加速器类型和数量,以及工作器池数量。对于可以容忍中断的作业以及训练代码实现了检查点设置的作业,您可以使用 Spot 虚拟机来降低费用。
- 在线推理:对于在线推理,请使用 Vertex AI 端点。 如需启用自动扩缩功能,请配置最小和最大副本数。指定至少两个副本以实现高可用性。Vertex AI 会根据流量和配置的自动扩缩指标(例如 CPU 利用率和副本利用率)自动调整副本数量。
- Google Kubernetes Engine 中的容器化工作负载:在节点和 Pod 级别配置自动扩缩。配置集群自动扩缩器和节点自动预配,以根据待处理 Pod 的资源请求(例如 CPU、内存、GPU 和 TPU)调整节点数量。对于部署,请使用 Pod 横向自动伸缩器 (HPA) 根据 CPU 和内存利用率等指标定义伸缩政策。您还可以根据自定义 AI 和机器学习指标进行扩缩,例如 GPU 或 TPU 利用率以及每秒预测请求数。
- 无服务器容器化服务:在 Cloud Run 中部署服务,并通过指定容器实例数的下限和上限来配置自动扩缩。按照最佳实践,通过指定加速器类型来自动扩缩启用 GPU 的实例。Cloud Run 会根据传入请求,在配置的下限和上限之间自动扩缩实例。在没有请求时,它会高效地缩减到零个实例。您可以利用 Cloud Run 的自动伸缩功能(由请求驱动)来部署 Vertex AI 代理,还可以部署第三方工作负载,例如使用 Ollama 的量化模型、使用 vLLM 的 LLM 模型推理和 Huggingface Text Generation Inference (TGI)。
围绕高可用性和容错能力进行设计
对于生产级 AI 和机器学习工作负载,请务必确保持续运行并具备故障恢复能力。如需实现高可用性和容错,您需要在 Google Cloud上为架构构建冗余和复制功能。这种方法有助于确保单个组件的故障不会导致整个系统发生故障。
- 为了在模型服务中实现高可用性和低延迟,特别是对于实时推理和生成式 AI 模型,请将部署分布在多个位置。
- 为了实现全球可用性和弹性,请将模型部署到多个Vertex AI 端点(分布在多个 Google Cloud 区域中),或者使用全球端点。
- 使用全球负载均衡来路由流量。
- 对于在 GKE 或 Compute Engine MIG 上进行的训练,请实现对 Xid 错误的监控。发现 Xid 错误时,请采取适当的补救措施。例如,重置 GPU、重置 Compute Engine 实例,或使用 gcloud CLI report faulty host 命令触发硬件更换。
- 探索容错或弹性且富有韧性的训练解决方案,例如使用 Google Resiliency Library 的方案或集成 Pathways 的弹性训练逻辑以处理 TPU 工作负载。
为 Google Cloud中的关键 AI 和机器学习组件实现冗余。 以下是可用于实现资源冗余的产品和功能示例:
- 跨多个可用区部署 GKE 区域级集群。
- 使用 Cloud Storage 多区域或双区域存储分区,确保数据集和检查点的数据冗余。
- 使用 Spanner 实现元数据的全局一致性高可用性存储。
- 为运营数据库配置 Cloud SQL 读取副本。
- 确保用于检索增强生成 (RAG) 的向量数据库具有高可用性,并且是多可用区或多区域的。
主动管理资源并预测需求
有效的资源管理对于帮助您优化费用、性能和可靠性至关重要。AI 和 ML 工作负载是动态的,对 GPU 和 TPU 等专用硬件的需求很高。因此,您必须主动管理资源并确保资源可用性。
根据历史监控数据(例如 Cloud Monitoring 中的 GPU 或 TPU 利用率和吞吐率)以及 Cloud Logging 中的日志来规划容量。使用 BigQuery 或 Looker Studio 分析这些遥测数据,并根据增长情况或新模型预测未来的 GPU 需求。通过分析资源使用模式和趋势,您可以预测何时何地需要关键的专用加速器。
- 通过严格的负载测试验证容量估算值。使用 Apache JMeter 或 LoadView 等工具模拟 AI 和 ML 服务(例如服务和流水线)上的流量。
- 分析压力下的系统行为。
- 为了预测并满足生产环境中不断增加的工作负载需求,请主动确定资源需求。监控延迟时间、吞吐量、错误和资源利用率,尤其是 GPU 和 TPU 利用率。根据需要增加资源配额。
- 对于生成式 AI 服务,在高并发负载下进行测试,并确定加速器可用性限制性能的级别。
- 对模型查询执行持续监控,并为代理设置主动提醒。
- 使用模型可观测性信息中心查看 Cloud Monitoring 收集的指标,例如每秒模型查询数 (QPS)、token 吞吐量和第一个 token 延迟时间。
优化资源可用性和可获取性
根据工作负载要求战略性地选择合适的计算资源,从而优化费用并确保资源可用性。
- 对于稳定的全天候推理工作负载或具有固定或可预测容量要求的训练工作负载,请为虚拟机和加速器使用承诺使用折扣 (CUD)。
对于 GKE 节点和 Compute Engine 虚拟机,请使用抢占式虚拟机和动态工作负载调度器 (DWS) 功能:
如需优化 GKE 上的 AI 推理,您可以运行 vLLM 引擎,该引擎可动态使用 TPU 和 GPU 来满足不断变化的容量和性能需求。如需了解详情,请参阅 vLLM GPU/TPU 可互换性。
对于涉及加速器且资源和拓扑需求复杂的场景,请使用工具来抽象资源管理。
- 借助 Cluster Director,您可以部署和管理加速器组,并为多 GPU 训练(A3 Ultra H200 和 A4 B200)实现同位和调度。Cluster Director 支持 GKE 和 Slurm 集群。
- Ray on Vertex AI 可抽象化分布式计算基础架构。它使应用能够请求资源以进行训练和提供服务,而无需直接管理虚拟机和容器。
在多个实例之间分配传入流量
对于需求波动不定的 AI 应用,有效的负载均衡至关重要。负载均衡可分配流量、优化资源利用率、提供高可用性和低延迟,并有助于确保顺畅的用户体验。
- 推理资源需求各异:根据模型指标实现负载均衡。 借助 GKE 推理网关,您可以部署具有模型感知型路由功能的负载均衡器后面的模型。网关会优先选择具有 GPU 和 TPU 加速器的实例来处理计算密集型任务,例如生成式 AI 和 LLM 推理。配置详细的健康检查,以评估模型状态。使用 vLLM 或 Triton 等服务框架获取 LLM 指标,并使用 Google Cloud Managed Service for Prometheus 将这些指标集成到 Cloud Monitoring 中。
- 需要 GPU 或 TPU 的推理工作负载:为确保关键 AI 和 ML 推理工作负载始终在符合工作负载要求的机器上运行,尤其是在 GPU 和 TPU 可用性受限的情况下,请使用 GKE 自定义计算类。您可以定义特定的计算配置,并为自动扩缩设置回退政策。例如,您可以定义一个配置文件,用于为预留的 GPU 或 TPU 实例指定更高的优先级。该配置文件可以包含回退机制,以便在预留资源暂时不可用时使用经济实惠的 Spot 虚拟机。
- 在各种编排平台上的生成式 AI:使用集中式负载均衡器。例如,为了提高成本效益和管理效率,您可以将 GPU 需求较低的请求路由到 Cloud Run,并将更复杂的 GPU 密集型任务路由到 GKE。对于服务间通信和政策管理,请使用 Cloud Service Mesh 实现服务网格。 使用 Cloud Logging 和 Cloud Monitoring 确保日志记录和监控的一致性。
- 全球负载分配:如需对来自需要低延迟的全球用户的流量进行负载均衡,请使用全球外部应用负载平衡器。 配置地理定位路由到最近的区域,并实现故障切换。 在 Vertex AI 或 GKE 中建立区域端点复制。为静态资源配置 Cloud CDN。 使用 Cloud Monitoring 监控全球流量和延迟时间。
- 精细的流量管理:对于具有不同数据类型或复杂性的请求以及长时间运行的请求,请实现精细的流量管理。
- 配置基于内容的路由,以根据网址路径和标头等属性将请求定向到专用后端。例如,直接向支持 GPU 的后端请求图片或视频模型,以及向经过 CPU 优化的后端请求基于文本的模型。
- 对于长时间运行的生成式 AI 请求或批处理工作负载,请使用 WebSocket 或 gRPC。实现流量管理,以处理超时和缓冲。使用 API Gateway 或 Apigee 配置请求超时和重试,并实现速率限制和配额。
使用模块化且松散耦合的架构
在模块化、松散耦合的 AI 和 ML 架构中,复杂的系统被划分为更小的、自成一体的组件,这些组件通过明确定义的接口进行交互。此架构可最大限度地减少模块依赖项,简化开发和测试,提高可重现性,并通过限制故障来提高容错能力。模块化方法对于管理复杂性、加速创新和确保长期可维护性至关重要。
如需为 AI 和机器学习工作负载设计模块化且松散耦合的架构,请考虑以下建议。
实现小型自包含模块或组件
将端到端 AI 和 ML 系统拆分为小型的自包含模块或组件。每个模块或组件负责一项特定功能,例如数据注入、特征转换、模型训练、推理服务或评估。模块化设计可为 AI 和 ML 系统带来多项关键优势:提高可维护性、可伸缩性、可重用性,以及更高的灵活性和敏捷性。
以下部分介绍了可用于为 AI 和 ML 系统设计模块化架构的 Google Cloud 产品、功能和工具。
GKE 上的容器化微服务
对于需要精细编排的复杂 AI 和 ML 系统或复杂的生成式 AI 流水线,请将模块实现为由 GKE 编排的微服务。将每个不同的阶段打包为 Docker 容器中的单个微服务。这些不同的阶段包括:针对各种格式量身定制的数据注入、专门的数据预处理或特征工程、大规模基础模型的分布式模型训练或微调、评估或服务。
在 GKE 上部署容器化微服务,并利用基于 CPU 和内存利用率或 GPU 利用率等自定义指标的自动伸缩、滚动更新以及 YAML 清单中的可重现配置。使用 GKE 服务发现功能确保微服务之间的通信高效。对于异步模式,请使用消息队列(例如 Pub/Sub)。
借助 GKE 上的微服务方法,您可以为复杂 RAG 应用等任务构建可伸缩的弹性平台,其中各个阶段可以设计为不同的服务。
无服务器事件驱动型服务
对于可受益于无服务器自动扩缩的事件驱动型任务,请使用 Cloud Run 或 Cloud Run functions。这些服务非常适合预处理等异步任务或较小的推理作业。根据事件(例如 Cloud Storage 中创建的新数据文件或 Artifact Registry 中的模型更新)触发 Cloud Run 函数。对于需要容器环境的 Webhook 任务或服务,请使用 Cloud Run。
Cloud Run 服务和 Cloud Run functions 可以快速扩缩,并可缩减至零,这有助于确保在工作负载波动时实现成本效益。这些服务适用于 Vertex AI Agents 工作流中的模块化组件。您可以使用 Workflows 或 Application Integration 来编排组件序列。
Vertex AI 托管式服务
Vertex AI 服务支持模块化,可帮助您简化 AI 和机器学习系统的开发和部署。这些服务可抽象出复杂的基础设施,让您可以专注于应用逻辑。
- 如需编排由模块化步骤构建的工作流,请使用 Vertex AI Pipelines。
- 如需运行自定义 AI 和 ML 代码,请将代码打包到可在 Vertex AI 自定义训练和 Vertex AI 预测等受管理服务上运行的 Docker 容器中。
- 对于模块化特征工程流水线,请使用 Vertex AI Feature Store。
- 如需进行模块化探索和原型设计,请使用 Vertex AI Workbench 或 Colab Enterprise 等笔记本环境。将代码整理成可重复使用的函数、类和脚本。
智能体应用
对于 AI 智能体,智能体开发套件 (ADK) 提供工具和状态等模块化功能。为了实现 LangChain、LangGraph、LlamaIndex 和 Vertex AI 等框架之间的互操作性,您可以将 ADK 与 Agent2Agent (A2A) 协议和模型上下文协议 (MCP) 结合使用。借助这种互操作性,您可以使用各种组件来构建代理工作流。
您可以将智能体部署到 Vertex AI Agent Engine,这是一个经过优化的托管式运行时,可实现可伸缩的智能体部署。如需运行容器化代理,您可以利用 Cloud Run 中的自动扩缩功能。
设计定义完善的接口
为了构建稳健且可维护的软件系统,务必要确保系统的组件松散耦合且模块化。这种方法具有显著优势,因为它可以最大限度地减少系统不同部分之间的依赖关系。当模块松散耦合时,一个模块中的更改对其他模块的影响很小。这种隔离可实现各个模块的独立更新和开发工作流。
以下部分提供了相关指导,可帮助确保 AI 和机器学习系统各模块之间的顺畅通信和集成。
协议选择
- 为了实现普遍访问,请使用 HTTP API,遵循 RESTful 原则,并使用 JSON 进行与语言无关的数据交换。设计 API 端点以表示对资源的操作。
- 如需在微服务之间进行高性能的内部通信,请使用 gRPC 和 Protocol Buffers (ProtoBuf),以实现高效的序列化和严格的类型化。使用
.proto
文件定义 ModelInput、PredictionResult 或 ADK 工具数据等数据结构,然后生成语言绑定。 - 对于性能至关重要的使用情形,请利用 gRPC 流式传输来处理大型数据集或连续流,例如实时文字转语音或视频应用。在 GKE 上部署 gRPC 服务。
标准化且全面的文档
无论您选择哪种接口协议,标准化文档都至关重要。OpenAPI 规范用于描述 RESTful API。使用 OpenAPI 记录 AI 和 ML API:与 JSON 架构关联的路径、方法、参数、请求-响应格式和安全性。全面的 API 文档有助于提高可发现性和客户端集成度。对于 API 编写和可视化,请使用 Swagger 编辑器等界面工具。为了加快开发速度并确保一致性,您可以使用 Gemini Code Assist 等 AI 辅助编码工具生成客户端 SDK 和服务器桩。 将 OpenAPI 文档集成到 CI/CD 流程中。
与 Google Cloud Vertex AI 等托管式服务互动
您可以选择抽象程度更高的 Vertex AI SDK(建议使用此 SDK 以提高开发效率),也可以选择 REST API 提供的精细控制功能。
- Vertex AI SDK 可简化任务和身份验证。 当您需要与 Vertex AI 互动时,请使用 SDK。
- REST API 是一种强大的替代方案,尤其是在需要系统各层之间实现互操作性时。对于没有 SDK 的语言中的工具或需要精细控制时,此方法非常有用。
使用 API 来隔离模块并抽象化实现细节
为了确保安全性、可伸缩性和可见性,您必须为 AI 和 ML 服务实现强大的 API 管理。如需为已定义的接口实现 API 管理,请使用以下产品:
- API Gateway:对于外部公开和管理的 API,API Gateway 提供了一个集中式安全入口点。它简化了对无服务器后端服务(例如预测、训练和数据 API)的访问。 API Gateway 有助于整合访问点、强制执行 API 合约,以及管理 API 密钥和 OAuth 2.0 等安全功能。为了防止后端过载并确保可靠性,请在 API 网关中实现速率限制和使用量配额。
- Cloud Endpoints:为了简化在 GKE 和 Cloud Run 上进行 API 开发和部署的过程,请使用 Cloud Endpoints,它可提供一种开发者友好的 API 密钥生成解决方案。它还为 API 调用提供集成式监控和跟踪功能,并自动生成 OpenAPI 规范,从而简化文档编制和客户端集成。您可以使用 Cloud Endpoints 管理对内部或受控 AI 和 ML API 的访问权限,例如触发训练和管理特征存储区。
- Apigee:对于企业级 AI 和 ML,尤其是复杂的生成式 AI API,Apigee 可提供先进而全面的 API 管理。使用 Apigee 实现高级安全性(例如威胁防护和 OAuth 2.0)、流量管理(例如缓存、配额和中介)以及分析。Apigee 可帮助您深入了解 API 使用模式、性能和互动情况,这对于了解生成式 AI API 使用情况至关重要。
规划优雅降级
在生产环境 AI 和 ML 系统中,组件故障是不可避免的,就像在其他系统中一样。平缓降级可确保基本功能继续运行,但性能可能会降低。这种方法可防止完全中断,并提高整体可用性。对于延迟时间敏感型推理、分布式训练和生成式 AI,平缓降级至关重要。
以下部分介绍了用于规划和实现优雅降级的技术。
故障隔离
- 为了在分布式架构中隔离故障组件,请使用弹性库(例如 Java 中的 Resilience4j 和 Python 中的 CircuitBreaker)实现断路器模式。
- 为防止级联故障,请根据 AI 和 ML 工作负载指标(例如错误率和延迟时间)配置阈值,并定义后备方案(例如更简单的模型和缓存数据)。
组件冗余
对于关键组件,请实现冗余和自动故障切换。例如,使用 GKE 多可用区集群或区域级集群,并在不同区域以冗余方式部署 Cloud Run 服务。如需在检测到运行状况不佳的实例时将流量路由到运行状况良好的实例,请使用 Cloud Load Balancing。
使用 Cloud Storage 多区域存储分区确保数据冗余。 对于分布式训练,请实现异步检查点,以便在发生故障后恢复训练。如需进行弹性训练,请使用 Pathways。
主动监控
在发生故障时,优雅降级有助于确保系统可用性,但您还必须实施主动措施,以进行持续的健康检查和全面的监控。收集特定于 AI 和 ML 的指标,例如延迟时间、吞吐量和 GPU 利用率。此外,还可以使用 Cloud Monitoring 和 Vertex AI Model Monitoring 收集模型性能下降指标,例如模型漂移和数据漂移。
健康检查可以触发以下需求:替换故障节点、部署更多容量,或自动触发使用更新数据的流水线的持续重新训练或微调。这种主动方法有助于防止基于准确性的降级和系统级优雅降级,并有助于提高整体可靠性。
SRE 实践
如需监控系统的运行状况,请考虑采用 SRE 实践来实施服务等级目标 (SLO)。有关错误预算损失和消耗率的提醒可以作为系统可靠性问题的早期指标。如需详细了解 SRE 实践,请参阅 Google SRE 一书。
构建自动化端到端 MLOps 平台
若要在 Google Cloud上构建强大、可伸缩且可靠的 AI 和 ML 系统,需要一个自动化的端到端 MLOps 平台来支持模型开发生命周期。开发生命周期包括初始数据处理、持续模型训练、部署和生产环境中的监控。通过在 Google Cloud上自动执行这些阶段,您可以建立可重复的流程、减少手动操作、最大限度地减少错误并加快创新步伐。
自动化 MLOps 平台对于为应用建立生产级可靠性至关重要。Automation 有助于确保模型质量、保证可重现性,并实现 AI 和 ML 制品的持续集成和交付。
如需构建自动化端到端 MLOps 平台,请考虑以下建议。
自动执行模型开发生命周期
自动化 MLOps 平台的核心要素是将整个 AI 和 ML 工作流编排为一系列相互关联的自动化步骤:从数据准备和验证到模型训练、评估、部署和监控。
- 使用 Vertex AI Pipelines 作为中央编排器:
- 使用模块化组件定义端到端工作流,以进行数据处理、训练、评估和部署。
- 使用时间表或触发器(例如新数据或代码更改)自动运行流水线。
- 为每次流水线运行实现自动形参化和版本控制,并创建版本记录。
- 使用内置的日志记录和跟踪功能监控流水线进度和资源用量,并与 Cloud Monitoring 提醒集成。
- 使用 Kubeflow Pipelines (KFP) SDK 或 TensorFlow Extended SDK 以编程方式定义机器学习流水线。如需了解详情,请参阅 Vertex AI Pipelines 的接口。
- 使用 Google Cloud Dataflow、Vertex AI 自定义训练、Vertex AI Model Registry 和 Vertex AI 端点等服务来编排操作。
- 对于生成式 AI 工作流,编排提示管理、批量推理、人机协同 (HITL) 评估和协调 ADK 组件的步骤。
以代码形式管理基础架构
基础设施即代码 (IaC) 对于管理 AI 和 ML 系统基础设施至关重要,有助于实现可重现、可伸缩且可维护的部署。AI 和机器学习系统的基础架构需求是动态且复杂的。这些系统通常需要 GPU 和 TPU 等专用硬件。IaC 有助于确保一致性、实现回滚并使部署可重复,从而降低手动管理基础架构的风险。
如需以代码形式有效管理基础架构资源,请使用以下技巧。
自动预配资源
如需在 Google Cloud上有效管理 IaC,请使用 Terraform 定义和预配 AI 和 ML 基础架构资源。基础设施可能包括以下资源:
- 配置了节点池的 GKE 集群。您可以根据工作负载要求优化节点池。例如,您可以使用 A100、H100、H200 或 B200 GPU 进行训练,并使用 L4 GPU 进行推理。
- 配置为用于模型服务的 Vertex AI 端点,具有已定义的机器类型和伸缩政策。
- 用于存储数据和制品的 Cloud Storage 存储分区。
使用配置模板
将 Terraform 配置整理为模块化模板。如需加快 AI 和 ML 资源的配置速度,您可以使用 Cluster Toolkit。该工具包提供蓝图示例,这些蓝图是 Google 精心挑选的 Terraform 模板,可用于在 Slurm 或 GKE 中部署即用型 HPC、AI 和 ML 集群。您可以自定义 Terraform 代码,并在版本控制系统中对其进行管理。如需自动执行资源配置和更新工作流,您可以使用 Cloud Build 将代码集成到 CI/CD 流水线中。
自动执行配置更改
预配基础设施后,以声明方式管理持续的配置更改:
- 在以 Kubernetes 为中心的环境中,您可以使用 Config Connector 将 Google Cloud资源作为 Kubernetes 对象进行管理。
- 使用 YAML 清单定义和管理 Vertex AI 资源(例如数据集、模型和端点)、Cloud SQL 实例、Pub/Sub 主题和 Cloud Storage 存储分区。
- 将清单部署到 GKE 集群,以集成应用和基础架构配置。
- 使用 CI/CD 流水线自动更新配置,并使用模板来处理环境差异。
- 使用 IaC 实现 Identity and Access Management (IAM) 政策和服务账号的配置。
与 CI/CD 集成
- 通过使用 Cloud Build 和 Infrastructure Manager 等工具将 IaC 集成到 CI/CD 流水线中,自动执行 Google Cloud 基础设施资源生命周期。
- 定义代码提交时自动更新的触发条件。
- 在流水线中实现自动化测试和验证。例如,您可以创建一个脚本来自动运行 Terraform
validate
和plan
命令。 - 将配置存储为制品并启用版本控制。
- 在版本控制中定义具有不同配置的单独环境(例如开发、预演和生产环境),并自动执行环境升级。
验证模型行为
为了随着时间的推移保持模型准确性和相关性,请在 MLOps 平台中自动执行训练和评估流程。这种自动化与严格的验证相结合,有助于确保模型在部署到生产环境之前,能够根据相关数据按预期运行。
- 设置持续训练流水线,这些流水线可由新数据和数据漂移等监控信号触发,也可按预定时间表运行。
- 如需管理自动化训练作业(例如超参数调节试验和大型模型的分布式训练配置),请使用 Vertex AI 自定义训练。
- 对于微调基础模型,请自动执行微调流程并将作业集成到流水线中。
- 在每次成功完成训练后,实现自动模型版本控制并安全存储训练后的模型制品。您可以将工件存储在 Cloud Storage 中,也可以在 Model Registry 中注册工件。
- 定义评估指标并设置明确的阈值,例如最低准确率、最高错误率和最低 F1 得分。
- 确保模型达到相应阈值,以便自动通过评估并被考虑用于部署。
- 使用 Vertex AI 中的模型评估等服务自动执行评估。
- 确保评估包含以下方面的指标:生成输出的质量、事实准确性、安全属性,以及对指定样式或格式的遵循情况。
- 如需自动记录和跟踪每次训练和评估运行的参数、代码版本、数据集版本和结果,请使用 Vertex AI Experiments。这种方法提供的历史记录有助于进行比较、调试和实现可重现性。
- 如需优化超参数调节并根据您定义的目标自动搜索最佳模型配置,请使用 Vertex AI Vizier。
- 如需直观呈现训练指标并在开发期间进行调试,请使用 Vertex AI TensorBoard。
验证 AI 和 ML 流水线的输入和输出
为确保 AI 和 ML 系统的可靠性和完整性,您必须在数据进入系统并流经流水线时对其进行验证。您还必须验证组件边界处的输入和输出。对所有输入和输出(原始数据、处理后的数据、配置、实参和文件)进行稳健的验证,有助于防止意外行为,并在整个 MLOps 生命周期内保持模型质量。将这种主动式方法集成到 MLOps 平台中,有助于在错误传播到整个系统之前检测到它们,从而节省时间和资源。
如需有效验证 AI 和 ML 流水线的输入和输出,请使用以下技巧。
自动进行数据验证
- 使用 TensorFlow Data Validation (TFDV) 在数据注入和预处理流水线中实现自动化数据验证。
- 利用 TFDV 功能随时间监控数据分布。
- 使用与 Cloud Monitoring 集成的工具直观呈现趋势,以检测数据漂移。当数据模式发生显著变化时,您可以自动触发模型重新训练流水线。
- 将验证结果和指标存储在 BigQuery 中,以便进行分析和历史跟踪,并将验证工件归档在 Cloud Storage 中。
验证流水线配置和输入数据
为防止因设置不正确而导致流水线失败或出现意外行为,请对所有流水线配置和命令行实参实施严格的验证:
- 使用 jsonschema 等 Python 架构验证库,为 YAML 或 JSON 等配置文件定义清晰的架构。在流水线运行开始之前和组件执行之前,根据这些架构验证配置对象。
- 使用
argparse
等参数解析库,为所有命令行实参和流水线形参实现输入验证。 验证应检查正确的数据类型、有效值和必需的实参。 - 在 Vertex AI Pipelines 中,使用内置的组件输入验证功能定义组件形参的预期类型和属性。
- 为确保流水线运行的可重现性并保留审核轨迹,请在 Cloud Storage 或 Artifact Registry 中存储经过验证的已纳入版本控制的配置文件。
验证输入和输出文件
验证输入和输出文件(例如数据集、模型制品和评估报告)的完整性和格式正确性:
- 使用库验证 CSV、Parquet 等文件格式和图片类型。
- 对于大型文件或关键制品,请使用 Cloud Storage 数据验证和更改检测功能验证文件大小和校验和,以检测损坏或不完整的传输。
- 使用 Cloud Run functions(例如,基于文件上传事件)或在 Dataflow 流水线中执行文件验证。
- 将验证结果存储在 BigQuery 中,以便更轻松地检索和分析。
自动执行部署并实现持续监控
自动部署和持续监控生产环境中的模型有助于确保可靠性、快速执行更新并及时检测问题。这包括管理模型版本、受控部署、使用 CI/CD 进行自动化部署,以及全面监控(如以下部分所述)。
管理模型版本
使用版本控制工具管理模型迭代和相关制品:
- 如需跟踪模型版本和元数据并关联到基础模型制品,请使用 Model Registry。
- 实现清晰的版本控制方案(例如,语义版本控制)。为每个模型版本附加全面的元数据,例如训练参数、验证流水线的评估指标和数据集版本。
- 将模型工件(例如模型文件、预训练权重和服务容器映像)存储在 Artifact Registry 中,并使用其版本控制和标记功能。
- 为满足安全和治理要求,请为模型注册表和 Artifact Registry 定义严格的访问权限控制政策。
- 如需以编程方式注册和管理版本,并将版本集成到自动化 CI/CD 流水线中,请使用 Vertex AI SDK 或 API。
执行受控部署
使用服务平台的流量管理功能控制模型版本到端点的部署。
- 使用 Vertex AI 端点的流量分配功能实现滚动部署。
- 如果您将模型部署到 GKE,请使用高级流量管理技术,例如灰度部署:
- 将一小部分生产流量路由到新模型版本。
- 通过指标持续监控性能和错误率。
- 证明模型可靠。
- 将版本面向所有流量推出。
- 对 AI 代理执行 A/B 测试:
- 将两个不同的模型-代理版本或完全不同的模型部署到同一端点。
- 在部署之间拆分流量。
- 根据业务目标分析结果。
- 实现自动回滚机制,以便在触发监控提醒或未达到性能阈值时,快速将端点流量恢复到之前的稳定模型版本。
- 使用 Vertex AI SDK 或 API 以编程方式配置流量拆分和部署设置。
- 使用 Cloud Monitoring 跟踪不同版本之间的性能和流量。
- 使用 CI/CD 流水线自动进行部署。您可以使用 Cloud Build 来构建容器、对工件进行版本控制,并触发向 Vertex AI 端点的部署。
- 确保 CI/CD 流水线管理版本并从 Artifact Registry 中拉取。
- 在迁移流量之前,请针对预测准确性、延迟时间、吞吐量和 API 功能执行自动端点测试。
- 将所有配置存储在版本控制系统中。
持续监控
- 使用模型监控功能自动检测性能下降、数据偏移(与训练相比输入分布发生变化)和预测偏移(模型输出发生变化)。
- 配置包含阈值和提醒的漂移检测作业。
- 监控实时性能:预测延迟时间、吞吐量、错误率。
- 在 Cloud Monitoring 中为业务 KPI 定义自定义指标。
- 将模型监控结果和自定义指标与 Cloud Monitoring 集成,以实现提醒和信息中心功能。
- 配置电子邮件、Slack 或 PagerDuty 等通知渠道,并配置自动补救。
- 如需调试预测日志,请使用 Cloud Logging。
- 将监控与突发事件管理集成。
对于生成式 AI 端点,请监控输出特征,例如有害性和连贯性:
- 监控特征应用是否存在偏移。
- 实现精细的预测验证:使用自定义逻辑根据预期范围和格式验证输出。
- 监控预测分布是否存在变化。
- 验证输出架构。
- 为意外的输出和变化配置提醒。
- 使用 Pub/Sub 跟踪和响应实时验证事件。
确保全面监控的输出反馈到持续训练中。
通过数据和模型治理来维持信任和控制
AI 和机器学习的可靠性不仅限于技术正常运行时间。它包括信任和强大的数据与模型治理。AI 输出的内容可能不准确、有偏见或过时。此类问题会损害信任,并可能造成伤害。全面的可追溯性、严格的访问权限控制、自动验证和透明的实践有助于确保 AI 输出可靠、值得信赖且符合道德标准。
为了通过数据和模型治理来维持信任和控制权,请考虑以下建议。
建立数据和模型目录以实现可追溯性
为了便于全面跟踪、审核和了解 AI 及机器学习资产的沿袭,请在整个生命周期内维护可靠的集中式数据和模型版本记录。可靠的数据和模型目录可作为 AI 和机器学习流水线所使用和生成的所有工件(从原始数据源和处理后的数据集到训练后的模型版本和已部署的端点)的单一可信来源。
您可以使用以下产品、工具和技术来创建和维护数据资产目录:
- 使用 Dataplex Universal Catalog 构建企业级数据资产目录。 如需自动发现数据资产并构建数据资产清单,请将 Dataplex Universal Catalog 与您的存储系统(例如 BigQuery、Cloud Storage 和 Pub/Sub)集成。
- 将数据存储在 Cloud Storage 多区域或双区域存储分区中,确保数据具有高可用性和高持久性。 您上传到这些存储分区的数据以冗余方式存储在至少两个不同的地理位置。这种冗余功能可提供内置的弹性,以应对区域性服务中断,并有助于确保数据完整性。
- 使用相关的业务元数据、所有权信息、敏感度级别和沿袭详细信息来标记和注释数据集。例如,将处理后的数据集与其原始来源以及创建该数据集的流水线相关联。
- 使用 Model Registry 为模型版本创建中央代码库。
注册每个经过训练的模型版本,并将其与关联的元数据相关联。
元数据可以包括以下内容:
- 训练参数。
- 验证流水线的评估指标。
- 用于训练的数据集版本,沿袭信息可追溯到相关的 Dataplex Universal Catalog 条目。
- 生成数据集的代码版本。
- 所用框架或基础模型的详细信息。
- 在将模型导入模型注册表之前,请将模型文件和预训练权重等模型制品存储在 Cloud Storage 等服务中。将用于提供服务或自定义训练作业的自定义容器映像存储在 Artifact Registry 等安全的代码库中。
- 为确保数据和模型资产在创建或修改后自动注册并更新到各自的目录中,请在 MLOps 流水线中实现自动化流程。这种全面的编目功能可实现从原始数据到预测的端到端可追溯性,让您可以审核导致特定模型版本或预测的输入和流程。审核功能对于调试意外行为、确保遵守数据使用政策以及了解数据或模型随时间推移而发生的变化所带来的影响至关重要。
- 对于生成式 AI 和基础模型,您的目录还必须跟踪有关所用特定基础模型、微调参数以及与生成输出的质量和安全性相关的评估结果的详细信息。
实施强大的访问权限控制和审核跟踪
为了在 AI 和 ML 系统中保持信任和控制,您必须保护敏感数据和模型免遭未经授权的访问,并确保所有更改都有明确的责任人。
- 在 Google Cloud中,针对 AI 和 ML 系统的所有组件实施严格的访问控制并维护详细的审核跟踪记录。
- 在 IAM 中为与您的 AI 和 ML 资源互动的用户、群组和服务账号定义精细的权限。
- 严格遵循最小权限原则。
- 仅授予特定任务所需的最低权限。例如,训练服务账号需要对训练数据具有读取权限,对模型制品具有写入权限,但该服务可能不需要对生产部署端点具有写入权限。
在 AI 和 ML 系统中的所有相关资产和资源(包括以下各项)中,一致地应用 IAM 政策:
- 包含敏感数据或模型工件的 Cloud Storage 存储分区。
- BigQuery 数据集。
- Vertex AI 资源,例如模型代码库、端点、流水线和 Feature Store 资源。
- 计算资源,例如 GKE 集群和 Cloud Run 服务。
使用审核和日志来捕获、监控和分析访问活动:
- 为 AI 和 ML 系统使用的所有 Google Cloud 服务启用 Cloud Audit Logs。
- 配置审核日志,以捕获有关 API 调用、数据访问事件以及对资源所做的配置更改的详细信息。监控日志,查看是否存在可疑活动、未经授权的访问尝试,或对关键数据或模型资产的意外修改。
- 如需进行实时分析、提醒和可视化,请将审核日志流式传输到 Cloud Logging。
- 如需经济高效地进行长期存储,并进行回顾性安全分析或合规性审核,请将日志导出到 BigQuery。
- 如需集中进行安全监控,请将审核日志与安全信息和事件管理 (SIEM) 系统集成。定期检查访问权限政策和审核轨迹,确保它们符合您的治理要求,并检测潜在的政策违规行为。
- 对于处理敏感数据的应用(例如用于训练或推理的个人身份信息 (PII)),请在流水线内或数据存储空间中使用敏感数据保护检查。
- 对于生成式 AI 和智能体解决方案,请使用审核轨迹来帮助跟踪以下信息:谁访问了特定模型或工具、哪些数据用于微调或提示,以及哪些查询发送到了生产端点。审核轨迹有助于确保责任落实,并为您调查数据滥用或违规行为提供关键数据。
解决偏见、透明度和可解释性问题
为了构建值得信赖的 AI 和机器学习系统,您需要解决数据和模型中固有的潜在偏差,努力提高系统行为的透明度,并为模型输出提供可解释性。在敏感领域或使用复杂模型(例如通常用于生成式 AI 应用的模型)时,构建值得信赖的系统尤为重要。
- 在整个 MLOps 生命周期中实施主动实践,以识别和减轻偏见。
- 使用可检测不同人口群体或敏感属性的特征分布中是否存在偏差的工具,分析训练数据是否存在偏差。
- 评估总体模型性能以及在预定义的数据切片中的性能。此类评估有助于您识别影响特定子群组的性能差异或偏差。
为了提高模型透明度和可解释性,请使用可帮助用户和开发者了解模型为何做出特定预测或生成特定输出的工具。
- 对于部署在 Vertex AI 端点上的表格模型,请使用 Vertex Explainable AI 生成特征归因。 特征归因指出了对预测结果贡献最大的输入特征。
- 使用与 TensorBoard 集成的 What-If 工具等与模型无关的工具,以交互方式探索数据集上的模型行为和潜在偏见。
- 将可解释性集成到监控信息中心。在需要了解模型推理过程才能建立信任或做出决策的情况下,请通过应用界面直接向最终用户提供可解释性数据。
- 对于用于生成式 AI 模型的 LLM 等复杂模型,请说明代理遵循的流程,例如使用轨迹日志。对于此类模型,可解释性相对较难实现,但仍然至关重要。
- 在 RAG 应用中,为检索到的信息提供引用。您还可以使用提示工程等技巧来引导模型提供说明或展示其推理步骤。
- 通过在生产环境中实现持续监控,检测模型行为或输出的变化,这些变化可能表明出现了新的偏差或不公平现象。 在模型注册表中将模型限制、预期使用场景和已知的潜在偏见记录为模型元数据的一部分。
实施全面的 AI 和机器学习可观测性和可靠性实践
整体可观测性对于管理生产环境中的复杂 AI 和 ML 系统至关重要。此外,由于复杂 AI 和 ML 系统(尤其是生成式 AI)的复杂性、资源密集性和潜在的不可预测的输出,它对于衡量这些系统的可靠性也至关重要。整体可观测性是指观测基础架构、应用代码、数据和模型行为,以获得相关信息,从而主动检测、诊断和响应问题。这种可观测性最终会带来高性能、可靠的系统。如需实现全面的可观测性,您需要执行以下操作:
- 采用 SRE 原则。
- 确定明确的可靠性目标。
- 跟踪各个系统层的指标。
- 利用可观测性分析结果持续改进并主动管理。
如需在 Google Cloud中为 AI 和机器学习工作负载实施全面的可观测性和可靠性实践,请考虑以下建议。
确定可靠性目标和业务指标
确定 AI 和 ML 系统直接影响的关键绩效指标 (KPI)。这些 KPI 可能包括受 AI 推荐影响的收入、AI 系统预测或缓解的客户流失情况,以及由生成式 AI 功能带来的用户互动度和转化率。
针对每个 KPI,定义影响该 KPI 的相应技术可靠性指标。例如,如果 KPI 是“客户对对话式 AI 助理的满意度”,则相应的可靠性指标可以包括以下内容:
- 用户请求的成功率。
- 回答的延迟时间:LLM 的第一个 token 时间 (TTFT) 和 token 流式传输。
- 不相关或有害回答的比例。
- 代理成功完成任务的比率。
对于 AI 和 ML 训练,可靠性指标可以包括模型 FLOP 利用率 (MFU)、每秒迭代次数、每秒令牌数和每个设备的令牌数。
如需有效衡量和提升 AI 和 ML 可靠性,首先要设定明确的可靠性目标,确保其与总体业务目标保持一致。采用 SRE 方法,从用户角度定义 SLO,以量化 AI 和 ML 服务的可接受可靠性和性能水平。使用具体的 SLO 目标来量化这些技术可靠性指标。
以下是 SLO 目标的示例:
- 99.9% 的 API 调用必须返回成功响应。
- 第 95 百分位推理延迟时间必须低于 300 毫秒。
- 99% 的请求的 TTFT 必须低于 500 毫秒。
- 有害输出的比例必须低于 0.1%。
将 SLO 直接与业务需求保持一致,可确保可靠性工作重点放在影响用户和业务的最关键系统行为上。这种方法有助于将可靠性转变为可衡量且可操作的工程属性。
监控基础架构和应用性能
跟踪 AI 和 ML 系统使用的所有资源的基础设施指标。这些指标包括处理器使用情况(CPU、GPU 和 TPU)、内存使用情况、网络吞吐量和延迟时间以及磁盘 I/O。跟踪托管环境(例如 Vertex AI Training 和 Serving)以及自行管理的资源(例如 GKE 节点和 Cloud Run 实例)的指标。
监控 AI 和机器学习应用的四个黄金信号:
- 延迟时间:响应请求所需的时间。
- 流量:请求量或工作负载量。
- 错误率:失败的请求或操作的比率。
- 饱和度:CPU、内存和 GPU 或 TPU 加速器等关键资源的利用率,表示系统接近容量限制的程度。
使用以下方法执行监控:
- 使用 Cloud Monitoring 收集、存储和直观呈现基础架构和应用指标。
您可以使用预建的信息中心来监控 Google Cloud 服务,还可以创建自定义信息中心,根据工作负载的特定性能指标和基础设施运行状况量身定制。
- 使用 Google Cloud Managed Service for Prometheus 将来自 vLLM 或 NVIDIA Triton Inference Server 等专用服务框架的指标收集并集成到 Cloud Monitoring 中。
- 创建信息中心,并为与自定义训练、端点和性能相关的指标以及 Vertex AI 导出到 Cloud Monitoring 的指标配置提醒。
- 使用 Cloud Logging 从 AI 和 ML 应用以及底层基础架构收集详细日志。 这些日志对于问题排查和性能分析至关重要。它们可提供有关事件和错误的背景信息。
- 使用 Cloud Trace 找出延迟问题,并了解分布式 AI 和 ML 微服务中的请求流。 此功能对于调试复杂的 Vertex AI 智能体互动或多组件推理流水线至关重要。
- 使用 Cloud Profiler 找出应用代码中函数块内的性能瓶颈。 识别性能瓶颈有助于您优化资源使用情况和执行时间。
- 使用 NVIDIA Data Center GPU Manager (DCGM) 等工具,收集与加速器相关的特定指标,例如每个进程的详细 GPU 利用率、每个进程的内存用量和温度。
实现数据和模型可观测性
可靠的生成式 AI 系统需要强大的数据和模型可观测性,而这首先要从端到端流水线监控开始。
- 使用 Dataflow 等服务跟踪数据注入速率、处理量和转换延迟时间。
- 监控 MLOps 流水线(包括由 Vertex AI Pipelines 管理的流水线)中的作业成功率和失败率。
持续评估数据质量至关重要。
- 使用 Dataplex Universal Catalog 管理和治理数据:
- 通过根据标准答案进行验证或跟踪离群点检测率来评估准确率。
- 根据数据的新旧程度和更新频率,对照 SLA 监控数据新鲜度。
- 通过跟踪 null 值百分比和必填字段填充率来评估完整性。
- 通过检查架构一致性和重复情况,确保有效性和一致性。
- 使用 Cloud Monitoring 提醒主动检测异常,并通过清晰的数据沿袭实现可追溯性。
- 对于 RAG 系统,请检查检索到的上下文的相关性以及回答的接地性(归因于来源)。
- 监控向量数据库查询的吞吐量。
关键模型可观测性指标包括输入-输出令牌数量和特定于模型的错误率,例如幻觉或查询解析失败。如需跟踪这些指标,请使用模型监控。
- 持续监控输出的毒性得分和用户反馈评分。
- 使用 Gen AI Evaluation Service,根据定义的标准自动评估模型输出。
- 通过全面的错误率指标,系统性地监控数据和概念漂移,确保性能持续稳定。
如需跟踪模型指标,您可以使用 TensorBoard 或 MLflow。如需进行深入分析和性能剖析以排查性能问题,您可以使用 PyTorch XLA 性能剖析或 NVIDIA Nsight。
贡献者
作者:
- Rick (Rugui) Chen | AI 基础设施现场解决方案架构师
- Stef Ruinard | 生成式 AI 现场解决方案架构师
其他贡献者:
- Filipe Gracio 博士 | 客户工程师,AI/机器学习专家
- Hossein Sarshar | AI 基础设施领域解决方案架构师
- Jose Andrade | 客户工程师,SRE 专家
- Kumar Dhanagopal | 跨产品解决方案开发者
- Laura Hyatt | 客户工程师,FSI
- Olivier Martin | AI 基础架构现场解决方案架构师
- Radhika Kanakam | Google Cloud Well-Architected Framework 计划负责人
AI 和机器学习视角:费用优化
架构完善的框架:AI 和机器学习视角中的本文档概述了相关原则和建议,可帮助您在整个机器学习生命周期内优化 AI 系统的费用。通过采用主动且明智的费用管理方法,组织可以充分发挥 AI 和机器学习系统的潜力,同时保持财务纪律。本文档中的建议与 Google Cloud Well-Architected Framework 的费用优化支柱相符。
AI 和机器学习系统可帮助您从数据中发掘富有价值的分析洞见和预测功能。例如,您可以减少内部流程中的阻力、改善用户体验,并更深入地了解客户。云端可提供海量资源,并能快速实现价值,而无需为 AI 和 ML 工作负载进行大量前期投资。为了最大限度地提高业务价值,并使支出与业务目标保持一致,您需要了解费用驱动因素、主动优化费用、设置支出控制措施,并采用 FinOps 实践。
本文档中的建议与以下核心原则相对应:
定义和衡量费用与回报
如需在 Google Cloud中有效管理 AI 和机器学习费用,您必须定义并衡量云资源费用以及 AI 和机器学习计划的业务价值。为了帮助您精细地跟踪支出, 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:用于对来自各种来源的数据进行批处理和流式处理,并集成 ML 组件。对于事件驱动型架构,您可以将 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 博士 | 客户工程师,AI/机器学习专家
- 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 博士 | 客户工程师,AI/机器学习专家
其他贡献者:
- Kumar Dhanagopal | 跨产品解决方案开发者
- Marwan Al Shawi | 合作伙伴客户工程师
- Zach Seils | 网络专家