本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
效能分析資料載入器
在 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 呼叫的開始和結束時間。您可以找到訓練指令碼在一批資料上花費的時間量。在指定時段內,您可以識別不直接參與訓練的呼叫。這些呼叫可能來自下列作業:計算準確度、出於偵錯或記錄目的增加的損失,以及列印除錯資訊。這些操作可能會耗費大量運算或時間。我們可以透過使 Python 效能分析工具、系統指標和架構指標相互關聯,來識別此類操作。
下面的清單顯示此類別的方法可用於哪種分析:
-
透過尋找目前和後續 GetNext 呼叫的開始時間之間的差異來分析每個資料批次所花費的時間
BatchTime_in_seconds
。 -
尋找
BatchTime_in_seconds
的極端值,以及這些極端值的開始和結束時間。 -
取得這些
BatchTime_in_seconds
時間戳記期間的系統和架構指標。可指出時間花在哪裡。
-
-
pt_analysis.plot_the_window()
繪製開始時間戳記與結束時間戳記之間的時間軸圖表。