複数のプロファイルトレースファイルのタイムラインをマージする - Amazon SageMaker

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

複数のプロファイルトレースファイルのタイムラインをマージする

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 ファイルを開きます。出力を調べて、マージされたタイムラインをプロットできます。