首頁  >  文章  >  科技週邊  >  PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug

PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug

WBOY
WBOY轉載
2023-04-12 21:31:03985瀏覽

PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug

PyTorch 1.12 正式發布,還沒有更新的小夥伴可以更新了。

距離 PyTorch 1.11 推出沒幾個月,PyTorch 1.12 就來了!此版本由 1.11 版本以來的 3124 多次 commits 組成,由 433 位貢獻者完成。 1.12 版本進行了重大改進,並修復了許多 Bug。

隨著新版本的發布,大家討論最多的可能就是 PyTorch 1.12 支援蘋果 M1 晶片。

PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug

其實早在今年 5 月,PyTorch 官方就已經宣布正式支援在 M1 版本的 Mac 上進行 GPU 加速的 PyTorch 機器學習模型訓練。先前,Mac 上的 PyTorch 訓練僅能利用 CPU,但隨著 PyTorch 1.12 版本的發布,開發和研究人員可以利用蘋果 GPU 大幅加快模型訓練。

在 Mac 上引入加速 PyTorch 訓練

PyTorch GPU 訓練加速是使用蘋果 Metal Performance Shaders (MPS) 作為後端來實現的。 MPS 後端擴展了 PyTorch 框架,提供了在 Mac 上設定和運行操作的腳本和功能。 MPS 使用針對每個 Metal GPU 系列的獨特特性進行微調的核心能力來優化運算效能。新設備將機器學習計算圖和原語映射到 MPS Graph 框架和 MPS 提供的調整內核。

每台搭載蘋果自研晶片的 Mac 都有著統一的記憶體架構,讓 GPU 可以直接存取完整的記憶體儲存。 PyTorch 官方表示,這使得 Mac 成為機器學習的絕佳平台,讓用戶能夠在本地訓練更大的網路或批次大小。這降低了與基於雲端算力的開發相關的成本或對額外的本地 GPU 算力需求。統一記憶體架構也減少了資料檢索延遲,提高了端到端效能。

可以看到,與CPU 基準相比,GPU 加速實現了倍數的訓練效能提升:

PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多BugPyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug

有了GPU 的加持,訓練和評估速度超過CPU

上圖是蘋果於2022 年4 月使用配備Apple M1 Ultra(20核CPU、64 核GPU)128GB 內存,2TB SSD 的Mac Studio 系統進行測試的結果。測試模型為 ResNet50(batch size = 128)、HuggingFace BERT(batch size = 64)和 VGG16(batch size = 64)。性能測試是使用特定的電腦系統進行的,反映了 Mac Studio 的大致性能。

PyTorch 1.12 其他新功能

前端 API:TorchArrow

PyTorch 官方已經發布了一個新的 Beta 版本供用戶試用:TorchArrow。這是一個機器學習預處理庫,可進行批次資料處理。它具有高效能,兼具 Pandas 風格,還具有易於使用的 API,以加快用戶預處理工作流程和開發。

(Beta)PyTorch 中的Complex32 和Complex Convolutions

目前,PyTorch 原生支援複數、複數autograd、複數模組和大量的複數運算(線性代數和快速傅立葉變換)。在包括 torchaudio 和 ESPNet 在內的許多庫中,都已經使用了複數,並且 PyTorch 1.12 通過複數卷積和實驗性 complex32 數據類型進一步擴展了複數功能,該數據類型支援半精度 FFT 操作。由於 CUDA 11.3 套件中存在 bug,如果使用者想要使用複數,官方建議使用 CUDA 11.6 套件。

(Beta)Forward-mode 自動微分

Forward-mode AD 允許在前向傳遞中計算方向導數(或等效地雅可比向量積)。 PyTorch 1.12 顯著提高了 forward-mode AD 的覆蓋範圍。

BetterTransformer

PyTorch 現在支援多個 CPU 和 GPU fastpath 實作(BetterTransformer),也就是 Transformer 編碼器模組,包括 TransformerEncoder、TransformerEncoderLayer 和 MultiHeadAttention (MHA) 的實作。在新的版本中,BetterTransformer 在許多常見場景中速度快 2 倍,這也取決於模型和輸入特徵。新版本 API 支援與先前的 PyTorch Transformer API 相容,如果現有模型符合 fastpath 執行要求,它們將加速現有模型,以及讀取使用先前版本 PyTorch 訓練的模型。 PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug此外,新版本還有一些更新:

  • 模組:模組計算的一個新 beta 功能是功能性 API。這個新的 functional_call() API 讓使用者可以完全控制模組計算中使用的參數。
  • TorchData:DataPipe 改進了與 DataLoader 的兼容性。 PyTorch 現在支援基於 AWSSDK 的 DataPipes。 DataLoader2 已被引入作為管理 DataPipes 與其他 API 和後端之間互動的方式。
  • nvFuser: nvFuser 是新的、更快的預設 fuser,用於編譯到 CUDA 裝置。
  • 矩陣乘法精度:預設情況下,float32 資料類型上的矩陣乘法現在將在全精度模式下工作,這種模式速度較慢,但會產生更一致的結果。
  • Bfloat16:為不太精確的資料類型提供了更快的計算時間,因此在 1.12 中對 Bfloat16 資料類型進行了新的改進。
  • FSDP API:作為原型在 1.11 版中發布,FSDP API 在 1.12 版的發布中達到了測試版,並添加了一些改進。

更多內容請看:https://pytorch.org/blog/pytorch-1.12-released/。

以上是PyTorch 1.12發布,正式支援蘋果M1晶片GPU加速,修復眾多Bug的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除