データローダーをプロファイリングする - Amazon SageMaker

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

データローダーをプロファイリングする

では PyTorch、 SingleProcessingDataLoaderIterや などのデータローダーイテレーターはMultiProcessingDataLoaderIter、データセットを反復するたびに開始されます。初期化フェーズでは、設定されたワーカー数に応じてワーカープロセス PyTorch をオンにし、データとpin_memoryスレッドを取得するためのデータキューを確立します。

PyTorch データローダープロファイリング分析ツールを使用するには、次のPT_dataloader_analysisクラスをインポートします。

from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis

Pandas データ解析ツールを使用してプロファイリングデータにアクセスする」セクションの Pandas フレームデータオブジェクトとして取得したプロファイリングデータを渡します。

pt_analysis = PT_dataloader_analysis(pf)

pt_analysis オブジェクトには、次の関数を使用できます。

SMDebug S3SystemMetricsReader クラスは、s3_trial_path パラメータに指定された S3 バケットからシステムメトリクスを読み取ります。

  • pt_analysis.analyze_dataloaderIter_initialization()

    分析は、これらの初期化の期間の中央値と最大値を出力します。外れ値がある場合 (つまり、期間が 2 * 中央値より大きい場合)、関数はこれらの期間の開始時刻と終了時刻を出力します。これらを使って、それらの時間間隔の間のシステムメトリクスを検査できます。

    次のリストは、このクラスメソッドからどのような分析が得られるかを示しています。

    • 初期化されたデータローダーイテレーターのタイプ。

    • イテレーターあたりのワーカー数。

    • イテレーターが pin_memory 有りで初期化されたか、無しで初期化されたかの検査。

    • トレーニング中にイテレーターが初期化された回数。

  • pt_analysis.analyze_dataloaderWorkers()

    次のリストは、このクラスメソッドからどのような分析が得られるかを示しています。

    • トレーニング全体でスピンオフされたワーカープロセスの数。

    • ワーカープロセスの期間の中央値と最大値。

    • 外れ値であるワーカープロセスの開始時刻と終了時刻。

  • pt_analysis.analyze_dataloader_getnext()

    次のリストは、このクラスメソッドからどのような分析が得られるかを示しています。

    • トレーニング中に行われた GetNext 呼び出しの数。

    • GetNext コールのマイクロ秒単位の中央値と最大時間。

    • 外れ値 GetNext呼び出し期間の開始時刻、終了時刻、期間、ワーカー ID。

  • pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])

    デバッガーは、すべての GetNext 呼び出しの開始時刻と終了時刻を収集します。トレーニングスクリプトが費やした時間を 1 つのバッチのデータで確認できます。指定した時間枠内で、トレーニングに直接貢献していない呼び出しを特定できます。これらの呼び出しは、精度の計算、デバッグやログ目的の損失の追加、デバッグ情報の出力などのオペレーションによるものである可能性があります。このようなオペレーションは、コンピューティング集約型であったり、時間がかかったりすることがあります。Python プロファイラー、システムメトリクス、フレームワークメトリクスを関連付けることで、このようなオペレーションを特定できます。

    次のリストは、このクラスメソッドからどのような分析が得られるかを示しています。

    • 現在および後続の GetNext 呼び出しの開始時間の差を検出してBatchTime_in_seconds、各データバッチ に費やされた時間をプロファイリングします。

    • BatchTime_in_seconds の外れ値と、その外れ値の開始時刻と終了時刻を見つけます。

    • それらの BatchTime_in_seconds タイムスタンプ間のシステムおよびフレームワークのメトリクスを取得します。これにより、どこに時間が費やされたかがわかります。

  • pt_analysis.plot_the_window()

    開始タイムスタンプと終了タイムスタンプの間のタイムライングラフをプロットします。