Vertex AI membuat notebook yang dikelola pengguna dan aman

1. Pengantar

Instance notebook yang dikelola pengguna Vertex AI Workbench memungkinkan Anda membuat dan mengelola instance virtual machine (VM) deep learning yang sudah dikemas dengan JupyterLab.

Instance notebook yang dikelola pengguna memiliki rangkaian paket deep learning bawaan, termasuk dukungan untuk framework TensorFlow dan PyTorch. Anda dapat mengonfigurasi instance khusus CPU, atau yang mendukung GPU.

Yang akan Anda bangun

Tutorial ini menjelaskan proses deployment notebook yang dikelola pengguna secara aman berdasarkan praktik terbaik dari Networking and Security. Langkah-langkah berikut diperlukan:

  1. Membuat VPC
  2. Membuat Cloud Router dan Cloud NAT
  3. Mengonfigurasi instance notebook dengan setelan keamanan yang sesuai

Tutorial ini memberikan petunjuk mendetail untuk setiap langkah. Panduan ini juga mencakup tips dan praktik terbaik untuk mengamankan notebook yang dikelola pengguna. Gambar 1 adalah ilustrasi deployment menggunakan VPC Mandiri.

Gambar 1

2292244ba0b11f71.pngS

Yang akan Anda pelajari

  • Cara menentukan apakah VPC Bersama yang Mandiri tepat untuk organisasi Anda
  • Cara membuat VPC Mandiri
  • Cara membuat Cloud Router dan Cloud NAT
  • Cara membuat notebook yang dikelola pengguna
  • Cara mengakses notebook yang dikelola pengguna
  • Cara memantau kondisi notebook yang dikelola pengguna
  • Cara membuat dan menerapkan jadwal instance

Yang Anda butuhkan

  • Project Google Cloud

Izin IAM

2. Jaringan VPC

Anda dapat membayangkan jaringan VPC dengan cara yang sama seperti jaringan fisik, hanya saja jaringan ini divirtualisasikan di dalam Google Cloud. Jaringan VPC adalah resource global yang terdiri dari subnet regional. Jaringan VPC secara logis terpisah satu sama lain dalam Google Cloud.

VPC Mandiri

Gambar 2 adalah contoh VPC global mandiri yang terdiri dari subnet regional (us-central1) selain Cloud Router dan Cloud NAT yang digunakan untuk memungkinkan Notebook yang Dikelola Pengguna membuat konektivitas ke Internet dengan aman.

Gambar 2

2292244ba0b11f71.pngS

VPC Bersama

VPC Bersama memungkinkan Anda mengekspor subnet dari jaringan VPC dalam project host ke project layanan di organisasi yang sama. Project host berisi resource jaringan yang dibagikan dengan project layanan seperti subnet, Cloud NAT, dan aturan firewall. Project layanan berisi resource tingkat aplikasi yang memanfaatkan resource jaringan di project host.

Gambar 3 adalah ilustrasi dari VPC Bersama Global, tempat infrastruktur jaringan dan keamanan di-deploy di project host, sementara workload di-deploy dalam project layanan.

Gambar 3

1354a9323c8e5787.pngS

VPC Mandiri vs Bersama

Jaringan VPC tunggal sudah memadai untuk banyak kasus penggunaan sederhana, karena lebih mudah dibuat, dikelola, dan dipahami daripada alternatif yang lebih kompleks. VPC Bersama adalah alat yang efektif untuk organisasi yang memiliki beberapa tim, karena memungkinkan mereka memperluas kesederhanaan arsitektur jaringan VPC di beberapa grup kerja melalui penggunaan project layanan.

Praktik Terbaik VPC yang digunakan dalam tutorial

  • Aktifkan Cloud NAT untuk mengakses notebook.
  • Aktifkan Akses Google Pribadi saat membuat subnet.
  • Buat aturan firewall preskriptif untuk mengurangi traffic yang tidak diminta.Misalnya, jangan gunakan 0.0.0.0/0 tcp, melainkan tentukan subnet atau alamat IP host yang tepat.
  • Manfaatkan kebijakan firewall untuk memperdalam cakupan aturan masuk, misalnya lokasi geografis, daftar kecerdasan ancaman, nama domain sumber, dll.

