Mengakses data statistik profil Python - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengakses data statistik profil Python

Profil Python menyediakan metrik kerangka kerja yang terkait dengan fungsi dan operator Python dalam skrip pelatihan Anda dan kerangka kerja pembelajaran mendalam. SageMaker

Mode Pelatihan dan Fase untuk Profil Python

Untuk membuat profil interval tertentu selama pelatihan ke statistik partisi untuk masing-masing interval ini, Debugger menyediakan alat untuk mengatur mode dan fase.

Untuk mode pelatihan, gunakan PythonProfileModes kelas berikut:

from smdebug.profiler.python_profile_utils import PythonProfileModes

Kelas ini menyediakan opsi berikut:

  • PythonProfileModes.TRAIN— Gunakan jika Anda ingin membuat profil langkah-langkah target dalam fase pelatihan. Opsi mode ini hanya tersedia untuk TensorFlow.

  • PythonProfileModes.EVAL— Gunakan jika Anda ingin membuat profil langkah-langkah target dalam fase evaluasi. Opsi mode ini hanya tersedia untuk TensorFlow.

  • PythonProfileModes.PREDICT— Gunakan jika Anda ingin membuat profil langkah target dalam fase prediksi. Opsi mode ini hanya tersedia untuk TensorFlow.

  • PythonProfileModes.GLOBAL— Gunakan jika Anda ingin membuat profil langkah target dalam fase global, yang mencakup tiga fase sebelumnya. Opsi mode ini hanya tersedia untuk PyTorch.

  • PythonProfileModes.PRE_STEP_ZERO— Gunakan jika Anda ingin membuat profil langkah-langkah target dalam tahap inisialisasi sebelum langkah pelatihan pertama dari epoch pertama dimulai. Fase ini mencakup pengajuan pekerjaan awal, mengunggah skrip pelatihan ke instans EC2, menyiapkan instans EC2, dan mengunduh data input. Opsi mode ini tersedia untuk keduanya TensorFlow dan PyTorch.

  • PythonProfileModes.POST_HOOK_CLOSE— Gunakan jika Anda ingin membuat profil langkah target di tahap finalisasi setelah pekerjaan pelatihan selesai dan kait Debugger ditutup. Fase ini mencakup data profil sementara pekerjaan pelatihan diselesaikan dan diselesaikan. Opsi mode ini tersedia untuk keduanya TensorFlow dan PyTorch.

Untuk fase pelatihan, gunakan StepPhase kelas berikut:

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

Kelas ini menyediakan opsi berikut:

  • StepPhase.START— Gunakan untuk menentukan titik awal fase inisialisasi.

  • StepPhase.STEP_START— Gunakan untuk menentukan langkah awal fase pelatihan.

  • StepPhase.FORWARD_PASS_END— Gunakan untuk menentukan langkah-langkah di mana pass maju berakhir. Opsi ini hanya tersedia untuk PyTorch.

  • StepPhase.STEP_END— Gunakan untuk menentukan langkah akhir dalam fase pelatihan. Opsi ini hanya tersedia untuk TensorFlow.

  • StepPhase.END— Gunakan untuk menentukan titik akhir fase finalisasi (pasca-hook-close). Jika hook callback tidak ditutup, profil fase finalisasi tidak terjadi.

Alat Analisis Profil Python

Debugger mendukung profiling Python dengan dua alat profiling:

  • CProfile — Profiler python standar. cProfile mengumpulkan metrik kerangka kerja pada waktu CPU untuk setiap fungsi yang dipanggil saat pembuatan profil diaktifkan.

  • Pyinstrument - Ini adalah peristiwa profil pengambilan sampel profiler Python overhead rendah setiap milidetik.

Untuk mempelajari lebih lanjut tentang opsi pembuatan profil Python dan apa yang dikumpulkan, lihat. Pemantauan sistem default dan pembuatan profil kerangka kerja yang disesuaikan dengan opsi pembuatan profil yang berbeda

