本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
合併多個分析追蹤檔案的時間軸
SMDebug 用戶端程式庫提供效能分析的分析和視覺化工具,用於合併由偵錯工具收集的系統指標、架構指標和 Python 分析資料的時間軸。
提示
在繼續之前,您需要設置一個 TrainingJob 對象,該對象將在本頁中的示例中使用。若要取得有關設置 TrainingJob 物件的更多資訊,請參閱〈〉存取分析資料。
MergedTimeline
類別提供工具,可在單一時間軸內整合和關聯不同的效能分析資訊。偵錯工具從訓練工作的不同階段擷取效能分析資料和註釋之後,追蹤事件的 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$'
如下列螢幕擷取畫面動畫所示,將從不同效能分析來源擷取的追蹤事件會置於單一繪圖中並對齊,可提供訓練工作不同階段中發生的所有事件的概觀。
![合併時間軸的範例](images/debugger/debugger-merged-timeline.gif)
提示
要使用鍵盤與追蹤應用程式上的合併時間軸互動,請使用 W
鍵放大、A
鍵向左移動、S
鍵縮小、D
鍵向右移動。
使用 smdebug.profiler.analysis.utils.merge_timelines
模組中的下列 MergedTimeline
API 作業和類別方法,可將多個事件追蹤 JSON 檔案合併到一個追蹤事件 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
)。您可以找到profiler-output
使用 SageMaker估算器類方法或對象。 TrainingJob 例如estimator.latest_job_profiler_artifacts_path()
或tj.profiler_s3_output_path
。 -
file_suffix_filter
(清單) — 指定要合併時間軸的檔案尾碼篩選條件清單。可用的附加篩選條件為["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://tracing
在 Chrome 瀏覽器上打開 Chrome 追蹤應用程式,然後打開 JSON 檔案。您可以探索輸出以繪製合併的時間軸。