3. Praktik Terbaik Notebook

Menyesuaikan ukuran instance dengan tepat

  • Menghentikan dan/atau menghapus instance yang tidak digunakan
  • Menggunakan instance awal yang lebih kecil dan melakukan iterasi dengan data sampel yang lebih kecil
  • Meningkatkan skala instance sesuai kebutuhan
  • Bereksperimen dengan set data yang lebih kecil

Memilih jenis mesin yang tepat

  • VM yang dioptimalkan biaya
  • Memanfaatkan resource hardware dengan lebih baik untuk menekan biaya
  • Hemat sampai 31% dibandingkan dengan N1
  • Penghematan tambahan (20-50%) untuk komitmen 1 atau 3 tahun
  • Memperbesar ukuran mesin atau menambahkan GPU dapat membantu meningkatkan performa dan mengatasi error batasan memori

Menjadwalkan instance untuk dimatikan

  • Menonaktifkan instance saat tidak ada aktivitas (membayar hanya untuk penyimpanan disk)
  • Menjadwalkan instance VM notebook agar dimatikan dan dimulai secara otomatis pada jam tertentu

Memantau status kondisi notebook

Pertimbangan Keamanan

Berikut adalah pertimbangan keamanan yang direkomendasikan saat membuat notebook yang dikelola pengguna:

  • Pilih opsi untuk "khusus pengguna tunggal" akses notebook. Jika pengguna yang ditentukan bukan pembuat instance, Anda harus memberikan peran Service Account User (roles/iam.serviceAccountUser) kepada pengguna tertentu pada akun layanan instance.
  • Nonaktifkan opsi berikut:
  • akses root
  • nbconvert
  • mendownload file dari UI JupyterLab
  • Cloud NAT akan digunakan, bukan menetapkan alamat IP eksternal ke notebook yang dikelola pengguna.
  • Pilih opsi komputasi berikut:
  • Booting Aman
  • Virtual Trusted Platform Module (vTPM)
  • Pemantauan integritas

4. Sebelum memulai

Mengupdate project untuk mendukung tutorial

Tutorial ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud config list project
gcloud config set project [your-project-name]
projectid=your-project-name
echo $projectid

5. Penyiapan VPC

Membuat VPC Mandiri

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks create securevertex-vpc --project=$projectid --subnet-mode=custom

Membuat subnet notebook yang dikelola pengguna

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create securevertex-subnet-a --project=$projectid --range=10.10.10.0/28 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-access

Konfigurasi Cloud Router dan NAT

Cloud NAT digunakan dalam tutorial untuk mendownload paket software notebook karena instance notebook yang dikelola pengguna tidak memiliki alamat IP eksternal. Cloud NAT juga menawarkan kemampuan NAT keluar, yang berarti host internet tidak diizinkan untuk memulai komunikasi dengan notebook yang dikelola pengguna, sehingga membuatnya lebih aman.

Di dalam Cloud Shell, buat router cloud regional.

gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1

Di dalam Cloud Shell, buat gateway cloud nat regional.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. Membuat bucket penyimpanan

Bucket penyimpanan menawarkan upload/pengambilan file yang aman. Dalam tutorial, penyimpanan cloud akan berisi skrip pasca startup untuk menginstal paket AI Generatif di notebook yang dikelola pengguna.

Buat bucket Cloud Storage dan ganti BUCKET_NAME dengan nama unik global yang Anda inginkan.

Di dalam Cloud Shell, buat bucket penyimpanan yang unik.

gsutil mb -l us-central1 -b on gs://BUCKET_NAME

Simpan ‘BUCKET_NAME' selama durasi lab

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

7. Membuat skrip startup postingan

Untuk mengaktifkan download paket AI Generatif, buat skrip pasca-startup di Cloud Shell menggunakan vi atau editor nano dan simpan sebagai poststartup.sh.

#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

Contoh:

vpc_admin@cloudshell$ more poststartup.sh 
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
     google-cloud-bigquery \
     google-cloud-pipeline-components \
     google-cloud-aiplatform \
     seaborn \
     kfp" >> /tmp/notebook_config.log 2>&1

