Selama pelatihan, Anda dapat menggunakan shell interaktif untuk memeriksa penampung tempat kode pelatihan berjalan. Anda dapat menjelajahi sistem file dan menjalankan utilitas proses debug di setiap versi runtime atau penampung kustom yang berjalan di Pelatihan AI Platform.
Menggunakan shell interaktif untuk memeriksa container pelatihan dapat membantu Anda men-debug masalah dengan kode pelatihan atau konfigurasi Pelatihan AI Platform Anda. 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
Sebelum memulai
Anda dapat menggunakan shell interaktif saat menjalankan tugas penyesuaian pelatihan atau hyperparameter. Saat Anda menyiapkan kode pelatihan dan menjalankan tugas pelatihan, pastikan untuk memenuhi persyaratan berikut:
Pastikan container pelatihan Anda telah menginstal
bash
.Semua penampung versi runtime telah menginstal
bash
. Jika Anda membuat container kustom untuk pelatihan, gunakan container dasar yang menyertakanbash
atau instalbash
di Dockerfile Anda.Lakukan pelatihan di region yang mendukung shell interaktif.
Pastikan siapa saja yang ingin mengakses shell interaktif memiliki izin berikut untuk project Google Cloud tempat pelatihan dijalankan:
ml.jobs.create
ml.jobs.get
ml.jobs.cancel
Jika Anda memulai pelatihan sendiri, kemungkinan besar Anda sudah memiliki izin ini dan dapat mengakses shell interaktif. Namun, jika ingin menggunakan shell interaktif untuk memeriksa tugas pelatihan 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 untuk memberi Anda peran Admin Pelatihan AI Platform (
roles/ml.admin
). Jika Anda diberi peran Developer Pelatihan AI Platform (roles/ml.developer
), Anda akan memiliki akses ke shell interaktif untuk tugas yang Anda buat.
Persyaratan untuk kasus lanjutan
Jika Anda menggunakan fitur lanjutan tertentu, penuhi persyaratan tambahan berikut:
Jika Anda melampirkan akun layanan kustom ke tugas pelatihan, 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 tugas dengan akun layanan terlampir, Anda harus memiliki izin
iam.serviceAccounts.actAs
untuk akun layanan. Jika salah satu kolega Anda ingin melihat shell interaktif untuk tugas ini, mereka juga harus memiliki iziniam.serviceAccounts.actAs
yang sama.Jika Anda telah mengonfigurasi project untuk menggunakan Kontrol Layanan VPC dengan Pelatihan AI Platform, pertimbangkan batasan tambahan berikut:
Anda tidak dapat menggunakan Kontrol Layanan VPC dengan Peering Jaringan VPC.
Dari dalam shell interaktif, Anda tidak dapat mengakses internet publik atau resource Google Cloud di luar perimeter layanan Anda.
Untuk mengamankan akses ke shell interaktif, Anda harus menambahkan
notebooks.googleapis.com
sebagai layanan yang dibatasi dalam perimeter layanan Anda,selainml.googleapis.com
. Jika Anda hanya membatasiml.googleapis.com
, bukannotebooks.googleapis.com
, pengguna dapat mengakses shell interaktif dari mesin di luar perimeter layanan, sehingga mengurangi manfaat keamanan dari penggunaan Kontrol Layanan VPC.
Mengaktifkan shell interaktif
Guna mengaktifkan shell interaktif untuk tugas pelatihan, tetapkan kolom enableWebAccess
API ke true
di kolom trainingInput
tugas saat Anda membuat tugas pelatihan.
Contoh berikut menunjukkan cara melakukannya dengan menambahkan flag --enable-web-access
saat menggunakan gcloud CLI. Saat ini Anda tidak dapat membuat tugas pelatihan dengan shell interaktif yang diaktifkan di Google Cloud Console.
Contoh ini mengasumsikan bahwa Anda memiliki aplikasi
pelatihan di sistem file lokal di
direktori bernama trainer
dengan modul bernama task
.
Untuk membuat tugas pelatihan, jalankan perintah berikut:
gcloud ai-platform jobs submit training JOB_ID \
--enable-web-access \
--job-dir=JOB_DIR \
--module-name=trainer.task \
--package-path=trainer \
--python-version=3.7 \
--region=REGION \
--runtime-version=2.11 \
--scale-tier=CUSTOM \
--master-machine-type=n1-highmem-8
Dalam perintah ini, ganti placeholder berikut:
- JOB_ID: Nama yang Anda pilih untuk pekerjaan.
- JOB_DIR: Jalur ke direktori Cloud Storage tempat aplikasi pelatihan Anda akan diupload.
REGION: Region tempat Anda berencana membuat tugas pelatihan. Perhatikan bahwa itu harus berupa region yang mendukung shell interaktif.
Perintah ini menghasilkan output berikut jika berhasil:
Job [JOB_ID] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe JOB_ID or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs JOB_ID jobId: JOB_ID state: QUEUED
Mendapatkan URI akses web
Setelah Anda memulai pelatihan sesuai dengan panduan di bagian sebelumnya, gunakan konsol Google Cloud atau alat command line gcloud
untuk melihat URI yang dapat Anda gunakan untuk mengakses shell interaktif.
AI Platform Training menyediakan URI untuk setiap node pelatihan yang merupakan bagian dari tugas Anda.
Bergantung pada jenis tugas pelatihan yang Anda buat, pilih salah satu tab berikut untuk melihat contoh cara menemukan kolom API webAccessUris
, yang berisi URI shell interaktif untuk setiap node dalam tugas Anda.
Tugas Pelatihan
Tab berikut menunjukkan berbagai cara untuk mengakses TrainingOutput
untuk
tugas pelatihan standar.
gcloud
Jalankan perintah gcloud ai-platform jobs describe
:
gcloud ai-platform jobs describe JOB_ID
Ganti kode berikut:
-
JOB_ID: ID untuk pekerjaan Anda. Anda menetapkan ID ini saat membuat
tugas.
(Jika tidak mengetahui ID tugas, Anda dapat menjalankan
perintah
gcloud ai-platform jobs list
dan mencari tugas yang sesuai.)
Pada output, cari berikut ini:
trainingOutput:
webAccessUris:
master-replica-0: INTERACTIVE_SHELL_URI
Konsol
Buka halaman Tugas Pelatihan AI Platform di Konsol Google Cloud.
Klik nama pekerjaan Anda dalam daftar untuk membuka halaman Detail Pekerjaan.
Klik tombol Show Json di bagian Training output untuk meluaskan tampilan JSON dari
TrainingOutput
untuk tugas tersebut.
Pada output, cari berikut ini:
{
"webAccessUris": {
"master-replica-0": "INTERACTIVE_SHELL_URI"
}
}
Jika Anda tidak melihat kolom webAccessUris
, hal ini mungkin karena
AI Platform Training belum mulai menjalankan tugas atau uji coba Anda.
Pastikan Anda melihat RUNNING
kolom state
. Jika statusnya QUEUED
atau
PREPARING
, tunggu sebentar; lalu coba dapatkan info tugas lagi.
Tugas Penyesuaian Hyperparameter
Tab berikut menunjukkan berbagai cara untuk mengakses TrainingOutput
untuk tugas penyesuaian hyperparameter.
gcloud
Jalankan perintah gcloud ai-platform jobs describe
:
gcloud ai-platform jobs describe JOB_ID
Ganti kode berikut:
-
JOB_ID: ID untuk pekerjaan Anda. Anda menetapkan ID ini saat membuat
tugas.
(Jika tidak mengetahui ID tugas, Anda dapat menjalankan
perintah
gcloud ai-platform jobs list
dan mencari tugas yang sesuai.)
Pada output, cari berikut ini:
trainingOutput:
trials:
- trialId: '1'
webAccessUris:
master-replica-0: INTERACTIVE_SHELL_URI
Konsol
Buka halaman Tugas Pelatihan AI Platform di Konsol Google Cloud.
Klik nama pekerjaan Anda dalam daftar untuk membuka halaman Detail Pekerjaan.
Klik tombol Show Json di bagian Training output untuk meluaskan tampilan JSON dari
TrainingOutput
untuk tugas tersebut.
Pada output, cari berikut ini:
{
"trials": [
{
...
"webAccessUris": {
"master-replica-0": "INTERACTIVE_SHELL_URI"
}
},
...
]
}
Jika Anda tidak melihat kolom webAccessUris
, hal ini mungkin karena
AI Platform Training belum mulai menjalankan tugas atau uji coba Anda.
Pastikan Anda melihat RUNNING
kolom state
. Jika statusnya QUEUED
atau
PREPARING
, tunggu sebentar; lalu coba dapatkan info tugas lagi.
Pelatihan AI Platform menyediakan kumpulan URI shell interaktif untuk setiap
uji coba penyesuaian
hyperparameter saat
uji coba memasuki status RUNNING
. Jika Anda ingin mendapatkan URI shell interaktif untuk uji coba berikutnya, 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, output akan berisi satu URI untuk setiap node pelatihan, yang diidentifikasi oleh nama tugas.
Misalnya, jika tugas Anda memiliki master dan dua pekerja, kolom webAccessUris
akan terlihat seperti berikut:
{
"master-replica-0": "URI_FOR_PRIMARY",
"worker-replica-0": "URI_FOR_FIRST_SECONDARY",
"worker-replica-1": "URI_FOR_SECOND_SECONDARY"
}
Region yang tersedia
Penggunaan shell interaktif untuk AI Platform Training didukung di region berikut:
Amerika
- Oregon (us-west1)
- Los Angeles (us-west2)
- Iowa (us-central1)
- South Carolina (us-east1)
- Virginia Virginia (us-east4)
- Montréal (northamerica-northeast1)
Eropa
- London (europe-west2)
- Belgia (europe-west1)
- Zurich (europe-west6)
- Frankfurt (europe-west3)
Asia Pasifik
- Singapura (asia-southeast1)
- Taiwan (asia-east1)
- Tokyo (asia-northeast1)
- Sydney (australia-southeast1)
- Seoul (asia-northeast3)
AI Platform Training juga menyediakan region tambahan untuk pelatihan.
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 AI Platform Training menjalankan kode pelatihan.
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 Pelatihan AI Platform selesai menjalankan tugas atau uji coba Anda, 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 AI Platform selama tugas terus berjalan.
Memeriksa masalah izin
Lingkungan shell interaktif diautentikasi menggunakan kredensial default aplikasi (ADC) untuk akun layanan yang digunakan AI Platform Training 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
.
Mendapatkan 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 AI Platform Training), 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 layanan Pelatihan AI Platform lebih lanjut.
- Baca tentang Mengemas aplikasi pelatihan.