PyTorch 2.0 對核心編譯器操作進行了根本性 巴哈馬電話號碼列表 更改,同時為開發人員保留了相同程度的熟悉度和易用性。這項最新的增強功能有望加速效能並擴展對動態形狀和分散的支援。
PyTorch 2.0 有什麼新功能?
PyTorch 正在將部分內容從 C++ 移回 Python,使其更快且易於破解。在 2.0 版本中,他們引入了“torch.compile”,這改變了 PyTorch 在編譯器層級的運作方式。此功能是可選的,不會影響您的舊程式碼。
PyTorch 2.0 編譯
為了為「torch.compile」功能提供堅實的基礎,引進了新技術:
火炬發電機。專為加速 PyTorch 而設計的 Python 等級即時 (JIT) 編譯器。透過與 CPython 中的框架評估 API 集成,它可以在運行時動態修改 Python 字節碼,從而加快程式碼執行速度。
AOTAutograd。一個幫助開發者加速 PyTorch 模型訓練的工具包。它提前追蹤前向和後向圖。此外,AOTAutograd 提供了簡單的機制,可以使用尖端的深度學習編譯器無縫編譯提取的圖形。
普里姆火炬。透過將 PyTorch 運算符的數量從 2000 多個顯著減少到大約 250 個原始運算符的簡潔集合,PrimTorch 顯著簡化了開發 PyTorch 功能或後端的過程。
火炬電感器。 PyTorch 原生深度學習編譯器,可自動將 PyTorch 模型對應為多個加速器和後端的生成程式碼。 TorchInductor 使用 OpenAI Triton 作為 GPU 加速的構建塊。
所有新技術都是用 Python 編寫的,並且支援動態形狀。它使新的 PyTorch 運行程式碼更快、更靈活、更容易破解,從而降低了進入門檻。
程式碼範例
讓我們回顧一下 PyTorch Compiler 快速簡單的程式碼實作。
沒有torch.compile
import torch
model = torch.hub.load("pytorch/vision", "resnet50", weights="IMAGENET1K_V2")
供電
沒有torch.compile
要提高模型效能,只需在模型周圍添加torch.compile包裝器並獲得編譯後的模型。它是即插即用的。
import torch
model = torch.hub.load("pytorch/vision", "resnet50", weights="IMAGENET1K_V2")
compiled_model = torch.compile(model)
供電
透過學習使用 PyTorch 進行深度學習課程,學習使用 PyTorch 庫建立深度學習模型。
您可以簡單地訓練您的模型,而無需進行任何更改。
import torch
model = torch.compile(model)
for batch in dataloader:
run_epoch(model, batch)
供電
或者您可以運行模式推斷。

model = torch.compile(model)
model(**input)
供電
帶有附加參數torch.compile():
mode:您可以指定編譯器在編譯時應最佳化的內容。
動態:它用於啟用動態形狀的程式碼路徑。
fullgraph:它將程式編譯成單一圖。
backend:預設情況下它使用 TorchInductor,但您可以指定其他可用的編譯器後端。
def torch.compile(model: Callable,
*,
mode: Optional[str] = "default",
dynamic: bool = False,
fullgraph:bool = False,
backend: Union[str, Callable] = "inductor",