Membuat instance menggunakan penampung kustom

Halaman ini menjelaskan cara membuat instance Vertex AI Workbench berdasarkan container kustom.

Ringkasan

Instance Vertex AI Workbench mendukung penggunaan container kustom yang berasal dari container dasar yang disediakan Google. Anda dapat mengubah penampung dasar ini untuk membuat image penampung kustom dan menggunakan penampung kustom ini untuk membuat instance Vertex AI Workbench.

Penampung dasar dikonfigurasi dengan OS yang Dioptimalkan untuk Container di mesin virtual (VM) host. Penampung dasar menyediakan paket data science yang telah diinstal sebelumnya dan konfigurasi tertentu yang memungkinkan instance Anda berintegrasi dengan Google Cloud.

Penampung dasar terletak di gcr.io/deeplearning-platform-release/workbench-container:latest.

Batasan

Pertimbangkan batasan berikut saat merencanakan project Anda:

  • Container kustom harus berasal dari container dasar yang disediakan Google (gcr.io/deeplearning-platform-release/workbench-container:latest). Menggunakan container yang tidak berasal dari container dasar akan meningkatkan risiko masalah kompatibilitas dan membatasi kemampuan kami untuk mendukung penggunaan instance Vertex AI Workbench Anda.

  • Penggunaan lebih dari satu penampung dengan instance Vertex AI Workbench tidak didukung.

  • Metadata yang didukung untuk penampung kustom dari notebook yang dikelola pengguna dan notebook terkelola dapat memiliki perilaku yang berbeda saat digunakan dengan instance Vertex AI Workbench.

  • VM yang menghosting penampung kustom berjalan dari Container-Optimized OS, yang membatasi cara Anda berinteraksi dengan mesin host. Misalnya, Container-Optimized OS tidak menyertakan pengelola paket. Hal ini berarti bahwa paket yang bertindak pada host harus dilakukan pada penampung dengan pemasangan. Hal ini memengaruhi skrip pasca-startup yang dimigrasikan dari instance notebook terkelola dan instance notebook yang dikelola pengguna, dengan komputer host yang berisi lebih banyak alat daripada Container-Optimized OS.

  • Instance Vertex AI Workbench menggunakan nerdctl (CLI containerd) untuk menjalankan container kustom. Hal ini diperlukan untuk kompatibilitas dengan layanan streaming Gambar. Setiap parameter penampung yang ditambahkan menggunakan nilai metadata harus mematuhi apa yang didukung oleh nerdctl.

  • Instance Vertex AI Workbench dikonfigurasi untuk mengambil dari Artifact Registry atau repositori container publik. Untuk mengonfigurasi instance agar dapat mengambil dari repositori pribadi, Anda harus mengonfigurasi kredensial yang digunakan oleh containerd secara manual.

Sebelum memulai

  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 API.

    Enable the API

  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 API.

    Enable the API

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat instance Vertex AI Workbench dengan penampung kustom, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat container kustom

Untuk membuat penampung kustom yang akan digunakan dengan instance Vertex AI Workbench:

  1. Buat container turunan yang berasal dari image container dasar yang disediakan Google (gcr.io/deeplearning-platform-release/workbench-container:latest).

  2. Build dan kirim container ke Artifact Registry. Anda akan menggunakan URI penampung saat membuat instance Vertex AI Workbench. Misalnya, URI mungkin terlihat seperti ini: gcr.io/PROJECT_ID/IMAGE_NAME.

Buat instance

Anda dapat membuat instance Vertex AI Workbench berdasarkan penampung kustom menggunakan konsol Google Cloud atau Google Cloud CLI.

Konsol

