Membuat profil model di Cloud TPU Node

Membuat profil model memungkinkan Anda mengoptimalkan performa pelatihan di Cloud TPU. Untuk membuat profil model, gunakan TensorBoard dan plugin Cloud TPU TensorBoard. Untuk petunjuk penginstalan, lihat petunjuk penginstalan TensorBoard.

Untuk mengetahui 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 itu, beberapa dependensi tambahan mungkin diperlukan. Instal API tersebut dengan menjalankan:

(vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt

Menginstal Plugin TensorBoard Cloud TPU

Jalankan SSH ke Node TPU 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 memungkinkan Anda secara manual mengambil profil 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 Anda

Jalankan skrip pelatihan Anda dan tunggu hingga Anda melihat output yang menunjukkan bahwa model Anda aktif berlatih. Tampilan ini akan bergantung pada kode dan model Anda. Cari output seperti Epoch 1/100. Atau, Anda dapat membuka halaman Cloud TPU di Konsol Google Cloud, pilih TPU, dan lihat grafik penggunaan CPU. Meskipun tidak menunjukkan penggunaan TPU, hal ini merupakan indikasi yang baik bahwa TPU melatih model Anda.

Memulai server TensorBoard

Buka jendela terminal baru dan lakukan ssh ke VM TPU dengan penerusan port. Dengan begitu, browser lokal Anda dapat 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 dan buka URL yang ditampilkan di output TensorBoard. Pastikan TensorBoard telah memuat data pembuatan profil sepenuhnya dengan mengklik tombol muat ulang di pojok kanan atas halaman TensorBoard. Secara default, halaman TensorBoard akan muncul dengan tab Scalar yang dipilih.

gambar

Membuat profil di TPU Node

  1. Pilih PROFIL dari menu dropdown di bagian atas layar
  2. Pilih tombol CAPTURE PROFILE
  3. Pilih tombol pilihan Nama TPU
  4. Ketik nama TPU Anda
  5. Pilih tombol CAPTURE

Mengambil profil secara terprogram

Cara Anda mengambil profil secara terprogram bergantung pada framework ML yang Anda gunakan.

Jika menggunakan TensorFlow, Anda akan memulai dan menghentikan profiler masing-masing menggunakan tf.profiler.experimental.start() dan tf.profiler.experimental.stop(). 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 mengetahui informasi selengkapnya, lihat Membuat profil program JAX.

Mencatat masalah umum profil

Terkadang saat mencoba mengambil 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 melakukan penghitungan secara aktif, langkah pelatihan memakan waktu terlalu lama, atau alasan lainnya. Jika Anda melihat pesan ini, coba langkah berikut:

  • Coba ambil profil setelah beberapa epoch berjalan.
  • Coba tingkatkan durasi pembuatan profil di dialog Capture Profile TensorBoard. Ada kemungkinan bahwa 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 Profile akan menampilkan pilihan alat untuk membantu analisis performa:

Penampil rekaman aktivitas

Trace viewer adalah alat analisis performa Cloud TPU yang tersedia di bagian Profile. Alat ini menggunakan penampil profil peristiwa rekaman aktivitas Chrome sehingga hanya berfungsi di browser Chrome.

Penampil rekaman aktivitas menampilkan linimasa yang menunjukkan:

  • Durasi untuk operasi yang dijalankan oleh model TensorFlow Anda .
  • Bagian sistem (TPU atau mesin host) yang menjalankan operasi. Biasanya, mesin host mengeksekusi operasi infeed, yang melakukan prapemrosesan data pelatihan dan mentransfernya ke TPU, sedangkan TPU menjalankan pelatihan model yang sebenarnya.

Penampil rekaman aktivitas memungkinkan Anda mengidentifikasi masalah performa pada model, lalu mengambil langkah-langkah untuk menyelesaikannya. Misalnya, pada tingkat tinggi, Anda dapat mengidentifikasi apakah pelatihan model atau infeed memerlukan sebagian besar waktu. Dengan perincian, 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 penampil rekaman aktivitas streaming.

Antarmuka penampil rekaman aktivitas

Untuk membuka penampil rekaman aktivitas, buka TensorBoard, klik tab Profil di bagian atas layar, lalu pilih trace_viewer dari menu dropdown Alat. Penampil tersebut akan menampilkan proses terbaru Anda:

gambar

Layar ini berisi elemen utama berikut (ditandai dengan angka di atas):

  1. Menjalankan dropdown. Berisi semua sesi yang informasi rekaman aktivitasnya Anda ambil. Tampilan default adalah operasi terbaru, tetapi Anda dapat membuka menu dropdown untuk memilih run lain.
  2. Dropdown alat. Memilih alat pembuatan profil yang berbeda.
  3. Dropdown Host. Memilih host yang berisi set Cloud TPU.
  4. Panel linimasa. Menampilkan operasi yang dijalankan oleh Cloud TPU dan mesin host dari waktu ke waktu.
  5. Panel detail. Menampilkan informasi tambahan untuk operasi yang dipilih di panel {i>Timeline<i}.

Berikut adalah tampilan panel linimasa lebih dekat:

gambar

Panel {i>Timeline<i} berisi elemen-elemen berikut:

  1. Panel atas. Berisi berbagai kontrol tambahan.
  2. Sumbu waktu. Menampilkan waktu yang terkait dengan awal rekaman aktivitas.
  3. Label bagian dan trek. Setiap bagian berisi beberapa trek dan memiliki segitiga di sebelah kiri yang dapat Anda klik untuk memperluas dan menciutkan bagian tersebut. Ada satu bagian untuk setiap elemen pemrosesan dalam sistem.
  4. Pemilih alat. Berisi berbagai alat untuk berinteraksi dengan penampil rekaman aktivitas.
  5. Acara. Kolom ini menunjukkan waktu selama operasi dijalankan atau durasi peristiwa meta, seperti langkah pelatihan.
  6. Panel tab vertikal. Hal ini tidak memiliki kegunaan 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 trek

Trace viewer berisi bagian berikut:

  • Satu bagian untuk setiap node TPU, yang diberi label dengan jumlah chip TPU dan node TPU 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.
    • Operasi XLA. 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 pada CPU mesin host, dengan label "Host Threads". Bagian ini berisi satu jalur untuk setiap thread CPU. Catatan: Anda dapat mengabaikan informasi yang ditampilkan di samping 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 area titik-titik 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 satu atau beberapa 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 di sepanjang sumbu horizontal (waktu). Posisi horizontal kursor mouse menentukan bagian tengah tempat zoom terjadi.

Catatan: Alat zoom memiliki bug yang telah diketahui, yang mana zoom tetap aktif jika Anda melepaskan tombol mouse saat kursor mouse berada di luar tampilan linimasa. Jika Anda mengalaminya, cukup klik sebentar di tampilan linimasa untuk berhenti memperbesar/memperkecil.

Alat pengaturan waktu
Tarik secara horizontal untuk menandai interval waktu. Panjang interval muncul pada 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 tentang model dan performanya. Gunakan grafik bersama dengan penampil rekaman aktivitas atau penampil rekaman aktivitas streaming untuk menyesuaikan model dan meningkatkan performanya di Cloud TPU.

Grafik model

Framework pemodelan dapat menghasilkan grafik dari model Anda. Data untuk grafik disimpan dalam direktori MODEL_DIR dalam 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.

gambar

Sebuah node dalam grafik struktur mewakili satu operasi.

Grafik kompatibilitas TPU

Tab Graphs berisi modul pemeriksa kompatibilitas yang memeriksa dan menampilkan operasi yang berpotensi menyebabkan masalah saat model dijalankan.

Untuk melihat grafik kompatibilitas TPU model, pilih tab Graphs di TensorBoard, lalu pilih opsi Kompatibilitas TPU. Grafik ini menampilkan operasi yang kompatibel (valid) dengan warna hijau dan operasi yang tidak kompatibel (tidak valid) dengan warna merah.

gambar

Node tertentu dapat menampilkan kedua warna, masing-masing sebagai persentase operasi kompatibilitas Cloud TPU untuk node tersebut. Lihat Menafsirkan hasil kompatibilitas untuk mengetahui contoh.

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.

gambar

Perlu diperhatikan 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 Profile akan menampilkan pilihan alat untuk membantu analisis performa:

Halaman ringkasan profil

Halaman ringkasan (overview_page), yang tersedia di bagian Profil, memberikan tampilan tingkat atas tentang performa model Anda selama proses pengambilan gambar. Halaman ini menampilkan halaman ringkasan gabungan untuk semua TPU, serta analisis pipeline input secara keseluruhan. Ada opsi untuk memilih TPU satu per satu pada menu dropdown Host.

Halaman ini menampilkan data di panel berikut:

gambar

  • Ringkasan performa

    • Waktu Langkah Rata-Rata - Waktu langkah dirata-ratakan pada semua langkah yang diambil sampelnya
    • Waktu Tidak Ada Aktivitas Host - Persentase waktu Host tidak ada aktivitas
    • Waktu Tidak Ada Aktivitas TPU - Persentase waktu TPU tidak ada aktivitas
    • Pemanfaatan FLOPS - Penggunaan persentase unit matriks TPU
    • Penggunaan Bandwidth Memori - Persentase bandwidth memori yang digunakan
  • Grafik langkah-waktu. Menampilkan grafik waktu langkah perangkat (dalam milidetik) pada semua langkah yang diambil sampelnya. Area berwarna biru menunjukkan bagian waktu langkah saat TPU tidak ada aktivitas menunggu data input dari host. Area merah menunjukkan durasi waktu Cloud TPU benar-benar berfungsi.

  • 10 operasi TensorFlow teratas di TPU. Menampilkan operasi TensorFlow yang paling banyak memakan waktu:

    Setiap baris menampilkan waktu mandiri operasi (sebagai persentase waktu yang dibutuhkan oleh semua operasi), waktu kumulatif, kategori, nama, dan rasio FLOPS yang dicapai.

  • Lingkungan jalankan

    • Jumlah host yang digunakan
    • Jenis TPU yang digunakan
    • Jumlah core TPU
    • Ukuran batch pelatihan
  • Rekomendasi untuk langkah selanjutnya. Melaporkan saat model terikat input dan setiap kali terjadi masalah dengan Cloud TPU. 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 langsung memberi tahu Anda apakah program terikat input dan dapat memandu Anda melalui analisis perangkat dan sisi host untuk men-debug tahap pipeline mana pun yang menimbulkan bottleneck.

Lihat panduan tentang performa pipeline input untuk mendapatkan insight lebih mendalam tentang pengoptimalan performa pipeline.

Pipeline input

Ketika 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 umum untuk membaca catatan dari file memiliki tahapan berikut:

  1. Pembacaan file
  2. Prapemrosesan file (opsional)
  3. Transfer file dari mesin host ke perangkat

Pipeline input yang tidak efisien dapat sangat memperlambat aplikasi Anda. Aplikasi dianggap terikat input jika aplikasi menghabiskan banyak waktu dalam pipeline inputnya. Gunakan penganalisis pipeline input untuk memahami di mana pipeline input tidak efisien.

Dasbor pipeline input

Untuk membuka analyzer pipeline input, pilih Profile, lalu pilih input_pipeline_analyzer dari menu drop-down Tools.

Dasbor berisi tiga bagian:

gambar

  1. Ringkasan. Merangkum keseluruhan pipeline input dengan informasi tentang apakah aplikasi Anda terikat input dan, jika ya, seberapa banyak.
  2. 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.
  3. Analisis sisi host. Menampilkan analisis mendetail di sisi host, termasuk perincian waktu pemrosesan input pada host.
Ringkasan pipeline input

Bagian pertama melaporkan jika program Anda terikat input dengan menampilkan persentase waktu perangkat yang dihabiskan untuk menunggu input dari host. Jika Anda menggunakan pipeline input standar yang telah diinstrumentasikan, alat ini akan melaporkan tempat sebagian besar waktu pemrosesan input dihabiskan. Contoh:

gambar

Analisis sisi perangkat

Bagian kedua menjelaskan analisis sisi perangkat, yang memberikan insight tentang waktu yang dihabiskan di perangkat dibandingkan di host, dan berapa banyak waktu yang dihabiskan perangkat untuk menunggu data input dari host.

gambar

  1. Statistik waktu langkah perangkat. Melaporkan rata-rata, simpangan baku, dan rentang (minimum, maksimum) waktu langkah perangkat.
  2. Waktu langkah. Menampilkan grafik waktu langkah perangkat (dalam milidetik) pada semua langkah yang diambil sampelnya. Area biru sesuai dengan bagian waktu langkah Cloud TPU tidak aktif menunggu data input dari host. Area merah menunjukkan durasi waktu Cloud TPU benar-benar berfungsi.
  3. Persentase waktu menunggu data input. Melaporkan rata-rata, simpangan baku, dan rentang (minimum, maksimum) fraksi waktu yang dihabiskan di perangkat untuk menunggu data input dinormalisasi ke total waktu langkah perangkat.
  4. Rentang waktu perangkat di seluruh core yang dihabiskan untuk menunggu data input, berdasarkan angka langkah. Menampilkan diagram garis yang menunjukkan jumlah waktu perangkat (dinyatakan sebagai persentase total waktu langkah perangkat) yang dihabiskan untuk menunggu pemrosesan data input. Fraksi waktu yang dihabiskan bervariasi dari inti ke inti, sehingga rentang fraksi untuk setiap inti juga dipetakan untuk setiap langkah. Karena waktu yang diperlukan satu langkah ditentukan oleh core paling lambat, Anda ingin rentangnya sekecil mungkin.
Analisis sisi host

Bagian 3 menunjukkan detail analisis sisi host, pelaporan waktu pemrosesan input (waktu yang dihabiskan untuk operasi Dataset API) pada host yang dibagi menjadi beberapa kategori:

  • Mengantrekan data untuk ditransfer ke perangkat Waktu yang dihabiskan untuk memasukkan data ke dalam antrean dalam feed sebelum mentransfer data ke perangkat.
  • Pra-pemrosesan data. Waktu yang dihabiskan untuk operasi pra-pemrosesan, seperti dekompresi gambar.
  • Membaca data dari file terlebih dahulu. Waktu yang dihabiskan untuk membaca file, termasuk menyimpan cache, pengambilan data, dan interleaving.
  • Membaca data dari file secara on demand. Waktu yang dihabiskan untuk membaca data dari file tanpa caching, pengambilan data, dan interleaving.
  • Pembacaan atau pemrosesan data lainnya. Waktu yang dihabiskan untuk operasi terkait input lainnya yang tidak menggunakan tf.data.

gambar

Untuk melihat statistik masing-masing operasi input dan kategorinya yang dikelompokkan berdasarkan waktu eksekusi, luaskan bagian "Tampilkan statistik Input Op".

Tabel data sumber seperti berikut akan muncul:

gambar

Setiap entri tabel berisi informasi berikut:

  1. Input Op. Menampilkan nama op TensorFlow dari operasi input.
  2. Jumlah. Menampilkan jumlah total instance operasi yang dieksekusi selama periode pembuatan profil.
  3. Total Waktu (dalam milidetik). Menampilkan jumlah waktu kumulatif yang dihabiskan di setiap instance operasi.
  4. Total Waktu %. Menampilkan total waktu yang dihabiskan pada suatu operasi sebagai pecahan dari total waktu yang dihabiskan dalam pemrosesan input.
  5. Total Waktu Mandiri (dalam milidetik). Menampilkan jumlah akumulatif waktu mandiri yang dihabiskan untuk 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 oleh Iterator::PaddedBatch::Filter sehingga total waktu sendiri dikecualikan dari total waktu mandiri yang terakhir.
  6. Total Self Time %. Menampilkan total waktu mandiri sebagai pecahan dari total waktu yang dihabiskan untuk pemrosesan input.
  7. Kategori. Menampilkan kategori pemrosesan operasi input.

Profil operasi

Profil Op adalah alat Cloud TPU yang menampilkan statistik performa operasi XLA yang dijalankan selama periode pembuatan profil. Profil operasi menampilkan:

  • Seberapa baik aplikasi Anda menggunakan Cloud TPU sebagai persentase waktu yang dihabiskan untuk operasi menurut kategori dan pemanfaatan TPU FLOPS.
  • Operasi yang paling memakan waktu. Operasi tersebut adalah target potensial untuk dioptimalkan.
  • Detail setiap operasi, termasuk bentuk, padding, dan ekspresi yang menggunakan operasi tersebut.

Anda dapat menggunakan profil operasi untuk menemukan target yang bagus untuk pengoptimalan. Misalnya, jika model Anda hanya mencapai 5% dari TPU puncak FLOPS, Anda dapat menggunakan alat ini untuk mengidentifikasi operasi XLA mana yang memerlukan waktu paling lama untuk dijalankan dan jumlah TPU FLOPS yang digunakannya.

Menggunakan profil operasi

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:

gambar

  1. Bagian Ringkasan. Menampilkan penggunaan Cloud TPU dan memberikan saran untuk pengoptimalan.
  2. Panel kontrol. Berisi kontrol yang memungkinkan Anda menetapkan jumlah operasi yang ditampilkan dalam tabel, operasi yang ditampilkan, dan cara pengurutannya.
  3. Tabel operasi. Tabel yang mencantumkan kategori operasi TensorFlow teratas yang terkait dengan operasi XLA. Operasi ini diurutkan berdasarkan persentase penggunaan Cloud TPU.
  4. Kartu detail operasi. Detail tentang operasi yang muncul saat Anda mengarahkan kursor ke operasi di tabel. Hal ini mencakup pemanfaatan FLOPS, ekspresi penggunaan pengoperasian, dan tata letak pengoperasian (fit).
Tabel Op XLA

Tabel Op mencantumkan kategori operasi XLA berdasarkan persentase penggunaan Cloud TPU yang tertinggi hingga terendah. Awalnya, tabel menunjukkan persentase waktu yang diambil, nama kategori operasi, nama operasi TensorFlow terkait, dan persentase pemanfaatan FLOPS untuk kategori tersebut. Untuk menampilkan (atau menyembunyikan) 10 operasi XLA yang paling memakan waktu untuk suatu kategori, klik segitiga di samping nama kategori dalam tabel.

gambar

  1. Time. Menampilkan persentase total waktu yang dihabiskan oleh semua operasi dalam kategori tersebut. Anda dapat mengklik untuk meluaskan entri dan melihat perincian waktu yang dihabiskan oleh setiap operasi.
  2. Operasi Top10. Tombol di samping nama kategori akan menampilkan/menyembunyikan 10 operasi yang paling memakan waktu dalam kategori tersebut. Jika entri operasi fusi ditampilkan dalam daftar operasi, Anda dapat meluaskannya untuk melihat operasi non-fusi dan elemen yang ada di dalamnya.
  3. TensorFlow Op. Menampilkan nama operasi TensorFlow yang terkait dengan operasi XLA.
  4. FLOPS. Menampilkan pemanfaatan FLOPS, yang merupakan jumlah FLOPS terukur yang dinyatakan sebagai persentase FLOPS puncak Cloud TPU. Makin tinggi persentase penggunaan FLOPS, makin cepat operasi yang 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, sebuah kartu akan muncul di sebelah kiri yang menampilkan detail tentang operasi XLA atau kategori operasi. Sebuah kartu biasanya terlihat seperti ini:

gambar

  • Name dan Category. Menunjukkan nama dan kategori operasi XLA yang disorot.
  • Pemanfaatan FLOPS. Menampilkan pemanfaatan FLOPS sebagai persentase total FLOPS yang memungkinkan.
  • 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 tersebut sama persis dengan unit matriks dan cara padding matriksnya.
Menafsirkan hasil

Untuk operasi konvolusi, penggunaan TPU FLOPS dapat menjadi rendah karena salah satu atau kedua alasan berikut:

  • padding (unit matriks digunakan sebagian)
  • konvolusi adalah terikat memori

Bagian ini memberikan interpretasi tentang beberapa angka dari model berbeda yang FLOP-nya rendah. Dalam contoh ini, fusi output dan konvolusi mendominasi waktu eksekusi dan terdapat operasi vektor atau skalar yang panjang dengan FLOPS yang sangat rendah.

Salah satu strategi pengoptimalan untuk jenis profil ini adalah dengan mengubah operasi vektor atau skalar menjadi operasi konvolusi.

Dalam contoh berikut, %convolution.399 menunjukkan FLOPS dan pemakaian memori yang lebih rendah daripada %convolution.340 di contoh sebelumnya.

gambar

Periksa tata letaknya dan perhatikan bahwa ukuran tumpukan 16 ditambahkan ke 128 dan ukuran fitur 3 ditambahkan ke 8, yang menunjukkan bahwa hanya 5% unit matriks yang digunakan secara efektif. (Perhitungan untuk instance pemanfaatan persen ini adalah (((batch_time * num_of_features) / padding_size ) / num_of_cores). Bandingkan FLOPS dalam contoh ini dengan %convolution.340 di contoh sebelumnya yang memiliki kecocokan persis dengan matriks.

Penampil pod

Alat Viewer Pod menyediakan visualisasi performa untuk setiap inti dalam Pod dan menampilkan status saluran komunikasi di seluruh inti dalam Pod. Penampil pod dapat mengidentifikasi dan menandai potensi bottleneck dan area yang memerlukan pengoptimalan. Alat ini berfungsi untuk Pod lengkap serta semua slice Pod v2 dan v3.

Untuk menampilkan alat Penampil Pod:

  1. Pilih Profile dari tombol menu di sisi kanan atas jendela TensorBoard.
  2. Klik menu Tools di sisi kiri jendela, lalu pilih pod_viewer.

Antarmuka pengguna Pod viewer meliputi:

  1. Penggeser langkah, yang memungkinkan Anda memilih langkah yang ingin diperiksa.
  2. Grafik topologi, yang secara interaktif memvisualisasikan inti TPU Anda di seluruh sistem TPU.
  3. Diagram link komunikasi, yang memvisualisasikan saluran kirim dan terima (recv) dalam grafik topologi.
  4. Diagram batang latensi pengiriman dan penerimaan saluran. Mengarahkan kursor ke batang dalam diagram ini akan mengaktifkan link komunikasi dalam diagram link komunikasi. Kartu detail saluran akan muncul di panel sebelah kiri, yang memberikan informasi mendetail tentang saluran, seperti ukuran data yang ditransfer, latensi, dan bandwidth.
  5. Diagram pengelompokan langkah, yang memvisualisasikan perincian langkah untuk semua inti. Ini dapat digunakan untuk melacak bottleneck sistem dan apakah core tertentu memperlambat sistem.

gambar

Penggeser langkah

Gunakan penggeser untuk memilih langkah. Alat lainnya menampilkan statistik, seperti perincian langkah dan link komunikasi, untuk langkah tersebut.

Grafik topologi

Grafik topologi diatur secara hierarkis berdasarkan host, {i>chip<i}, dan inti. Persegi panjang terkecil merupakan core TPU. Dua inti bersama-sama menunjukkan chip TPU dan empat {i>chip<i} menunjukkan {i>host<i}.

gambar

Grafik topologi juga merupakan peta panas, yang diberi kode warna berdasarkan persentase waktu perincian tertentu (misalnya, komputasi High flops, infeed, send, dll.) yang diambil pada langkah yang dipilih. Batang tepat di bawah grafik topologi (ditunjukkan dalam grafik berikut) menunjukkan coding warna untuk penggunaan core dan chip. Warna inti menunjukkan pemanfaatan yang berkisar dari kuning hingga biru. Untuk komputasi High flops, angka yang lebih besar (warna lebih gelap) menunjukkan lebih banyak waktu yang dihabiskan untuk komputasi. Untuk semua perincian lainnya, angka yang lebih kecil (warna yang lebih terang) menunjukkan waktu tunggu yang lebih kecil. Area masalah potensial, atau {i>hotspot<i}, akan ditunjukkan saat inti lebih gelap dari yang lain.

Klik pemilih menu pulldown di samping nama sistem (dilingkari dalam diagram) untuk memilih jenis perincian tertentu yang ingin Anda periksa.

Arahkan mouse ke salah satu kotak kecil (core tunggal) untuk menampilkan techtip yang menunjukkan posisi inti dalam sistem, ID chip globalnya, dan nama host-nya. Tips teknologi juga mencakup durasi kategori perincian yang dipilih, misalnya, error tinggi, dan persentase pemanfaatannya dari satu langkah.

gambar

Saluran komunikasi

Alat ini membantu memvisualisasikan link pengiriman dan penerimaan jika model Anda menggunakannya untuk berkomunikasi antar-inti. Jika model Anda berisi operasi kirim dan terima, Anda dapat menggunakan pemilih ID saluran untuk memilih ID saluran. Link dari inti sumber (src) dan inti tujuan (dst), mewakili saluran komunikasi. Info ini dirender pada grafik topologi dengan mengarahkan mouse ke batang di diagram yang menunjukkan latensi saluran pengiriman dan pengambilan.

gambar

Sebuah kartu akan muncul di panel sebelah kiri yang memberikan detail selengkapnya tentang saluran komunikasi. Kartu biasanya terlihat seperti ini:

gambar

  1. Data yang Ditransfer, yang menampilkan data yang ditransfer oleh saluran kirim dan recv dalam memibyte (MiB).
  2. Latensi, yang menunjukkan durasi, dalam mikrodetik, dari awal peristiwa pengiriman hingga akhir peristiwa yang diambil.
  3. BW, yang menunjukkan jumlah data yang ditransfer, dalam gibibita (GiB), dari inti sumber ke inti tujuan dalam durasi waktu tertentu.
  4. Penundaan Pengiriman, yang merupakan durasi dari awal pengiriman hingga awal pengiriman dalam mikrodetik. Jika operasi pengiriman dimulai setelah operasi pengiriman dimulai, penundaannya adalah nol.
  5. Hlo Names, yang menampilkan nama operasi hlo XLA yang terkait dengan saluran ini. Nama-nama hlo ini terkait 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 di mana waktu digunakan dalam langkah pelatihan tertentu, letak bottleneck, dan apakah ada ketidakseimbangan beban di semua chip.

gambar

Sebuah kartu akan muncul di panel sebelah kiri yang memberikan detail lebih lanjut tentang perincian langkah. Kartu biasanya terlihat seperti ini:

gambar

Kolom dalam kartu menentukan hal berikut:

  1. High Flops Compute, yang merupakan waktu yang dihabiskan untuk konvolusi atau operasi fusion output (operasi).
  2. Komputasi low flops, yang dihitung dengan mengurangi semua perincian lainnya dari total durasi.
  3. Infeed, yakni waktu yang dihabiskan TPU untuk menunggu host.
  4. Outfeed, yaitu waktu yang dihabiskan host untuk menunggu output dari TPU.
  5. Sinkronisasi AllReduce, yang merupakan porsi waktu yang dihabiskan pada operasi CrossReplicaSum yang menunggu untuk disinkronkan dengan core lain. Operasi CrossReplicaSum menghitung jumlah di seluruh replika.
  6. AllReduce compute, yang merupakan waktu komputasi sebenarnya yang dihabiskan pada operasi CrossReplicaSum.
  7. Chip untuk melakukan operasi pengiriman chip, yang merupakan waktu yang dihabiskan untuk operasi pengiriman.
  8. Chip untuk melakukan chip operasi yang telah diproses, yang merupakan waktu yang dihabiskan untuk operasi pemulihan.

Penampil rekaman aktivitas

Trace viewer adalah alat analisis performa Cloud TPU yang tersedia di bagian Profile. Alat ini menggunakan penampil profil peristiwa rekaman aktivitas Chrome sehingga hanya berfungsi di browser Chrome.

Penampil rekaman aktivitas menampilkan linimasa yang menunjukkan:

  • Durasi untuk operasi yang dijalankan oleh model TensorFlow Anda .
  • Bagian sistem (TPU atau mesin host) yang menjalankan operasi. Biasanya, mesin host mengeksekusi operasi infeed, yang melakukan prapemrosesan data pelatihan dan mentransfernya ke TPU, sedangkan TPU menjalankan pelatihan model yang sebenarnya.

Penampil rekaman aktivitas memungkinkan Anda mengidentifikasi masalah performa pada model, lalu mengambil langkah-langkah untuk menyelesaikannya. Misalnya, pada tingkat tinggi, Anda dapat mengidentifikasi apakah pelatihan model atau infeed memerlukan sebagian besar waktu. Dengan perincian, 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 penampil rekaman aktivitas streaming.

Antarmuka penampil rekaman aktivitas

Untuk membuka penampil rekaman aktivitas, buka TensorBoard, klik tab Profil di bagian atas layar, lalu pilih trace_viewer dari menu dropdown Alat. Penampil tersebut akan menampilkan proses terbaru Anda:

gambar

Layar ini berisi elemen utama berikut (ditandai dengan angka di atas):

  1. Menjalankan dropdown. Berisi semua sesi yang informasi rekaman aktivitasnya Anda ambil. Tampilan default adalah operasi terbaru, tetapi Anda dapat membuka menu dropdown untuk memilih run lain.
  2. Dropdown alat. Memilih alat pembuatan profil yang berbeda.
  3. Dropdown Host. Memilih host yang berisi set Cloud TPU.
  4. Panel linimasa. Menampilkan operasi yang dijalankan oleh Cloud TPU dan mesin host dari waktu ke waktu.
  5. Panel detail. Menampilkan informasi tambahan untuk operasi yang dipilih di panel {i>Timeline<i}.

Berikut adalah tampilan panel linimasa lebih dekat:

gambar

Panel {i>Timeline<i} berisi elemen-elemen berikut:

  1. Panel atas. Berisi berbagai kontrol tambahan.
  2. Sumbu waktu. Menampilkan waktu yang terkait dengan awal rekaman aktivitas.
  3. Label bagian dan trek. Setiap bagian berisi beberapa trek dan memiliki segitiga di sebelah kiri yang dapat Anda klik untuk memperluas dan menciutkan bagian tersebut. Ada satu bagian untuk setiap elemen pemrosesan dalam sistem.
  4. Pemilih alat. Berisi berbagai alat untuk berinteraksi dengan penampil rekaman aktivitas.
  5. Acara. Kolom ini menunjukkan waktu selama operasi dijalankan atau durasi peristiwa meta, seperti langkah pelatihan.
  6. Panel tab vertikal. Hal ini tidak memiliki kegunaan 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 trek

Trace viewer berisi bagian berikut:

  • Satu bagian untuk setiap node TPU, yang diberi label dengan jumlah chip TPU dan node TPU 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.
    • Operasi XLA. 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 pada CPU mesin host, dengan label "Host Threads". Bagian ini berisi satu jalur untuk setiap thread CPU. Catatan: Anda dapat mengabaikan informasi yang ditampilkan di samping 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 area titik-titik 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 satu atau beberapa 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 di sepanjang sumbu horizontal (waktu). Posisi horizontal kursor mouse menentukan bagian tengah tempat zoom terjadi.

Catatan: Alat zoom memiliki bug yang telah diketahui, yang mana zoom tetap aktif jika Anda melepaskan tombol mouse saat kursor mouse berada di luar tampilan linimasa. Jika Anda mengalaminya, cukup klik sebentar di tampilan linimasa untuk berhenti memperbesar/memperkecil.

Alat pengaturan waktu
Tarik secara horizontal untuk menandai interval waktu. Panjang interval muncul pada 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 berbagai warna; warnanya sendiri tidak memiliki arti tertentu.

Panel atas linimasa

Panel atas panel Timeline berisi beberapa kontrol tambahan:

gambar

  1. Tampilan metadata. Tidak digunakan untuk TPU.
  2. Opsi Tampilan. Tidak digunakan untuk TPU.
  3. Kotak penelusuran. Masukkan teks untuk menelusuri semua peristiwa yang namanya berisi teks. Klik tombol panah di sebelah kanan kotak penelusuran untuk bergerak maju dan mundur menelusuri peristiwa yang cocok, dengan memilih setiap peristiwa secara bergantian.
  4. Tombol Konsol. Tidak digunakan untuk TPU.
  5. 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 bisa sangat berguna. Coba pilih langkah, lalu tekan f untuk memperbesar langkah dengan cepat.

Peristiwa karakteristik

Berikut adalah beberapa jenis peristiwa yang dapat sangat berguna saat menganalisis performa TPU.

gambar

  • InfeedDequeueTuple. Operasi TensorFlow ini berjalan pada TPU dan menerima data input yang berasal dari host. Jika infeed memerlukan waktu lama, hal ini dapat berarti bahwa operasi TensorFlow yang melakukan prapemrosesan data di mesin host tidak dapat mengikuti tingkat konsumsi data TPU. Anda dapat melihat peristiwa yang sesuai dalam rekaman aktivitas host yang disebut InfeedEnqueueTuple. Untuk melihat analisis input-pipeline 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 semua node TPU selesai dengan satu langkah. Jika operasi ini memerlukan waktu lama, mungkin bukan berarti operasi penjumlahan itu sendiri lambat, tetapi node TPU menunggu node TPU lain dengan infeed data yang lambat.

gambar

  • Operasi Set Data. Penampil rekaman aktivitas memvisualisasikan operasi set data yang dilakukan saat data dimuat menggunakan Dataset API. Iterator::Filter::Batch::ForeverRepeat::Memory pada contoh dikompilasi dan sesuai dengan operasi dataset.map() . Gunakan penampil rekaman aktivitas untuk memeriksa operasi pemuatan saat Anda melakukan proses debug dan mengurangi bottleneck pipeline input.

gambar

  • Melakukan Prefetch Thread. Penggunaan dataset.prefetch() untuk mem-buffer data input dapat mencegah perlambatan sporadis dalam akses file yang menciptakan bottleneck dalam pipeline input.
Kesalahan mungkin

Berikut ini beberapa potensi masalah yang perlu diketahui saat menggunakan penampil rekaman aktivitas:

  • Batas tampilan peristiwa. Penampil rekaman aktivitas menampilkan maksimum 1 juta peristiwa. Jika Anda mengambil lebih banyak peristiwa, hanya 1 juta peristiwa paling awal yang akan ditampilkan; peristiwa selanjutnya akan dihapus. Untuk mengambil lebih banyak peristiwa TPU, Anda dapat menggunakan flag --include_dataset_ops=False untuk secara eksplisit mengharuskan capture_tpu_profile mengecualikan operasi set data.
  • Acara yang sangat lama. Peristiwa yang dimulai sebelum perekaman dimulai atau yang berakhir setelah perekaman selesai tidak akan terlihat di penampil rekaman aktivitas. Akibatnya, peristiwa yang sangat lama dapat terlewatkan.
  • Kapan harus memulai perekaman rekaman aktivitas. Pastikan untuk memulai perekaman rekaman aktivitas setelah Anda mengetahui bahwa Cloud TPU sedang berjalan. Jika memulai sebelum tanggal tersebut, Anda mungkin hanya melihat sedikit peristiwa atau tidak melihat peristiwa sama sekali di penampil rekaman aktivitas. Anda dapat menambah waktu profil menggunakan tanda --duration_ms dan menetapkan percobaan ulang otomatis menggunakan tanda --num_tracing_attempts . Contoh:

      (vm)$ capture_tpu_profile --tpu=$TPU_NAME
        --logdir=${MODEL_DIR} --duration_ms=60000 --num_tracing_attempts=10
        

Penampil memori

Dengan penampil memori, Anda dapat memvisualisasikan puncak penggunaan memori untuk program, dan tren penggunaan memori selama program tersebut aktif.

UI penampil memori akan terlihat seperti ini:

gambar

  1. Dropdown host. Memilih untuk host TPU dan modul XLA High Level Optimizer (HLO) untuk divisualisasikan.
  2. Ringkasan memori. Menampilkan alokasi dan ukuran memori puncak tanpa padding.
  3. Diagram ruang kerja. Menampilkan penggunaan memori puncak dan plot tren penggunaan memori selama program berlangsung. Mengarahkan kursor ke buffer di salah satu diagram buffer akan menambahkan anotasi untuk masa aktif buffer dan kartu detail buffer.
  4. Diagram buffer. Dua diagram yang menampilkan alokasi buffer pada saat puncak penggunaan memori, seperti yang ditunjukkan oleh garis vertikal di plot ruang kerja. Mengarahkan kursor ke buffer di salah satu diagram buffer akan menampilkan batang masa aktif buffer di diagram ruang kerja dan kartu detail di sebelah kiri.
  5. Kartu Detail alokasi buffer. Menampilkan detail alokasi untuk buffer.
Panel ringkasan memori

Panel ringkasan memori (atas) menunjukkan nama modul dan alokasi memori puncak yang ditetapkan saat ukuran alokasi buffer total mencapai maksimum. Ukuran alokasi puncak tanpa padding juga ditampilkan untuk perbandingan.

gambar

Diagram ruang kerja

Diagram ini menampilkan puncak penggunaan memori dan plot tren penggunaan memori selama masa aktif program. Garis yang digambar dari atas ke bawah plot menunjukkan puncak pemanfaatan memori untuk program. Titik ini menentukan apakah suatu program dapat masuk ke ruang memori global yang tersedia atau tidak.

gambar

Setiap titik pada plot garis di atasnya mewakili "titik program" dalam program HLO XLA sebagaimana dijadwalkan oleh compiler. Garis ini memberikan gambaran tentang lonjakan 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 aktif horizontal untuk buffer tersebut akan muncul di diagram ruang kerja. Garis horizontal memiliki warna yang sama dengan {i>buffer<i} yang ditandai.

gambar

Ketebalan garis horizontal menunjukkan besaran relatif ukuran buffer yang relatif terhadap alokasi memori puncak. Panjang baris sesuai dengan masa pakai buffer, mulai dari titik di program tempat ruang buffer dialokasikan dan berakhir saat ruang dibebaskan.

Diagram buffer

Dua diagram menunjukkan perincian penggunaan memori pada titik penggunaan puncak (ditunjukkan dengan garis vertikal dalam plot di atas diagram).

gambar

  • Berdasarkan Urutan Program. Menampilkan buffer dari kiri ke kanan sesuai urutan aktifnya selama eksekusi program. Buffer yang aktif untuk waktu terlama berada di sisi kiri diagram.

  • Menurut Ukuran. Menampilkan buffer yang aktif selama eksekusi program dalam urutan ukuran menurun. Buffer yang memiliki dampak terbesar pada titik penggunaan memori puncak ada 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 umum akan terlihat seperti ini:

gambar

  1. Name. Nama operasi XLA.
  2. Kategori. Kategori operasi.
  3. Size. Ukuran alokasi buffer (termasuk padding).
  4. Ukuran tanpa padding. Ukuran alokasi buffer tanpa padding.
  5. Ekspansi. Besarnya relatif ukuran buffer dengan padding dibandingkan dengan ukuran tanpa padding.
  6. Memori tambahan. Menunjukkan berapa banyak memori tambahan yang digunakan untuk padding.
  7. Bentuk. Menjelaskan peringkat, ukuran, dan jenis data array N dimensi.
  8. Nama operasi TensorFlow. Menampilkan nama operasi TensorFlow yang terkait dengan alokasi buffer.
  9. Jenis alokasi. Menunjukkan kategori alokasi buffer. Jenisnya adalah: Parameter, Output, Thread-local, dan Sementara (misalnya, alokasi buffer dalam fusi).
Error "Kehabisan memori"

Jika Anda menjalankan model dan mendapatkan pesan "error kehabisan memori", gunakan perintah berikut untuk merekam profil memori dan melihatnya di penampil memori. Pastikan untuk menyetel 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 rekaman aktivitas streaming

Streaming trace viewer (trace_viewer) adalah alat analisis performa Cloud TPU, yang tersedia untuk TensorFlow 2.16.1 atau yang lebih baru, yang menyediakan rendering pelacakan dinamis. Alat ini menggunakan penampil 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 Google Cloud Storage. File ini berisi peristiwa rekaman aktivitas dalam jumlah besar yang dapat dilihat di penampil rekaman aktivitas dan penampil rekaman aktivitas streaming.

Menggunakan penampil rekaman aktivitas streaming

Untuk menggunakan penampil rekaman aktivitas streaming, trace_viewer, Anda harus mematikan sesi TensorBoard yang sudah ada, lalu meluncurkan kembali TensorBoard menggunakan alamat IP TPU yang ingin diperiksa. Penampil rekaman aktivitas streaming memerlukan TensorBoard untuk melakukan Panggilan Prosedur Jarak Jauh (GRPC) Google 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 Anda, jalankan TensorBoard sebagai berikut yang menggantikan tpu-ip dengan alamat IP TPU Anda:

  (vm)$ tensorboard --logdir=${MODEL_DIR} \
    --master_tpu_unsecure_channel=tpu-ip

Fitur in TensorBoard akan muncul di daftar dropdown Tools.

gambar

Di linimasa, Anda dapat memperbesar dan memperkecil untuk melihat peristiwa rekaman aktivitas dimuat secara dinamis ke browser.

gambar

Memantau tugas Cloud TPU

Bagian ini menjelaskan cara menggunakan capture_tpu_profile untuk merekam satu profil atau terus memantau tugas Cloud TPU 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 lakukan ssh ke VM (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 flag --monitoring_level ditetapkan ke 1 atau 2, seperti:

  (vm)$ capture_tpu_profile --tpu=$TPU_NAME \
   --monitoring_level=1

Menyetel 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%

Setelan monitoring_level=2 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)

Flag pemantauan

  • --tpu (wajib) menentukan nama Cloud TPU yang ingin Anda pantau.
  • --monitoring_level. Ubah perilaku capture_tpu_profile dari menghasilkan satu profil, menjadi pemantauan berkelanjutan dasar atau mendetail. Ada tiga tingkat yang tersedia: Tingkat 0 (default): Menghasilkan satu profil, lalu keluar. Level 1: Menampilkan versi TPU dan pemanfaatan TPU. Level 2: Menampilkan pemakaian TPU, waktu tidak ada aktivitas TPU, dan jumlah core TPU yang digunakan. Juga memberikan waktu langkah min, rata-rata, dan maks beserta kontribusi persentase dalam feed.
  • --duration_ms (opsional, setelan defaultnya adalah 1.000 md) menentukan durasi pembuatan profil host TPU selama setiap siklus. Umumnya, ini harus cukup lama untuk menangkap setidaknya satu data langkah pelatihan. 1 detik menunjukkan langkah pelatihan pada sebagian besar model, tetapi jika waktu langkah model Anda sangat besar, Anda dapat menetapkan nilainya ke 2x step_time(dalam milidetik).
  • --num_queries menentukan berapa banyak siklus yang akan dijalankan capture_tpu_profile. Untuk terus memantau tugas TPU Anda, tetapkan nilai ke angka yang tinggi. Untuk memeriksa waktu langkah model dengan cepat, setel nilai ke angka yang rendah.