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 XLA, dan Tensorflow/Keras.
Merekam profil
Untuk menggunakan XProf, Anda harus merekam profil model terlebih dahulu. Ada dua cara untuk merekam profil:
- Perekaman terprogram
- Perekaman sesuai permintaan (alias perekaman manual)
Dengan pengambilan data terprogram, Anda perlu membuat anotasi pada kode model untuk
menentukan tempat dalam kode yang ingin Anda ambil profilnya. Biasanya, Anda merekam profil untuk beberapa langkah pelatihan, atau membuat profil blok kode tertentu dalam model Anda. Ada berbagai cara untuk merekam rekaman aktivitas di berbagai framework JAX, Pytorch XLA, dan TensorFlow - baik memulai atau menghentikan rekaman aktivitas berbasis API atau berbasis pengelola konteks. Dalam framework tingkat yang lebih tinggi seperti MaxText, Anda dapat mengaktifkan pengambilan profil hanya dengan mengaktifkan tanda profiler=xplane
saat menjalankan MaxText.
Anda dapat menggunakan pengambilan profil sesuai permintaan jika ingin mengambil profil secara ad hoc, atau jika Anda tidak mengaktifkan pengambilan profil terprogram. Hal ini dapat berguna saat Anda melihat masalah pada metrik model selama proses berjalan dan ingin merekam profil pada saat itu selama beberapa periode untuk mendiagnosis masalah.
Untuk mengaktifkan pengambilan profil sesuai permintaan, Anda tetap perlu memulai server XProf dalam kode Anda. Mengaktifkan profiler.start_server
akan memulai server XProf pada workload ML Anda yang memproses pemicu pengambilan sesuai permintaan untuk mulai merekam profil. Anda dapat memicu pengambilan profil sesuai permintaan baik
melalui UI Tensorboard atau melalui CLI dengan alat XProfiler.
Anda dapat mengetahui cara mengaktifkan pengambilan terprogram dan on-demand untuk berbagai framework di:
Untuk pengambilan profil terprogram dan sesuai permintaan, Anda harus menentukan lokasi tempat Anda ingin menyimpan profil yang diambil. Anda dapat memilih untuk menyimpan profil di direktori pada VM TPU 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 dicatat di bagian:
/profiles/run-name/plugins/profile/session1/
atau
gs://bucket-name/run-name/plugins/profile/session1/
.
Sesi mewakili satu pengambilan profil selama menjalankan model Anda. Misalnya, jika Anda merekam profil dalam proses pelatihan dari langkah 1-3, lalu merekam profil dari langkah 8-10, maka ini adalah profil untuk proses yang sama, tetapi rekaman pertama dari langkah 1-3 akan menjadi session1
dan rekaman kedua dari langkah 8-10 akan menjadi session2
.
Sesi yang berbeda akan ditandai dengan stempel tanggal yang berbeda di setiap proses. Anda dapat merekam profil dalam sesi yang berbeda secara terprogram atau sesuai permintaan 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 harus menginstal plugin tensorboard-plugin-profile.
Untuk memvisualisasikan profil yang direkam di Google Cloud, sebaiknya Anda menggunakan TensorBoard di VM TPU atau menggunakan alat XProfiler untuk menghosting TensorBoard di VM atau pod GKE.
Jika Anda merekam profil di VM TPU, Anda dapat melihat profil yang direkam 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 direkam dengan TensorBoard, jalankan:
$ tensorboard --logdir=profiles/run-name
atau
$ tensorboard --logdir=profiles
Untuk memuat beberapa profil dari beberapa proses, arahkan TensorBoard ke direktori root yang berisi semua proses dan profil Anda, bukan ke subdirektori yang memiliki profil proses tertentu.
Library Cloud-Diagnostics-XProf untuk memvisualisasikan profil Tensorboard di Google Cloud
cloud-diagnostics-xprof
(alias XProfiler Library) mempermudah
hosting TensorBoard dan memvisualisasikan profil di Google Cloud. Untuk mengetahui informasi selengkapnya, lihat repositori GitHub cloud-diagnostics-xprof.
Repositori cloud-diagnostics-xprof memberikan peningkatan berikut dibandingkan dengan menjalankan XProf dan TensorBoard secara lokal:
- Penyiapan dan pengemasan dependensi XProf dan TensorBoard
- Simpan profil Anda di Cloud Storage yang dapat berguna untuk retensi jangka panjang dan analisis pasca-pengujian (profil lokal yang diambil akan dihapus setelah peneliti menyelesaikan pengujian)
- 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 akan 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 yang menjalankan workload Anda guna merekam profil
Sebelum menggunakan library XProfiler, Anda perlu merekam profil untuk kode workload Anda secara terprogram atau dengan memulai server profil, sehingga Anda dapat melakukan perekaman profil sesuai permintaan nanti.
Untuk menyiapkan library XProfiler, Anda harus menyiapkan Google Cloud CLI dan lingkungan virtual Python, lalu yang perlu Anda lakukan hanyalah menjalankan:
pip install cloud-diagnostics-xprof
Tindakan ini akan menginstal semua dependensi XProf dan TensorBoard yang diperlukan.
Selanjutnya, untuk membuat VM atau pod GKE untuk 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 apa pun dan $GCS_PATH dengan jalur ke rekaman aktivitas profil Anda. Anda dapat menentukan direktori root yang berisi semua rekaman aktivitas profil untuk beberapa proses, atau sekumpulan rekaman aktivitas profil tertentu untuk satu proses.
Misalnya, jika Anda merekam 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 menyetel jalur GCS ke direktori root (gs://bucket-name
):
xprofiler create -z $ZONE -l gs://bucket-name/
Di UI TensorBoard, Anda akan melihat semua profil untuk semua run 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 tanda
-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 beban kerja 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 dengan beban sekitar 1 GB dalam beberapa menit untuk beban 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 guna melihat profil Anda menggunakan perintah xprofiler connect
.
Jika Anda mengaktifkan server Cloud Profiler dalam kode workload (yang diperlukan untuk pengambilan data terprogram dan on-demand) dan ingin melakukan pembuatan profil on-demand, Anda dapat melakukannya dengan dua cara:
a. Klik tombol Rekam profil di TensorBoard. Anda kini dapat memilih host perangkat tempat workload Anda berjalan untuk diprofilkan. Kami mendukung pengambilan data sesuai permintaan untuk workload yang berjalan di GKE atau Compute Engine.
b. Gunakan perintah pengambilan XProfiler, dengan memberikan informasi seperti zona, bucket Cloud Storage, framework, nama VM/pod host, dan durasi pengambilan dalam milidetik. Ini adalah informasi yang sama dengan yang perlu Anda masukkan di UI TensorBoard.
Untuk mengetahui detail selengkapnya tentang cara menggunakan library cloud-diagnostics-xprof
, lihat halaman GitHub ini.