Untuk membuat instance Vertex AI Workbench berdasarkan container kustom, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman Instance.

    Buka Instance

  2. Klik  Buat baru.

  3. Dalam dialog Instance baru, klik Opsi lanjutan.

  4. Pada dialog Create instance, di bagian Environment, pilih Use custom container.

  5. Untuk Image container Docker, klik Select.

  6. Di dialog Select container image, buka image container yang ingin Anda gunakan, lalu klik Select.

  7. Opsional. Untuk Post-startup script, masukkan jalur ke skrip pasca-startup yang ingin Anda gunakan.

  8. Opsional. Tambahkan metadata untuk instance Anda. Untuk mempelajari lebih lanjut, lihat Metadata penampung kustom.

  9. Opsional. Di bagian Networking, sesuaikan setelan jaringan Anda. Untuk mempelajari lebih lanjut, lihat Opsi konfigurasi jaringan.

  10. Selesaikan dialog pembuatan instance lainnya, lalu klik Buat.

    Vertex AI Workbench membuat sebuah instance dan otomatis memulainya. Saat instance siap digunakan, Vertex AI Workbench akan mengaktifkan link Open JupyterLab.

gcloud

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • INSTANCE_NAME: nama instance Vertex AI Workbench Anda; harus dimulai dengan huruf, diikuti dengan maksimal 62 huruf kecil, angka, atau tanda hubung (-), dan tidak boleh diakhiri dengan tanda hubung
  • PROJECT_ID: project ID Anda
  • LOCATION: zona tempat Anda ingin menempatkan instance
  • CUSTOM_CONTAINER_PATH: jalur ke repositori image container, misalnya: gcr.io/PROJECT_ID/IMAGE_NAME
  • METADATA: metadata kustom yang akan diterapkan ke instance ini; misalnya, guna menentukan post-startup-script, Anda dapat menggunakan tag metadata post-startup-script, dalam format: "--metadata=post-startup-script=gs://BUCKET_NAME/hello.sh"

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud workbench instances create INSTANCE_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --container-repository=CUSTOM_CONTAINER_URL \
    --container-tag=latest \
    --metadata=METADATA

Windows (PowerShell)

