Memantau dan men-debug pelatihan dengan shell interaktif

Selama pelatihan, Anda dapat menggunakan shell interaktif untuk memeriksa container tempat kode pelatihan Anda berjalan. Anda dapat menjelajahi sistem file dan menjalankan utilitas proses debug di setiap versi runtime atau penampung kustom yang berjalan di AI Platform Training.

Penggunaan shell interaktif untuk memeriksa container pelatihan dapat membantu Anda men-debug masalah terkait kode pelatihan atau konfigurasi AI Platform Training. 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 penampung

Sebelum memulai

Anda dapat menggunakan shell interaktif saat menjalankan tugas pelatihan atau penyesuaian hyperparameter. Saat menyiapkan kode pelatihan dan menjalankan tugas pelatihan, pastikan Anda 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 menyertakan bash atau instal bash 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 memberi Anda peran Admin AI Platform Training (roles/ml.admin). Jika Anda diberi peran Developer AI Platform Training (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 rekan kerja Anda ingin melihat shell interaktif untuk tugas ini, mereka juga harus memiliki izin iam.serviceAccounts.actAs yang sama.

  • Jika Anda telah mengonfigurasi project untuk menggunakan Kontrol Layanan VPC dengan Pelatihan Platform AI, 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.

    • Untuk mengamankan akses ke shell interaktif, Anda harus menambahkan notebooks.googleapis.com sebagai layanan terbatas dalam perimeter layanan,selain ml.googleapis.com. Jika Anda hanya membatasi ml.googleapis.com dan bukan notebooks.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

Untuk mengaktifkan shell interaktif untuk tugas pelatihan, tetapkan kolom API enableWebAccess 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 konsol Google Cloud.

Contoh ini mengasumsikan bahwa Anda memiliki aplikasi pelatihan di sistem file lokal dalam 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 tugas.
  • JOB_DIR: Jalur ke direktori Cloud Storage tempat aplikasi pelatihan Anda akan diupload.
  • REGION: Region tempat Anda berencana membuat tugas pelatihan. Perhatikan bahwa region ini harus berupa region yang mendukung shell interaktif.

    Perintah ini akan 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 tugas 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

  1. Buka halaman Jobs AI Platform Training di konsol Google Cloud.

    Membuka Tugas di konsol Google Cloud

  2. Klik nama tugas Anda dalam daftar untuk membuka halaman Detail Tugas.

  3. Klik tombol Show Json di bagian Output pelatihan untuk meluaskan tampilan JSON TrainingOutput untuk tugas.

Pada output, cari berikut ini:

{
  "webAccessUris": {
    "master-replica-0": "INTERACTIVE_SHELL_URI"
  }
}

Jika Anda tidak melihat kolom webAccessUris, hal ini mungkin karena Pelatihan AI Platform belum mulai menjalankan tugas atau uji coba Anda. Pastikan Anda melihat RUNNING di kolom state. Jika statusnya adalah QUEUED atau PREPARING, tunggu sebentar; kemudian 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 tugas 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

  1. Buka halaman Jobs AI Platform Training di konsol Google Cloud.

    Membuka Tugas di konsol Google Cloud

  2. Klik nama tugas Anda dalam daftar untuk membuka halaman Detail Tugas.

  3. Klik tombol Show Json di bagian Output pelatihan untuk meluaskan tampilan JSON TrainingOutput untuk tugas.

Pada output, cari berikut ini:

{
  "trials": [
    {
      ...
      "webAccessUris": {
        "master-replica-0": "INTERACTIVE_SHELL_URI"
      }
    },
    ...
  ]
}

Jika Anda tidak melihat kolom webAccessUris, hal ini mungkin karena Pelatihan AI Platform belum mulai menjalankan tugas atau uji coba Anda. Pastikan Anda melihat RUNNING di kolom state. Jika statusnya adalah QUEUED atau PREPARING, tunggu sebentar; kemudian coba dapatkan info tugas lagi.

Pelatihan AI Platform menyediakan sekumpulan 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 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 nama tugas.

Misalnya, jika tugas Anda memiliki master dan dua pekerja, kolom webAccessUris akan terlihat mirip dengan berikut ini:

{
  "master-replica-0": "URI_FOR_PRIMARY",
  "worker-replica-0": "URI_FOR_FIRST_SECONDARY",
  "worker-replica-1": "URI_FOR_SECOND_SECONDARY"
}

Wilayah 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)

Pelatihan AI Platform 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 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 AI Platform Training 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 AI Platform Training selama tugas tersebut 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 gcloud storage, 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:

  1. Instal py-spy:

    pip3 install py-spy
    
  2. Jalankan ps aux di shell, lalu cari PID program pelatihan python.

  3. Jalankan salah satu subperintah yang dijelaskan dalam dokumentasi py-spy, menggunakan PID yang Anda temukan pada langkah sebelumnya.

  4. 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:

    gcloud storage 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. Karena nvprof 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:

    gcloud storage 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:

    gcloud storage 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