W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
<cite>torch.utils.bottleneck</cite> 是可以用作調(diào)試程序瓶頸的第一步的工具。 它使用 Python 分析器和 PyTorch 的 autograd 分析器總結(jié)了腳本的運(yùn)行。
使用以下命令在命令行上運(yùn)行
python -m torch.utils.bottleneck /path/to/source/script.py [args]
其中[args]是 <cite>script.py</cite> 的任意數(shù)量的參數(shù),或者運(yùn)行python -m torch.utils.bottleneck -h
以獲取更多使用說明。
警告
因?yàn)槟哪_本將被分析,所以請(qǐng)確保它在有限的時(shí)間內(nèi)退出。
Warning
由于 CUDA 內(nèi)核的異步特性,當(dāng)針對(duì) CUDA 代碼運(yùn)行時(shí),cProfile 輸出和 CPU 模式自動(dòng)分級(jí)探查器可能無法顯示正確的計(jì)時(shí):報(bào)告的 CPU 時(shí)間報(bào)告了用于啟動(dòng)內(nèi)核的時(shí)間量,但不包括時(shí)間 除非操作進(jìn)行了同步,否則內(nèi)核將花費(fèi)在 GPU 上執(zhí)行。 在常規(guī)的 CPU 模式分析器下,進(jìn)行同步的操作似乎非常昂貴。 在這些時(shí)間不正確的情況下,CUDA 模式自動(dòng)求導(dǎo)分析器可能會(huì)有所幫助。
注意
要確定要查看哪個(gè)(僅 CPU 模式或 CUDA 模式)autograd Profiler 輸出,您應(yīng)該首先檢查腳本是否受 CPU 限制(“ CPU 總時(shí)間遠(yuǎn)大于 CUDA 總時(shí)間”)。 如果它是 CPU 綁定的,則查看 CPU 模式的 autograd profiler 的結(jié)果將有所幫助。 另一方面,如果您的腳本將其大部分時(shí)間都花在 GPU 上執(zhí)行,則有必要在 CUDA 模式 autograd profiler 的輸出中開始尋找負(fù)責(zé)任的 CUDA 運(yùn)算符。
當(dāng)然,實(shí)際情況要復(fù)雜得多,根據(jù)您要評(píng)估的模型部分,您的腳本可能不會(huì)處于這兩種極端情況之一。 如果分析器輸出無濟(jì)于事,則可以嘗試使用nvprof
查看 torch.autograd.profiler.emit_nvtx()
的結(jié)果。 但是,請(qǐng)考慮到 NVTX 開銷非常高,并且通常會(huì)出現(xiàn)嚴(yán)重偏差的時(shí)間表。
Warning
如果您正在分析 CUDA 代碼,則運(yùn)行bottleneck
的第一個(gè)分析器(cProfile)將在其時(shí)間報(bào)告中包括 CUDA 啟動(dòng)時(shí)間(CUDA 緩沖區(qū)分配成本)。 瓶頸是否導(dǎo)致代碼比 CUDA 啟動(dòng)時(shí)間慢得多,這無關(guān)緊要。
有關(guān)探查器的更復(fù)雜用法(例如在多 GPU 情況下),請(qǐng)參閱 https://docs.python.org/3/library/profile.html 或 torch.autograd.profiler.profile()
了解更多信息。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: