Membuat profil model Anda di Node Cloud TPU
Membuat profil model memungkinkan Anda mengoptimalkan performa pelatihan di Cloud TPU. Untuk membuat profil model, Anda menggunakan TensorBoard dan plugin TensorBoard Cloud TPU. Untuk petunjuk penginstalan, lihat Petunjuk penginstalan TensorBoard.
Untuk informasi selengkapnya tentang cara menggunakan TensorBoard dengan salah satu framework yang didukung, lihat dokumen berikut:
Prasyarat
TensorBoard diinstal sebagai bagian dari TensorFlow. TensorFlow diinstal secara default di Node Cloud TPU. Anda juga dapat menginstal TensorFlow secara manual. Apa pun yang Anda pilih, beberapa dependensi tambahan mungkin diperlukan. Instal dengan menjalankan:
(vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
Menginstal Plugin TensorBoard Cloud TPU
SSH ke TPU Node Anda:
$ gcloud compute ssh your-vm --zone=your-zone
Jalankan perintah berikut:
pip3 install --upgrade "cloud-tpu-profiler>=2.3.0" pip3 install --user --upgrade -U "tensorboard>=2.3" pip3 install --user --upgrade -U "tensorflow>=2.3"
Mengambil profil
Anda dapat mengambil profil menggunakan UI TensorBoard atau secara terprogram.
Mengambil profil menggunakan TensorBoard
Saat Anda memulai TensorBoard, server web akan dimulai. Saat Anda mengarahkan browser ke URL TensorBoard, browser akan menampilkan halaman web. Halaman web ini memungkinkan Anda mengambil profil secara manual dan melihat data profil.
Memulai server TensorFlow Profiler
tf.profiler.experimental.server.start(6000)
Tindakan ini akan memulai server profiler TensorFlow di VM TPU Anda.
Memulai skrip pelatihan
Jalankan skrip pelatihan dan tunggu hingga Anda melihat output yang menunjukkan bahwa model Anda
sedang dilatih secara aktif. Tampilannya akan bergantung pada kode dan model Anda. Cari
output seperti Epoch 1/100
. Atau, Anda dapat membuka halaman Cloud TPU di konsol Google Cloud, memilih TPU, dan melihat grafik penggunaan CPU. Meskipun
tidak menunjukkan penggunaan TPU, ini adalah indikasi yang baik bahwa TPU
sedang melatih model Anda.
Memulai server TensorBoard
Buka jendela terminal baru dan ssh ke VM TPU Anda dengan penerusan port. Tindakan ini memungkinkan browser lokal Anda berkomunikasi dengan server TensorBoard yang berjalan di VM TPU.
gcloud compute tpus execution-groups ssh your-vm --zone=us-central1-a --ssh-flag="-4 -L 9001:localhost:9001"
Jalankan TensorBoard di jendela terminal yang baru saja Anda buka dan tentukan direktori
tempat TensorBoard dapat menulis data pembuatan profil dengan flag --logdir
. Contoh:
TPU_LOAD_LIBRARY=0 tensorboard --logdir your-model-dir --port 9001
TensorBoard memulai server web dan menampilkan URL-nya:
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all TensorBoard 2.3.0 at http://localhost:9001/ (Press CTRL+C to quit)
Buka browser web, lalu buka URL yang ditampilkan di output TensorBoard. Pastikan TensorBoard telah memuat data pembuatan profil sepenuhnya dengan mengklik tombol reload di sudut kanan atas halaman TensorBoard. Secara default, halaman TensorBoard akan muncul dengan tab Skalar dipilih.
Mengambil profil di Node TPU
- Pilih PROFIL dari menu dropdown di bagian atas layar
- Pilih tombol CAPTURE PROFILE
- Pilih tombol pilihan TPU Name
- Ketik nama TPU Anda
- Pilih tombol CAPTURE
Merekam profil secara terprogram
Cara Anda mengambil profil secara terprogram bergantung pada framework ML yang Anda gunakan.
Jika menggunakan TensorFlow, Anda memulai dan menghentikan profiler menggunakan
tf.profiler.experimental.start()
dan tf.profiler.experimental.stop()
masing-masing. Untuk informasi selengkapnya, lihat Panduan performa TensorFlow.
Jika Anda menggunakan JAX, gunakan jax.profiler.start_trace()
dan jax.profiler.stop_trace()
untuk memulai dan menghentikan profiler. Untuk informasi selengkapnya, lihat Membuat profil program JAX.
Masalah umum profil pengambilan
Terkadang saat mencoba merekam rekaman aktivitas, Anda mungkin melihat pesan seperti berikut:
No trace event is collected after xx attempt(s). Perhaps, you want to try again
(with more attempts?).Tip: increase number of attempts with --num_tracing_attempts.
Failed to capture profile: empty trace result
Hal ini dapat terjadi jika TPU tidak aktif melakukan penghitungan, langkah pelatihan terlalu lama, atau alasan lainnya. Jika Anda melihat pesan ini, coba langkah-langkah berikut:
- Coba ambil profil setelah beberapa epoch berjalan.
- Coba tingkatkan durasi pembuatan profil di dialog Capture Profile TensorBoard. Kemungkinan langkah pelatihan memakan waktu terlalu lama.
- Pastikan VM dan TPU memiliki versi TF yang sama.
Melihat data profil dengan TensorBoard
Tab Profil ditampilkan setelah Anda mengambil beberapa data model. Anda mungkin perlu mengklik tombol muat ulang di pojok kanan atas halaman TensorBoard. Setelah data tersedia, mengklik tab Profil akan menampilkan pilihan alat untuk membantu analisis performa:
- Halaman ringkasan
- Pelihat rekaman aktivitas (khusus browser Chrome)
- Pelihat rekaman aktivitas streaming (khusus browser Chrome)
Penampil trace
Pelacak rekaman aktivitas adalah alat analisis performa Cloud TPU yang tersedia di bagian Profil. Alat ini menggunakan pelihat pembuatan profil peristiwa rekaman aktivitas Chrome sehingga hanya berfungsi di browser Chrome.
Pelacak rekaman aktivitas menampilkan linimasa yang menunjukkan:
- Durasi untuk operasi yang dijalankan oleh model TensorFlow Anda .
- Bagian sistem mana (TPU atau mesin host) yang menjalankan operasi. Biasanya, mesin host menjalankan operasi infeed, yang memproses data pelatihan sebelumnya dan mentransfernya ke TPU, sedangkan TPU menjalankan pelatihan model yang sebenarnya.
Pelacak rekaman aktivitas memungkinkan Anda mengidentifikasi masalah performa dalam model, lalu mengambil langkah-langkah untuk menyelesaikannya. Misalnya, pada tingkat tinggi, Anda dapat mengidentifikasi apakah pelatihan infeed atau model menghabiskan sebagian besar waktu. Dengan melihat lebih dalam, Anda dapat mengidentifikasi operasi TensorFlow mana yang memerlukan waktu eksekusi paling lama.
Perhatikan bahwa penampil rekaman aktivitas dibatasi hingga 1 juta peristiwa per Cloud TPU. Jika Anda perlu menilai lebih banyak peristiwa, gunakan pelihat rekaman aktivitas streaming.
Antarmuka penampil rekaman aktivitas
Untuk membuka penampil rekaman aktivitas, buka TensorBoard, klik tab Profile di bagian atas layar, lalu pilih trace_viewer dari dropdown Tools. Penampil akan muncul dan menampilkan operasi terbaru Anda:
Layar ini berisi elemen utama berikut (ditandai dengan angka di atas):
- Dropdown Run. Berisi semua operasi yang informasi perekaman jejaknya telah Anda lakukan. Tampilan default adalah operasi terbaru, tetapi Anda dapat membuka dropdown untuk memilih operasi lain.
- Dropdown alat. Memilih alat pembuatan profil yang berbeda.
- Dropdown host. Memilih host yang berisi set Cloud TPU.
- Panel linimasa. Menampilkan operasi yang dijalankan Cloud TPU dan mesin host dari waktu ke waktu.
- Panel detail. Menampilkan informasi tambahan untuk operasi yang dipilih di panel Linimasa.
Berikut tampilan panel linimasa secara lebih dekat:
Panel Linimasa berisi elemen berikut:
- Panel atas. Berisi berbagai kontrol tambahan.
- Sumbu waktu. Menampilkan waktu relatif terhadap awal rekaman aktivitas.
- Label bagian dan trek. Setiap bagian berisi beberapa jalur dan memiliki segitiga di sebelah kiri yang dapat Anda klik untuk meluaskan dan menciutkan bagian. Ada satu bagian untuk setiap elemen pemrosesan dalam sistem.
- Pemilih alat. Berisi berbagai alat untuk berinteraksi dengan pelihat rekaman aktivitas.
- Peristiwa. Ini menunjukkan waktu selama operasi dieksekusi atau durasi meta-peristiwa, seperti langkah pelatihan.
- Panel tab vertikal. Hal ini tidak memiliki tujuan yang berguna untuk Cloud TPU. Panel ini adalah bagian dari alat penampil rekaman aktivitas tujuan umum yang disediakan oleh Chrome yang digunakan untuk berbagai tugas analisis performa.
Bagian dan jalur
Pelacak rekaman aktivitas berisi bagian berikut:
- Satu bagian untuk setiap TPU node, yang diberi label dengan jumlah TPU chip
dan TPU node dalam chip (misalnya, "Chip 2: TPU Core 1"). Setiap
bagian node TPU berisi jalur berikut:
- Langkah. Menampilkan durasi langkah pelatihan yang berjalan di TPU.
- TensorFlow Ops. Menampilkan operasi TensorFlow yang dijalankan di TPU.
- XLA Ops. Menampilkan operasi XLA yang berjalan di TPU. (Setiap operasi diterjemahkan menjadi satu atau beberapa operasi XLA. Compiler XLA menerjemahkan operasi XLA menjadi kode yang berjalan di TPU.)
- Satu bagian untuk thread yang berjalan di CPU mesin host, berlabel "Host Threads". Bagian ini berisi satu jalur untuk setiap thread CPU. Catatan: Anda dapat mengabaikan informasi yang ditampilkan bersama label bagian.
Pemilih alat linimasa
Anda dapat berinteraksi dengan tampilan linimasa menggunakan pemilih alat linimasa di TensorBoard. Anda dapat mengklik alat linimasa atau menggunakan pintasan keyboard berikut untuk mengaktifkan dan menandai alat. Untuk memindahkan pemilih alat linimasa, klik di area putus-putus di bagian atas, lalu tarik pemilih ke tempat yang Anda inginkan.
Gunakan alat linimasa sebagai berikut:
Alat pemilihan Klik peristiwa untuk memilihnya atau tarik untuk memilih beberapa peristiwa. Informasi tambahan tentang peristiwa yang dipilih (nama, waktu mulai, dan durasi) akan ditampilkan di panel detail. |
|
Alat geser Tarik untuk menggeser tampilan linimasa secara horizontal dan vertikal. |
|
Alat zoom Tarik ke atas untuk memperbesar atau tarik ke bawah untuk memperkecil sepanjang sumbu horizontal (waktu). Posisi horizontal kursor mouse menentukan pusat tempat zoom dilakukan. Catatan: Alat zoom memiliki bug umum, yaitu zoom tetap aktif jika Anda melepaskan tombol mouse saat kursor mouse berada di luar tampilan linimasa. Jika hal ini terjadi, cukup klik sebentar pada tampilan linimasa untuk berhenti memperbesar. |
|
Alat pengaturan waktu Tarik secara horizontal untuk menandai interval waktu. Durasi interval muncul di sumbu waktu. Untuk menyesuaikan interval, tarik ujungnya. Untuk menghapus interval, klik di mana saja di dalam tampilan linimasa. Perhatikan bahwa interval tetap ditandai jika Anda memilih salah satu alat lainnya. |
Grafik
TensorBoard menyediakan sejumlah visualisasi, atau grafik, model Anda dan performanya. Gunakan grafik bersama dengan pelihat rekaman aktivitas atau pelihat rekaman aktivitas streaming untuk menyesuaikan model Anda dan meningkatkan performanya di Cloud TPU.
Grafik model
Framework pemodelan dapat menghasilkan
grafik dari model Anda. Data untuk grafik disimpan di direktori MODEL_DIR
di bucket penyimpanan yang Anda tentukan dengan parameter --logdir
. Anda dapat melihat grafik ini tanpa menjalankan capture_tpu_profile
.
Untuk melihat grafik model, pilih tab Graphs di TensorBoard.
Satu node dalam grafik struktur mewakili satu operasi.
Grafik kompatibilitas TPU
Tab Grafik menyertakan modul pemeriksa kompatibilitas yang memeriksa dan menampilkan operasi yang berpotensi menyebabkan masalah saat model dijalankan.
Untuk melihat grafik kompatibilitas TPU model, pilih tab Grafik di TensorBoard, lalu pilih opsi Kompatibilitas TPU. Grafik menampilkan operasi yang kompatibel (valid) dalam warna hijau dan operasi yang tidak kompatibel (tidak valid) dalam warna merah.
Node tertentu dapat menampilkan kedua warna, masing-masing sebagai persentase dari operasi kompatibilitas Cloud TPU untuk node tersebut. Lihat Menafsirkan hasil kompatibilitas untuk mengetahui contohnya.
Panel ringkasan kompatibilitas yang ditampilkan di sebelah kanan grafik menunjukkan persentase semua operasi yang kompatibel dengan Cloud TPU, atributnya, dan daftar operasi yang tidak kompatibel untuk node yang dipilih.
Klik operasi apa pun dalam grafik untuk menampilkan atributnya di panel ringkasan.
Perhatikan bahwa pemeriksa kompatibilitas tidak menilai operasi apa pun yang secara eksplisit ditetapkan ke perangkat non-TPU menggunakan penempatan perangkat manual. Selain itu, pemeriksa tidak benar-benar mengompilasi model untuk dieksekusi, jadi pastikan untuk menafsirkan hasilnya sebagai perkiraan kompatibilitas.
Menafsirkan hasil kompatibilitas
Profil
Tab Profil ditampilkan setelah Anda mengambil beberapa data model. Anda mungkin perlu mengklik tombol muat ulang di pojok kanan atas halaman TensorBoard. Setelah data tersedia, mengklik tab Profil akan menampilkan pilihan alat untuk membantu analisis performa:
- Halaman ringkasan
- Input pipeline analyzer
- Profil Operasi XLA
- Pelihat rekaman aktivitas (khusus browser Chrome)
- Pelihat memori
- Pelihat pod
- Pelihat rekaman aktivitas streaming (khusus browser Chrome)
Halaman ringkasan profil
Halaman ringkasan (overview_page), yang tersedia di bagian Profil, memberikan tampilan tingkat atas tentang performa model Anda selama pengambilan gambar berjalan. Halaman ini menampilkan halaman ringkasan gabungan untuk semua TPU, serta analisis pipeline input secara keseluruhan. Ada opsi untuk memilih setiap TPU di dropdown Host.
Halaman ini menampilkan data di panel berikut:
Ringkasan performa
- Waktu Langkah Rata-Rata - Waktu langkah yang dirata-ratakan dari semua langkah sampel
- Waktu Tidak Ada Aktivitas Host - Persentase waktu Host tidak ada aktivitas
- Waktu Tidak Ada Aktivitas TPU - Persentase waktu TPU tidak ada aktivitas
- Pemanfaatan FLOPS - Persentase pemanfaatan unit matriks TPU
- Memory Bandwidth Utilization - Persentase bandwidth memori yang digunakan
Grafik langkah waktu. Menampilkan grafik waktu langkah perangkat (dalam milidetik) di semua langkah yang diambil sampelnya. Area biru sesuai dengan bagian waktu langkah saat TPU tidak ada aktivitas dan menunggu data input dari host. Area merah menunjukkan berapa banyak waktu Cloud TPU sebenarnya berfungsi.
10 operasi TensorFlow teratas di TPU. Menampilkan operasi TensorFlow yang paling banyak menghabiskan waktu:
Setiap baris menampilkan waktu operasi mandiri (sebagai persentase waktu yang diperlukan oleh semua operasi), waktu kumulatif, kategori, nama, dan kecepatan FLOPS yang dicapai.
Lingkungan run
- Jumlah host yang digunakan
- Jenis TPU yang digunakan
- Jumlah core TPU
- Ukuran batch pelatihan
Rekomendasi untuk langkah berikutnya. Melaporkan saat model terikat input dan setiap kali masalah dengan Cloud TPU terjadi. Menyarankan alat yang dapat Anda gunakan untuk menemukan bottleneck performa dalam performa.
Penganalisis pipeline input
Penganalisis pipeline input memberikan insight tentang hasil performa Anda. Alat ini menampilkan hasil performa dari file input_pipeline.json
yang dikumpulkan oleh alat capture_tpu_profile.
Alat ini akan segera memberi tahu Anda apakah program Anda dibatasi input dan dapat membimbing Anda melalui analisis sisi perangkat dan host untuk men-debug tahap apa pun dari pipeline yang menyebabkan bottleneck.
Lihat panduan tentang performa pipeline input untuk mendapatkan insight yang lebih mendalam tentang cara mengoptimalkan performa pipeline.
Pipeline input
Saat program TensorFlow membaca data dari file, program tersebut dimulai di bagian atas grafik TensorFlow dengan cara pipeline. Proses baca dibagi menjadi beberapa tahap pemrosesan data yang terhubung secara berurutan, dengan output dari satu tahap adalah input ke tahap berikutnya. Sistem pembacaan ini disebut pipeline input.
Pipeline standar untuk membaca data dari file memiliki tahap-tahap berikut:
- Pembacaan file
- Prapemrosesan file (opsional)
- Transfer file dari mesin host ke perangkat
Pipeline input yang tidak efisien dapat memperlambat aplikasi Anda secara signifikan. Aplikasi dianggap terikat input jika menghabiskan sebagian besar waktu di pipeline input-nya. Gunakan penganalisis pipeline input untuk memahami bagian mana dari pipeline input yang tidak efisien.
Dasbor pipeline input
Untuk membuka input pipeline analyzer, pilih Profile, lalu pilih input_pipeline_analyzer dari dropdown Tools.
Dasbor berisi tiga bagian:
- Ringkasan. Merangkum pipeline input secara keseluruhan dengan informasi tentang apakah aplikasi Anda dibatasi input dan, jika ya, berapa banyak.
- Analisis sisi perangkat. Menampilkan hasil analisis sisi perangkat yang mendetail, termasuk waktu langkah perangkat dan rentang waktu perangkat yang dihabiskan untuk menunggu data input di seluruh core pada setiap langkah.
- Analisis sisi host. Menampilkan analisis mendetail di sisi host, termasuk perincian waktu pemrosesan input di host.
Ringkasan pipeline input
Bagian pertama melaporkan apakah program Anda terikat input dengan menampilkan persentase waktu perangkat yang dihabiskan untuk menunggu input dari host. Jika Anda menggunakan pipeline input standar yang telah diinstrumentasi, alat ini akan melaporkan tempat sebagian besar waktu pemrosesan input dihabiskan. Contoh:
Analisis sisi perangkat
Bagian kedua menjelaskan analisis sisi perangkat, yang memberikan insight tentang waktu yang dihabiskan di perangkat versus di host dan jumlah waktu perangkat yang dihabiskan untuk menunggu data input dari host.
- Statistik waktu langkah perangkat. Melaporkan rata-rata, simpangan baku, dan rentang (minimum, maksimum) waktu langkah perangkat.
- Waktu langkah. Menampilkan grafik waktu langkah perangkat (dalam milidetik) di semua langkah yang diambil sampelnya. Area biru sesuai dengan bagian waktu langkah saat Cloud TPU tidak ada aktivitas dan menunggu data input dari host. Area merah menunjukkan berapa banyak waktu Cloud TPU benar-benar berfungsi.
- Persentase waktu menunggu data input. Melaporkan rata-rata, simpangan baku, dan rentang (minimum, maksimum) pecahan waktu yang dihabiskan di perangkat untuk menunggu data input yang dinormalisasi ke total waktu langkah perangkat.
- Rentang waktu perangkat di seluruh core yang dihabiskan untuk menunggu data input, menurut jumlah langkah. Menampilkan diagram garis yang menunjukkan jumlah waktu perangkat (dinyatakan sebagai persentase dari total waktu langkah perangkat) yang dihabiskan untuk menunggu pemrosesan data input. Bagian waktu yang dihabiskan bervariasi dari core ke core, sehingga rentang pecahan untuk setiap core juga diplot untuk setiap langkah. Karena waktu yang diperlukan untuk melakukan langkah ditentukan oleh core yang paling lambat, Anda ingin rentangnya sesederhana mungkin.
Analisis sisi host
Bagian 3 menunjukkan detail analisis sisi host, pelaporan waktu pemrosesan input (waktu yang dihabiskan untuk operasi Dataset API) di host yang dibagi menjadi beberapa kategori:
- Menambahkan data ke antrean untuk ditransfer ke perangkat Waktu yang dihabiskan untuk memasukkan data ke antrean infeed sebelum mentransfer data ke perangkat.
- Pra-pemrosesan data. Waktu yang dihabiskan untuk operasi prapemrosesan, seperti dekompresi gambar.
- Membaca data dari file terlebih dahulu. Waktu yang dihabiskan untuk membaca file, termasuk caching, pengambilan data, dan interleaving.
- Membaca data dari file on demand. Waktu yang dihabiskan untuk membaca data dari file tanpa caching, pengambilan data sebelumnya, dan interleaving.
- Pembacaan atau pemrosesan data lainnya. Waktu yang dihabiskan untuk operasi terkait input lainnya
yang tidak menggunakan
tf.data
.
Untuk melihat statistik setiap operasi input dan kategorinya yang dikelompokkan menurut waktu eksekusi, luaskan bagian "Tampilkan statistik Input Op".
Tabel data sumber seperti berikut akan muncul:
Setiap entri tabel berisi informasi berikut:
- Input Op. Menampilkan nama op TensorFlow dari operasi input.
- Jumlah. Menampilkan jumlah total instance operasi yang dijalankan selama periode pembuatan profil.
- Total Waktu (dalam md). Menampilkan jumlah kumulatif waktu yang dihabiskan di setiap instance operasi.
- Total Time %. Menampilkan total waktu yang dihabiskan untuk operasi sebagai pecahan dari total waktu yang dihabiskan dalam pemrosesan input.
- Total Waktu Sendiri (dalam md). Menampilkan jumlah kumulatif waktu mandiri
yang dihabiskan pada setiap instance tersebut. Waktu mandiri mengukur waktu yang dihabiskan di dalam isi fungsi, tidak termasuk waktu yang dihabiskan dalam fungsi yang dipanggilnya.
Misalnya,
Iterator::PaddedBatch::Filter::ForeverRepeat::Map
dipanggil olehIterator::PaddedBatch::Filter
, sehingga total waktu mandirinya dikecualikan dari total waktu mandiri yang terakhir. - Total Self Time %. Menampilkan total waktu mandiri sebagai pecahan dari total waktu yang dihabiskan untuk pemrosesan input.
- Kategori. Menampilkan kategori pemrosesan operasi input.
Profil operasi
Profil operasi adalah alat Cloud TPU yang menampilkan statistik performa operasi XLA yang dijalankan selama periode pembuatan profil. Profil op menampilkan:
- Seberapa baik aplikasi Anda menggunakan Cloud TPU sebagai persentase waktu yang dihabiskan untuk operasi menurut kategori dan penggunaan FLOPS TPU.
- Operasi yang paling memakan waktu. Operasi tersebut adalah target potensial untuk pengoptimalan.
- Detail setiap operasi, termasuk bentuk, padding, dan ekspresi yang menggunakan operasi.
Anda dapat menggunakan profil op untuk menemukan target yang baik untuk pengoptimalan. Misalnya, jika model Anda hanya mencapai 5% FLOPS puncak TPU, Anda dapat menggunakan alat ini untuk mengidentifikasi operasi XLA mana yang memerlukan waktu terlama untuk dieksekusi dan jumlah FLOPS TPU yang digunakannya.
Menggunakan profil op
Selama pengumpulan profil, capture_tpu_profile
juga membuat
file op_profile.json
yang berisi statistik performa operasi XLA.
Anda dapat melihat data dari op_profile di TensorBoard dengan mengklik tab Profile di bagian atas layar, lalu memilih op_profile dari dropdown Tools. Anda akan melihat tampilan seperti ini:
- Bagian ringkasan. Menampilkan penggunaan Cloud TPU dan memberikan saran untuk pengoptimalan.
- Panel kontrol. Berisi kontrol yang memungkinkan Anda menetapkan jumlah operasi yang ditampilkan dalam tabel, operasi mana yang ditampilkan, dan cara pengurutannya.
- Tabel operasi. Tabel yang mencantumkan kategori operasi TensorFlow teratas yang terkait dengan operasi XLA. Operasi ini diurutkan berdasarkan persentase penggunaan Cloud TPU.
- Kartu detail operasi. Detail tentang operasi yang muncul saat Anda mengarahkan kursor ke operasi dalam tabel. Hal ini mencakup penggunaan FLOPS, ekspresi tempat operasi digunakan, dan tata letak operasi (fit).
Tabel Operasi XLA
Tabel Op mencantumkan kategori operasi XLA dalam urutan dari persentase penggunaan Cloud TPU tertinggi hingga terendah. Awalnya, tabel menunjukkan persentase waktu yang diperlukan, nama kategori op, nama op TensorFlow terkait, dan persentase penggunaan FLOPS untuk kategori tersebut. Untuk menampilkan (atau menyembunyikan) 10 operasi XLA yang paling banyak menghabiskan waktu untuk suatu kategori, klik segitiga di samping nama kategori dalam tabel.
- Time. Menampilkan total persentase waktu yang dihabiskan oleh semua operasi dalam kategori tersebut. Anda dapat mengklik untuk meluaskan entri dan melihat perincian waktu yang dihabiskan oleh setiap operasi.
- Top10 Ops. Tombol di samping nama kategori menampilkan/menyembunyikan 10 operasi yang paling memakan waktu dalam kategori. Jika entri operasi fusi ditampilkan dalam daftar operasi, Anda dapat meluaskan entri tersebut untuk melihat operasi non-fusi, per elemen yang dikandungnya.
- TensorFlow Op. Menampilkan nama op TensorFlow yang terkait dengan operasi XLA.
- FLOPS. Menampilkan penggunaan FLOPS, yang merupakan jumlah FLOPS yang diukur dan dinyatakan sebagai persentase FLOPS puncak Cloud TPU. Makin tinggi persentase penggunaan FLOPS, makin cepat operasi berjalan. Sel tabel diberi kode warna: hijau untuk penggunaan FLOPS tinggi (baik) dan merah untuk penggunaan FLOPS rendah (buruk).
Kartu detail operasi
Saat Anda memilih entri tabel, kartu akan muncul di sebelah kiri yang menampilkan detail tentang operasi XLA atau kategori operasi. Kartu standar terlihat seperti ini:
- Nama dan Kategori. Menampilkan nama dan kategori operasi XLA yang ditandai.
- Penggunaan FLOPS. Menampilkan penggunaan FLOPS sebagai persentase dari total FLOPS yang mungkin.
- Ekspresi. Menampilkan ekspresi XLA yang berisi operasi.
- Pemakaian Memori. Menampilkan persentase penggunaan memori puncak oleh program Anda.
- Tata letak (Khusus operasi konvolusi.) Menampilkan bentuk dan tata letak tensor, termasuk apakah bentuk tensor cocok persis untuk unit matriks dan cara matriks diisi.
Menafsirkan hasil
Untuk operasi konvolusi, penggunaan FLOPS TPU dapat rendah karena satu atau kedua alasan berikut:
- padding (unit matriks digunakan sebagian)
- operasi konvolusi terikat memori
Bagian ini memberikan interpretasi tentang beberapa angka dari model lain yang memiliki FLOP rendah. Dalam contoh ini, fusi output dan konvolusi mendominasi waktu eksekusi dan ada operasi vektor atau skalar long tail yang memiliki FLOPS yang sangat rendah.
Salah satu strategi pengoptimalan untuk jenis profil ini adalah mengubah operasi vektor atau skalar menjadi operasi konvolusi.
Pada contoh berikut, %convolution.399 menunjukkan FLOPS dan penggunaan memori yang lebih rendah daripada %convolution.340 dalam contoh sebelumnya.
Periksa tata letak dan perhatikan bahwa ukuran batch 16 ditambahkan padding menjadi 128 dan ukuran fitur 3 ditambahkan padding menjadi 8, yang menunjukkan bahwa hanya 5% unit matriks yang digunakan secara efektif. (Penghitungan untuk instance persen penggunaan ini adalah (((batch_time * num_of_features) / padding_size ) / num_of_cores). Bandingkan FLOPS dalam contoh ini dengan %convolution.340 dalam contoh sebelumnya yang memiliki kecocokan persis dengan matriks.
Penampil pod
Alat Pod viewer memberikan visualisasi performa untuk setiap core dalam Pod dan menampilkan status saluran komunikasi di seluruh core dalam Pod. Pelihat pod dapat mengidentifikasi dan menyoroti potensi bottleneck dan area yang perlu dioptimalkan. Alat ini berfungsi untuk Pod lengkap dan semua slice Pod v2 dan v3.
Untuk menampilkan alat Pod viewer:
- Pilih Profil dari tombol menu di sisi kanan atas jendela TensorBoard.
- Klik menu Tools di sebelah kiri jendela, lalu pilih pod_viewer.
Antarmuka pengguna Pelihat pod mencakup:
- Penggeser langkah, yang memungkinkan Anda memilih langkah yang ingin diperiksa.
- Grafik topologi, yang secara interaktif memvisualisasikan core TPU Anda di seluruh sistem TPU.
- Diagram link komunikasi, yang memvisualisasikan saluran pengiriman dan penerimaan (recv) dalam grafik topologi.
- Diagram batang latensi saluran pengiriman dan penerimaan. Mengarahkan kursor ke batang dalam diagram ini akan mengaktifkan link komunikasi di diagram link komunikasi. Kartu detail channel akan muncul di panel sebelah kiri, yang memberikan informasi mendetail tentang channel, seperti ukuran data yang ditransfer, latensi, dan bandwidth.
- Diagram perincian langkah, yang memvisualisasikan perincian langkah untuk semua inti. Hal ini dapat digunakan untuk melacak bottleneck sistem dan apakah core tertentu memperlambat sistem.
Penggeser langkah
Gunakan penggeser untuk memilih langkah. Bagian lain alat ini menampilkan statistik, seperti perincian langkah dan link komunikasi, untuk langkah tersebut.
Grafik topologi
Grafik topologi diatur secara hierarkis berdasarkan host, chip, dan core. Persegi panjang terkecil adalah core TPU. Dua core bersama-sama menunjukkan chip TPU dan empat chip bersama-sama menunjukkan host.
Grafik topologi juga merupakan peta panas, yang diberi kode warna berdasarkan persentase waktu yang diperlukan perincian tertentu (misalnya, komputasi, infeed, pengiriman, dll. dengan flop tinggi) dalam langkah yang dipilih. Batang tepat di bawah grafik topologi (ditampilkan dalam gambar berikut) menunjukkan kode warna untuk penggunaan core dan chip. Warna core menunjukkan penggunaan yang berkisar dari kuning hingga biru. Untuk komputasi flop Tinggi, angka yang lebih besar (warna lebih gelap) menunjukkan lebih banyak waktu yang dihabiskan untuk melakukan komputasi. Untuk semua pengelompokan lainnya, angka yang lebih kecil (warna lebih terang) menunjukkan waktu tunggu yang lebih kecil. Area masalah potensial, atau hotspot, ditunjukkan saat core lebih gelap daripada yang lain.
Klik pemilih menu pulldown di samping nama sistem (dilingkari dalam diagram) untuk memilih jenis pengelompokan tertentu yang ingin Anda periksa.
Arahkan kursor mouse ke salah satu persegi panjang kecil (satu core) untuk menampilkan techtip yang menunjukkan posisi core dalam sistem, ID chip globalnya, dan nama host-nya. Tips teknis juga mencakup durasi kategori pengelompokan yang dipilih, misalnya Flop tinggi, dan persentase penggunaannya dari suatu langkah.
Saluran komunikasi
Alat ini membantu memvisualisasikan link send dan recv jika model Anda menggunakannya untuk berkomunikasi antar-core. Jika model Anda berisi operasi send dan recv, Anda dapat menggunakan pemilih ID saluran untuk memilih ID saluran. Link dari core sumber (src) dan core tujuan (dst), mewakili saluran komunikasi. Grafik ini dirender pada grafik topologi dengan mengarahkan kursor mouse ke batang pada diagram yang menunjukkan latensi saluran send dan recv.
Kartu akan muncul di panel kiri yang memberikan detail lebih lanjut tentang saluran komunikasi. Kartu standar terlihat seperti ini:
- Data Transferred, yang menampilkan data yang ditransfer oleh saluran send dan recv dalam memibyte (MiB).
- Latensi, yang menunjukkan durasi, dalam mikrodetik, dari awal peristiwa pengiriman hingga akhir peristiwa recv-done.
- BW, yang menunjukkan jumlah data yang ditransfer, dalam gibibyte (GiB), dari core sumber ke core tujuan dalam durasi waktu.
- Send Delay, yang merupakan durasi dari awal recv-done hingga awal pengiriman dalam mikrodetik. Jika operasi recv-done dimulai setelah awal operasi pengiriman, penundaannya nol.
- Nama Hlo, yang menampilkan nama operasi hlo XLA yang terkait dengan saluran ini. Nama hlo ini dikaitkan dengan statistik yang ditampilkan di alat TensorBoard lainnya seperti op_profile dan memory_viewer.
Diagram perincian langkah
Diagram ini memberikan detail untuk setiap langkah pelatihan atau evaluasi.
Sumbu x adalah ID chip global dan sumbu y adalah waktu dalam mikrodetik. Dari diagram ini, Anda dapat melihat tempat waktu digunakan dalam langkah pelatihan tertentu, tempat bottleneck, dan apakah ada ketidakseimbangan beban di semua chip.
Kartu akan muncul di panel kiri yang memberikan detail selengkapnya tentang perincian langkah. Kartu standar terlihat seperti ini:
Kolom dalam kartu menentukan hal berikut:
- Komputasi Flops Tinggi, yang merupakan waktu yang dihabiskan untuk operasi (ops) fusi output atau konvolusi.
- Penghitungan flop rendah, yang dihitung dengan mengurangi semua breakdown lainnya dari total durasi.
- Infeed, yaitu waktu yang dihabiskan TPU untuk menunggu host.
- Outfeed, yang merupakan waktu yang dihabiskan host untuk menunggu output dari TPU.
- Sinkronisasi AllReduce, yang merupakan bagian waktu yang dihabiskan untuk operasi CrossReplicaSum yang menunggu untuk disinkronkan dengan core lain. Operasi CrossReplicaSum menghitung jumlah di seluruh replika.
- Komputasi AllReduce, yang merupakan waktu komputasi sebenarnya yang dihabiskan untuk operasi CrossReplicaSum.
- Operasi pengiriman chip ke chip, yang merupakan waktu yang dihabiskan untuk operasi pengiriman.
- Chip ke chip recv-done ops, yang merupakan waktu yang dihabiskan untuk operasi recv.
Penampil trace
Pelacak rekaman aktivitas adalah alat analisis performa Cloud TPU yang tersedia di bagian Profil. Alat ini menggunakan pelihat pembuatan profil peristiwa rekaman aktivitas Chrome sehingga hanya berfungsi di browser Chrome.
Pelacak rekaman aktivitas menampilkan linimasa yang menunjukkan:
- Durasi untuk operasi yang dijalankan oleh model TensorFlow Anda .
- Bagian sistem mana (TPU atau mesin host) yang menjalankan operasi. Biasanya, mesin host menjalankan operasi infeed, yang memproses data pelatihan sebelumnya dan mentransfernya ke TPU, sedangkan TPU menjalankan pelatihan model yang sebenarnya.
Pelacak rekaman aktivitas memungkinkan Anda mengidentifikasi masalah performa dalam model, lalu mengambil langkah-langkah untuk menyelesaikannya. Misalnya, pada tingkat tinggi, Anda dapat mengidentifikasi apakah pelatihan infeed atau model menghabiskan sebagian besar waktu. Dengan melihat lebih dalam, Anda dapat mengidentifikasi operasi TensorFlow mana yang memerlukan waktu eksekusi paling lama.
Perhatikan bahwa penampil rekaman aktivitas dibatasi hingga 1 juta peristiwa per Cloud TPU. Jika Anda perlu menilai lebih banyak peristiwa, gunakan pelihat rekaman aktivitas streaming.
Antarmuka penampil rekaman aktivitas
Untuk membuka penampil rekaman aktivitas, buka TensorBoard, klik tab Profile di bagian atas layar, lalu pilih trace_viewer dari dropdown Tools. Penampil akan muncul dan menampilkan operasi terbaru Anda:
Layar ini berisi elemen utama berikut (ditandai dengan angka di atas):
- Dropdown Run. Berisi semua operasi yang informasi perekaman jejaknya telah Anda lakukan. Tampilan default adalah operasi terbaru, tetapi Anda dapat membuka dropdown untuk memilih operasi lain.
- Dropdown alat. Memilih alat pembuatan profil yang berbeda.
- Dropdown host. Memilih host yang berisi set Cloud TPU.
- Panel linimasa. Menampilkan operasi yang dijalankan Cloud TPU dan mesin host dari waktu ke waktu.
- Panel detail. Menampilkan informasi tambahan untuk operasi yang dipilih di panel Linimasa.
Berikut tampilan panel linimasa secara lebih dekat:
Panel Linimasa berisi elemen berikut:
- Panel atas. Berisi berbagai kontrol tambahan.
- Sumbu waktu. Menampilkan waktu relatif terhadap awal rekaman aktivitas.
- Label bagian dan trek. Setiap bagian berisi beberapa jalur dan memiliki segitiga di sebelah kiri yang dapat Anda klik untuk meluaskan dan menciutkan bagian. Ada satu bagian untuk setiap elemen pemrosesan dalam sistem.
- Pemilih alat. Berisi berbagai alat untuk berinteraksi dengan pelihat rekaman aktivitas.
- Peristiwa. Ini menunjukkan waktu selama operasi dieksekusi atau durasi meta-peristiwa, seperti langkah pelatihan.
- Panel tab vertikal. Hal ini tidak memiliki tujuan yang berguna untuk Cloud TPU. Panel ini adalah bagian dari alat penampil rekaman aktivitas tujuan umum yang disediakan oleh Chrome yang digunakan untuk berbagai tugas analisis performa.
Bagian dan jalur
Pelacak rekaman aktivitas berisi bagian berikut:
- Satu bagian untuk setiap TPU node, yang diberi label dengan jumlah TPU chip
dan TPU node dalam chip (misalnya, "Chip 2: TPU Core 1"). Setiap
bagian node TPU berisi jalur berikut:
- Langkah. Menampilkan durasi langkah pelatihan yang berjalan di TPU.
- TensorFlow Ops. Menampilkan operasi TensorFlow yang dijalankan di TPU.
- XLA Ops. Menampilkan operasi XLA yang berjalan di TPU. (Setiap operasi diterjemahkan menjadi satu atau beberapa operasi XLA. Compiler XLA menerjemahkan operasi XLA menjadi kode yang berjalan di TPU.)
- Satu bagian untuk thread yang berjalan di CPU mesin host, berlabel "Host Threads". Bagian ini berisi satu jalur untuk setiap thread CPU. Catatan: Anda dapat mengabaikan informasi yang ditampilkan bersama label bagian.
Pemilih alat linimasa
Anda dapat berinteraksi dengan tampilan linimasa menggunakan pemilih alat linimasa di TensorBoard. Anda dapat mengklik alat linimasa atau menggunakan pintasan keyboard berikut untuk mengaktifkan dan menandai alat. Untuk memindahkan pemilih alat linimasa, klik di area putus-putus di bagian atas, lalu tarik pemilih ke tempat yang Anda inginkan.
Gunakan alat linimasa sebagai berikut:
Alat pemilihan Klik peristiwa untuk memilihnya atau tarik untuk memilih beberapa peristiwa. Informasi tambahan tentang peristiwa yang dipilih (nama, waktu mulai, dan durasi) akan ditampilkan di panel detail. |
|
Alat geser Tarik untuk menggeser tampilan linimasa secara horizontal dan vertikal. |
|
Alat zoom Tarik ke atas untuk memperbesar atau tarik ke bawah untuk memperkecil sepanjang sumbu horizontal (waktu). Posisi horizontal kursor mouse menentukan pusat tempat zoom dilakukan. Catatan: Alat zoom memiliki bug umum, yaitu zoom tetap aktif jika Anda melepaskan tombol mouse saat kursor mouse berada di luar tampilan linimasa. Jika hal ini terjadi, cukup klik sebentar pada tampilan linimasa untuk berhenti memperbesar. |
|
Alat pengaturan waktu Tarik secara horizontal untuk menandai interval waktu. Durasi interval muncul di sumbu waktu. Untuk menyesuaikan interval, tarik ujungnya. Untuk menghapus interval, klik di mana saja di dalam tampilan linimasa. Perhatikan bahwa interval tetap ditandai jika Anda memilih salah satu alat lainnya. |
Acara
Peristiwa dalam linimasa ditampilkan dalam warna yang berbeda; warna itu sendiri tidak memiliki makna tertentu.
Panel atas linimasa
Panel atas di panel Linimasa berisi beberapa kontrol tambahan:
- Tampilan metadata. Tidak digunakan untuk TPU.
- Opsi Tampilan. Tidak digunakan untuk TPU.
- Kotak penelusuran. Masukkan teks untuk menelusuri semua peristiwa yang namanya berisi teks. Klik tombol panah di sebelah kanan kotak penelusuran untuk beralih ke peristiwa yang cocok, lalu pilih setiap peristiwa secara bergantian.
- Tombol konsol. Tidak digunakan untuk TPU.
- Tombol bantuan. Klik untuk menampilkan ringkasan bantuan.
Pintasan keyboard
Berikut adalah pintasan keyboard yang dapat Anda gunakan di penampil rekaman aktivitas. Klik tombol bantuan (?) di panel atas untuk melihat pintasan keyboard lainnya.
w Zoom in s Zoom out a Pan left d Pan right f Zoom to selected event(s) m Mark time interval for selected event(s) 1 Activate selection tool 2 Activate pan tool 3 Activate zoom tool 4 Activate timing tool
Pintasan f dapat sangat berguna. Coba pilih langkah dan tekan f untuk memperbesar langkah dengan cepat.
Peristiwa karakteristik
Berikut adalah beberapa jenis peristiwa yang dapat sangat berguna saat menganalisis performa TPU.
InfeedDequeueTuple. Operasi TensorFlow ini berjalan di TPU dan menerima data input yang berasal dari host. Jika infeed memerlukan waktu yang lama, hal ini dapat berarti bahwa operasi TensorFlow yang memproses data di mesin host tidak dapat mengimbangi kecepatan konsumsi data TPU. Anda dapat melihat peristiwa yang sesuai di rekaman aktivitas host yang disebut InfeedEnqueueTuple. Untuk melihat analisis pipeline input yang lebih mendetail, gunakan alat Input Pipeline Analyzer.
CrossReplicaSum. Operasi TensorFlow ini berjalan di TPU dan menghitung jumlah di seluruh replika. Karena setiap replika sesuai dengan node TPU yang berbeda, operasi harus menunggu hingga semua node TPU selesai dengan satu langkah. Jika operasi ini memerlukan waktu lama, hal ini mungkin tidak berarti operasi penjumlahan itu sendiri lambat, tetapi node TPU menunggu node TPU lain dengan infeed data yang lambat.
- Dataset Ops. Pelacak aktivitas memvisualisasikan operasi set data yang dilakukan saat
data dimuat menggunakan Dataset API.
Iterator::Filter::Batch::ForeverRepeat::Memory
dalam contoh dikompilasi dan sesuai dengan operasidataset.map()
. Gunakan pelihat rekaman aktivitas untuk memeriksa operasi pemuatan saat Anda melakukan proses debug dan mengurangi bottleneck pipeline input.
- Thread Pengambilan Data. Menggunakan
dataset.prefetch()
untuk melakukan buffering data input dapat mencegah pelambatan sporadis dalam akses file yang menyebabkan bottleneck dalam pipeline input.
Hal yang dapat terjadi
Berikut beberapa potensi masalah yang perlu diperhatikan saat menggunakan penampil rekaman aktivitas:
- Batas tampilan peristiwa. Penampil rekaman aktivitas menampilkan maksimum 1 juta peristiwa. Jika Anda merekam lebih banyak peristiwa, hanya 1 juta peristiwa pertama yang akan ditampilkan; peristiwa berikutnya akan dihapus. Untuk mengambil lebih banyak peristiwa TPU, Anda dapat menggunakan tanda
--include_dataset_ops=False
untuk secara eksplisit mewajibkancapture_tpu_profile
mengecualikan operasi set data. - Peristiwa yang sangat panjang. Peristiwa yang dimulai sebelum perekaman dimulai atau yang berakhir setelah perekaman selesai tidak akan terlihat di penampil rekaman aktivitas. Akibatnya, peristiwa yang sangat panjang dapat terlewat.
Kapan harus memulai perekaman rekaman aktivitas. Pastikan untuk memulai perekaman rekaman aktivitas setelah Anda mengetahui bahwa Cloud TPU sedang berjalan. Jika memulai sebelum waktu tersebut, Anda mungkin hanya melihat beberapa peristiwa atau tidak ada peristiwa sama sekali di penampil rekaman aktivitas. Anda dapat meningkatkan waktu profil menggunakan flag
--duration_ms
dan dapat menetapkan percobaan ulang otomatis menggunakan flag--num_tracing_attempts
. Contoh:(vm)$ capture_tpu_profile --tpu=$TPU_NAME --logdir=${MODEL_DIR} --duration_ms=60000 --num_tracing_attempts=10
Penampil memori
Penampil memori memungkinkan Anda memvisualisasikan penggunaan memori puncak untuk program, dan tren penggunaan memori selama masa aktif program.
UI penampil memori terlihat seperti ini:
- Dropdown host. Memilih host TPU dan modul XLA High Level Optimizer (HLO) untuk divisualisasi.
- Ringkasan memori. Menampilkan alokasi dan ukuran memori puncak tanpa padding.
- Diagram ruang kerja. Menampilkan penggunaan memori puncak dan plot tren penggunaan memori selama masa aktif program. Mengarahkan kursor ke buffering di salah satu diagram buffering akan menambahkan anotasi untuk masa aktif buffering dan kartu detail buffering.
- Diagram buffer. Dua diagram yang menampilkan alokasi buffering pada titik puncak penggunaan memori, seperti yang ditunjukkan oleh garis vertikal dalam plot ruang kerja. Mengarahkan kursor ke buffer di salah satu diagram buffer akan menampilkan batang lifetime buffer di diagram ruang kerja dan kartu detail di sebelah kiri.
- Kartu Detail alokasi buffering. Menampilkan detail alokasi untuk buffer.
Panel ringkasan memori
Panel ringkasan memori (atas) menampilkan nama modul dan alokasi memori puncak yang ditetapkan saat total ukuran alokasi buffer mencapai maksimum. Ukuran alokasi puncak yang tidak ditambahkan juga ditampilkan untuk perbandingan.
Diagram ruang kerja
Diagram ini menampilkan penggunaan memori puncak dan plot tren penggunaan memori selama masa aktif program. Garis yang digambar dari atas ke bawah plot menunjukkan penggunaan memori puncak untuk program. Titik ini menentukan apakah program dapat sesuai dengan ruang memori global yang tersedia atau tidak.
Setiap titik pada plot garis yang berada di atasnya mewakili "titik program" dalam program HLO XLA seperti yang dijadwalkan oleh compiler. Garis ini memberikan gambaran tentang ketidakteraturan yang mengarah ke dan dari puncak penggunaan.
Interaksi dengan elemen diagram buffer
Saat Anda mengarahkan kursor ke buffer yang ditampilkan di salah satu diagram buffer di bawah diagram ruang kerja, garis masa horizontal untuk buffer tersebut akan muncul di diagram ruang kerja. Garis horizontal memiliki warna yang sama dengan buffer yang ditandai.
Ketebalan garis horizontal menunjukkan besarnya ukuran buffer secara relatif terhadap alokasi memori puncak. Panjang baris sesuai dengan masa aktif buffering, dimulai dari titik dalam program tempat ruang buffering dialokasikan dan berakhir di tempat ruang dibebaskan.
Diagram buffer
Dua diagram menunjukkan perincian penggunaan memori pada titik puncak penggunaan (ditunjukkan oleh garis vertikal dalam plot di atas diagram).
Menurut Urutan Program. Menampilkan buffering dari kiri ke kanan dalam urutan saat buffering aktif selama eksekusi program. Buffer yang aktif selama waktu terlama berada di sisi kiri diagram.
Menurut Ukuran. Menampilkan buffering yang aktif selama eksekusi program dalam urutan ukuran menurun. Buffer yang memiliki dampak terbesar pada titik puncak penggunaan memori berada di sebelah kiri.
Kartu detail alokasi buffer
Saat Anda mengarahkan kursor ke buffer yang ditampilkan di salah satu diagram buffer, kartu detail alokasi buffer akan muncul (selain garis masa aktif yang ditampilkan di diagram kerja). Kartu detail standar terlihat seperti ini:
- Name. Nama operasi XLA.
- Kategori. Kategori operasi.
- Size. Ukuran alokasi buffer (termasuk padding).
- Ukuran tanpa padding. Ukuran alokasi buffer tanpa padding.
- Ekspansi. Besaran relatif ukuran buffer yang ditambahkan padding dibandingkan dengan ukuran tanpa padding.
- Memori tambahan. Menunjukkan jumlah memori tambahan yang digunakan untuk padding.
- Bentuk. Menjelaskan peringkat, ukuran, dan jenis data array berdimensi N.
- Nama operasi TensorFlow. Menampilkan nama operasi TensorFlow yang terkait dengan alokasi buffering.
- Jenis alokasi. Menunjukkan kategori alokasi buffering. Jenisnya adalah: Parameter, Output, Thread-local, dan Sementara (misalnya, alokasi buffer dalam penggabungan).
Error "Kurang memori"
Jika Anda menjalankan model dan mendapatkan "error kehabisan memori", gunakan perintah berikut untuk mengambil profil memori dan melihatnya di penampil memori. Pastikan untuk menetapkan duration_ms yang sesuai sehingga periode pembuatan profil tumpang-tindih dengan waktu kompilasi program Anda. Output dapat membantu Anda memahami penyebab error:
(vm)$ capture_tpu_profile --tpu=$TPU_NAME --logdir=${MODEL_DIR} --duration_ms=60000
Penampil trace streaming
Streaming trace viewer (trace_viewer
) adalah alat analisis performa Cloud TPU, yang tersedia untuk TensorFlow 2.18.0 atau yang lebih baru, yang menyediakan rendering trace dinamis. Alat ini menggunakan pelihat pembuatan profil peristiwa rekaman aktivitas Chrome
sehingga hanya berfungsi di browser Chrome.
Saat Anda menggunakan capture_tpu_profile
untuk mengambil profil, file .tracetable akan disimpan ke bucket penyimpanan Google Cloud Anda. File ini berisi sejumlah besar peristiwa rekaman aktivitas yang dapat dilihat di
pelihat rekaman aktivitas dan penampil rekaman aktivitas streaming.
Menggunakan penampil rekaman aktivitas streaming
Untuk menggunakan penampil rekaman aktivitas streaming, trace_viewer
, Anda harus menonaktifkan sesi
TensorBoard yang ada, lalu meluncurkan kembali TensorBoard menggunakan alamat IP
TPU yang ingin Anda periksa. Penampil rekaman aktivitas streaming mengharuskan TensorBoard untuk
membuat Panggilan Prosedur Jarak Jauh Google (GRPC) ke alamat IP untuk
Cloud TPU. Saluran GRPC tidak dienkripsi.
Anda dapat menemukan alamat IP untuk host Cloud TPU di halaman Cloud TPU. Temukan Cloud TPU Anda dan cari alamat IP di kolom Internal IP.
Di VM, jalankan TensorBoard sebagai berikut dengan mengganti tpu-ip dengan alamat IP TPU Anda:
(vm)$ tensorboard --logdir=${MODEL_DIR} \ --master_tpu_unsecure_channel=tpu-ip
Alat in TensorBoard muncul di menu dropdown Tools.
Di linimasa, Anda dapat memperbesar dan memperkecil untuk melihat peristiwa rekaman aktivitas dimuat secara dinamis ke browser.
Memantau tugas Cloud TPU
Bagian ini menjelaskan cara menggunakan capture_tpu_profile
untuk mengambil
satu profil atau terus memantau tugas Cloud TPU Anda di
antarmuka command line secara real time. Dengan menetapkan opsi --monitoring_level
ke 0
(default), 1
, atau 2
, Anda
akan mendapatkan satu profil, pemantauan dasar, atau pemantauan mendetail.
Buka Cloud Shell baru dan ssh ke VM Anda (ganti vm-name dalam perintah dengan nama VM Anda):
(vm)$ gcloud compute ssh vm-name \ --ssh-flag=-L6006:localhost:6006
Di Cloud Shell baru, jalankan capture_tpu_profile
dengan
tanda --monitoring_level
ditetapkan ke 1 atau 2, seperti:
(vm)$ capture_tpu_profile --tpu=$TPU_NAME \ --monitoring_level=1
Menetapkan monitoring_level=1 akan menghasilkan output yang mirip dengan berikut ini:
TPU type: TPU v2 Utilization of TPU Matrix Units is (higher is better): 10.7%
Menetapkan monitoring_level=2 akan menampilkan informasi yang lebih mendetail:
TPU type: TPU v2 Number of TPU Cores: 8 TPU idle time (lower is better): 0.091% Utilization of TPU Matrix Units is (higher is better): 10.7% Step time: 1.95 kms (avg), 1.90kms (minute), 2.00 kms (max) Infeed percentage: 87.5% (avg). 87.2% (min), 87.8 (max)
Tanda pemantauan
--tpu
(wajib) menentukan nama Cloud TPU yang ingin Anda pantau.--monitoring_level
. Ubah perilakucapture_tpu_profile
dari menghasilkan satu profil, menjadi pemantauan berkelanjutan dasar atau mendetail. Ada tiga level yang tersedia: Level 0 (default): Menghasilkan satu profil, lalu keluar. Tingkat 1: Menampilkan versi TPU dan penggunaan TPU. Tingkat 2: Menampilkan penggunaan TPU, waktu tidak ada aktivitas TPU, dan jumlah core TPU yang digunakan. Juga memberikan waktu langkah min, avg, dan maks beserta kontribusi persentase infeed.--duration_ms
(opsional, defaultnya adalah 1000 md) menentukan berapa lama membuat profil host TPU selama setiap siklus. Umumnya, durasi ini harus cukup lama untuk mengambil setidaknya satu langkah pelatihan yang bernilai data. 1 detik merekam langkah pelatihan di sebagian besar model, tetapi jika waktu langkah model Anda sangat besar, Anda dapat menetapkan nilai ke 2xstep_time
(dalam md).--num_queries
menentukan jumlah siklus untuk menjalankancapture_tpu_profile
. Untuk terus memantau tugas TPU, tetapkan nilai ke angka yang tinggi. Untuk memeriksa waktu langkah model dengan cepat, tetapkan nilai ke angka yang rendah.