0
本文作者: 楊鯉萍 | 2019-10-11 19:10 |
雷鋒網(wǎng) AI 開發(fā)者按:就在今年 8 月份,機(jī)器學(xué)習(xí)框架 PyTorch 剛發(fā)布 1.2 版本(詳情可參考:http://www.ozgbdpf.cn/news/201908/1G4smDSXUfZfHHqc.html),很多開發(fā)者甚至還沒來(lái)得及吃透 1.2,兩個(gè)月不到,進(jìn)擊的 Pytorch 又帶著我們進(jìn)入 1.3 版本時(shí)代。
與此前 PyTorch 一直受到學(xué)術(shù)領(lǐng)域研究人員的青睞不同,新版 PyTorch 也引起了業(yè)界的廣泛關(guān)注,這主要得益于新版功能對(duì)業(yè)界支持度的大幅提升。
新版 Pytorch 1.3 不僅支持安卓 IOS 移動(dòng)端部署及谷歌云 TPU,進(jìn)一步加強(qiáng)了框架兼容性;還新增了更多涉及可解釋性、加密、以及關(guān)于圖像語(yǔ)音等工業(yè)方面應(yīng)用;并在量化支持方面,集成了更強(qiáng)的訓(xùn)練功能。該消息一經(jīng)發(fā)布,甚至不少開發(fā)者紛紛留言道,要不要轉(zhuǎn) Pytorch???
在 PyTorch 開發(fā)者大會(huì)上,F(xiàn)acebook 發(fā)布了其深度學(xué)習(xí)框架 PyTorch 1.3,新版 PyTorch 帶來(lái)了重要的新功能,包括對(duì)移動(dòng)端部署的支持、8 位整數(shù)的快速模式量化以及命名張量功能。
PyTorch 移動(dòng)端
隨著應(yīng)用程序?qū)Ω脱舆t的要求越來(lái)越高,在邊緣設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)(ML)變得越來(lái)越重要。
它也是像聯(lián)邦學(xué)習(xí)等隱私保護(hù)技術(shù)的基礎(chǔ)要素。為了在設(shè)備上更高效的運(yùn)行 ML,PyTorch 1.3 現(xiàn)在支持從 Python 到在 iOS 和 Android 上部署的端到端工作流。
在 Python 上部署 iOS 和 Android 移動(dòng)設(shè)備端到端工作流
這個(gè)功能還是早期實(shí)驗(yàn)版本,針對(duì)端到端開發(fā)進(jìn)行了優(yōu)化,新版本側(cè)重于:
大小優(yōu)化:根據(jù)用戶應(yīng)用程序所需的運(yùn)算符,構(gòu)建級(jí)別優(yōu)化和選擇性編譯(即,僅為所需的運(yùn)算符提供二進(jìn)制大小字符)
性能:進(jìn)一步改善了移動(dòng) CPU 和 GPU 的性能和覆蓋范圍
高級(jí) API:擴(kuò)展移動(dòng)原生 API,以覆蓋常用預(yù)處理和將 ML 集成到移動(dòng)應(yīng)用程序中所需的任務(wù)。例如計(jì)算機(jī)視覺和自然語(yǔ)言處理任務(wù)。
更多關(guān)于 PyTorch 移動(dòng)端:
量化支持
開發(fā) ML 應(yīng)用程序時(shí),有效利用服務(wù)器端和設(shè)備上的計(jì)算資源非常重要。為了支持在服務(wù)器和邊緣設(shè)備上進(jìn)行更有效的部署,PyTorch 1.3 現(xiàn)在支持使用常見的 eager 模式進(jìn)行 8 位模型量化。量化是指用于以降低的精度執(zhí)行計(jì)算和存儲(chǔ)的技術(shù),例如:8-bit 整數(shù)。
當(dāng)前的實(shí)驗(yàn)特性包括:對(duì)訓(xùn)練后量化(post-training quantization)、動(dòng)態(tài)量化(dynamic quantization)和量化感知訓(xùn)練(quantization-aware training)的支持。
它分別利用了 x86 和 ARM CPU 的 FBGEMM 和 QNNPACK 最新的量化內(nèi)核后端,這些后端與 PyTorch 集成在一起,并且現(xiàn)在共享一個(gè)通用 API。
更多詳細(xì)設(shè)計(jì)和架構(gòu)信息:
https://pytorch.org/docs/master/quantization.html
量化的實(shí)際案例參考:
https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html
命名張量
康奈爾大學(xué)的 Sasha Rush 認(rèn)為,盡管張量在深度學(xué)習(xí)中無(wú)處不在,但傳統(tǒng)的張量實(shí)現(xiàn)仍存在明顯的缺陷,例如:暴露私有維度、基于絕對(duì)位置的 broadcasting 以及在文檔中保留類型信息。他提議將命名張量作為替代方法。
即我們可以被允許通過(guò)命名張量來(lái)命名和訪問(wèn)維度,而無(wú)需再根據(jù)位置來(lái)跟蹤張量維度:
同時(shí),命名也使得代碼更具可讀性和可維護(hù)性。Pythorch 項(xiàng)目總監(jiān) JoeSpisak 也曾在電話采訪中表示:「命名張量可以讓你寫出更干凈的代碼。我可以將這些命名嵌入到代碼中,而不必備注這個(gè)數(shù)字是高度、這個(gè)數(shù)字是寬度等;所以,這會(huì)使代碼更可讀、更干凈且更易于維護(hù)?!?/p>
可解釋性工具 Captum
隨著模型變得越來(lái)越復(fù)雜,開發(fā)用于模型可解釋性的新方法變得越來(lái)越重要。
為了滿足這種需求,F(xiàn)acebook 推出了可解釋性工具 Captum,該工具可幫助在 PyTorch 開發(fā)人員更好的理解其模型生成特定輸出的原因。
Captum 提供了先進(jìn)的工具來(lái)了解特定神經(jīng)元和層的重要性,以及他們?nèi)绾斡绊懩P妥龀龅念A(yù)測(cè)。Captum 的算法包括:積分梯度(integrated gradients)、電導(dǎo)(conductance),SmoothGrad 和 VarGrad 以及 DeepLift。
下面的案例展示了如何在預(yù)訓(xùn)練的 ResNet 模型上應(yīng)用模型可解釋性算法,然后通過(guò)將每個(gè)像素的屬性疊加在圖像上來(lái)使其可視化。
在預(yù)訓(xùn)練的 ResNet 模型上應(yīng)用 Captum
更多關(guān)于 Captum:
CrypTen 加密
ML 通過(guò)基于云或機(jī)器學(xué)習(xí)即服務(wù)(MLaaS)平臺(tái)的實(shí)際應(yīng)用提出了一系列安全和隱私挑戰(zhàn)。尤其對(duì)于這些平臺(tái)上可能不希望或無(wú)法共享未加密數(shù)據(jù)的用戶,這導(dǎo)致他們無(wú)法充分利用 ML 工具。
為了應(yīng)對(duì)這些挑戰(zhàn),機(jī)器學(xué)習(xí)社區(qū)正在探索各種技術(shù)方法,包括:同態(tài)加密、安全的多方計(jì)算、可信任的執(zhí)行環(huán)境、設(shè)備上的計(jì)算和差異隱私。Facebook 也發(fā)布了 CrypTen 來(lái)更好地幫助研究人員理解如何應(yīng)用其中的某些技術(shù),這是一個(gè)新的基于社區(qū)的研究開源平臺(tái),用于推動(dòng)隱私保護(hù) ML 領(lǐng)域的發(fā)展。
除此之外,F(xiàn)acebook 也一直在與谷歌的深度思維研究科學(xué)家安德魯·特拉斯克(Andrew Trask)一起研究保護(hù)隱私的模型,Udacity Course 則是一門學(xué)習(xí)如何利用工具擴(kuò)展 PyTorch,從而訓(xùn)練能夠保護(hù)用戶隱私 AI 模型的課程。它還包含一個(gè)用于加密深度學(xué)習(xí)庫(kù)的開源項(xiàng)目,且覆蓋了 Pythorch、TensorFlow 和 Keras 框架的擴(kuò)展。
更多關(guān)于 CrypTen:
https://ai.facebook.com/blog/crypten-a-new-research-tool-for-secure-machine-learning-with-pytorch
GitHub 開源地址:
https://github.com/facebookresearch/crypten
關(guān)于 Udacity Course:
目前網(wǎng)上的數(shù)字內(nèi)容通常不是單一形式,而是由多種形式共同組成,可能包含:文本、圖像、音頻和視頻。PyTorch 提供了新的工具和軟件庫(kù)生態(tài)系統(tǒng),來(lái)解決構(gòu)建多模態(tài) ML 系統(tǒng)的問(wèn)題。以下是一些最新推出的庫(kù):
Detectron2
Detectron2 是在 PyTorch 中實(shí)現(xiàn)的目標(biāo)檢測(cè)庫(kù)。它提供了對(duì)最新模型和任務(wù)的支持,以增強(qiáng)的靈活性幫助進(jìn)行計(jì)算機(jī)視覺研究,并改善了可維護(hù)性和可擴(kuò)展性,以支持在生產(chǎn)中的用例。
更多關(guān)于 Detectron2:
https://ai.facebook.com/blog/-detectron2-a-pytorch-based-modular-object-detection-library-
GitHub:
Fairseq 的語(yǔ)音擴(kuò)展
語(yǔ)言翻譯和音頻處理是系統(tǒng)和應(yīng)用程序如:搜索、翻譯、語(yǔ)音和助手中的關(guān)鍵組件。近年來(lái),隨著 transformers 等新架構(gòu)及大規(guī)模預(yù)訓(xùn)練方法的發(fā)展,這些領(lǐng)域取得了巨大的進(jìn)步。
Facebook 對(duì) Fairseq 進(jìn)行了擴(kuò)展,這是一個(gè)用于序列到序列應(yīng)用(語(yǔ)言翻譯等 seq2seq 應(yīng)用)的框架,包括對(duì)語(yǔ)音和音頻識(shí)別任務(wù)的端到端學(xué)習(xí)的支持。
GitHub 開源地址:
https://github.com/pytorch/fairseq/tree/master/examples/speech_recognition
除了新增眾多功能外,PyTorch 還宣布了對(duì) Google Cloud TPU 的全面支持,以及與阿里云新推出的 PyTorch 集成。此外,PyTorch 還新增了對(duì)兩家 AI 硬件的支持,擴(kuò)展了自己的硬件生態(tài)。
Google Cloud TPU 支持現(xiàn)已廣泛可用。在 Facebook、Google 和 Salesforce 的工程師共同努力下,新版的 PyTorch 加入對(duì)了云 TPU 支持,包括對(duì)超級(jí)計(jì)算機(jī)云 TPU Pods 的實(shí)驗(yàn)性支持。谷歌 Colab 還提供了對(duì)云 TPU 的 PyTorch 支持。
阿里云中添加了對(duì) PyTorch 的支持。阿里云的集成涉及 PyTorch 1.x 的一鍵式解決方案,數(shù)據(jù)科學(xué) Workshop notebook 服務(wù),使用 Gloo/NCCL 進(jìn)行的分布式訓(xùn)練,以及與阿里巴巴 IaaS(如 OSS、ODPS 和 NAS)的無(wú)縫集成。
ML 硬件生態(tài)系統(tǒng)擴(kuò)展。除了主要的 GPU 和 CPU 合作伙伴之外,PyTorch 生態(tài)系統(tǒng)還支持專用的 ML 加速器。例如:英特爾不久前推出的 NNP-I 推理芯片、Habana Labs 的 AI 處理器。
Facebook 首席技術(shù)官邁克?施羅普弗(Mike Schroepfer)在會(huì)議開始時(shí)表示,在過(guò)去兩年里,F(xiàn)acebook 已經(jīng)不再使用其前身 Torch 或 Caffe2,而是努力使 Pythorch 成為深入學(xué)習(xí)的主要工具。這對(duì)于保持研究人員和開發(fā)人員處于同一個(gè)頁(yè)面上至關(guān)重要。
施羅普弗在臺(tái)上說(shuō):「這意味著它現(xiàn)在是在 Facebook 上進(jìn)行機(jī)器學(xué)習(xí)(和)深度學(xué)習(xí)的事實(shí)工具,不僅是用于有機(jī)發(fā)生的研究,而且是在生產(chǎn)中,所以我們絕大多數(shù)的模特現(xiàn)在都是在 Pythorch 上訓(xùn)練的?!乖谟?jì)算機(jī)視覺、NLP、語(yǔ)音、翻譯等多個(gè)領(lǐng)域都是如此,所有這些系統(tǒng)現(xiàn)在都在使用 Pythorch。
Facebook 首席技術(shù)官邁克?施羅普弗(Mike Schroepfer)也表示,Tensor 處理單元的支持從單芯片訓(xùn)練模型開始,之后將擴(kuò)展到云計(jì)算平臺(tái)。
原文鏈接:
https://pytorch.org/blog/pytorch-1-dot-3-adds-mobile-privacy-quantization-and-named-tensors/
博客文章地址:
雷鋒網(wǎng) AI 開發(fā)者 雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。