デフォルトのシステムモニタリングとさまざまなプロファイリングオプションでカスタマイズしたフレームワークプロファイリング - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

デフォルトのシステムモニタリングとさまざまなプロファイリングオプションでカスタマイズしたフレームワークプロファイリング

このセクションでは、サポートされているプロファイリング設定クラスと設定例について説明します。次のプロファイリング設定クラスを使って、フレームワークのプロファイリングオプションを管理できます。

  • DetailedProfilingConfig - ネイティブフレームワークプロファイラー (TensorFlow プロファイラーと PyTorch プロファイラー) を使ってフレームワークオペレーションをプロファイリングするターゲットステップまたは時間範囲を指定します。例えば、TensorFlow を使う場合、デバッガーフックによって TensorFlow プロファイラーが TensorFlow 固有のフレームワークメトリクスを収集できるようになります。詳細なプロファイリングによって、トレーニングジョブのステップの前 (最初のステップの前)、ステップ内、ステップ間で、すべてのフレームワーク演算子をプロファイリングできます。

    注記

    詳細なプロファイリングにより、GPU メモリ消費量が大幅に増加する場合があります。詳細なプロファイリングを数ステップ以上で有効にすることはお勧めしません。

  • DataloaderProfilingConfig - 深層学習フレームワークのデータローダープロセスをプロファイリングするターゲットステップまたは時間範囲を指定します。デバッガーは、フレームワークのすべてのデータローダーイベントを収集します。

    注記

    データローダープロファイリングは、データローダーから情報を収集する間、トレーニングパフォーマンスを低下させる場合があります。データローダープロファイリングを数ステップ以上で有効にすることはお勧めしません。

    デバッガーは、 AWS Deep Learning Containers に対してのみ、データローダープロセスに注釈を付けるように事前設定されています。デバッガーは、他のカスタムまたは外部トレーニングコンテナからのデータローダープロセスをプロファイリングできません。

  • PythonProfilingConfig - Python 関数をプロファイリングするターゲットステップまたは時間範囲を指定します。また、cProfile と Pyinstrument という 2 つの Python プロファイラーから選択することもできます。

    • cProfile - 標準の Python プロファイラー。cProfile は、トレーニング中に呼び出されたすべての Python 演算子の情報を収集します。cProfile を使うと、デバッガーは各関数呼び出しに対する累積の時間とアノテーションを節約して、Python 関数に関する完全な詳細情報を提供できます。例えば、深層学習では、最も頻繁に呼び出される関数は、畳み込みフィルターとバックワードパス演算子と考えられますが、cProfile はそれらすべてをプロファイリングします。cProfile オプションでは、合計時間、CPU 時間、オフ CPU 時間といったタイマーオプションをさらに選択できます。プロセッサ (CPU と GPU の両方) で実行されるすべての関数呼び出しを CPU 時間内にプロファイリングできますが、オフ CPU 時間オプションを使って I/O またはネットワークのボトルネックを特定することもできます。デフォルトは合計時間で、デバッガーは CPU 時間とオフ CPU 時間の両方をプロファイリングします。cProfile を使うと、プロファイルデータを分析するときに、すべての関数にドリルダウンできます。

    • Pyinstrument - Pyinstrument は、サンプリングに基づいて動作するオーバーヘッドの低い Python プロファイラーです。Pyinstrument オプションを使うと、デバッガーはプロファイリングイベントをミリ秒ごとにサンプリングします。Pyinstrument は CPU 時間ではなく実際の経過時間を測定するため、プロファイリングノイズを減らし (累積的に速くなる無関係な関数呼び出しを除外し)、モデルをトレーニングするために実際にコンピューティング集約型である (累積的に遅くなる) 演算子をキャプチャするには、cProfile オプションよりも Pyinstrument オプションが適しています。Pyinstrument を使うと、関数呼び出しのツリーが見え、速度低下の構造と根本原因をよりよく理解できます。

    注記

    Python プロファイリングを有効にすると、全体的なトレーニング時間が遅くなる場合があります。cProfile は、呼び出しのたびに最も頻繁に呼び出される Python 演算子をプロファイリングするため、呼び出し数に対してプロファイリングの処理時間が増加します。Pyinstrument の場合、サンプリングメカニズムにより、時間に対して累積プロファイリング時間が増えます。

次の設定例では、指定した値でさまざまなプロファイリングオプションを使用した場合の完全な構造を示しています。

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

使用可能なプロファイリングオプションの詳細については、Amazon SageMaker Python SDK の「DetailedProfilingConfig」、「DataloaderProfilingConfig」、「PythonProfilingConfig」を参照してください。