使用自定义容器创建您管理的笔记本实例

本页面介绍如何将自定义容器添加到 Vertex AI Workbench 代管式笔记本实例作为内核,以便在其上运行笔记本文件。

概览

您可以添加自定义容器以用于托管式笔记本实例。然后,您可以将自定义容器用作可在其上运行笔记本文件的本地内核。

自定义容器要求

Vertex AI Workbench 代管式笔记本支持当前的任何 Deep Learning Containers 容器映像

如需创建您自己的自定义容器映像,您可以修改其中一个 Deep Learning Containers 容器映像以创建派生容器映像

如需从头开始创建自定义容器映像,请确保容器映像满足以下要求:

  • 使用至少具有一个有效 Jupyter 内核规范的 Docker 容器映像。此公开内核规范允许 Vertex AI Workbench 代管式笔记本将容器映像作为内核加载。如果您的容器映像包含 JupyterLabJupyter 笔记本的安装,则安装会默认包含内核规范。如果您的容器映像没有内核规范,则可以直接安装内核规范

  • Docker 容器映像必须支持 sleep infinity

  • 如需将自定义容器与代管式笔记本执行程序搭配使用,请确保您的自定义容器具有 nbexecutor 扩展程序。

以下示例 Dockerfile 文本从头开始构建基于 Ubuntu 映像并包含最新 Python 版本的自定义 Docker 映像。

FROM --platform=linux/amd64 ubuntu:22.04

RUN apt-get -y update
RUN apt-get install -y --no-install-recommends \
python3-pip \
pipx \
git \
make \
jq

RUN pip install \
argcomplete>=1.9.4 \
poetry==1.1.14 \
jupyterlab==3.3.0

# Create a link that points to the right python bin directory
RUN ln -s /usr/bin/pythonVERSION_NUMBER /usr/bin/python

VERSION_NUMBER 替换为您要使用的 Python 版本。

自定义容器如何成为托管式笔记本中的内核

对于提供的每个自定义容器映像,代管式笔记本实例都会在实例启动时识别容器映像上可用的 Jupyter 内核规范。内核规范在 JupyterLab 界面中显示为本地内核。选择内核规范后,代管式笔记本内核管理器便会将自定义容器作为内核运行,并在该内核上启动 Jupyter 会话。

自定义容器内核的更新方式

Vertex AI Workbench 在以下情况下为您的内核拉取最新容器映像:

  • 创建实例时。

  • 升级实例时。

  • 启动实例时。

实例停止后,自定义容器内核不会保留,因此每次启动实例时,Vertex AI Workbench 都会拉取最新版本的容器映像。

如果在发布新版本的容器时实例正在运行,则在您停止并启动实例后,实例的内核才会更新。

自定义容器映像可用性

Deep Learning Containers 容器映像可供所有用户使用。 使用 Deep Learning Containers 容器映像时,您必须向实例的服务账号授予特定角色,以便实例可以加载 Deep Learning Containers 容器映像作为内核。如需详细了解所需权限以及如何授予这些权限,请参阅权限部分。

如果您要使用您自己的自定义容器映像,则其必须位于 Artifact Registry 中,且该容器映像必须可公开访问。

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Notebooks and Artifact Registry APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Notebooks and Artifact Registry APIs.

    Enable the APIs

创建实例时添加自定义容器

如需向代管式笔记本实例添加自定义容器,您必须在创建实例时指定自定义容器映像。

如需在创建代管式笔记本实例时添加自定义容器,请完成以下步骤。

  1. 在 Google Cloud 控制台中,转到代管式笔记本页面。

    前往“代管式笔记本”

  2. 点击  新建

  3. 名称字段中,输入实例的名称。

  4. 点击区域列表,然后为您的实例选择一个区域。

  5. 环境部分中,选择提供自定义 Docker 映像

  6. 通过以下任一方式添加 Docker 容器映像:

    • 输入 Docker 容器映像路径。例如,如需将 TensorFlow 2.12 容器映像与来自 Deep Learning Containers 的加速器结合使用,请输入 us-docker.pkg.dev/deeplearning-platform-release/gcr.io/tf-cpu.2-12.py310
    • 点击选择,从 Artifact Registry 添加 Docker 容器映像。然后,在存储容器映像的 Artifact Registry 标签页上,将项目更改为包含容器映像的项目,并选择容器映像。
  7. 根据您的需要完成创建实例对话框的其余部分。

  8. 点击创建

  9. Vertex AI Workbench 会自动启动该实例。当实例可供使用时,Vertex AI Workbench 会激活打开 JupyterLab 链接。

授予 Deep Learning Containers 容器映像的权限

如果您未使用 Deep Learning Containers 容器映像,请跳过本部分。

如需确保实例的服务账号具有从 Artifact Registry 加载 Deep Learning Containers 容器映像所需的权限,请让您的管理员授予您实例的服务账号对您实例上的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

将笔记本文件设置为在自定义容器中运行

如需打开 JupyterLab,创建新的笔记本文件,并将其设置为在您的自定义容器的内核上运行,请完成以下步骤。

  1. 在代管式笔记本实例的名称旁边,点击打开 JupyterLab

  2. 对托管笔记本进行身份验证对话框中,点击按钮以获取身份验证代码。

  3. 选择一个账号,然后点击允许。复制身份验证代码。

  4. 对托管笔记本进行身份验证对话框中,粘贴身份验证代码,然后点击身份验证

    您的代管式笔记本实例会打开 JupyterLab。

  5. 选择文件 >新建 >笔记本

  6. 选择内核对话框中,选择要使用的自定义容器映像的内核,然后点击选择。较大的容器映像可能需要一些时间才能显示为内核。如果您需要的内核尚不存在,请在几分钟后重试。如果要在其他内核上运行笔记本文件,您可以更改内核

    系统会打开您的新笔记本文件。

后续步骤