Membuat profil model Anda di VM Cloud TPU
Pembuatan profil adalah salah satu alat utama bagi Anda untuk mengoptimalkan performa model di Cloud TPU. Alat pembuatan profil inti disebut XProf, yang tersedia dari repositori GitHub OpenXLA/XProf. XProf mendukung pembuatan profil semua framework berbasis XLA, termasuk JAX, PyTorch, dan Tensorflow/Keras.
Mengambil profil
Untuk menggunakan XProf, Anda harus mengambil profil model terlebih dahulu. Ada dua cara untuk mengambil profil:
- Pengambilan terprogram
- Pengambilan on-demand (alias pengambilan manual)
Dengan pengambilan terprogram, Anda perlu menganotasi kode model untuk
menentukan di mana dalam kode Anda ingin mengambil profil. Biasanya, Anda mengambil profil untuk beberapa langkah pelatihan, atau membuat profil blok kode tertentu dalam model Anda. Ada berbagai cara untuk mengambil trace dalam berbagai framework JAX, PyTorch, dan TensorFlow - baik trace mulai atau berhenti berbasis API maupun berbasis pengelola konteks. Dalam framework tingkat lebih tinggi seperti MaxText,
Anda dapat mengaktifkan perekaman profil hanya dengan mengaktifkan flag
profiler=xplane saat menjalankan MaxText.
Anda dapat menggunakan pengambilan profil on-demand saat ingin mengambil profil secara ad hoc, atau saat Anda tidak mengaktifkan pengambilan profil terprogram. Hal ini dapat membantu saat Anda melihat masalah pada metrik model selama proses berjalan dan ingin mengambil profil pada saat itu juga untuk beberapa periode guna mendiagnosis masalah.
Untuk mengaktifkan pengambilan profil on-demand, Anda masih perlu memulai server XProf
dalam kode Anda. Mengaktifkan profiler.start_server akan memulai server XProf di workload ML Anda yang memproses pemicu pengambilan on-demand untuk mulai mengambil profil. Anda dapat memicu pengambilan profil on-demand melalui UI Tensorboard atau melalui CLI dengan alat XProfiler.
Anda dapat mempelajari cara mengaktifkan pengambilan terprogram dan on-demand untuk berbagai framework di:
Untuk pengambilan profil terprogram dan on-demand, Anda harus menentukan
lokasi tempat Anda ingin menyimpan profil yang diambil. Anda dapat memilih untuk menyimpan profil di direktori pada VM TPU Anda dengan jalur yang mirip dengan /profiles/run-name atau menggunakan Cloud Storage dengan jalur yang mirip dengan gs://bucket-name/run-name/.
Dengan jalur yang disebutkan di atas, profil Anda akan diambil di:
/profiles/run-name/plugins/profile/session1/
atau
gs://bucket-name/run-name/plugins/profile/session1/.
Sesi mewakili satu pengambilan profil selama eksekusi model Anda. Misalnya, jika Anda mengambil profil dalam operasi pelatihan dari langkah 1-3 dan kemudian
mengambil profil dari langkah 8-10, maka ini adalah profil untuk operasi yang sama, tetapi
pengambilan pertama dari langkah 1-3 akan menjadi session1 dan pengambilan
kedua dari langkah 8-10 akan menjadi session2.
Sesi yang berbeda akan ditandai dengan stempel tanggal yang berbeda di setiap operasi. Anda dapat merekam profil dalam berbagai sesi, baik secara terprogram atau on-demand, atau kombinasi keduanya. Hal ini berguna saat Anda ingin membandingkan profil dari berbagai bagian pelatihan model. Misalnya, membandingkan profil dari awal pelatihan dengan profil dari akhir pelatihan.
Memvisualisasikan profil dengan TensorBoard
Untuk melihat profil XProf di Tensorboard, Anda perlu menginstal plugin tensorboard-plugin-profile.
Untuk memvisualisasikan profil yang diambil di Google Cloud, sebaiknya gunakan TensorBoard di VM TPU atau gunakan alat XProfiler untuk menghosting TensorBoard di VM atau pod GKE.
Jika Anda mengambil profil di VM TPU, Anda dapat melihat profil yang diambil menggunakan TensorBoard di VM TPU tersebut.
Untuk menginstal XProf dan TensorBoard di VM TPU, Anda dapat menjalankan perintah berikut:
pip install tensorboard_plugin_profile tensorboard pip install xprof
Untuk melihat profil yang diambil dengan TensorBoard, jalankan:
$ tensorboard --logdir=profiles/run-name
atau
$ tensorboard --logdir=profiles
Untuk memuat beberapa profil dari beberapa operasi, arahkan TensorBoard ke direktori root yang berisi semua operasi dan profil Anda, bukan ke subdirektori yang memiliki profil operasi tertentu.
Library Cloud-Diagnostics-XProf untuk memvisualisasikan profil Tensorboard di Google Cloud
cloud-diagnostics-xprof (alias Library XProfiler) memudahkan
hosting TensorBoard dan visualisasi profil di Google Cloud. Untuk mengetahui informasi selengkapnya,
lihat repositori GitHub cloud-diagnostics-xprof.
Repositori cloud-diagnostics-xprof memberikan peningkatan berikut dibandingkan menjalankan XProf dan TensorBoard secara lokal:
- Penyiapan dan pengemasan dependensi XProf dan TensorBoard
- Menyimpan profil Anda di Cloud Storage yang dapat berguna untuk retensi jangka panjang dan analisis pasca-eksekusi (profil lokal yang diambil akan dihapus setelah peneliti selesai menjalankan)
- Pemuatan cepat profil besar dan beberapa profil dengan menyediakan TensorBoard di VM Compute Engine atau pod GKE, dengan opsi untuk mengubah jenis mesin berdasarkan kebutuhan pengguna terkait kecepatan pemuatan dan biaya
- Membuat link untuk berbagi profil dan berkolaborasi dengan anggota tim dan engineer Google
- Pembuatan profil workload on-demand yang lebih mudah di GKE dan Compute Engine untuk memilih host mana pun yang menjalankan workload Anda guna mengambil profil
Sebelum menggunakan library XProfiler, Anda perlu mengambil profil untuk kode workload secara terprogram atau dengan memulai server profil, sehingga Anda dapat melakukan pengambilan profil on-demand nanti.
Untuk menyiapkan library XProfiler, Anda harus menyiapkan Google Cloud CLI dan lingkungan virtual Python, lalu Anda hanya perlu menjalankan:
pip install cloud-diagnostics-xprof
Tindakan ini akan menginstal semua dependensi XProf dan TensorBoard yang diperlukan.
Selanjutnya, untuk membuat VM atau pod GKE yang akan menghosting TensorBoard, jalankan perintah berikut:
xprofiler create -z $ZONE -l $GCS_PATH
atau
xprofiler create --GKE -z $ZONE -l $GCS_PATH
Ganti $ZONE dengan zona mana pun dan $GCS_PATH dengan jalur ke trace profil Anda. Anda dapat menentukan direktori utama yang berisi semua trace profil untuk beberapa operasi, atau kumpulan trace profil tertentu untuk satu operasi.
Misalnya, jika Anda mengambil profil di direktori berikut:
gs://bucket-name/run1/plugins/profile/session1/<profile.xplane.pb>
gs://bucket-name/run1/plugins/profile/session2/<profile.xplane.pb>
gs://bucket-name/run2/plugins/profile/session1/<profile.xplane.pb>
Anda dapat menetapkan jalur Cloud Storage ke direktori root (gs://bucket-name):
xprofiler create -z $ZONE -l gs://bucket-name/
Di UI TensorBoard, Anda akan melihat semua profil untuk semua operasi dan sesi sebagai run1/session1, run1/session2, run2/session1.
Secara default, xprofiler create akan membuat VM Compute Engine, khususnya VM c4-highmem-8. Anda dapat mengubah jenis mesin dengan flag -m. Jika ingin membuat instance TensorBoard di pod GKE, bukan VM Compute Engine, Anda dapat meneruskan flag –GKE ke xprofiler create. Menghosting instance TensorBoard di pod GKE dapat mempermudah pengelolaan TensorBoard bersama dengan workload lainnya yang di-deploy di GKE.
VM atau pod GKE yang menghosting TensorBoard membuat pemuatan profil besar dan beberapa profil jauh lebih cepat di Google Cloud daripada TensorBoard yang dihosting secara lokal. Berdasarkan tolok ukur kami, Anda akan melihat profil pemuatan sekitar 1 GB dalam beberapa menit untuk pemuatan pertama menggunakan VM c4-highmem-8 default. Selain itu, Anda dapat memilih jenis mesin yang tepat berdasarkan kebutuhan performa dan biaya Anda.
Setelah menjalankan xprofiler create, Anda akan melihat output yang mirip dengan
berikut ini:
Instance for gs://<bucket> has been created.
You can access it via the following:
1. https://<id>-dot-us-<region>.notebooks.googleusercontent.com.
2. xprofiler connect -z <zone> -l gs://bucket-name -m ssh
Instance is hosted at xprof-97db0ee6-93f6-46d4-b4c4-6d024b34a99f VM.
Opsi pertama adalah link yang dapat Anda klik untuk melihat profil XProf di TensorBoard. Link ini memungkinkan berbagi profil dengan tim Anda dan juga dengan engineer Google yang membantu pengoptimalan performa di Google Cloud.
Anda mengontrol siapa yang memiliki akses ke link berdasarkan izin yang ditetapkan untuk bucket Cloud Storage yang menyimpan data profil Anda. Jika link tidak berfungsi karena alasan tertentu, kami juga menyediakan cara untuk terhubung ke instance TensorBoard menggunakan SSH untuk melihat profil Anda menggunakan perintah xprofiler connect.
Jika Anda mengaktifkan server Cloud Profiler dalam kode workload (yang diperlukan untuk pengambilan terprogram dan on-demand) dan ingin melakukan pembuatan profil on-demand, Anda dapat melakukannya dengan dua cara:
a. Klik tombol Capture profile di TensorBoard. Anda kini dapat memilih host perangkat mana pun yang menjalankan workload Anda untuk diprofilkan. Kami mendukung pengambilan on-demand untuk workload yang berjalan di GKE atau Compute Engine.
b. Gunakan perintah pengambilan XProfiler, yang memberikan informasi seperti zona, bucket Cloud Storage, framework, nama VM/pod host, dan durasi pengambilan dalam milidetik. Informasi ini sama dengan yang perlu Anda masukkan di UI TensorBoard.
Untuk mengetahui detail selengkapnya tentang cara menggunakan library cloud-diagnostics-xprof,
lihat
halaman GitHub ini.