Untuk menggunakan Xprof, Anda harus mengaktifkan pengambilan profil terlebih dahulu dalam kode beban kerja model Anda. Ada dua cara untuk merekam profil, yang dijelaskan di bawah.
Pengambilan gambar terprogram
Dengan pengambilan data terprogram, Anda perlu membuat anotasi kode model untuk menentukan tempat dalam kode yang ingin Anda ambil profilnya. Biasanya, pengguna mengumpulkan profil untuk beberapa langkah selama loop pelatihan, atau memprofilkan blok tertentu dalam model. Ada berbagai cara untuk merekam rekaman aktivitas di berbagai framework JAX, Pytorch XLA, dan Tensorflow - baik berdasarkan start/stop rekaman aktivitas berbasis API maupun berbasis pengelola konteks.
Perekaman sesuai permintaan (alias perekaman manual)
Pengambilan profil sesuai permintaan digunakan saat Anda ingin mengambil profil ad-hoc selama proses berjalan, untuk jangka waktu saat Anda tidak mengaktifkan pengambilan profil terprogram. Biasanya digunakan saat Anda melihat beberapa masalah dengan metrik model selama eksekusi, 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. Misalnya, di JAX, mengaktifkan
jax.profiler.start_server
akan memulai server xprof pada workload ML Anda yang memproses
pemicu pengambilan sesuai permintaan untuk mulai merekam profil.
Beberapa sesi per eksekusi
Saat merekam profil, Anda dapat merekam profil untuk satu kali proses sebagai beberapa sesi. Misalkan Anda merekam profil dalam proses pelatihan dari langkah 1-3 dan kemudian merekam profil dari langkah 8-10. Jadi, ini adalah profil untuk run 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, sesuai permintaan, atau kombinasi keduanya.
XProf dan Tensorboard di Google Cloud
Di Google Cloud, sebaiknya gunakan library cloud-diagnostics-xprof untuk mempermudah hosting Tensorboard dan XProf. Beberapa manfaat utama menggunakan library ini di GCP:
- Penyiapan dan pengemasan dependensi XProf dan tensorboard yang mudah;
- Menyimpan profil Anda di GCS yang dapat berguna untuk retensi jangka panjang dan analisis pasca-pengujian (profil lokal yang diambil akan dihapus setelah peneliti menyelesaikan pengujian);
- Pemuatan profil besar dan beberapa profil yang cepat dengan menyediakan Tensorboard di VM GCE atau pod GKE, dengan opsi untuk mengubah jenis mesin berdasarkan kebutuhan pengguna akan kecepatan pemuatan dan biaya;
- Buat link untuk mempermudah berbagi profil dan berkolaborasi dengan anggota tim dan engineer Google;
- Pembuatan profil workload on-demand yang lebih mudah di GKE dan GCE untuk memilih host mana pun yang menjalankan workload Anda untuk merekam profil.
Petunjuk khusus framework
Lihat cara mengaktifkan pembuatan profil terprogram dan pembuatan profil sesuai permintaan dalam berbagai framework:
Pemecahan masalah
Pembuatan profil GPU
Program yang berjalan di GPU akan menghasilkan rekaman aktivitas untuk aliran GPU di dekat bagian atas pelihat rekaman aktivitas. Jika Anda hanya melihat rekaman aktivitas host, periksa log dan/atau output program Anda untuk melihat pesan error berikut.
Jika Anda mendapatkan error seperti: Could not load dynamic library 'libcupti.so.10.1'
Error lengkap:
W external/org_tensorflow/tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcupti.so.10.1'; dlerror: libcupti.so.10.1: cannot open shared object file: No such file or directory
2020-06-12 13:19:59.822799: E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1422] function cupti_interface_->Subscribe( &subscriber_, (CUpti_CallbackFunc)ApiCallback, this)failed with error CUPTI could not be loaded or symbol could not be found.
Tambahkan jalur ke libcupti.so ke variabel lingkungan LD_LIBRARY_PATH.
(Coba locate libcupti.so untuk menemukan jalur.) Contoh:
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/extras/CUPTI/lib64/:$LD_LIBRARY_PATH
Jika Anda masih mendapatkan pesan Could not load dynamic library setelah melakukannya,
periksa apakah rekaman aktivitas GPU muncul di pelihat rekaman aktivitas. Pesan ini terkadang muncul meskipun semuanya berfungsi, karena pesan ini mencari library libcupti di beberapa tempat.
Jika Anda mendapatkan error seperti: failed with error CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
Error lengkap:
E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1445] function cupti_interface_->EnableCallback( 0 , subscriber_, CUPTI_CB_DOMAIN_DRIVER_API, cbid)failed with error CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
2020-06-12 14:31:54.097791: E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1487] function cupti_interface_->ActivityDisable(activity)failed with error CUPTI_ERROR_NOT_INITIALIZED
Jalankan perintah berikut (perhatikan bahwa tindakan ini memerlukan reboot):
echo 'options nvidia "NVreg_RestrictProfilingToAdminUsers=0"' | sudo tee -a /etc/modprobe.d/nvidia-kernel-common.conf
sudo update-initramfs -u
sudo reboot now
Lihat dokumentasi NVIDIA tentang error ini untuk mengetahui informasi selengkapnya.
Membuat profil di komputer jarak jauh
Jika program yang ingin Anda profil berjalan di komputer jarak jauh, salah satu opsinya adalah menjalankan semua petunjuk di atas di komputer jarak jauh (khususnya, mulai server XProf di komputer jarak jauh), lalu gunakan penerusan port lokal SSH untuk mengakses UI web XProf dari komputer lokal Anda. Gunakan perintah SSH berikut untuk meneruskan port XProf default 8791 dari komputer lokal ke komputer jarak jauh:
ssh -L 8791:localhost:8791 <remote server address>
atau jika Anda menggunakan Google Cloud:
$ gcloud compute ssh <machine-name> -- -L 8791:localhost:8791
Beberapa penginstalan TensorBoard
Jika memulai TensorBoard gagal dengan error seperti: ValueError: Duplicate
plugins for name projector
Hal ini sering terjadi karena ada dua versi TensorBoard dan/atau TensorFlow yang diinstal (misalnya, paket pip tensorflow, tf-nightly, tensorboard, dan tb-nightly semuanya menyertakan TensorBoard). Meng-uninstal satu paket pip dapat
menyebabkan executable tensorboard dihapus yang kemudian sulit
diganti, jadi mungkin perlu meng-uninstal semuanya dan menginstal ulang satu
versi:
pip uninstall tensorflow tf-nightly tensorboard tb-nightly xprof xprof-nightly tensorboard-plugin-profile tbp-nightly
pip install tensorboard xprof
Menyelesaikan masalah hak istimewa
Saat menjalankan pembuatan profil dengan CUDA® Toolkit di lingkungan Docker atau di Linux, Anda mungkin mengalami masalah terkait hak istimewa CUPTI yang tidak memadai (CUPTI_ERROR_INSUFFICIENT_PRIVILEGES). Buka Dokumen Developer NVIDIA untuk mempelajari lebih lanjut cara mengatasi masalah ini di Linux.
Untuk mengatasi masalah hak istimewa CUPTI di lingkungan Docker, jalankan
docker run option '--privileged=true'