PyTorch基金會如去年底所公開的資訊,現在正式發表PyTorch 2.0,增加了一個主要版本號,代表著功能有著巨大變化,這個版本的重要更新包括加入穩定版Accelerated Transformers,以及新的編譯器torch.compile Beta測試版,並且改進PyTorch在GPU和CPU上的推理和訓練效能。

開發團隊在PyTorch 2.0增加新的PyTorch Transformer API,這個全新的Accelerated Transformers高效能實作版本,讓開發者能夠以更低的成本訓練和部署先進Transformer模型。Accelerated Transformers的前身稱作Better Transformer,藉由使用自定義的核心架構,在訓練和推理中使用SPDA(Scaled Dot Product Attention)自注意力方法,以獲得更好的效能。

過去Better Transformer應用Fastpath方法,Fastpath是深度神經網路的剪裁策略,透過剪去不必要的連接和神經元,減少模型複雜度,以達到壓縮神經網路大小與提高推理速度的目的,而SPDA則是自注意力機制的注意力計算方法,SPDA會計算序列中每個元素和其他元素之間的注意力分配權重,減少權重低的運算來降少整體運算量,而且因為計算方法的優勢,SPDA不只高效計算精度也更高。

這項改進讓PyTorch 2.0開發者可以明顯看到運算效能提升,也能夠支援諸如使用Cross-Attention的模型、Transformer Decoders等更多種用例。針對不同的模型和Transformer使用案例,PyTorch 2.0支援不同的SDPA自定義核心,使得不同模型和硬體都能應用高效能核心。

PyTorch 2.0的另一個更新重頭戲便是torch.compile,這是PyTorch 2.0的主要API,能夠打包用戶的模型並且回傳經過編譯的模型。torch.compile完全向後相容,底層採用TorchDynamo、AOTAutograd、PrimTorch和TorchInductor四大重要技術,在163個開源模型中,torch.compile能夠成功執行其中93%,在float32資料類型下,torch.compile可使模型執行速度提升20%,而且在自動混合精度技術(AMP),這種組合不同精度的資料類型提高運算效率的方法,torch.compile還可讓模型速度提高36%。

整體來說,torch.compile是一種高效能編譯器,不只可正常執行大多數的開源模型,還可以明顯提升模型在不同精度下的執行速度。

另外,Apple高效能圖形運算函式庫Metal Performance Shaders(MPS)後端也增加PyTorch在Mac平臺的支援,新加入60個常用操作,總支援操作數增加至300個。AWS搭載自家晶片Graviton3的C7g執行個體,也最佳化了PyTorch的CPU推理,與之前的版本相比,PyTorch 2.0在Graviton的推理效能更好,包括Resnet50和Bert模型都受益。

熱門新聞

Advertisement