博客專欄

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

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

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

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

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

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

        1.png

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

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

        FX、torch.special 和 nn.ModuleParametrization 等幾個前端 API 已從測試版變為穩定版;

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

        Android NNAPI 支持現已推出測試版。

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

        PyTorch 1.10 最新特性

        2.png

        前端 API

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

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

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

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

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

        分布式訓練

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

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

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

        ZeroRedundancyOptimizer(穩定版):此功能可與 DistributedDataParallel 結合使用,以減少每個進程優化器狀態的大小。

        性能優化以及工具

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

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

        PyTorch Profiler

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

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

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

        分布式訓練:Gloo 現在支持分布式訓練工作;

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

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

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

        支持 Android NNAPI

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

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

        對于此次 PyTorch 的更新,網友也不僅贊嘆:「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/

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: Python

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 孝昌县| 德安县| 玉山县| 汾阳市| 铜鼓县| 汤原县| 石泉县| 象州县| 突泉县| 增城市| 商洛市| 黎城县| 上饶县| 河南省| 巴塘县| 峨眉山市| 侯马市| 饶河县| 五河县| 象州县| 常德市| 潮州市| 慈利县| 三门县| 定襄县| 普兰县| 台山市| 高淳县| 青铜峡市| 大姚县| 潜江市| 汽车| 江口县| 衡阳市| 英吉沙县| 绥芬河市| 潼关县| 通辽市| 太谷县| 黄浦区| 安岳县|