PyTorch 1.3發布:能在移動端部署,支持Colab云TPU,阿里云上也能用
曉查 一璞 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
“我要轉PyTorch!”
看到1.3版本的新特性之后,有開發者在推特上喊。
今天是PyTorch開發者大會第一天,PyTorch 1.3率先公布。
新的版本不僅能支持安卓iOS移動端部署,甚至還能讓用戶去對手Google的Colab上調用云TPU。
不方便薅Google羊毛的國內的開發者,PyTorch也被集成在了阿里云上,阿里云全家桶用戶可以更方便的使用PyTorch了。
此外還有一大波新工具,涉及可解釋性、加密、以及關于圖像語音的諸多功能。
又兼容又有新工具,怪不得有普通鐵桿粉絲感嘆:自己對Facebook開源庫的“忠誠度”越來越高了。
牛逼!可能是個人感覺吧,Facebook比Google在開源庫方面好多了,而且各方支持也是最好的。
React對比Angular,Pytorch對比Tensorflow。這就是其中兩個例子,Facebook框架上市晚,但得到了強有力的支持,不斷改進,而Google的框架雖然出來得早但沒啥兼容升級,最終成為棄子。
我對Facebook開源庫的“忠誠度”一直在增長。
PyTorch 1.3新功能
PyTorch 1.3帶來了三個實驗性的新功能。
命名張量
允許用戶給張量維度命名,從而讓張量更易用,這樣就可以直接喊他們的名字,不用根據位置來跟蹤張量維度。
升級之前,你需要在代碼里寫注釋來給張量命名:
# Tensor[N, C, H, W] images = torch.randn(32, 3, 56, 56) images.sum(dim=1) images.select(dim=1, index=0)
升級之后,就直接能在代碼里寫了,這樣可讀性大大提高:
NCHW = [‘N’, ‘C’, ‘H’, ‘W’]
images = torch.randn(32, 3, 56, 56, names=NCHW)
images.sum('C')
images.select('C', index=0)
另外,這項功能還能自動檢查API是否被正確的使用,提升了安全性,還可以直接用名字來重新排列尺寸。
你可以這樣命名:
也可以這樣命名:
用align_to就可以重新排序:
是不是方便多了?
量化支持
開發ML應用程序時,有效利用服務器端和設備上的計算資源非常重要。
為了支持在服務器和邊緣設備上進行更有效的部署,PyTorch 1.3現在支持用eager模式進行8位模型量化。所謂量化,是指降低精度執行計算和存儲的技術。
當前處于實驗性的量化功能包括對后訓練量化(post-training quantization)、動態量化(dynamic quantization)和量化感知訓練(quantization-aware training)的支持。它分別利用了x86和ARM CPU的FBGEMM和QNNPACK最新的量化內核后端,這些后端與PyTorch集成在一起,并且現在共享一個通用API。
具體的API文檔可以參閱:
https://pytorch.org/docs/master/quantization.html
Facebook提供了一個量化的實際案例供開發者參考:
https://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html
移動端
另外,為了在邊緣設備上高效的運行機器學習,PyTorch 1.3支持端到端的工作流,從Python到部署在iOS和安卓端。
當然,這個功能還是早期實驗版本,針對端到端做了優化,新版本重點在:
1、大小優化,根據用戶需要構建級別優化和選擇性編譯。
2、提升了移動CPU和GPU上的性能。
3、高級API:擴展移動原生API,覆蓋常用預處理、將機器學習合并到移動應用需要的集成任務,比如計算機視覺或者NLP的任務。
移動端部署細節:
https://pytorch.org/mobile/home/
新工具
可解釋性工具Captum
隨著AI模型變得越來越復雜,開發用于模型可解釋性的新方法變得越來越重要。為了滿足這種需求,Facebook推出了Captum。
Captum可以幫助使用PyTorch的開發者了解為什么他們的模型生成某個特定輸出。Captum提供了先進的工具來理解特定神經元和層如何影響模型做出的預測。
Captum的算法包括integrated gradients、conductance、SmoothGrad、VarGrad和DeepLift。
下面的案例展示了如何在預訓練的ResNet模型上應用模型可解釋性算法,然后通過將每個像素的屬性疊加在圖像上,使其可視化。
noise_tunnel = NoiseTunnel(integrated_gradients) attributions_ig_nt, delta = noise_tunnel.attribute(input, n_samples=10, nt_type='smoothgrad_sq', target=pred_label_idx) _ = viz.visualize_image_attr_multiple(["original_image", "heat_map"], ["all", "positive"], np.transpose(attributions_ig_nt.squeeze().cpu().detach().numpy(), (1,2,0)), np.transpose(transformed_img.squeeze().cpu().detach().numpy(), (1,2,0)), cmap=default_cmap, show_colorbar=True)
了解更多:
https://www.captum.ai/
加密工具CrypTen
通過基于云或機器學習即服務(MLaaS)平臺的ML的實際應用提出了一系列安全和隱私挑戰。
這些平臺的用戶可能不希望或是無法共享未加密數據,這使他們無法充分利用機器學習工具。為了應對這些挑戰,機器學習社區正在探索各種成熟度不同的技術方法。這些包括同態加密(homomorphic encryption)、安全多方計算(secure multiparty computation)、可信執行環境(trusted execution environments)、設備計算(on-device computation)和差分隱私(differential privacy)。
為了更好地理解如何應用其中的某些技術,Facebook發布了CrypTen,這是一個新的基于社區的研究平臺,用于推動隱私保護ML領域的發展。
CrypTen的更多細節:
https://ai.facebook.com/blog/crypten-a-new-research-tool-for-secure-machine-learning-with-pytorch
目前CrypTen已經在GitHub上開源:
https://github.com/facebookresearch/crypten
多模AI系統工具
如今網上的數字內容通常不是單一形式,而是由多種形式共同組成,可能包含文本、圖像、音頻和視頻。PyTorch提供了新的工具和軟件庫生態系統,來處理機器學習ML系統。
Detectron2
Detectron2是在PyTorch中實現的目標檢測庫。它以增強的靈活性幫助計算機視覺研究,并改善可維護性和可伸縮性,以支持在生產中的用例。
更多細節:
https://ai.facebook.com/blog/-detectron2-a-pytorch-based-modular-object-detection-library-
GitHub:
https://github.com/facebookresearch/detectron2
Fairseq的語音擴展
語言翻譯和音頻處理是系統和應用程序(例如搜索,翻譯,語音和助手)中的關鍵組件。由于變壓器等新架構的發展以及大規模的預訓練方法的發展,最近在這些領域取得了巨大的進步。
Facebook已經擴展了Fairseq(語言翻譯等seq2seq應用框架),包括對語音和音頻識別任務的端到端學習的支持。fairseq的這些擴展可以加快對新語音研究的探索和原型開發。
GitHub:
https://github.com/pytorch/fairseq/tree/master/examples/speech_recognition
云端支持
今天的開發者大會上,另一個激動人心的消息是,PyTorch宣布了對谷歌云TPU的全面支持,以及阿里云對PyTorch的集成。此外,PyTorch還將新增了對兩家AI硬件的支持,擴展了了自己的硬件生態。
谷歌云TPU
在Facebook、Google和Salesforce的工程師共同努力下,新版的PyTorch加入對了云TPU支持,包括對超級計算機云TPU Pods的實驗性支持。谷歌Colab還提供了對云TPU的PyTorch支持。
阿里云
阿里云的集成涉及PyTorch 1.x的一鍵式解決方案,數據科學Workshop notebook服務,使用Gloo/NCCL進行的分布式訓練,以及與阿里巴巴IaaS(如OSS、ODPS和NAS)的無縫集成。
硬件生態擴展
除了主要的GPU和CPU合作伙伴之外,PyTorch生態系統還支持專用的機器學習加速器。比如英特爾不久前推出的NNP-I推理芯片、Habana Labs的AI處理器。
這兩家公司分別在博客中展示了自家硬件對PyTorch Glow優化編譯器的支持,使開發人員能夠利用這些特定于市場的解決方案。
回饋AI社區
最后Facebook感謝AI社區對PyTorch生態做出的貢獻,過去一段時間里,一些開發者的優秀開源項目讓PyTorch框架受益。比如:
1、Mila SpeechBrain:多合一語音工具包
《Kaldi拜拜!PyTorch語音工具包SpeechBrain要來了,支持多種語音任務,實現最強水準》
2、SpaCy:用于NLP的高級軟件庫
3、HuggingFace PyTorch-Transformers:用于NLP的最新的預訓練模型庫。
《一個API調用27個NLP預訓練模型:BERT、GPT-2全囊括,像導入NumPy一樣容易》
4、PyTorch Lightning:一個類似Keras的ML庫
《在PyTorch上用”Keras”,分布式訓練開箱即用,告別沒完沒了的Debug》
最近,Facebook舉行了首次在線的全球PyTorch夏季黑客馬拉松,共有近1500名開發者參加了比賽。Facebook在今天公布了獲獎項目,他們分別是:
1、Torchmeta:提供了PyTorch的擴展,簡化PyTorch中元學習算法的開發。
2、Open-Unmix:使用PyTorch進行端到端音樂混合的系統。
3、Endless AI-Generated Tees:這是一家向全球售賣AI設計T恤的商店。他們使用由PyTorch構建的StyleGAN,接受現代藝術的訓練。
- 腦機接口走向現實,11張PPT看懂中國腦機接口產業現狀|量子位智庫2021-08-10
- 張朝陽開課手推E=mc2,李永樂現場狂做筆記2022-03-11
- 阿里數學競賽可以報名了!獎金增加到400萬元,題目面向大眾公開征集2022-03-14
- 英偉達遭黑客最后通牒:今天必須開源GPU驅動,否則公布1TB機密數據2022-03-05




