使用执行程序运行笔记本文件

本页面介绍如何在 Vertex AI Workbench 代管式笔记本实例中使用执行程序以一次性执行的方式按计划运行笔记本文件。

概览

执行程序允许您提交笔记本 (ipynb) 文件,以便在 Vertex AI 自定义训练上运行。您可以为笔记本文件的每个执行设置参数值。您还可以定期重复运行笔记本文件。执行完成后,您可以查看执行结果并与他人分享结果。

笔记本文件提交到 Vertex AI 自定义训练后,Vertex AI 会创建一个新的自定义训练作业,该作业将按照训练作业的生命周期执行您的笔记本文件。

对执行程序运行的笔记本代码的要求

当您编写要在执行程序中运行的笔记本代码时,请注意该代码将在独立于代管式笔记本实例项目的租户项目中运行。本部分将介绍这对在执行程序中运行的代码有何影响。

确保软件包安装可供执行程序使用

如果您的笔记本依赖于未包含在所用代管式笔记本内核中的软件包安装,请确保可通过以下某种方式将软件包提供给执行程序中运行的笔记本代码:

  • 使用已安装该软件包的自定义容器,然后在该自定义容器上执行笔记本。请参阅将自定义容器与执行程序一起使用的要求

  • 在笔记本文件的代码中安装软件包。虽然在这种情况下每次执行笔记本文件时系统都会安装软件包,但这可确保该软件包在执行笔记本时选择的容器上可用。

明确选择项目

通过执行程序运行的代码访问资源时,执行程序可能无法连接到正确的 Google Cloud 项目。如果遇到权限错误,则连接错误的项目可能是问题所在。

出现此问题的原因是执行程序不会直接在代管式笔记本实例的 Google Cloud 项目中运行代码;执行程序会在 Google 管理的租户项目内,在 Vertex AI 自定义训练中运行代码。因此,请勿尝试从笔记本代码中的环境推断项目 ID;请明确指定项目 ID。

如果您不想对代码中的项目 ID 进行硬编码,则可以引用 CLOUD_ML_PROJECT_ID 环境变量。Vertex AI 会在每个自定义训练容器中设置此环境变量,以包含启动自定义训练的项目的编号。许多能够接受项目 ID 的 Google Cloud 工具也都可以接受项目编号。

例如,如果您要使用适用于 Google BigQuery 的 Python 客户端访问同一项目中的 BigQuery 表,请勿通过笔记本代码推断项目:

隐式选择项目

from google.cloud import bigquery

client = bigquery.Client()

请改为使用明确选择项目的代码:

明确项目选择

import os

from google.cloud import bigquery

project_number = os.environ["CLOUD_ML_PROJECT_ID"]

client = bigquery.Client(project=project_number)

使用服务账号对访问进行身份验证

默认情况下,代管式笔记本实例可以访问同一项目中的资源。因此,当您手动运行笔记本文件的代码时,这些资源不需要进行额外的身份验证。但是,由于执行程序在单独的租户项目中运行,因此它不会具有相同的默认访问权限。

此外,执行程序不能使用最终用户的凭据来对资源访问进行身份验证,例如通过 gcloud auth login 命令

如需解决这些问题,在笔记本文件的代码中,请通过服务账号来对资源访问进行身份验证。

为此,请在创建执行或时间表时,指定该服务账号。

例如,您可以在创建执行时完成以下步骤:

  1. 将笔记本提交到执行程序对话框中,展开高级选项

  2. 身份和 API 访问权限部分,清除使用 Vertex AI Training 的默认服务账号旁边的复选框,然后输入要使用的特定服务账号。

查看创建执行的步骤的完整列表。

使用自定义容器时的要求

您可以使用执行程序在自定义容器上运行笔记本代码。您的自定义容器必须包含 nbexecutor 扩展程序,其可让执行程序以 Vertex AI 自定义训练作业的形式运行笔记本代码。为确保您的自定义容器具有 nbexecutor 扩展程序,您可以修改其中一个 Deep Learning Containers 容器映像以创建派生容器映像。Deep Learning Containers 映像包含 nbexecutor 扩展程序。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Notebooks and Vertex AI API。

    启用 API

  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Notebooks and Vertex AI API。

    启用 API

  8. 创建代管式笔记本实例(如果您尚未创建)。

所需的角色

为了确保实例的服务账号拥有与 Vertex AI Workbench 执行程序进行交互所需的权限,请让您的管理员为实例的服务账号授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

您的管理员也可以通过自定义角色或其他预定义角色向您实例的服务账号授予所需的权限。

打开 JupyterLab

如需打开 JupyterLab 并准备要运行的笔记本文件,请完成以下步骤。

  1. 打开 JupyterLab

  2. 上传笔记本 (ipynb) 文件;打开现有文件;或打开新的笔记本文件,并将要运行的代码添加到该笔记本中。

  3. 确保您的笔记本文件的代码符合使用执行程序的要求

创建执行任务

