• 文件 >
  • torch.utils.bottleneck
捷徑

torch.utils.bottleneck

torch.utils.bottleneck 是一個可用於偵錯程式中瓶頸的初始步驟的工具。 它總結了使用 Python profiler 和 PyTorch 的 autograd profiler 執行的腳本。

在命令列上執行它,使用:

python -m torch.utils.bottleneck /path/to/source/script.py [args]

其中 [args] 是 script.py 的任意數量參數,或者執行 python -m torch.utils.bottleneck -h 以取得更多使用說明。

警告

由於您的腳本將被分析,請確保它在有限的時間內退出。

警告

由於 CUDA 核心的非同步特性,當針對 CUDA 程式碼執行時,cProfile 輸出和 CPU 模式的 autograd 分析器可能無法顯示正確的計時:所報告的 CPU 時間僅表示啟動核心所花費的時間,但不包含核心在 GPU 上執行的時間,除非該操作進行了同步 (synchronize)。 在常規 CPU 模式的分析器下,進行同步的操作會顯得非常耗時。 在這些計時不正確的情況下,CUDA 模式的 autograd 分析器可能會有所幫助。

注意

要決定查看哪個 autograd 分析器的輸出(僅 CPU 模式或 CUDA 模式),您應該首先檢查您的腳本是否受 CPU 限制(“CPU 總時間遠大於 CUDA 總時間”)。 如果是受 CPU 限制,查看 CPU 模式 autograd 分析器的結果將有所幫助。 另一方面,如果您的腳本大部分時間都在 GPU 上執行,那麼從 CUDA 模式 autograd 分析器的輸出中開始尋找負責的 CUDA 運算元 (operator) 會比較合理。

當然,現實情況要複雜得多,並且您的腳本可能不會處於這兩個極端情況之一,具體取決於您正在評估的模型部分。 如果分析器的輸出沒有幫助,您可以嘗試使用 nvprof 查看 torch.autograd.profiler.emit_nvtx() 的結果。 但是,請注意,NVTX 的額外開銷非常高,通常會產生嚴重傾斜的時間軸。 類似地,Intel® VTune™ Profiler 也有助於通過 torch.autograd.profiler.emit_itt() 進一步分析 Intel 平台上的性能。

警告

如果您正在分析 CUDA 程式碼,bottleneck 運行的第一個分析器(cProfile)將在其時間報告中包含 CUDA 啟動時間(CUDA 緩衝區分配成本)。 如果您的瓶頸導致的程式碼比 CUDA 啟動時間慢得多,這應該不會有影響。

有關分析器更複雜的用法(例如在多 GPU 的情況下),請參閱 https://docs.python.org/3/library/profile.htmltorch.autograd.profiler.profile() 以獲取更多信息。

文件

獲取 PyTorch 的全面開發人員文檔

查看文檔

教程

獲取適合初學者和高級開發人員的深入教程

查看教程

資源

查找開發資源並獲得您問題的解答

查看資源