Criar uma instância de notebooks gerenciados com um contêiner personalizado

Veja nesta página como adicionar um contêiner personalizado a uma instância de notebooks gerenciados do Vertex AI Workbench como um kernel em que é possível executar arquivos de notebook.

Informações gerais

É possível adicionar um contêiner personalizado para uso com a instância de notebooks gerenciados. O contêiner personalizado está disponível como um kernel local em que é possível executar o arquivo de notebook.

Requisitos de contêiner personalizado

Os notebooks gerenciados do Vertex AI Workbench são compatíveis com qualquer uma das imagens de contêiner do Deep Learning Containers atuais.

Para criar uma imagem de contêiner personalizado, modifique uma das imagens de contêiner do Deep Learning Containers para criar uma imagem de contêiner derivada.

Para criar uma imagem de contêiner personalizada do zero, verifique se ela atende aos seguintes requisitos:

  • Use uma imagem de contêiner do Docker com pelo menos uma kernelspec do Jupyter válida. Esse kernelspec exposto permite que os notebooks gerenciados do Vertex AI Workbench carreguem a imagem do contêiner como um kernel. Se a imagem do contêiner incluir uma instalação do JupyterLab ou do Jupyter Notebook, a instalação vai incluir o kernelspec por padrão. Se a imagem do contêiner não tiver o kernelspec, será possível instalar o kernelspec diretamente.

  • A imagem do contêiner do Docker precisa ser compatível com sleep infinity.

  • Para usar seu contêiner personalizado com o executor de notebooks gerenciados, verifique se ele tem a extensão nbexecutor.

O exemplo de texto do Dockerfile a seguir cria uma imagem do Docker personalizada do zero, baseada em uma imagem do Ubuntu e inclui a versão mais recente do Python.

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

Substitua VERSION_NUMBER pela versão do Python que você está usando.

Como um contêiner personalizado se torna um kernel em notebooks gerenciados

Para cada imagem de contêiner personalizado fornecido, a instância de notebooks gerenciados identifica o kernelspec do Jupyter disponível na imagem do contêiner quando a instância é iniciada. O kernelspec é exibido como um kernel local na interface do JupyterLab. Quando o kernelspec é selecionado, o gerenciador de kernel de notebooks gerenciados executa o contêiner personalizado como um kernel e inicia uma sessão do Jupyter nesse kernel.

Como os kernels de contêiner personalizados são atualizados

O Vertex AI Workbench extrai a imagem de contêiner mais recente do kernel:

  • Quando você cria a instância.

  • Ao fazer upgrade da instância.

  • Ao iniciar a instância.

O kernel do contêiner personalizado não persiste quando a instância é interrompida. Assim, sempre que a instância é iniciada, o Vertex AI Workbench extrai a versão mais recente da imagem do contêiner.

Se a instância estiver em execução quando uma nova versão de um contêiner for lançada, o kernel não será atualizado até você parar e iniciar a instância.

Disponibilidade das imagens de contêiner personalizado

As imagens de contêiner do Deep Learning Containers estão disponíveis para todos os usuários. Ao usar uma imagem de contêiner do Deep Learning Containers, é preciso conceder papéis específicos à conta de serviço da instância para que ela possa carregar a imagem de contêiner de aprendizado profundo como um kernel. Saiba mais sobre as permissões necessárias e como concedê-las na seção Permissões.

Se você quiser usar sua própria imagem de contêiner personalizada, ela precisa estar localizada no Artifact Registry e a imagem do contêiner precisa estar disponível ao público.

Antes de começar

  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

Adicionar um contêiner personalizado ao criar uma instância

Para adicionar um contêiner personalizado a uma instância de notebooks gerenciados, é preciso especificar a imagem do contêiner personalizado na criação da instância.

Para adicionar um contêiner personalizado ao criar uma instância de notebooks gerenciados, conclua as etapas a seguir.

  1. No Console do Google Cloud, acesse a página Notebooks gerenciados.

    Acessar notebooks gerenciados

  2. Clique em  Criar novo.

  3. No campo Nome, insira um nome para a instância.

  4. Clique na lista Região e selecione uma região para a instância.

  5. Na seção Ambiente, selecione Fornecer imagens personalizadas do Docker.

  6. Adicione uma imagem de contêiner do Docker de uma das seguintes maneiras:

    • Insira um caminho de imagem de contêiner do Docker. Por exemplo, para usar uma imagem do contêiner do TensorFlow 2.12 com aceleradores do Deep Learning Containers, insira us-docker.pkg.dev/deeplearning-platform-release/gcr.io/tf-cpu.2-12.py310.
    • Clique em Selecionar para adicionar uma imagem do contêiner do Docker pelo Artifact Registry. Em seguida, na guia Artifact Registry em que a imagem do contêiner está armazenada, mude o projeto para aquele que inclui a imagem do contêiner e selecione a imagem do contêiner.
  7. Preencha o restante da caixa de diálogo Criar instância de acordo com suas necessidades.

  8. Clique em Criar.

  9. O Vertex AI Workbench inicia automaticamente a instância. Quando a instância estiver pronta para uso, o Vertex AI Workbench ativa um link Abrir JupyterLab.

Conceder permissões para imagens de contêiner do Deep Learning Containers

Se você não estiver usando uma imagem de contêiner do Deep Learning Containers, pule esta seção.

Para garantir que a conta de serviço da instância tenha as permissões necessárias para carregar uma imagem de contêiner do Deep Learning Containers do Artifact Registry, peça ao administrador para conceder a conta de serviço da sua instância os papéis do IAM a seguir na instância:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço da instância as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Configurar um arquivo de notebook para ser executado no contêiner personalizado

Para abrir o JupyterLab, crie um novo arquivo de notebook e configure esse arquivo para ser executado no kernel do contêiner personalizado. Depois, conclua as etapas a seguir.

  1. Ao lado do nome da instância de notebooks gerenciados, clique em Abrir JupyterLab.

  2. Na caixa de diálogo Autenticar o notebook gerenciado, clique no botão para receber um código de autenticação.

  3. Escolha uma conta e clique em Permitir. Copie o código de autenticação.

  4. Na caixa de diálogo Autenticar seu notebook gerenciado, cole o código de autenticação e clique em Autenticar.

    Sua instância de notebooks gerenciados abre o JupyterLab.

  5. Selecione File -> New -> Notebook.

  6. Na caixa de diálogo Selecionar kernel, selecione o kernel da imagem do contêiner personalizado que você quer usar e clique em Selecionar. Imagens de contêiner maiores podem levar algum tempo para aparecer como um kernel. Se o kernel que você quer ainda não apareceu, tente novamente em alguns minutos. É possível alterar o kernel sempre que quiser executar o arquivo de notebook em um kernel diferente.

    O novo arquivo do notebook será aberto.

A seguir