翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数のプロファイルトレースファイルのタイムラインをマージする
SMDebug クライアントライブラリは、デバッガーによって収集されたシステムメトリクス、フレームワークメトリクス、Python プロファイリングデータのタイムラインをマージするためのプロファイリング分析および視覚化のツールを提供します。
ヒント
先に進む前に、このページの例全体で使用する TrainingJob オブジェクトを設定する必要があります。 TrainingJob オブジェクトの設定の詳細については、「」を参照してくださいプロファイルデータにアクセスする。
MergedTimeline
クラスは、さまざまなプロファイリング情報を 1 つのタイムラインに統合して関連付けるためのツールを提供します。デバッガーがトレーニングジョブのさまざまなフェーズからプロファイリングデータと注釈をキャプチャした後、トレースイベントの JSON ファイルがデフォルトの tracefolder
ディレクトリに保存されます。
-
Python レイヤーの注釈の場合、トレースファイルは
*pythontimeline.json
に保存されます。 -
TensorFlow C++ レイヤーの注釈の場合、トレースファイルは に保存されます
*model_timeline.json
。 -
TensorFlow プロファイラーは、イベントを
*trace.json.gz
ファイルに保存します。
ヒント
すべての JSON トレースファイルを一覧表示する場合は、次の AWS CLI コマンドを使用します。
! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'
次のアニメーションスクリーンショットに示すように、さまざまなプロファイリングソースからキャプチャされたトレースイベントを 1 つのプロットに配置して整列することで、トレーニングジョブのさまざまなフェーズで発生するイベント全体の概要が得られます。
ヒント
トレースアプリケーションでマージされたタイムラインをキーボードを使って操作するには、W
キーでズームイン、A
キーで左シフト、S
キーでズームアウト、D
キーで右にシフトします。
複数のイベントトレース JSON ファイルは、次の MergedTimeline
API オペレーションと、smdebug.profiler.analysis.utils.merge_timelines
モジュールのクラスメソッドを使って、1 つのトレースイベント JSON ファイルにマージできます。
from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory) combined_timeline.merge_timeline(start, end, unit)
MergedTimeline
API オペレーションは、次のパラメータを渡します。
-
path
(str) - システムおよびフレームワークのプロファイリングトレースファイルを含むルートフォルダ (/profiler-output
) を指定します。は、推定器クラスメソッドまたは TrainingJob オブジェクトprofiler-output
を使用して SageMaker見つけることができます。例えば、estimator.latest_job_profiler_artifacts_path()
、tj.profiler_s3_output_path
などです。 -
file_suffix_filter
(list) - タイムラインをマージするファイルサフィックスフィルターのリストを指定します。使用可能なサフィックスフィルターは、["model_timeline.json", "pythontimeline.json", "trace.json.gz"].
です。このパラメータを手動で指定しない場合、デフォルトですべてのトレースファイルがマージされます。 -
output_directory
(str) - マージされたタイムライン JSON ファイルを保存するパスを指定します。デフォルトは、path
パラメータに対して指定されたディレクトリです。
merge_timeline()
クラスメソッドは、マージプロセスを実行するために次のパラメータを渡します。
-
start
(int) - タイムラインのマージの開始時刻 (マイクロ秒単位および Unix 時間形式) または開始ステップを指定します。 -
end
(int) - タイムラインのマージの終了時刻 (マイクロ秒単位および Unix 時間形式) または終了ステップを指定します。 -
unit
(str) -"time"
と"step"
のどちらかを選択します。デフォルトは"time"
です。
次のサンプルコードを使って、merge_timeline()
メソッドを実行し、マージされた JSON ファイルをダウンロードします。
-
タイムラインを
"time"
単位オプションでマージします。次のサンプルコードでは、Unix の開始時刻 (絶対ゼロ Unix 時間) と現在の Unix 時間の間で利用可能なすべてのトレースファイルをマージします。これは、トレーニング期間全体のタイムラインをマージできることを意味します。import time from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(
0
, int(time.time() * CONVERT_TO_MICROSECS
)) -
タイムラインを
"step"
単位オプションでマージします。次のサンプルコードでは、ステップ 3 とステップ 9 の間の使用可能なすべてのタイムラインをマージします。from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(
3
,9
, unit="step
")
Chrome ブラウザの chrome://tracing
で Chrome トレースアプリケーションを開き、JSON ファイルを開きます。出力を調べて、マージされたタイムラインをプロットできます。