博客專欄

EEPW首頁 > 博客 > PyTorch 1.10正式版上線:Android NNAPI支持來了

PyTorch 1.10正式版上線:Android NNAPI支持來了

發(fā)布人:機器之心 時間:2021-10-22 來源:工程師 發(fā)布文章

廣受人們歡迎的深度學習框架 PyTorch 剛剛更新了 1.10 正式版,在 CUDA Graphs API 等方面進行了諸多改進。

PyTorch 是一個開源的 Python 機器學習庫,基于 Torch,底層由 C++ 實現(xiàn),主要應用于人工智能領域,如自然語言處理,它最初由 Facebook 的人工智能研究團隊開發(fā)。由于 PyTorch 定義網(wǎng)絡結構簡單等特點,自發(fā)布以來便受到眾多研究人的青睞。

經(jīng)過研究者的不斷努力,現(xiàn)在, PyTorch 更新到 PyTorch 1.10 版本。此版本由 1.9 版本以來的 3,400 多次 commits 組成,由 426 位貢獻者完成。 

1.png

此次PyTorch 1.10 的更新側重于改進 PyTorch 的訓練和性能以及開發(fā)人員的可用性。亮點包括以下:

集成了 CUDA Graphs API 以減少 CUDA 工作負載的 CPU 開銷;

FX、torch.special 和 nn.ModuleParametrization 等幾個前端 API 已從測試版變?yōu)榉€(wěn)定版;

除了 GPU 之外,JIT Compiler 中對自動融合的支持擴展到 CPU;

Android NNAPI 支持現(xiàn)已推出測試版。

(注:從 PyTorch 1.6 版本開始,PyTorch 特性分為 Stable(穩(wěn)定版)、Beta(測試版)和 Prototype(原型版)。

PyTorch 1.10 最新特性

2.png

前端 API

使用 FX 進行 Python 代碼轉換(穩(wěn)定版):FX 提供了一個用于轉換和降低 PyTorch 程序的 python 化平臺,它是一個工具包,在 1.10 版本中,F(xiàn)X 趨于穩(wěn)定,用戶可以使用 torch.fx 實現(xiàn)程序轉換。

torch.special(穩(wěn)定版):torch.special 模塊,類似于 SciPy 的特殊模塊,現(xiàn)在穩(wěn)定版可用。該模塊有 30 種運算,包括 gamma、Bessel 和(高斯)誤差函數(shù)。

nn.Module 參數(shù)化(穩(wěn)定版):允許用戶在不修改 nn.Module 本身的情況下參數(shù)化任何參數(shù)等,在穩(wěn)定版中可用。此版本增加了權重歸一化 (weight_norm)、正交參數(shù)化(矩陣約束和部分剪枝),用戶在創(chuàng)建自己的參數(shù)化時更加靈活。

CUDA Graphs API 集成(測試版):PyTorch 現(xiàn)在集成了 CUDA Graphs API 以減少 CUDA 工作負載的 CPU 開銷。

CUDA Graphs 大大降低了 CPU 綁定 cuda(CPU-bound cuda)工作負載的 CPU 開銷,從而通過提高 GPU 利用率來提高性能。對于分布式工作負載,CUDA Graphs 還可以減少抖動,并且由于并行工作負載必須等待最慢的工作負載,因此減少抖動可以提高整體并行效率。

分布式訓練

在 1.10 版本中,有許多特性在分布式包中從測試版過渡到穩(wěn)定版,具體包括:

Remote Module(穩(wěn)定版):此功能允許用戶遠程操作模塊,就像使用本地模塊一樣,其中 RPC 對用戶是透明的;

DDP Communication Hook(穩(wěn)定版):此功能允許用戶覆蓋 DDP 如何跨進程同步梯度;

ZeroRedundancyOptimizer(穩(wěn)定版):此功能可與 DistributedDataParallel 結合使用,以減少每個進程優(yōu)化器狀態(tài)的大小。

性能優(yōu)化以及工具

(測試版)TorchScript 嚴格要求源代碼具有類型注釋才能成功編譯。長期以來,用戶只能通過反復試驗來添加缺失或不正確的類型注解,效率低下,耗時長?,F(xiàn)在,PyTorch 1.10 利用 MonkeyType 等現(xiàn)有工具為 torch.jit.script 啟用了配置文件定向輸入,這使得該過程變得更容易、更快和更高效。

(測試版)CPU 融合:PyTorch 1.10 為 CPU 添加了一個基于 LLVM 的 JIT 編譯器,可以將 Torch 庫調用序列融合在一起以提高性能。雖然此前的版本在 GPU 上擁有此功能已有一段時間了,但 1.10 版本是第一次將編譯引入 CPU。

PyTorch Profiler

(測試版)PyTorch Profiler 的目標是針對時間或內(nèi)存成本最高的執(zhí)行步驟,并可視化 GPU 和 CPU 之間的工作負載分布。PyTorch 1.10 包括以下主要功能:

增強型內(nèi)存視圖:這有助于用戶更好地了解內(nèi)存使用;

增強型內(nèi)核視圖:附加列顯示網(wǎng)格和塊大小以及每個線程共享內(nèi)存使用和寄存器的情況;

分布式訓練:Gloo 現(xiàn)在支持分布式訓練工作;

TensorCore:該工具顯示 Tensor Core(TC) 的使用,并為數(shù)據(jù)科學家和框架開發(fā)人員提供建議;

NVTX:對 NVTX markers 的支持是從舊版 autograd profiler 移植過來的;

支持移動設備分析:PyTorch profiler 現(xiàn)在與 TorchScript 、移動后端能夠更好的集成,支持移動工作負載的跟蹤收集。

支持 Android NNAPI

去年,PyTorch 官方發(fā)布了對 Android Neural Networks API (NNAPI) 的原型支持。PyTorch1.10 版本增加了更多的操作,包括在加載時對形狀的支持,以及在主機上運行模型進行測試的能力。

此外,遷移學習已經(jīng)添加到對象檢測示例中。

對于此次 PyTorch 的更新,網(wǎng)友也不僅贊嘆:「PyTorch 團隊的出色工作,融合和 profiler 工作,非???!」

3.png

關于 PyTorch1.10 版本的更新,更多信息請參考:

Github: https://github.com/pytorch/pytorch/releases/tag/v1.10.0

參考鏈接:

https://pytorch.org/blog/pytorch-1.10-released/

https://www.marktechpost.com/2021/10/21/pytorch-releases-version-1-10-with-updates-on-cuda-graphs-apis/

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: Python

相關推薦

技術專區(qū)

關閉