Mengupload skrip startup postingan ke bucket penyimpanan dari Cloud Shell menggunakan gsutil

gsutil cp poststartup.sh gs://$BUCKET_NAME

8. Membuat akun layanan

Untuk memberikan tingkat kontrol yang baik atas notebook yang dikelola pengguna, diperlukan akun layanan. Setelah dibuat, izin akun layanan dapat diubah berdasarkan persyaratan bisnis. Dalam tutorial, akun layanan akan menerapkan aturan berikut:

Anda harus Service Account API sebelum melanjutkan.

Di dalam Cloud Shell, buat akun layanan.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

Di dalam Cloud Shell, perbarui akun layanan dengan peran Storage Object Viewer

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"

Di dalam Cloud Shell, perbarui akun layanan dengan peran Vertex AI User

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

Di dalam Cloud Shell, cantumkan akun layanan dan catat alamat email yang akan digunakan saat membuat notebook yang dikelola pengguna.

gcloud iam service-accounts list

Contoh:

$ gcloud iam service-accounts list
DISPLAY NAME: user-managed-notebook-sa
EMAIL: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
DISABLED: False

9. Membuat notebook yang dikelola pengguna dan aman

Instance notebook yang dikelola pengguna adalah instance virtual machine Deep Learning dengan library data science dan machine learning terbaru yang sudah terinstal. Anda dapat memilih untuk menyertakan GPU Nvidia untuk akselerasi hardware.

Mengaktifkan API konsumen

Notebooks API

Membuat notebook yang dikelola pengguna

  1. Buka Workbench
  2. Pilih {i>User-Managed Notebooks<i}, lalu pilih {i>Create Notebook<i}. Halaman Buat notebook yang dikelola pengguna akan terbuka.
  3. Jika notebook sudah ada diterapkan, pilih Notebook yang Dikelola Pengguna → Notebook Baru → Sesuaikan
  4. Pada halaman Create a user-managed notebook, di bagian Details, berikan informasi berikut untuk instance baru Anda:
  • Nama: Beri nama untuk instance baru Anda.
  • Region dan Zona: Tutorial ini akan menggunakan region us-central1 dan zona us-central1-a

Pilih Lanjutkan

  1. Di bagian Environment, berikan hal berikut:
  • Sistem operasi: Pilih sistem operasi yang ingin Anda gunakan.
  • Pilih lingkungan yang ingin Anda gunakan.
  • Versi: Pilih versi yang ingin Anda gunakan.
  • Skrip pasca-startup (Opsional, gunakan skrip AI generatif yang dibuat sebelumnya), pilih Jelajahi untuk memilih skrip yang akan dijalankan setelah instance dimulai.
  • Metadata: Opsional: Berikan kunci metadata kustom untuk instance.

Pilih Lanjutkan

  1. Di bagian Jenis mesin, berikan hal berikut:
  • Machine type: Pilih jumlah CPU dan jumlah RAM untuk instance baru Anda. Vertex AI Workbench memberikan estimasi biaya bulanan untuk setiap jenis mesin yang Anda pilih.
  • Jenis GPU: Pilih jenis GPU dan Jumlah GPU untuk instance baru Anda. Untuk mengetahui informasi tentang berbagai GPU, lihat GPU di Compute Engine.
  • Centang kotak Instal driver GPU NVIDIA secara otomatis untuk saya.

Shielded VM

  • Aktifkan Booting Aman
  • Aktifkan vTPM
  • Aktifkan Pemantauan Integritas

