Halaman ini menunjukkan cara menggunakan shell interaktif untuk memeriksa container tempat kode pelatihan Anda berjalan. Anda dapat menjelajahi sistem file dan menjalankan utilitas proses debug di setiap container bawaan atau container kustom yang berjalan di Vertex AI.
Penggunaan shell interaktif untuk memeriksa container pelatihan dapat membantu Anda men-debug masalah terkait kode pelatihan atau konfigurasi Vertex AI. Misalnya, Anda dapat menggunakan shell interaktif untuk melakukan hal berikut:
- Menjalankan alat pelacakan dan pembuatan profil.
- Menganalisis penggunaan GPU.
- Memeriksa izin Google Cloud yang tersedia untuk container.
Vertex AI juga terintegrasi dengan TensorFlow Profiler, yang dapat Anda gunakan untuk men-debug performa pelatihan model untuk tugas pelatihan kustom Anda. Untuk mengetahui detailnya, lihat Membuat profil performa pelatihan model menggunakan Profiler.
Sebelum memulai
Anda dapat menggunakan shell interaktif saat melakukan pelatihan kustom dengan
resource CustomJob
, resource HyperparameterTuningJob
, atau resource
TrainingPipeline
kustom. Saat menyiapkan kode
pelatihan dan mengonfigurasi resource
pelatihan kustom pilihan Anda, pastikan
Anda memenuhi persyaratan berikut:
Pastikan container pelatihan Anda telah menginstal
bash
.Semua container pelatihan bawaan telah terinstal
bash
. Jika Anda membuat container kustom untuk pelatihan, gunakan container dasar yang menyertakanbash
atau instalbash
di Dockerfile Anda.Lakukan pelatihan kustom di region yang mendukung shell interaktif.
Pastikan siapa saja yang ingin mengakses shell interaktif memiliki izin berikut untuk project Google Cloud tempat pelatihan kustom dijalankan:
aiplatform.customJobs.create
aiplatform.customJobs.get
aiplatform.customJobs.cancel
Jika Anda memulai pelatihan kustom sendiri, kemungkinan besar Anda sudah memiliki izin ini dan dapat mengakses shell interaktif. Namun, jika ingin menggunakan shell interaktif untuk memeriksa resource pelatihan kustom yang dibuat oleh orang lain di organisasi, Anda mungkin perlu mendapatkan izin ini.
Salah satu cara untuk mendapatkan izin ini adalah dengan meminta administrator organisasi memberi Anda peran Pengguna Vertex AI (
roles/aiplatform.user
).
Persyaratan untuk kasus lanjutan
Jika Anda menggunakan fitur lanjutan tertentu, penuhi persyaratan tambahan berikut:
Jika Anda melampirkan akun layanan kustom ke resource pelatihan kustom, pastikan setiap pengguna yang ingin mengakses shell interaktif memiliki izin
iam.serviceAccounts.actAs
untuk akun layanan yang terpasang.Panduan untuk akun layanan kustom mencatat bahwa Anda harus memiliki izin ini agar dapat melampirkan akun layanan. Anda juga memerlukan izin ini untuk melihat shell interaktif selama pelatihan kustom.
Misalnya, untuk membuat
CustomJob
dengan akun layanan terlampir, Anda harus memiliki iziniam.serviceAccounts.actAs
untuk akun layanan. Jika salah satu rekan kerja Anda ingin melihat shell interaktif untukCustomJob
ini, mereka juga harus memiliki iziniam.serviceAccounts.actAs
yang sama.Jika Anda telah mengonfigurasi project untuk menggunakan Kontrol Layanan VPC dengan Vertex AI, pertimbangkan batasan tambahan berikut:
Anda tidak dapat menggunakan IP pribadi untuk pelatihan kustom.
Dari dalam shell interaktif, Anda tidak dapat mengakses resource internet publik atau Google Cloud di luar perimeter layanan.
Untuk mengamankan akses ke shell interaktif, Anda harus menambahkan
notebooks.googleapis.com
sebagai layanan terbatas dalam perimeter layanan, selainaiplatform.googleapis.com
. Jika Anda hanya membatasiaiplatform.googleapis.com
dan bukannotebooks.googleapis.com
, pengguna dapat mengakses shell interaktif dari mesin di luar perimeter layanan, yang mengurangi manfaat keamanan dari penggunaan Kontrol Layanan VPC.
Mengaktifkan shell interaktif
Guna mengaktifkan shell interaktif untuk resource pelatihan kustom, tetapkan
kolom API enableWebAccess
ke true
saat Anda membuat CustomJob
, HyperparameterTuningJob
, atau TrainingPipeline
kustom.
Contoh berikut menunjukkan cara melakukannya menggunakan beberapa alat yang berbeda:
Konsol
Ikuti panduan untuk membuat TrainingPipeline
kustom di Konsol Google Cloud. Di panel Train new model, saat Anda mencapai langkah Detail model, lakukan hal berikut:
Klik Advanced options.
Centang kotak Enable training debugging.
Kemudian, selesaikan alur kerja Train new model lainnya.
gcloud
Jika Anda ingin membuat
CustomJob
, jalankan perintahgcloud ai custom-jobs create
, dan tentukan flag--enable-web-access
pada perintah ini.Jika Anda ingin membuat
HyperparameterTuningJob
, jalankan perintahgcloud ai hp-tuning-jobs create
, dan tentukan flag--enable-web-access
pada perintah ini.
Untuk mempelajari cara menggunakan perintah ini, lihat panduan untuk
membuat CustomJob
dan panduan
untuk membuat HyperparameterTuningJob
.
API
Isi permintaan REST sebagian berikut menunjukkan tempat untuk menentukan kolom enableWebAccess
untuk setiap jenis resource pelatihan kustom:
CustomJob
Contoh berikut adalah isi permintaan sebagian untuk
metode
API projects.locations.customJobs.create
:
{
...
"jobSpec": {
...
"enableWebAccess": true
}
...
}
Untuk contoh pengiriman permintaan API guna membuat CustomJob
, lihat
Membuat tugas pelatihan kustom.
HyperparameterTuningJob
Contoh berikut adalah isi permintaan sebagian untuk
metode
API projects.locations.hyperparameterTuningJobs.create
:
{
...
"trialJobSpec": {
...
"enableWebAccess": true
}
...
}
Untuk contoh pengiriman permintaan API untuk membuat
HyperparameterTuningJob
, lihat Menggunakan penyesuaian
hyperparameter.
TrainingPipeline Kustom
Contoh berikut menunjukkan isi permintaan sebagian untuk
metode
API projects.locations.trainingPipelines.create
.
Pilih salah satu tab berikut, bergantung pada apakah Anda menggunakan
penyesuaian hyperparameter:
Tanpa penyesuaian hyperparameter
{
...
"trainingTaskInputs": {
...
"enableWebAccess": true
}
...
}
Dengan penyesuaian hyperparameter
{
...
"trainingTaskInputs": {
...
"trialJobSpec": {
...
"enableWebAccess": true
}
}
...
}
Untuk contoh pengiriman permintaan API guna membuat TrainingPipeline
kustom, lihat Membuat pipeline pelatihan.
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API.
Tetapkan parameter enable_web_access
ke true
saat Anda menjalankan salah satu
metode berikut:
Jika Anda ingin membuat
CustomJob
, gunakan metodeCustomJob.run
.Jika Anda ingin membuat
HyperparameterTuningJob
, gunakan metodeHyperparameterTuningJob.run
.Jika ingin membuat
TrainingPipeline
kustom, gunakan salah satu metode berikut:
Menavigasi ke shell interaktif
Setelah Anda memulai pelatihan kustom sesuai dengan panduan di bagian sebelumnya, Vertex AI akan menghasilkan satu atau beberapa URI yang dapat Anda gunakan untuk mengakses shell interaktif. Vertex AI menghasilkan URI unik untuk setiap node pelatihan dalam tugas Anda.
Anda dapat menavigasi ke shell interaktif dengan salah satu cara berikut:
- Mengklik link di Konsol Google Cloud
- Gunakan Vertex AI API untuk mendapatkan URI akses web shell
Menavigasi dari Konsol Google Cloud
Di Konsol Google Cloud, di bagian Vertex AI, buka salah satu halaman berikut:
Jika Anda tidak menggunakan penyesuaian hyperparameter, buka halaman Custom jobs:
Jika Anda menggunakan penyesuaian hyperparameter, buka halaman Hyperparameter tuning job:
Klik nama fasilitas pelatihan kustom Anda.
Jika Anda membuat
TrainingPipeline
untuk pelatihan kustom, klik namaCustomJob
atauHyperparameterTuningJob
yang dibuat olehTrainingPipeline
Anda. Misalnya, jika pipeline Anda memiliki namaPIPELINE_NAME
, nama ini mungkin disebutPIPELINE_NAME-custom-job
atauPIPELINE_NAME-hyperparameter-tuning-job
.Di halaman tugas Anda, klik Launch web terminal. Jika tugas Anda menggunakan beberapa node, klik Launch web terminal di samping node yang ingin Anda buat shell interaktifnya.
Perhatikan, Anda hanya dapat mengakses shell interaktif saat tugas berjalan. Jika Anda tidak melihat Launch web terminal, hal ini mungkin karena Vertex AI belum mulai menjalankan tugas Anda, atau karena tugas tersebut sudah selesai atau gagal. Jika Status tugas adalah
Queued
atauPending
, tunggu sebentar; lalu coba muat ulang halaman.Jika Anda menggunakan penyesuaian hyperparameter, ada link Luncurkan terminal web terpisah untuk setiap uji coba.
Mendapatkan URI akses web dari API
Gunakan metode API
projects.locations.customJobs.get
atau
metode API
projects.locations.hyperparameterTuningJobs.get
untuk
melihat URI yang dapat Anda gunakan untuk mengakses shell interaktif.
Bergantung pada jenis resource pelatihan kustom yang Anda gunakan, pilih salah satu tab berikut untuk melihat contoh cara menemukan kolom API webAccessUris
, yang berisi URI shell interaktif untuk setiap node di tugas:
CustomJob
Tab berikut menunjukkan berbagai cara untuk mengirim
permintaan projects.locations.customJobs.get
:
gcloud
Jalankan perintah gcloud ai custom-jobs describe
:
gcloud ai custom-jobs describe JOB_ID \
--region=LOCATION \
--format=json
Ganti kode berikut:
JOB_ID: ID numerik tugas Anda. ID ini adalah bagian terakhir dari kolom
name
tugas. Anda mungkin sudah melihat ID saat membuat tugas. (Jika tidak mengetahui ID tugas, Anda dapat menjalankan perintahgcloud ai custom-jobs list
dan mencari tugas yang sesuai.)LOCATION: Wilayah tempat Anda membuat tugas.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
LOCATION: Wilayah tempat Anda membuat tugas.
PROJECT_ID: Project ID Anda.
JOB_ID: ID numerik tugas Anda. ID ini adalah bagian terakhir dari kolom
name
tugas. Anda mungkin sudah melihat ID saat membuat tugas.
Metode HTTP dan URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs/JOB_ID
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Pada output, cari berikut ini:
{
...
"state": "JOB_STATE_RUNNING",
...
"webAccessUris": {
"workerpool0-0": "INTERACTIVE_SHELL_URI"
}
}
Jika Anda tidak melihat kolom webAccessUris
, hal ini mungkin karena
Vertex AI belum mulai menjalankan tugas Anda. Pastikan Anda melihat
JOB_STATE_RUNNING
di kolom state
. Jika statusnya adalah JOB_STATE_QUEUED
atau
JOB_STATE_PENDING
, tunggu sebentar; kemudian coba dapatkan info proyek lagi.
HyperparameterTuningJob
Tab berikut menunjukkan berbagai cara untuk mengirim
permintaan projects.locations.hyperparameterTuningJobs.get
:
gcloud
Jalankan perintah gcloud ai hp-tuning-jobs describe
:
gcloud ai hp-tuning-jobs describe JOB_ID \
--region=LOCATION \
--format=json
Ganti kode berikut:
JOB_ID: ID numerik tugas Anda. ID ini adalah bagian terakhir dari kolom
name
tugas. Anda mungkin sudah melihat ID saat membuat tugas. (Jika tidak mengetahui ID tugas, Anda dapat menjalankan perintahgcloud ai hp-tuning-jobs list
dan mencari tugas yang sesuai.)LOCATION: Wilayah tempat Anda membuat tugas.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
LOCATION: Wilayah tempat Anda membuat tugas.
PROJECT_ID: Project ID Anda.
JOB_ID: ID numerik tugas Anda. ID ini adalah bagian terakhir dari kolom
name
tugas. Anda mungkin sudah melihat ID saat membuat tugas.
Metode HTTP dan URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/hyperparameterTuningJobs/JOB_ID
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Pada output, cari berikut ini:
{
...
"state": "JOB_STATE_RUNNING",
...
"trials": [
...
{
...
"state": "ACTIVE",
...
"webAccessUris": {
"workerpool0-0": "INTERACTIVE_SHELL_URI"
}
}
],
}
Jika Anda tidak melihat kolom webAccessUris
, hal ini mungkin karena
Vertex AI belum mulai menjalankan tugas Anda. Pastikan Anda melihat
JOB_STATE_RUNNING
di kolom state
. Jika statusnya adalah JOB_STATE_QUEUED
atau
JOB_STATE_PENDING
, tunggu sebentar; kemudian coba dapatkan info proyek lagi.
Vertex AI menyediakan sekumpulan URI shell interaktif untuk setiap
uji coba penyesuaian
hyperparameter saat
uji coba memasuki status ACTIVE
. Jika Anda ingin mendapatkan URI shell interaktif
untuk uji coba selanjutnya, dapatkan info tugas lagi setelah uji coba tersebut dimulai.
Contoh sebelumnya menunjukkan output yang diharapkan untuk pelatihan replika tunggal: satu URI untuk node pelatihan utama. Jika Anda melakukan pelatihan terdistribusi, outputnya akan berisi satu URI untuk setiap node pelatihan, yang diidentifikasi oleh pool worker.
Misalnya, jika tugas Anda memiliki pool worker utama dengan satu replika dan
pool worker sekunder dengan dua replika, kolom webAccessUris
akan terlihat
mirip dengan berikut ini:
{
"workerpool0-0": "URI_FOR_PRIMARY",
"workerpool1-0": "URI_FOR_FIRST_SECONDARY",
"workerpool1-1": "URI_FOR_SECOND_SECONDARY"
}
Menggunakan shell interaktif
Untuk menggunakan shell interaktif bagi node pelatihan, buka salah satu URI yang Anda temukan di bagian sebelumnya. Shell Bash akan muncul di browser, yang memberi Anda akses ke sistem file container tempat Vertex AI menjalankan kode pelatihan Anda.
Bagian berikut menjelaskan beberapa hal yang perlu dipertimbangkan saat menggunakan shell dan memberikan beberapa contoh alat pemantauan yang dapat Anda gunakan dalam shell.
Mencegah tugas berakhir
Setelah Vertex AI selesai menjalankan tugas atau uji coba, Anda akan
langsung kehilangan akses ke shell interaktif Anda. Jika hal ini terjadi, Anda mungkin
melihat pesan command terminated with exit code 137
atau shell mungkin berhenti
merespons. Jika Anda membuat file apa pun dalam sistem file container, file tersebut tidak akan
bertahan setelah tugas berakhir.
Dalam beberapa kasus, Anda mungkin ingin sengaja membuat tugas berjalan lebih lama untuk melakukan debug dengan shell interaktif. Misalnya, Anda dapat menambahkan kode seperti berikut ke kode pelatihan agar tugas tetap berjalan setidaknya selama satu jam setelah pengecualian terjadi:
import time
import traceback
try:
# Replace with a function that runs your training code
train_model()
except Exception as e:
traceback.print_exc()
time.sleep(60 * 60) # 1 hour
Namun, perlu diperhatikan bahwa Anda akan dikenai biaya pelatihan Vertex AI selama tugas tersebut terus berjalan.
Memeriksa masalah izin
Lingkungan shell interaktif diautentikasi menggunakan kredensial default
aplikasi (ADC) untuk
akun layanan yang digunakan Vertex AI untuk menjalankan kode pelatihan Anda. Anda
dapat menjalankan gcloud auth list
di shell untuk detail selengkapnya.
Di shell, Anda dapat menggunakan gsutil
,
bq
, dan alat lain yang mendukung ADC.
Hal ini dapat membantu Anda memverifikasi bahwa tugas dapat mengakses bucket Cloud Storage, tabel BigQuery, atau resource Google Cloud tertentu yang dibutuhkan kode pelatihan Anda.
Memvisualisasikan eksekusi Python dengan py-spy
py-spy
memungkinkan Anda membuat profil
eksekusi program Python, tanpa mengubahnya. Untuk menggunakan py-spy
dalam
shell interaktif, lakukan hal berikut:
Instal
py-spy
:pip3 install py-spy
Jalankan
ps aux
di shell, lalu cari PID program pelatihan python.Jalankan salah satu subperintah yang dijelaskan dalam dokumentasi
py-spy
, menggunakan PID yang Anda temukan pada langkah sebelumnya.Jika Anda menggunakan
py-spy record
untuk membuat file SVG, salin file ini ke bucket Cloud Storage sehingga Anda dapat melihatnya nanti di komputer lokal. Contoh:gsutil cp profile.svg gs://BUCKET
Ganti BUCKET dengan nama bucket yang dapat Anda akses.
Menganalisis performa dengan perf
perf
memungkinkan Anda menganalisis performa node pelatihan.
Untuk menginstal versi perf
yang sesuai bagi kernel Linux node Anda, jalankan
perintah berikut:
apt-get update
apt-get install -y linux-tools-generic
rm /usr/bin/perf
LINUX_TOOLS_VERSION=$(ls /usr/lib/linux-tools | tail -n 1)
ln -s "/usr/lib/linux-tools/${LINUX_TOOLS_VERSION}/perf" /usr/bin/perf
Setelahnya, Anda dapat menjalankan subperintah yang dijelaskan dalam dokumentasi
perf
.
Mengambil informasi tentang penggunaan GPU
Container berkemampuan GPU yang berjalan di node dengan GPU biasanya memiliki beberapa alat command line bawaan yang dapat membantu Anda memantau penggunaan GPU. Misalnya:
Gunakan
nvidia-smi
untuk memantau penggunaan GPU berbagai proses.Gunakan
nvprof
untuk mengumpulkan berbagai informasi pembuatan profil GPU. Karenanvprof
tidak dapat ditambahkan ke proses yang ada, Anda mungkin ingin menggunakan alat untuk memulai proses tambahan yang menjalankan kode pelatihan. (Artinya, kode pelatihan Anda akan berjalan dua kali pada node.) Contoh:nvprof -o prof.nvvp python3 -m MODULE_NAME
Ganti MODULE_NAME dengan nama modul titik entri aplikasi pelatihan yang sepenuhnya memenuhi syarat; misalnya,
trainer.task
.Kemudian, transfer file output ke bucket Cloud Storage agar Anda dapat menganalisisnya nanti di komputer lokal. Contoh:
gsutil cp prof.nvvp gs://BUCKET
Ganti BUCKET dengan nama bucket yang dapat Anda akses.
Jika Anda mengalami error GPU (bukan masalah dengan konfigurasi Anda atau dengan Vertex AI), gunakan
nvidia-bug-report.sh
untuk membuat laporan bug.Kemudian, transfer laporan ke bucket Cloud Storage sehingga Anda dapat menganalisisnya nanti di komputer lokal atau mengirimkannya ke NVIDIA. Contoh:
gsutil cp nvidia-bug-report.log.gz gs://BUCKET
Ganti BUCKET dengan nama bucket yang dapat Anda akses.
Jika bash
tidak dapat menemukan perintah NVIDIA ini, coba tambahkan
/usr/local/nvidia/bin
dan /usr/local/cuda/bin
ke PATH
shell:
export PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}"
Langkah selanjutnya
- Pelajari cara mengoptimalkan performa tugas pelatihan kustom Anda menggunakan Vertex AI TensorBoard Profiler.
- Pelajari lebih lanjut cara Vertex AI mengatur pelatihan kustom.
- Baca Persyaratan kode pelatihan.