借助 Vertex AI Pipelines,您可以运行使用 Kubeflow Pipelines SDK 或 TensorFlow Extended 以无服务器方式构建的机器学习 (ML) 流水线。本文档介绍如何运行机器学习流水线。
您还可以使用模板库中预构建的模板创建流水线运行。如需详细了解模板库,请参阅使用模板库中的预构建模板。
准备工作
在使用 Vertex AI Pipelines 运行流水线之前,请按照以下说明来设置 Google Cloud 项目和开发环境:
如需使用 Vertex AI SDK for Python 运行流水线,请安装 Vertex SDK。
- 安装 Vertex AI SDK。
创建流水线运行
按照以下说明,使用 Google Cloud 控制台或 Python 运行机器学习流水线。
控制台
按照以下说明,使用 Google Cloud 控制台运行机器学习流水线。
在 Google Cloud 控制台的 Vertex AI 部分中,前往流水线页面。
在区域下拉列表中,选择区域以创建流水线运行。
点击
创建运行以打开创建流水线运行窗格。在运行详情部分中,执行以下操作:
点击运行来源。您可以使用以下选项:
从现有流水线中选择:如需根据现有流水线模板创建流水线运行,请点击从现有流水线中选择,然后输入以下详细信息:
选择包含流水线或组件定义文件的仓库。
选择流水线或组件和版本。
指定运行名称以唯一标识流水线运行。
选择模板库流水线:如需根据模板库中 Google 编写的流水线模板创建流水线运行,请点击选择模板库流水线,然后输入以下详细信息:
在模板库流水线列表中,选择流水线模板。
可选:修改唯一标识流水线运行的默认运行名称。
上传文件:如需上传已编译的流水线定义,请点击上传文件,然后输入以下详细信息:
点击浏览,打开文件选择器。导航到要运行的已编译流水线 YAML 文件,选择流水线,然后点击打开。
默认情况下,流水线或组件名称显示流水线定义中指定的名称。您也可以指定其他流水线名称。
指定运行名称以唯一标识流水线运行。
从 Cloud Storage 导入:如需从 Cloud Storage 导入流水线定义文件,请点击从 Cloud Storage 导入,然后输入以下详细信息:
点击浏览,导航到包含流水线定义对象的 Cloud Storage 存储桶,选择文件,然后点击选择。
指定流水线或组件名称。
指定运行名称以唯一标识流水线运行。
可选:如需安排周期性流水线运行,请指定运行时间表,如下所示:
选择周期性。
在开始时间下,指定时间表何时生效。
如需将首次运行安排在时间表创建后立即发生,请选择立即。
如需将首次运行安排在某个特定时间和日期,请选择开启。
在频率字段中,使用基于 unix-cron 的 Cron 时间表表达式指定计划和执行流水线运行的频率。
在结束时间下,指定时间表的结束时间。
如需指示时间表创建流水线无限期运行,请选择永不。
如需指明时间表在特定日期和时间结束,请选择开启,然后指定时间表的结束日期和时间。
可选:如需指定流水线运行使用自定义服务账号、客户管理的加密密钥 (CMEK) 或对等互连 VPC 网络,请点击高级选项,然后使用以下说明:
如需指定服务账号,请从服务账号下拉列表中选择一个服务账号。
如果您未指定服务账号,Vertex AI Pipelines 将使用默认 Compute Engine 服务账号运行流水线。
如需使用 CMEK,请选择使用客户管理的加密密钥。此时会显示选择客户管理的密钥下拉列表。在选择客户管理的密钥下拉列表中,选择要使用的密钥。
如需在此流水线运行中使用对等互连的 VPC 网络,请在对等互连的 VPC 网络框中输入 VPC 网络名称。
点击继续。
在运行时配置部分中,配置流水线运行,如下所示:
在 Cloud Storage 位置下,点击浏览以选择用于存储流水线输出工件的 Cloud Storage 存储桶,然后点击选择。
可选:如需为流水线运行配置失败政策和缓存,请点击高级选项,然后按照以下说明操作:
在失败政策下,指定整个流水线的失败政策。详细了解流水线故障政策。
如需将流水线配置为在一个任务失败后继续安排任务,请选择运行所有步骤,直到完成。默认情况下,此选项处于选中状态。
如需将流水线配置为在一个任务失败后失败,请选择只要有一个步骤失败,就让这个运行作业失败。
在缓存配置下,指定整个流水线的缓存配置。
如需将任务级缓存配置用于流水线中的任务,请选择不替换任务级缓存配置。
如需为流水线中的所有任务启用缓存,并替换任何任务级缓存配置,请选择为所有步骤启用“从缓存读取”(最快)。
如需为流水线中的所有任务关闭缓存,并替换任何任务级缓存配置,请选择为所有步骤停用“从缓存读取”(最快)。
可选:如果您的流水线具有参数,请在流水线参数下指定流水线运行参数。
如需创建流水线运行,请点击提交。
Python 版 Vertex AI SDK
按照以下说明使用 Vertex AI SDK for Python 运行机器学习流水线。在运行以下代码示例之前,必须先设置身份验证。
设置身份验证
如需设置身份验证,您必须创建服务账号密钥,并为服务账号密钥的路径设置环境变量。
-
创建服务账号:
-
在 Google Cloud 控制台中,转到创建服务账号页面。
- 在服务账号名称字段中,输入一个名称。
- 可选:在服务账号说明字段中,输入说明。
- 点击创建。
- 点击选择角色字段。在所有角色下,选择 Vertex AI > Vertex AI User。
-
点击完成以创建服务账号。
不要关闭浏览器窗口。您将在下一步骤中用到它。
-
-
创建用于身份验证的服务账号密钥:
- 在 Google Cloud 控制台中,点击您创建的服务账号的电子邮件地址。
- 点击密钥。
- 依次点击添加密钥和创建新密钥。
- 点击创建。JSON 密钥文件将下载到您的计算机上。
- 点击关闭。
- 向新服务账号授予用于运行流水线的服务账号的访问权限。
- 点击 返回到服务账号列表。
点击用于运行流水线的服务账号的名称。此时会显示服务账号详情页面。
如果您之前按照为 Vertex AI Pipelines 配置项目指南中的说明操作,则这是您在使用细化权限配置服务账号部分中创建的服务账号。否则,Vertex AI 将使用 Compute Engine 默认服务账号运行流水线。Compute Engine 默认服务账号的名称如下:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- 点击权限标签页。
- 点击授予使用权限。此时会显示添加主账号面板。
- 在新的主账号框中,输入您在上一步中创建的服务账号的电子邮件地址。
- 在角色下拉列表中,选择服务账号 > 服务账号用户。
- 点击保存。
-
将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含服务账号密钥的 JSON 文件的路径。此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变量。
示例:Linux 或 macOS
将 [PATH] 替换为包含您的服务账号密钥的 JSON 文件的路径。
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例如:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
示例:Windows
将 [PATH] 替换为包含服务账号密钥的 JSON 文件的路径,将 [FILE_NAME] 替换为文件名。
使用 PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例如:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"
使用命令提示符:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
运行流水线
运行 Vertex AI PipelineJob
要求您创建一个 PipelineJob
对象,然后调用 submit
方法。
KFP 支持的特殊输入类型
创建流水线运行时,您还可以将 KFP SDK 支持的以下占位符作为输入传递:
{{$.pipeline_job_name_placeholder}}
{{$.pipeline_job_resource_name_placeholder}}
{{$.pipeline_job_id_placeholder}}
{{$.pipeline_task_name_placeholder}}
{{$.pipeline_task_id_placeholder}}
{{$.pipeline_job_create_time_utc_placeholder}}
{{$.pipeline_root_placeholder}}
如需了解详情,请参阅 Kubeflow Pipelines v2 文档中的特殊输入类型。
from google.cloud import aiplatform
job = aiplatform.PipelineJob(display_name = DISPLAY_NAME,
template_path = COMPILED_PIPELINE_PATH,
job_id = JOB_ID,
pipeline_root = PIPELINE_ROOT_PATH,
parameter_values = PIPELINE_PARAMETERS,
enable_caching = ENABLE_CACHING,
encryption_spec_key_name = CMEK,
labels = LABELS,
credentials = CREDENTIALS,
project = PROJECT_ID,
location = LOCATION,
failure_policy = FAILURE_POLICY)
job.submit(service_account=SERVICE_ACCOUNT,
network=NETWORK)
替换以下内容:
- DISPLAY_NAME:流水线的名称,此名称将显示在 Google Cloud 控制台中。
COMPILED_PIPELINE_PATH:已编译的流水线 YAML 文件的路径。该路径可以是本地路径或 Cloud Storage URI。
可选:如需指定已编译的流水线的特定版本,请添加采用以下任一格式的版本标记:
COMPILED_PIPELINE_PATH:TAG
,其中 TAG 是版本标记。COMPILED_PIPELINE_PATH@SHA256_TAG
,其中 SHA256_TAG 是流水线版本的sha256
哈希值。
JOB_ID:(可选)此流水线运行的唯一标识符。如果未指定作业 ID,Vertex AI Pipelines 将用流水线名称和运行流水线的时间戳为您创建作业 ID。
PIPELINE_ROOT_PATH:(可选)如需替换流水线定义中指定的流水线根路径,请指定流水线作业可以访问的路径,例如 Cloud Storage 存储桶 URI。
PIPELINE_PARAMETERS:(可选)要传递给此运行的流水线参数。例如,创建一个
dict()
,以参数名称为字典键,以参数值为字典值。ENABLE_CACHING:(可选)指定此流水线运行是否使用执行缓存。执行缓存通过跳过流水线任务(对于当前这组输入已知输出)来降低费用。如果未指定启用缓存参数,则在此流水线运行中使用执行缓存。 详细了解执行缓存。
CMEK:(可选)要用于此流水线运行的客户管理的加密密钥的名称。
LABELS:(可选)用户定义的标签,用于整理此
PipelineJob
。 如需详细了解资源标签,请参阅 Resource Manager 文档中的创建和管理标签部分。Vertex AI Pipelines 会自动将以下标签关联到您的流水线运行作业:
vertex-ai-pipelines-run-billing-id: pipeline_run_id
其中,
pipeline_run_id
是流水线运行作业的唯一 ID。此标签会在结算报告中关联流水线运行作业生成的 Google Cloud 资源的用量。
CREDENTIALS:(可选)用于创建此
PipelineJob
的自定义凭据。将替换aiplatform.init
中设置的凭据。PROJECT_ID(可选):要在其中运行流水线的 Google Cloud 项目。如果未设置此参数,则使用
aiplatform.init
中设置的项目。LOCATION(可选):要在其中运行流水线的区域。如需详细了解支持 Vertex AI Pipelines 的区域,请参阅 Vertex AI 位置指南。如果您未设置此参数,则使用
aiplatform.init
中设置的默认位置。FAILURE_POLICY:(可选)指定整个流水线的失败政策。您可以使用以下配置:
如需将流水线配置为在任务失败后失败,请输入
fast
。如需将流水线配置为在任务失败后继续安排任务,请输入
slow
。
如果您未设置此参数,则失败政策配置默认设置为
slow
。详细了解流水线故障政策。SERVICE_ACCOUNT:(可选)要用于此流水线运行的服务账号的名称。如果您未指定服务账号,Vertex AI Pipelines 会使用默认 Compute Engine 服务账号运行流水线。
NETWORK:(可选)要用于此流水线运行的 VPC 对等互连网络的名称。