Metode berikut dariPythonProfileAnalysis,cProfileAnalysis, PyinstrumentAnalysis kelas disediakan untuk mengambil dan menganalisis data profil Python. Setiap fungsi memuat data terbaru dari URI S3 default.

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

Untuk mengatur objek profiling Python untuk analisis, gunakan cProfileAnalysis atau PyinstrumentAnalysis kelas seperti yang ditunjukkan dalam kode contoh berikut. Ini menunjukkan bagaimana mengatur cProfileAnalysis objek, dan jika Anda ingin menggunakanPyinstrumentAnalysis, ganti nama kelas.

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

Metode berikut tersedia untuk PyinstrumentAnalysis kelas cProfileAnalysis dan untuk mengambil data statistik profil Python:

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs)— Mengambil waktu mulai dan waktu akhir, dan mengembalikan statistik fungsi statistik langkah yang waktu mulai atau berakhir tumpang tindih dengan interval yang disediakan.

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase)— Mengambil langkah awal dan langkah akhir dan mengembalikan statistik fungsi dari semua statistik langkah yang diprofilkan step memenuhi. start_step <= step < end_step

    • start_stepdan end_step (str) - Tentukan langkah awal dan langkah akhir untuk mengambil data statistik profil Python.

    • mode(str) — Tentukan mode pekerjaan pelatihan menggunakan kelas PythonProfileModes enumerator. Nilai default-nya PythonProfileModes.TRAIN. Opsi yang tersedia disediakan di bagian Mode Pelatihan dan Fase untuk Profiling Python.

    • start_phase(str) - Tentukan fase awal pada langkah target menggunakan kelas StepPhase enumerator. Parameter ini memungkinkan pembuatan profil antara fase pelatihan yang berbeda. Nilai default-nya StepPhase.STEP_START. Opsi yang tersedia disediakan di bagian Mode Pelatihan dan Fase untuk Profiling Python.

    • end_phase(str) - Tentukan fase akhir pada langkah target menggunakan kelas StepPhase enumerator. Parameter ini mengatur fase akhir pelatihan. Opsi yang tersedia sama dengan yang untuk start_phase parameter. Nilai default-nya StepPhase.STEP_END. Opsi yang tersedia disediakan di bagian Mode Pelatihan dan Fase untuk Profiling Python.

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode)— Mengambil statistik dari profil Python antara mode awal dan akhir.

  • python_analysis.fetch_pre_step_zero_profile_stats()— Mengambil statistik dari profil Python hingga langkah 0.

  • python_analysis.fetch_post_hook_close_profile_stats()— Mengambil statistik dari profil Python setelah hook ditutup.

  • python_analysis.list_profile_stats()— DataFrame Mengembalikan statistik profil Python. Setiap baris menyimpan metadata untuk setiap instance profil dan file statistik yang sesuai (satu per langkah).

  • python_analysis.list_available_node_ids()— Mengembalikan daftar ID node yang tersedia untuk statistik profil Python.

Metode khusus cProfileAnalysis kelas:

  • fetch_profile_stats_by_training_phase()— Mengambil dan menggabungkan statistik profil Python untuk setiap kemungkinan kombinasi mode awal dan akhir. Misalnya, jika fase pelatihan dan validasi dilakukan saat pembuatan profil terperinci diaktifkan, kombinasinya adalah(PRE_STEP_ZERO, TRAIN),, (TRAIN, TRAIN) (TRAIN, EVAL)(EVAL, EVAL), dan. (EVAL, POST_HOOK_CLOSE) Semua file statistik dalam masing-masing kombinasi ini digabungkan.

  • fetch_profile_stats_by_job_phase()— Mengambil dan menggabungkan statistik profil Python berdasarkan fase pekerjaan. Fase pekerjaan adalah initialization (pembuatan profil hingga langkah 0), training_loop (pelatihan dan validasi), dan finalization (pembuatan profil setelah kait ditutup).