gcloud workbench instances create INSTANCE_NAME `
    --project=PROJECT_ID `
    --location=LOCATION `
    --container-repository=CUSTOM_CONTAINER_URL `
    --container-tag=latest `
    --metadata=METADATA

Windows (cmd.exe)

gcloud workbench instances create INSTANCE_NAME ^
    --project=PROJECT_ID ^
    --location=LOCATION ^
    --container-repository=CUSTOM_CONTAINER_URL ^
    --container-tag=latest ^
    --metadata=METADATA

Untuk mengetahui informasi lebih lanjut tentang perintah untuk membuat instance dari command line, baca dokumentasi gcloud CLI.

Vertex AI Workbench membuat sebuah instance dan otomatis memulainya. Saat instance siap digunakan, Vertex AI Workbench akan mengaktifkan link Open JupyterLab di Konsol Google Cloud.

Opsi konfigurasi jaringan

Selain opsi jaringan umum, instance Vertex AI Workbench dengan penampung kustom harus memiliki akses ke layanan Artifact Registry.

Jika Anda telah menonaktifkan akses IP publik untuk VPC, pastikan Anda telah mengaktifkan Akses Google Pribadi.

Mengaktifkan streaming Image

Host penampung kustom disediakan untuk berinteraksi dengan streaming Image di Google Kubernetes Engine (GKE), yang menarik penampung lebih cepat dan mengurangi waktu inisialisasi untuk penampung besar setelah di-cache di sistem file jarak jauh GKE.

Untuk melihat persyaratan mengaktifkan Streaming image, lihat Persyaratan. Sering kali, streaming Image dapat digunakan dengan instance Vertex AI Workbench dengan mengaktifkan Container File System API.

Aktifkan Container File System API

Cara VM host menjalankan penampung kustom

Daripada menggunakan Docker untuk menjalankan penampung kustom, VM host menggunakan nerdctl di bawah namespace Kubernetes untuk memuat dan menjalankan penampung. Hal ini memungkinkan Vertex AI Workbench menggunakan streaming Image untuk container kustom.

# Runs the custom container.
sudo /var/lib/google/nerdctl/nerdctl --snapshotter=gcfs -n k8s.io run --name payload-container

Contoh penginstalan: penampung kustom dengan kernel default kustom

Contoh berikut menunjukkan cara membuat kernel baru dengan paket pip yang telah diinstal sebelumnya.

  1. Buat penampung kustom baru:

    FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest
    
    ENV MAMBA_ROOT_PREFIX=/opt/micromamba
    
    RUN micromamba create -n ENVIRONMENT_NAME -c conda-forge python=PYTHON_VERSION -y
    
    SHELL ["micromamba", "run", "-n", "ENVIRONMENT_NAME", "/bin/bash", "-c"]
    
    RUN micromamba install -c conda-forge pip -y
    RUN pip install PACKAGE
    RUN pip install ipykernel
    RUN python -m ipykernel install --prefix /opt/micromamba/envs/ENVIRONMENT_NAME --name ENVIRONMENT_NAME --display-name KERNEL_NAME
    # Creation of a micromamba kernel automatically creates a python3 kernel
    # that must be removed if it's in conflict with the new kernel.
    RUN rm -rf "/opt/micromamba/envs/ENVIRONMENT_NAME/share/jupyter/kernels/python3
  2. Tambahkan penampung baru ke Artifact Registry:

    gcloud auth configure-docker REGION-docker.pkg.dev
    docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME .
    docker push REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest
  3. Buat instance:

    gcloud workbench instances create INSTANCE_NAME  \
        --project=PROJECT_ID \
        --location=ZONE \
        --container-repository=REGION-docker.pkg.dev/PROJECT_ID/IMAGE_NAME \
        --container-tag=latest

Kernel persisten untuk container kustom

Penampung kustom Vertex AI Workbench hanya memasang disk data ke direktori /home/USER dalam setiap penampung, dengan jupyter adalah pengguna default. Ini berarti bahwa setiap perubahan di luar /home/USER bersifat sementara dan tidak akan tetap ada setelah dimulai ulang. Jika Anda memerlukan paket terinstal untuk dipertahankan untuk kernel tertentu, Anda dapat membuat kernel di direktori /home/USER.

Untuk membuat kernel di direktori /home/USER:

  1. Buat lingkungan micromamba:

    micromamba create -p /home/jupyter/ENVIRONMENT_NAME -c conda-forge python=3.11 -y
    micromamba activate ENVIRONMENT_NAME
    pip install ipykernel
    pip install -r ~/requirement.txt
    python -m ipykernel install --prefix "/home/jupyter/ENVIRONMENT_NAME" --display-name "Example Kernel"
  2. Tunggu 30 detik hingga 1 menit sampai kernel dimuat ulang.

Memperbarui pengaktifan penampung dasar

Penampung dasar untuk instance Vertex AI Workbench (us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest) memulai JupyterLab dengan menjalankan /run_jupyter.sh.

Jika Anda mengubah startup container dalam container turunan, Anda harus menambahkan /run_jupyter.sh untuk menjalankan konfigurasi default JupyterLab.

Berikut adalah contoh cara Dockerfile dapat diubah:

# DockerFile
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest

# Override the existing CMD directive from the base container.
CMD ["/startup_file.sh"]
# /startup_file.sh

echo "Running startup scripts"
...

/run_jupyter.sh

Memperbarui Konfigurasi JupyterLab dalam penampung dasar

Jika perlu mengubah konfigurasi JupyterLab di penampung dasar, Anda harus melakukan hal berikut:

  • Pastikan JupyterLab dikonfigurasi ke port 8080. Agen proxy kami dikonfigurasi untuk meneruskan permintaan apa pun ke port 8080 dan jika server jupyter tidak memproses port yang benar, instance akan mengalami masalah penyediaan.

  • Ubah paket JupyterLab di lingkungan micromamba jupyterlab. Kami menyediakan lingkungan paket terpisah untuk menjalankan JupyterLab dan pluginnya untuk memastikan tidak ada konflik dependensi dengan lingkungan kernel. Jika ingin menginstal ekstensi JupyterLab tambahan, Anda harus menginstalnya dalam lingkungan jupyterlab. Contoh:

    # DockerFile
    FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest
    RUN micromamba activate jupyterlab && \
      jupyter nbextension install nbdime

Metadata Penampung Kustom

Selain daftar standar metadata yang dapat diterapkan ke instance Vertex AI Workbench, instance dengan penampung kustom menyertakan metadata berikut untuk mengelola pembuatan instance penampung payload:

Fitur Deskripsi Kunci metadata Nilai dan default yang diterima
Mengaktifkan Cloud Storage FUSE pada image container

Memasang /dev/fuse ke penampung dan mengaktifkan gcsfuse untuk digunakan di penampung.

container-allow-fuse
  • true: Mengaktifkan Cloud Storage FUSE.
  • false (default): Tidak mengaktifkan Cloud Storage FUSE.
Parameter pengoperasian penampung tambahan

Menambahkan parameter penampung tambahan ke nerdctl run, dengan nerdctl adalah Containerd CLI.

container-custom-params

String parameter operasi penampung. Contoh: --v /mnt/disk1:/mnt/disk1.

Flag lingkungan penampung tambahan

Menyimpan variabel Lingkungan ke dalam flag di bagian /mnt/stateful_partition/workbench/container_env dan menambahkannya ke nerdctl run.

container-env-file

String variabel lingkungan penampung. Contoh: CONTAINER_NAME=derivative-container.

URI penampung payload

Payload penampung kustom dengan JupyterLab yang ditarik ke instance Vertex AI Workbench.

custom-container-payload

String URI. Contoh: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest.

Mengupgrade Container Kustom

Jika penampung kustom perlu diperbarui, Anda dapat melakukannya dengan memperbarui nilai metadata custom-container-payload dengan URI penampung baru. Setiap mulai ulang container akan mencoba menarik container dari URI yang disimpan di custom-container-payload.

Jika Anda menggunakan tag :latest, penampung dasar akan diperbarui pada setiap mulai ulang. Lihat contoh berikut:

custom-container-payload = us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:latest

Untuk menghindari update penampung dasar, Anda dapat menentukan versinya. Lihat contoh berikut:

custom-container-payload = us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-container:20240920-2200-rc0

Menjalankan alat diagnostik

Alat diagnostik memeriksa dan memverifikasi status berbagai layanan Vertex AI Workbench. Untuk mempelajari lebih lanjut, lihat Tugas yang dilakukan oleh alat diagnostik.

Saat Anda membuat instance Vertex AI Workbench menggunakan penampung kustom, alat diagnostik tidak tersedia sebagai skrip di lingkungan host yang dapat dijalankan pengguna. Sebagai gantinya, kode ini dikompilasi menjadi biner dan dimuat ke dalam penampung runtime Google yang dibuat untuk menjalankan layanan diagnostik di lingkungan Container-Optimized OS. Lihat Ringkasan Container-Optimized OS.

Untuk menjalankan alat diagnostik, selesaikan langkah-langkah berikut:

  1. Gunakan ssh untuk terhubung ke instance Vertex AI Workbench.

  2. Di terminal SSH, jalankan perintah berikut:

    sudo docker exec diagnostic-service ./diagnostic_tool
  3. Untuk melihat opsi perintah tambahan, jalankan perintah berikut:

    sudo docker exec diagnostic-service ./diagnostic_tool --help

Untuk informasi selengkapnya tentang opsi alat diagnostik, lihat dokumentasi status kondisi pemantauan.

Untuk menjalankan alat diagnostik menggunakan REST API, lihat dokumentasi REST API.

Mengakses instance

Anda dapat mengakses instance melalui URL proxy.

Setelah instance dibuat dan aktif, Anda bisa mendapatkan URL proxy menggunakan gcloud CLI.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • INSTANCE_NAME: nama instance Vertex AI Workbench Anda
  • PROJECT_ID: project ID Anda
  • LOCATION adalah zona tempat instance Anda berada.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud workbench instances describe INSTANCE_NAME \
--project=PROJECT_ID \
--location=LOCATION | grep proxy-url

Windows (PowerShell)

gcloud workbench instances describe INSTANCE_NAME `
--project=PROJECT_ID `
--location=LOCATION | grep proxy-url

Windows (cmd.exe)

gcloud workbench instances describe INSTANCE_NAME ^
--project=PROJECT_ID ^
--location=LOCATION | grep proxy-url
proxy-url: 7109d1b0d5f850f-dot-datalab-vm-staging.googleusercontent.com

Perintah describe menampilkan URL proxy Anda. Untuk mengakses instance, buka URL proxy di browser web.

Untuk mengetahui informasi selengkapnya tentang perintah untuk mendeskripsikan instance dari command line, lihat dokumentasi gcloud CLI.