PyTorch1.0預覽版發布:超越Python性能的C++前端介面?

PyTorch1.0預覽版發布:超越Python性能的C++前端介面?

來自專欄機器之心82 人贊了文章

機器之心報道。

今年 5 月份,F8 大會的第二天中,Facebook 曾宣布 PyTorch1.0 即將與大家見面,這是繼先前發布 0.4.0 後的一次較大調整。今日,在首屆 PyTorch 開發者大會上,Facebook 宣布了有關該框架生態一系列更新,包括軟體、硬體和教育方面的合作。於此同時,PyTorch 1.0 預覽版也正式發布了。

項目鏈接:github.com/pytorch/pyto

據介紹,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 大會之前發布。」

預覽版安裝地址:pytorch.org/get-started


推薦閱讀:

TAG:Python | PyTorch | 編程語言 |