PyTorch1.0預覽版釋出:超越Python效能的C++前端介面?
今年 5 月份,F8 大會的第二天中,Facebook 曾宣佈 PyTorch1.0 即將與大家見面,這是繼先前釋出 0.4.0 後的一次較大調整。今日,在首屆 PyTorch 開發者大會上,Facebook 宣佈了有關該框架生態一系列更新,包括軟體、硬體和教育方面的合作。於此同時,PyTorch 1.0 預覽版也正式釋出了。
專案連結:https://github.com/pytorch/pytorch/releases
據介紹,PyTorch 1.0 加速了產品化 AI 突破性研究的程序。從亞馬遜、谷歌、微軟的深度雲服務支援,到緊密結合 ARM、英特爾、IBM、英偉達和高通等技術方,開發者們能夠更輕鬆的利用 PyTorch 相容了軟體、硬體和開發工具的生態。Facebook 表示,PyTorch 1.0 融合越多的軟體和硬體,開發者能夠越容易地快速建立、訓練、部署頂級的深度學習模型。
「我們在 PyTorch1.0 釋出前解決了幾大問題包括:可重用、效能、程式語言和可擴充套件性,」Facebook人工智慧副總裁 Jerome Pesenti 在釋出會開場時表示。「但是,facebook 認為自身在開發深度學習框架道路上只行進了 1%,我們希望 PyTorch 是以使用者為中心的,以社群為主要驅動力。」
PyTorch 1.0 主要新特性
據官方部落格介紹,最新版本的 PyTorch 有了一系列重大更新,例如增加了一個全新的融合前端,它能夠追蹤來自 eager 模式的模型,並融合到圖模式中,從而彌補研究與產品部署直接的差距;增加了一個修訂過的 torch.distributed 庫,能夠讓開發者在 Python 和 C++環境中進行更快的訓練;增加了一個 eager 模式的 C++介面(beta 版)進行關鍵效能研究。
首先是 torch.jit。據現場介紹,JIT 是一組編譯工具,它的目標是彌補研究與產品部署的差距。JIT 包含一種名為 Torch Script 的語言,這種語言是 Python 的自語言。使用 Torch Script 的程式碼可以實現非常大的優化,並且可以序列化以供在後續的 C++API 中使用。
C++前端是連線 PyTorch 後段的純 C++介面,但它同時遵循已建立的 Python 前端 API 和架構。C++前端的目標在於實現高效能、低延遲的 C++應用,因此它提供的介面等價於 Python 前端所採用 torch.nn 和 torch.optim 等。
其實 Python 不一定比 C ++慢,Python 前端呼叫 C ++計算的成本很高(特別是數值型的運算),這些運算將在程式上花費額外的時間。但是,如果你需要在低延遲、高效能或多執行緒的環境下部署產品,例如視訊遊戲等,那麼 Python 前端可能會存在一些問題,而 C ++前端就是來解決這些問題的。
在支援分散式訓練方面,PyTorch1.0 同樣做了一系列更新。例如,增加了一個修訂過的 torch.distributed 庫,能夠讓開發者在 Python 和 C++環境中進行更快的訓練。目前,PyTorch 框架的模型在多 GPU 的條件下可以保持幾乎線性的計算效率提升。
PyTorch 1.0 在分散式訓練方面的更新包括全新的後端設計和高度可擴充套件的效能:
其中包括:
-
全新非同步後端庫:C10D;
-
支援 Python 和 C++;
-
全後向相容後端 Python API;
-
在關鍵工作負載上的頂點效能;
-
資料並行:單節點、多 GPU;
-
資料並行:多節點、多 GPU。
目前研究員和工程師們需要使用多個框架和工具來研究新的深度學習模型並把它們遷移到產品環境中大規模執行,但這些框架或者工具大部分都是不相容的。如此一來,大大拉慢了研究員或者工程師產品化突破性 AI 研究的速度。在最新版本中,Facebook 結合了 PyTorch 框架的靈活性與 Caffe2 的產品化能力,提供了從研究到產品的無縫對接。
對框架的開發者來說,幸運的是,pytorch 的生產環境部分並不是從零開始開發的,Facebook 還有另一個面向業界的框架:caffe2。
PyTorch 生態的深度支援
除了宣佈重要更新內容,Facebook 還介紹了來自 PyTorch 1.0 生態的深度支援,這些支援既包括雲服務又包括英偉達、高通、英特爾這樣的技術提供方。具體介紹如下:
從雲平臺、產品到服務,AWS、谷歌和微軟加深了對 PyTorch 1.0 更穩健的支援。例如,AWS 大規模訓練、部署機器學習模型的全棧管理平臺 Amazon Sagemaker,現在能為 PyTorch 1.0 提供預配置環境,包括自動模型調優這樣的強大能力。
谷歌正宣佈其為 AI 開發者制定的多種軟體和硬體工具將與 PyTorch 1.0 實現整合。谷歌雲平臺的深度學習虛擬機器現在有一個新的 PyTorch 1.0 VM 映象檔案,其預安裝了 NVIDIA 驅動與教程。谷歌同樣為 PyTorch 提供了張量處理單元(TPU),這是一種用於機器學習的定製化專用整合晶片(ASIC)。通過 Google Cloud TPU 團隊和 PyTorch 團隊的合作,目前基於 PyTorch 1.0 的模型能使用這種定製化的硬體了。
Facebook 的和微軟在早期提出了另一個重要的倡議,即開源的神經網路交換格式 ONNX,而現在微軟也進一步致力於在機器學習產品套件中為 PyTorch 提供一流的支援。Azure機器學習服務現在允許開發者將本地訓練的 PyTorch 模型無縫遷移到 Azure cloud 上。對於資料科學實驗,微軟提供了預配置的資料科學虛擬機器(DSVM),該虛擬機器預安裝了 PyTorch。對於希望探索 PyTorch,但又不希望安裝軟體和配置本地環境的開發者,Azure Notebooks 提供了免費的雲 Jupyter Notebooks,開發者可以直接試驗 PyTorch 教程和程式碼。最後,Visual Studio Code 的 AI 擴充套件工具為 Azure ML 和 PyTorch APIs 提供了緊密的整合,它們可以簡化 PyTorch 程式碼的開發與訓練。
此外除了軟體和雲服務提供商,對於 ARM、IBM、Intel、NVIDIA 和高通等技術夥伴,Facebook 還會通過直接優化、kernel 庫的整合、以及優化編譯器和推理執行時等其他工具為 PyTorch 1.0 提供支援。這些額外的支援能確保 PyTorch 可以在資料中心和邊緣裝置的各種硬體上正常執行,且模型也能在這些硬體上實現訓練和推斷的優化。
為未來的 AI 開發者提供學習資源
除了加強 PyTorch 部署 AI 研究的能力,通過教育與課程方式推廣 PyTorch 也是 Facebook 打造深度學習框架的一大利器。
據介紹,目前 PyTorch 已經通過線上視訊和大學課程為眾多的學生提供深度學習框架,很多教育提供方也都採用它作為教學框架。PyTorch 框架的易用性及與 Python 深度整合的特性令它非常容易實現各種深度學習概念,學生可以通過它快速理解和實驗深度模型。
此外,Udacity 正與 Facebook 合作,他們希望讓開發者能免費學習深度學習入門課程,這些課程完全使用 PyTorch 作為框架。Facebook 還將贊助 300 名成功完成該中級課程的學生繼續在 Udacity 中完成深度學習奈米學位專案,該計劃已經修改為在 PyTorch 1.0 上執行。
Fast.ai 同樣使用 PyTorch 框架,並提供免費的深度學習入門、高階和機器學習課程,Fastai 是第一個宣佈基於 PyTorch 1.0 的開源軟體庫。該軟體庫能提供高準確率和快速的深度學習模型,並只需要非常少量的程式碼,這些都令深度學習對於入門者和有經歷的開發者更加友好。
小結
從 2015 年穀歌開源TensorFlow 開始,深度學習框架之爭越來越越激烈,全球多個看重 AI 研究與應用的科技巨頭均在加大這方面的投入。從 2017 年年初發布 以來,PyTorch 可謂是異軍突起,短短時間內 取得了一系列成果 ,成為了其中的明星框架。
Facebook 表示,PyTorch 1.0 是自推出以來最重要的版本,1.0 意味著框架版本已經非常穩定、成熟、有保證了。今天釋出的 preview 版,其中 90% 的功能已經能夠應對業界的考驗。
「1.0 是讓 PyTorch 進入生產環境的第一步,開發者們還會在未來繼續推進它的發展。」Facebook 研究工程師 Soumith Chintala 在釋出會上表示,「PyTorch 1.0 的最終穩定版會在 NIPS2018 大會之前釋出。」
預覽版安裝地址: https://pytorch.org/get-started/locally/
產業 Facebook PyTorch Torch 深度學習框架
相關資料
Artificial Intelligence
在學術研究領域,人工智慧通常指能夠感知周圍環境並採取行動以實現最優的可能結果的智慧體(intelligent agent)
來源: Russell, S., & Norvig, P. (2003). Artificial Intelligence: A Modern Approach.
Neural Network
(人工)神經網路是一種起源於 20 世紀 50 年代的監督式機器學習模型,那時候研究者構想了「感知器(perceptron)」的想法。這一領域的研究者通常被稱為「聯結主義者(Connectionist)」,因為這種模型模擬了人腦的功能。神經網路模型通常是通過反向傳播演算法應用梯度下降訓練的。目前神經網路有兩大主要型別,它們都是前饋神經網路:卷積神經網路(CNN)和迴圈神經網路(RNN),其中 RNN 又包含長短期記憶(LSTM)、門控迴圈單元(GRU)等等。深度學習是一種主要應用於神經網路幫助其取得更好結果的技術。儘管神經網路主要用於監督學習,但也有一些為無監督學習設計的變體,比如自動編碼器和生成對抗網路(GAN)。
來源:機器之心
Machine Learning
機器學習是人工智慧的一個分支,是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓計算機可以自動“學習”的演算法。因為學習演算法中涉及了大量的統計學理論,機器學習與推斷統計學聯絡尤為密切,也被稱為統計學習理論。演算法設計方面,機器學習理論關注可以實現的,行之有效的學習演算法。
來源:Mitchell, T. (1997). Machine Learning. McGraw Hill.
Deep learning
深度學習(deep learning)是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。 深度學習是機器學習中一種基於對資料進行表徵學習的演算法,至今已有數種深度學習框架,如卷積神經網路和深度置信網路和遞迴神經網路等已被應用在計算機視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並獲取了極好的效果。
來源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Intel
英特爾是計算創新領域的全球領先廠商,致力於拓展科技疆界,讓最精彩體驗成為可能。英特爾創始於1968年,已擁有近半個世紀產品創新和引領市場的經驗。英特爾1971年推出了世界上第一個微處理器,後來又促進了計算機和網際網路的革命,改變了整個世界的程序。如今,英特爾正轉型成為一家資料公司,制定了清晰的資料戰略,憑藉雲和資料中心、物聯網、儲存、FPGA以及5G構成的增長良性迴圈,提供獨到價值,驅動日益發展的智慧互聯世界。英特爾專注於技術創新,同時也積極支援中國的自主創新,與產業夥伴攜手推動智慧互聯的發展。基於明確的資料戰略和智慧互聯全棧實力,英特爾瞄準人工智慧、無人駕駛、5G、精準醫療、體育等關鍵領域,與中國深度合作。面向未來,英特爾致力於做中國高價值合作伙伴,在新科技、新經濟、新消費三個方面,著力驅動產業協同創新,為實體經濟增值,促進消費升級。
涉及領域
Tensor
張量是一個可用來表示在一些向量、標量和其他張量之間的線性關係的多線性函式,這些線性關係的基本例子有內積、外積、線性對映以及笛卡兒積。其座標在 維空間內,有 個分量的一種量,其中每個分量都是座標的函式,而在座標變換時,這些分量也依照某些規則作線性變換。稱為該張量的秩或階(與矩陣的秩和階均無關係)。 在數學裡,張量是一種幾何實體,或者說廣義上的“數量”。張量概念包括標量、向量和線性運算元。張量可以用座標系統來表達,記作標量的陣列,但它是定義為“不依賴於參照系的選擇的”。張量在物理和工程學中很重要。例如在擴散張量成像中,表達器官對於水的在各個方向的微分透性的張量可以用來產生大腦的掃描圖。工程上最重要的例子可能就是應力張量和應變張量了,它們都是二階張量,對於一般線性材料他們之間的關係由一個四階彈性張量來決定。
來源: 維基百科
Accuracy
分類模型的正確預測所佔的比例。在多類別分類中,準確率的定義為:正確的預測數/樣本總數。 在二元分類中,準確率的定義為:(真正例數+真負例數)/樣本總數
來源: sary?hl=zh-cn" target="_blank" rel="nofollow,noindex">Google ML Glossary

機器之心編輯