如需创建运行笔记本文件的执行,请完成以下步骤。这些步骤涉及如何安排执行以及创建一次性执行。

  1. 在代管式笔记本实例的 JupyterLab 界面中,打开要运行的笔记本文件。

  2. 点击 执行按钮。

  3. 将笔记本提交到执行程序对话框的执行名称字段中,输入执行的名称。

  4. 选择机器类型加速器类型

  5. 选择环境

  6. 类型字段中,选择一次性执行,或选择基于时间表的周期性执行并完成用于安排执行的对话框设置。

  7. 高级选项中,选择要运行笔记本的区域

  8. Cloud Storage 存储桶字段中,选择可用的 Cloud Storage 存储桶,或者输入新存储桶的名称,然后点击创建并选择。执行程序将笔记本输出存储在此 Cloud Storage 存储桶中。

  9. 可选:在笔记本参数化部分的输入参数文本框中,添加以英文逗号分隔的笔记本参数,例如 optimizer="SGD",learning_rate=0.01

    详细了解如何使用笔记本参数

  10. 可选:在身份和 API 访问权限部分,选中使用 Vertex AI Training 的默认服务账号,或者清除该对勾标记并输入要使用的特定服务账号。

  11. 可选:在网络部分中,指定一个 Virtual Private Cloud 网络。使用 VPC 网络运行执行时,需要具有一个专用服务访问通道连接。

  12. 点击提交

    一次性执行会立即开始运行。计划执行会按您设置的时间表自动运行。

在 Google Cloud 控制台的 Vertex AI Workbench 页面上,您可以在执行标签页上查看已完成的执行以及在时间表标签页上查看时间表

查看、共享和导入已执行的笔记本文件

通过使用代管式笔记本实例的 JupyterLab 界面,您可以查看已执行笔记本的输出,与他人共享结果,以及将已执行的笔记本文件导入 JupyterLab。

查看笔记本执行的结果

您可以在 Cloud Cloud 控制台或 JupyterLab 界面中查看笔记本执行的结果。

控制台

  1. 在 Google Cloud 控制台中,转到 Vertex AI Workbench 页面,然后点击执行标签页。

    进入“执行”

  2. 选择包含您的结果的区域

  3. 在要查看的执行旁边,点击查看结果

    结果会在新的浏览器标签页中打开。

JupyterLab

  1. 在 JupyterLab 的导航菜单中,点击  笔记本执行程序按钮。

  2. 点击执行标签页。

  3. 在您要查看的执行下,点击查看结果

    结果会在新的浏览器标签页中打开。

共享笔记本执行的结果

您可以通过提供对笔记本执行所在 Cloud Storage 存储桶的访问权限来共享执行结果。提供此访问权限也会授予用户对同一 Cloud Storage 存储桶中的其他所有资源的访问权限。如需共享执行结果,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到 Vertex AI Workbench 页面,然后点击执行标签页。

    进入“执行”

  2. 选择包含执行的区域

  3. 在要共享的执行旁边,点击 共享按钮。

  4. 按照对话框中的说明授予用户对笔记本执行所在 Cloud Storage 存储桶的访问权限。

JupyterLab

  1. 在代管式笔记本实例的 JupyterLab 界面的导航菜单中,点击  笔记本执行程序按钮。

  2. 点击执行标签页。

  3. 在要共享的执行旁边,点击  选项菜单,然后选择共享执行结果

  4. 按照对话框中的说明授予用户对笔记本执行所在 Cloud Storage 存储桶的访问权限。

将已执行的笔记本导入 JupyterLab

如需将已执行的笔记本导入到 JupyterLab 中,请完成以下步骤。

  1. 在代管式笔记本实例的 JupyterLab 界面的导航菜单中,点击  笔记本执行程序按钮。

  2. 点击执行标签页。

  3. 选择包含执行的笔记本的区域

  4. 在要导入的执行旁边,点击  选项菜单,然后选择导入已执行的笔记本

  5. 选择要打开笔记本的内核。

    执行程序会在 JupyterLab 中打开已执行的笔记本文件,并将该笔记本文件存储在 JupyterLab 文件浏览器内名为 imported_notebook_jobs 的文件夹中。

查看或删除时间表

您可以使用 Google Cloud 控制台或代管式笔记本实例的 JupyterLab 界面查看和删除时间表。

查看时间表

查看时间表以查看时间表的频率设置或查看笔记本执行的结果。

控制台

  1. 在 Google Cloud 控制台中,转到 Vertex AI Workbench 页面,然后点击时间表标签页。

    进入“时间表”

  2. 选择包含您的时间表的区域

  3. 点击时间表名称以打开时间表详情页面。

  4. 在执行名称旁边,点击查看结果以打开已执行的笔记本文件。执行程序会在新的浏览器标签页中打开您的结果。

JupyterLab

  1. 在代管式笔记本实例的 JupyterLab 界面的导航菜单中,点击  笔记本执行程序按钮。

  2. 点击时间安排标签页。

  3. 如需查看最新执行,请在您要查看的执行下,点击查看最新执行结果。执行程序会在新的浏览器标签页中打开您的结果。

    如需查看所有执行,请点击时间表的名称。执行程序会打开 Google Cloud 控制台中的时间表详情页面。

  4. 在执行名称旁边,点击查看结果以打开已执行的笔记本文件。 执行程序会在新的浏览器标签页中打开您的结果。

删除时间表

删除时间表不会删除根据该时间表生成的执行。

控制台

  1. 在 Google Cloud 控制台中,转到 Vertex AI Workbench 页面,然后点击时间表标签页。

    进入“时间表”

  2. 选择包含您的时间表的区域

  3. 选择要删除的时间表。

  4. 点击 删除

JupyterLab

  1. 在代管式笔记本实例的 JupyterLab 界面的导航菜单中,点击  笔记本执行程序按钮。

  2. 点击时间安排标签页。

  3. 点击要删除的时间表的名称。执行程序会打开 Google Cloud 控制台中的时间表详情页面。

  4. 点击 删除

Vertex AI 自定义训练上的作业

由于笔记本执行在 Vertex AI 自定义训练上运行,因此它们在 Vertex AI 中作为自定义训练作业公开。您可以在 Google Cloud 控制台中 Vertex AI Training 页面的自定义作业标签页上查看这些自定义训练作业。详细了解如何使用 Vertex AI 自定义训练作业

后续步骤