Pilih Lanjutkan

  1. Di bagian Disks, sediakan hal berikut:
  • Disk: Opsional: Untuk mengubah setelan boot disk atau disk data default, pilih jenis Boot disk, Ukuran boot disk dalam GB, Jenis disk data, dan Ukuran disk data dalam GB yang Anda inginkan. Untuk mengetahui informasi selengkapnya tentang jenis disk, lihat Opsi penyimpanan.
  • Hapus ke sampah: Opsional: Pilih kotak centang ini untuk menggunakan perilaku sampah default sistem operasi. Jika Anda menggunakan perilaku sampah default, file yang dihapus menggunakan antarmuka pengguna JupyterLab dapat dipulihkan tetapi file yang dihapus ini menggunakan ruang disk.
  • Pencadangan: Opsional: Untuk menyinkronkan lokasi Cloud Storage dengan disk data instance Anda, pilih Jelajahi dan tentukan lokasi Cloud Storage. Untuk mempelajari biaya penyimpanan, lihat Harga Cloud Storage.
  • Enkripsi: Kunci enkripsi yang dikelola Google

Pilih Lanjutkan

  1. Di bagian Networking, berikan hal berikut:
  • Jaringan: Pilih Jaringan dalam project ini atau Jaringan yang dibagikan dengan saya. Jika menggunakan VPC Bersama di project host, Anda juga harus memberikan peran Pengguna Jaringan Compute (roles/compute.networkUser) kepada Agen Layanan Notebook dari project layanan tersebut.
  • Di kolom Jaringan, pilih jaringan yang Anda inginkan. Tutorial ini menggunakan jaringan, securevertex-vpc. Anda dapat memilih jaringan VPC, selama jaringan tersebut mengaktifkan Akses Google Pribadi atau dapat mengakses internet. Di kolom Subnetwork, pilih subnetwork yang Anda inginkan. Dalam tutorial ini, subnetwork securevertex-subnet-a digunakan.
  • Batalkan pilihan penetapan alamat IP eksternal
  • Pilih izinkan akses proxy

Pilih Lanjutkan

81bb7dbe31fbf587.pngS

  1. Di bagian IAM dan keamanan, berikan hal berikut:
  • Pilih Satu pengguna, lalu di kolom Email pengguna, masukkan akun pengguna yang ingin Anda beri akses. Jika pengguna yang ditentukan bukan pembuat instance, Anda harus memberikan peran Service Account User (roles/iam.serviceAccountUser) kepada pengguna tertentu pada akun layanan instance.
  • Batalkan pilihan Gunakan akun layanan Compute Engine default pada VM untuk memanggil Google Cloud API
  • Masukkan alamat email akun layanan yang baru dibuat, misalnya: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com

Opsi keamanan

  • Batalkan pilihan untuk mengaktifkan akses root ke instance
  • Batalkan pilihan aktifkan nbconvert
  • Batalkan pilihan Aktifkan download file dari UI JupyterLab
  • Aktifkan terminal (Batalkan pilihan untuk lingkungan produksi)

Pilih Lanjutkan

e19f3cd05a2c1b7f.png

  1. Di bagian Kondisi sistem, berikan hal berikut

Upgrade lingkungan dan kesehatan sistem

  • Centang kotak Aktifkan upgrade otomatis lingkungan.
  • Pilih apakah akan mengupgrade notebook Anda secara Mingguan atau Bulanan.

Di Kesehatan dan pelaporan sistem, centang atau hapus centang pada kotak berikut:

  • Aktifkan laporan kondisi sistem
  • Melaporkan metrik kustom ke Cloud Monitoring
  • Instal agen Cloud Monitoring

Pilih Buat.

10. Validasi

Vertex AI Workbench membuat instance notebook yang dikelola pengguna berdasarkan properti yang Anda tentukan dan memulai instance secara otomatis. Saat instance siap digunakan, Vertex AI Workbench mengaktifkan link Open JupyterLab yang memungkinkan pengguna akhir mengakses notebook.

11. Kemampuan observasi

Memantau metrik sistem dan aplikasi melalui Monitoring

Untuk instance notebook yang dikelola pengguna dan sudah menginstal Monitoring, Anda dapat memantau metrik sistem dan aplikasi menggunakan konsol Google Cloud:

  1. Di konsol Google Cloud, buka halaman User-managed notebooks.
  2. Klik nama instance yang metrik sistem dan aplikasi-nya ingin Anda lihat.
  3. Di halaman Detail notebook, klik tab Pemantauan. Tinjau metrik sistem dan aplikasi untuk instance Anda.

12. Buat Jadwal Notebook

