架构良好的框架:AI 和机器学习视角中的这篇文档简要介绍了在 Google Cloud上构建和运行稳健 AI 和机器学习系统的原则和建议。这些建议可帮助您设置可观测性、自动化和可伸缩性等基本元素。本文档中的建议与 Google Cloud 良好架构框架的卓越运营支柱保持一致。
AI 和机器学习领域的卓越运营能力是指能够无缝部署、管理和治理 AI 和机器学习系统和流水线,从而帮助实现贵组织的战略目标。卓越运营可让您高效应对变化、降低运营复杂性,并确保运营始终与业务目标保持一致。
本文档中的建议对应于以下核心原则:
为模型开发奠定坚实基础
若要开发和部署可伸缩、可靠的 AI 系统,帮助您实现业务目标,强大的模型开发基础至关重要。此类基础架构可实现一致的工作流,自动执行关键步骤以减少错误,并确保模型可根据需求进行扩缩。强大的模型开发基础可确保您的机器学习系统能够顺畅地更新、改进和重新训练。该基础还可帮助您使模型的性能与业务需求保持一致,快速部署富有成效的 AI 解决方案,并适应不断变化的要求。
如需打下坚实的基础来开发 AI 模型,请考虑以下建议。
定义问题和所需的结果
在开始任何 AI 或机器学习项目之前,您必须明确要解决的业务问题和所需的结果。首先,概述业务目标,然后将这些目标细分为可衡量的关键绩效指标 (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 中的合成数据生成功能。
对于微调或基于人类反馈的强化学习 (RLHF) 等生成式 AI 任务,请确保标签准确反映生成输出的质量、相关性和安全性。
选择合适的机器学习方法
在设计模型和参数时,请考虑模型的复杂性和计算需求。根据任务(例如分类、回归或生成),考虑使用 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 系统,监控输出质量和安全合规性的变化。
自动执行模型开发生命周期
自动化功能可帮助您简化 AI 和机器学习生命周期的每个阶段。自动化可减少手动工作量并标准化流程,从而提高运营效率并降低错误风险。自动化工作流可加快迭代速度、在各个环境中实现一致的部署,并获得更可靠的结果,从而让您的系统能够无缝扩缩和适应。
如需自动执行 AI 和机器学习系统的开发生命周期,请考虑以下建议。
使用代管式流水线编排系统
使用 Vertex AI Pipelines 可自动执行机器学习生命周期的每个步骤,从数据准备到模型训练、评估和部署。为了加快部署速度并促进各项目之间的一致性,请使用安排的流水线运行自动执行重复性任务,使用执行指标监控工作流,并为标准化工作流开发可重复使用的流水线模板。这些功能也适用于生成式 AI 模型,后者通常需要执行提示工程、回答过滤和人参与式评估等专门步骤。对于生成式 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 评估服务来评估毒性、连贯性、事实准确性和是否遵守安全准则等指标。
为了确保部署可靠性,您需要制定稳健的回滚计划。对于传统机器学习系统,请使用 Vertex AI Model Monitoring 来检测数据偏移和性能下降。对于生成式 AI 模型,您可以将 Vertex AI 模型评估与 Cloud Logging 和 Cloud Monitoring 搭配使用,跟踪相关指标,并针对输出质量变化或有害内容出现设置提醒。根据生成式 AI 专用指标配置提醒,以便在必要时触发回滚过程。如需跟踪模型谱系并还原为最新的稳定版本,请使用 Vertex AI Model Registry 中的分析洞见。
实现可观测性
由于数据或环境的变化以及模型的更新,AI 和机器学习系统的行为可能会随时间而变化。这种动态特性使得可观测性对于检测性能问题、偏差或意外行为至关重要。对于生成式 AI 模型,这一点尤其正确,因为其输出可能具有高度可变性和主观性。借助可观察性,您可以主动解决意外行为,并确保 AI 和机器学习系统始终保持可靠、准确和公平。
如需为 AI 和机器学习系统实现可观测性,请考虑以下建议。
持续监控效果
使用指标和成效标准持续评估部署后的模型。
您可以使用 Vertex AI Model Monitoring 主动跟踪模型性能、识别训练-服务偏差和预测偏移,并接收提醒以触发必要的模型重新训练或其他干预措施。为了有效监控训练-应用偏差,请构建一个代表理想数据分布的黄金数据集,并使用 TFDV 分析训练数据并建立基准架构。
配置 Model Monitoring 以将输入数据的分布与基准数据集进行比较,以便自动检测偏差。对于传统机器学习模型,请重点关注准确率、精确率、召回率、F1 得分、AUC-ROC 和 log loss 等指标。在模型监控中为提醒定义自定义阈值。对于生成式 AI,请使用 Gen AI Evaluation Service 持续监控生产环境中的模型输出。您还可以为回答质量、安全性、指令遵从性、基础知识、写作风格和详细程度启用自动评估指标。如需评估生成的输出的质量、相关性、安全性和是否符合指南,您可以采用人参与式评估。
创建反馈环,以便在模型监控触发提醒时,使用 Vertex AI 流水线自动重新训练模型。利用这些数据洞见,不断改进您的模型。
在开发期间评估模型
在部署 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 和机器学习系统的所有组件中的日志。
- Cloud Monitoring:创建自定义信息中心以直观呈现关键指标和趋势,并根据您的需求定义自定义指标。配置提醒以接收有关重大问题的通知,并将提醒与 PagerDuty 或 Slack 等事件管理工具集成。
- Error Reporting:自动捕获和分析错误和异常。
- Cloud Trace:分析分布式系统的性能并找出瓶颈。跟踪功能对于了解 AI 和机器学习流水线不同组件之间的延迟时间特别有用。
- Cloud Profiler:持续分析生产环境中代码的性能,并找出 CPU 或内存用量方面的性能瓶颈。
打造卓越运营文化
将重点从仅构建模型转移到构建可持续、可靠且有影响力的 AI 解决方案。让团队能够持续学习、创新和改进,从而缩短开发周期、减少错误并提高效率。通过优先考虑自动化、标准化和伦理考虑,您可以确保 AI 和机器学习计划始终如一地创造价值、降低风险并促进负责任的 AI 开发。
如需为 AI 和机器学习系统打造卓越运营文化,请考虑以下建议。
推广自动化和标准化
为了强调效率和一致性,请将自动化和标准化做法嵌入到 AI 和机器学习生命周期的每个阶段。自动化功能可减少手动错误,让团队可以腾出时间专注于创新。标准化可确保流程可在各个团队和项目中重复使用并进行扩展。
优先考虑持续学习和改进
营造一个以持续教育和实验为核心原则的环境。鼓励团队及时了解 AI 和机器学习领域的最新进展,并提供从过往项目中学习的机会。好奇心和适应力文化有助于推动创新,并确保团队有能力应对新挑战。
培养责任感和所有权意识
明确定义角色、职责和指标,以建立信任并达成共识,从而取得理想成效。为团队赋能,让他们能够在这些范围内做出明智的决策,并建立透明的方式来衡量进度。这种归属感可以激励团队,并确保团队对结果承担集体责任。
嵌入 AI 伦理和安全注意事项
在开发的每个阶段,都应优先考虑伦理问题。鼓励团队批判性地思考其 AI 解决方案的影响,并促进就公平性、偏见和社会影响进行讨论。明确的原则和问责机制可确保您的 AI 系统符合组织价值观并促进信任。
实现可伸缩的设计
为了适应不断增长的数据量和用户需求,并最大限度地提高 AI 投资的价值,您的 AI 和机器学习系统需要具有可伸缩性。系统必须适应并以最佳方式运行,以避免影响效果的性能瓶颈。在设计可伸缩性时,您需要确保 AI 基础架构能够应对增长并保持响应能力。使用可伸缩的基础架构、规划容量,并采用横向扩缩和托管式服务等策略。
如需设计可扩缩的 AI 和机器学习系统,请考虑以下建议。
规划容量和配额
评估未来增长情况,并相应地规划基础架构容量和资源配额。与业务利益相关方合作,了解预计增长情况,然后据此确定基础架构要求。
使用 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 Distributed Training 和 Vertex AI Prediction 等托管式服务。借助 Vertex AI Prediction,您可以在将模型部署到端点或请求批量预测时为预测节点配置机器类型。对于某些配置,您可以添加 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 现场解决方案架构师