效能分析資料載入器 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

效能分析資料載入器

在 PyTorch 中,資料下載迭代器 (例如 SingleProcessingDataLoaderIterMultiProcessingDataLoaderIter) 在資料集上每次迭代開始時啟動。在初始化階段,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 呼叫的開始和結束時間。您可以找到訓練指令碼在一批資料上花費的時間量。在指定時段內,您可以識別不直接參與訓練的呼叫。這些呼叫可能來自下列作業:計算準確度、出於偵錯或記錄目的增加的損失,以及列印除錯資訊。這些操作可能會耗費大量運算或時間。我們可以透過使 Python 效能分析工具、系統指標和架構指標相互關聯,來識別此類操作。

    下面的清單顯示此類別的方法可用於哪種分析:

    • 透過尋找目前和後續 GetNext 呼叫的開始時間之間的差異來分析每個資料批次所花費的時間 BatchTime_in_seconds

    • 尋找 BatchTime_in_seconds 的極端值,以及這些極端值的開始和結束時間。

    • 取得這些 BatchTime_in_seconds 時間戳記期間的系統和架構指標。可指出時間花在哪裡。

  • pt_analysis.plot_the_window()

    繪製開始時間戳記與結束時間戳記之間的時間軸圖表。