跳轉到主要內容

隨著 PyTorch 1.8.1 釋出,我們很高興地宣佈推出 PyTorch Profiler——PyTorch 全新且改進的效能除錯分析器。PyTorch Profiler 是微軟和 Facebook 合作開發的一款開源工具,能夠為大規模深度學習模型提供準確高效的效能分析和故障排除。

分析和改進大規模深度學習模型效能是一項持續的挑戰,並且隨著模型規模的增加,其重要性也日益凸顯。長期以來,PyTorch 使用者由於缺乏可用工具,在解決這一挑戰方面一直很困難。雖然有提供 GPU 硬體級別資訊的標準效能除錯工具,但它們缺少 PyTorch 特定的操作上下文。為了恢復遺漏的資訊,使用者需要將多個工具組合在一起,或手動新增最少的相關資訊才能理解資料。此外,還有 autograd 分析器 (torch.autograd.profiler),它可以捕獲 PyTorch 操作的資訊,但無法捕獲詳細的 GPU 硬體級別資訊,也無法提供視覺化支援。

新的 PyTorch Profiler (torch.profiler) 是一個將這兩種型別的資訊彙集在一起的工具,然後構建了一個能夠充分利用這些資訊的體驗。這個新的分析器收集 GPU 硬體和 PyTorch 相關資訊,將它們關聯起來,自動檢測模型中的瓶頸,並提供解決這些瓶頸的建議。分析器提供的所有這些資訊都將在 TensorBoard 中視覺化呈現給使用者。新的 Profiler API 在 PyTorch 中原生支援,並提供了迄今為止最簡單的體驗,使用者無需安裝任何額外的包即可對模型進行分析,並透過新的 PyTorch Profiler 外掛立即在 TensorBoard 中檢視結果。下面是 PyTorch Profiler——自動瓶頸檢測的截圖。

開始使用

PyTorch Profiler 是 PyTorch autograd 分析器的下一個版本。它有一個新的模組名稱空間 torch.profiler,但保持與 autograd 分析器 API 的相容性。Profiler 使用一個新的 GPU 分析引擎,該引擎使用 Nvidia CUPTI API 構建,能夠高保真地捕獲 GPU 核心事件。要分析您的模型訓練迴圈,請將程式碼包裝在分析器上下文管理器中,如下所示。

 with torch.profiler.profile(
    schedule=torch.profiler.schedule(
        wait=2,
        warmup=2,
        active=6,
        repeat=1),
    on_trace_ready=tensorboard_trace_handler,
    with_stack=True
) as profiler:
    for step, data in enumerate(trainloader, 0):
        print("step:{}".format(step))
        inputs, labels = data[0].to(device=device), data[1].to(device=device)

        outputs = model(inputs)
        loss = criterion(outputs, labels)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        profiler.step()

schedule 引數允許您限制包含在分析中的訓練步驟數量,以減少收集的資料量,並透過關注重要內容來簡化視覺分析。tensorboard_trace_handler 會自動將分析結果儲存到磁碟,以便在 TensorBoard 中進行分析。

要在 TensorBoard 中檢視分析會話的結果,請安裝 PyTorch Profiler TensorBoard 外掛包。

pip install torch_tb_profiler

Visual Studio Code 整合

Microsoft Visual Studio Code 是 Python 開發人員和資料科學家最受歡迎的程式碼編輯器之一。適用於 VS Code 的 Python 擴充套件 最近增加了 TensorBoard 到程式碼編輯器中的整合,包括對 PyTorch Profiler 的支援。安裝 VS Code 和 Python 擴充套件後,您可以使用鍵盤快捷鍵 CTRL + SHIFT + P(Mac 上為 CMD + SHIFT + P)啟動命令面板,然後輸入“Launch TensorBoard”命令,即可快速開啟 TensorBoard Profiler 外掛。

此整合帶有一個內建的生命週期管理功能。如果您系統中沒有 TensorBoard 包和 PyTorch Profiler 外掛包(將於 4 月中旬釋出),VS Code 將自動安裝它們。VS Code 還會為您啟動 TensorBoard 程序,並自動在您當前目錄中查詢任何 TensorBoard 日誌檔案。完成後,只需關閉選項卡,VS Code 將自動關閉該程序。您的系統上不再需要執行終端視窗來為 TensorBoard UI 提供後端!下面是 TensorBoard 中執行的 PyTorch Profiler 跟蹤檢視。

如需瞭解有關 VS Code 中 TensorBoard 支援的更多資訊,請參閱此部落格

反饋

查閱PyTorch Profiler 文件,試用 Profiler 並告訴我們您的體驗。請在PyTorch 討論論壇上提供您的反饋,或在PyTorch GitHub上提交問題。