Jadwal instance memungkinkan Anda memulai dan menghentikan instance virtual machine (VM) secara otomatis. Penggunaan jadwal instance untuk mengotomatiskan deployment instance VM dapat membantu Anda mengoptimalkan biaya dan mengelola instance VM dengan lebih efisien. Anda dapat menggunakan jadwal instance untuk workload berulang dan satu kali. Misalnya, gunakan jadwal instance untuk hanya menjalankan instance VM selama jam kerja atau untuk menyediakan kapasitas bagi peristiwa satu kali.

Untuk menggunakan jadwal instance, buat kebijakan resource yang menjelaskan perilaku mulai dan berhenti, lalu lampirkan kebijakan tersebut ke satu atau beberapa instance VM.

Tutorial ini akan menunjukkan cara membuat jadwal instance yang akan mengaktifkan notebook pada pukul 07.00 dan mematikannya pada pukul 18.00.

Untuk membuat jadwal instance, Anda memerlukan izin compute.instances.start dan compute.instances.stop, sehingga peran kustom direkomendasikan yang dibuat oleh administrator yang diberikan kepada Anda.

Setelah dibuat, peran khusus akan ditetapkan ke akun layanan Compute Engine default di project Anda, yang akan memungkinkan jadwal instance untuk memulai dan menghentikan notebook Anda.

Membuat peran khusus

Di dalam Cloud Shell, buat peran khusus, VmScheduler, lalu sertakan izin yang diperlukan.

gcloud iam roles create Vm_Scheduler --project=$projectid \
    --title=vm-scheduler-notebooks \
    --permissions="compute.instances.start,compute.instances.stop" --stage=ga

Menjelaskan peran khusus dari Cloud Shell.

gcloud iam roles describe Vm_Scheduler --project=$projectid

Contoh:

$ gcloud iam roles describe Vm_Scheduler --project=$projectid
etag: BwX991B0_kg=
includedPermissions:
- compute.instances.start
- compute.instances.stop
name: projects/$projectid/roles/Vm_Scheduler
stage: GA
title: vm-scheduler-notebooks

Mengupdate akun layanan default

Di bagian berikut, Anda akan mengidentifikasi dan mengupdate akun layanan default yang terdiri dari format: PROJECT_NUMBER-compute@developer.gserviceaccount.com

Di Cloud Shell, identifikasi nomor project saat ini.

gcloud projects list --filter=$projectid

Di Cloud Shell, simpan nomor project sebagai variabel.

project_number=your_project_number
echo $project_number

Di Cloud Shell, perbarui akun layanan komputasi default dengan peran khusus, VM_Scheduler.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

Membuat jadwal instance

Di Cloud Shell, buat jadwal mulai dan berhenti.

gcloud compute resource-policies create instance-schedule optimize-notebooks \
    --region=us-central1 \
    --vm-start-schedule='0 7 * * *' \
    --vm-stop-schedule='0 18 * * *' \
        --timezone=America/Chicago

Di Cloud Shell, simpan nama notebook Anda.

gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm

Anda dapat melampirkan jadwal instance ke setiap instance VM yang ada dan berada di region yang sama dengan jadwal instance.

Di Cloud Shell, kaitkan jadwal dengan notebook Anda.

gcloud compute instances add-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a

13. Pembersihan

Hapus notebook yang dikelola pengguna dari konsol, buka Vertex AI → Workbench, pilih dan hapus notebook.

Hapus komponen VPC dari Cloud Shell.

gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet

gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet

gcloud compute instances remove-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a --quiet

gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet

gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet

gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet 

gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet 

gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"

gcloud iam roles delete Vm_Scheduler --project=$projectid

gcloud compute networks delete securevertex-vpc --quiet 

14. Selamat

Bagus! Anda telah berhasil mengonfigurasi dan memvalidasi notebook aman yang dikelola pengguna dengan membuat VPC Mandiri kustom menggunakan praktik terbaik hardening keamanan untuk notebook terkelola dan menerapkan jadwal instance untuk mengoptimalkan pengeluaran.

Apa selanjutnya?

Lihat beberapa tutorial ini...

Bacaan lebih lanjut & Video

Dokumen referensi