天天看點

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

項目連結: 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 是以使用者為中心的,以社群為主要驅動力。」

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

PyTorch 1.0 主要新特性

據官方部落格介紹,最新版本的 PyTorch 有了一系列重大更新,例如增加了一個全新的融合前端,它能夠追蹤來自 eager 模式的模型,并融合到圖模式中,進而彌補研究與産品部署直接的差距;增加了一個修訂過的 torch.distributed 庫,能夠讓開發者在 Python 和 C++環境中進行更快的訓練;增加了一個 eager 模式的 C++接口(beta 版)進行關鍵性能研究。

首先是 torch.jit。據現場介紹,JIT 是一組編譯工具,它的目标是彌補研究與産品部署的差距。JIT 包含一種名為 Torch Script 的語言,這種語言是 Python 的自語言。使用 Torch Script 的代碼可以實作非常大的優化,并且可以序列化以供在後續的 C++API 中使用。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

C++前端是連接配接 PyTorch 後段的純 C++接口,但它同時遵循已建立的 Python 前端 API 和架構。C++前端的目标在于實作高性能、低延遲的 C++應用,是以它提供的接口等價于 Python 前端所采用 torch.nn 和 torch.optim 等。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

其實 Python 不一定比 C ++慢,Python 前端調用 C ++計算的成本很高(特别是數值型的運算),這些運算将在程式上花費額外的時間。但是,如果你需要在低延遲、高性能或多線程的環境下部署産品,例如視訊遊戲等,那麼 Python 前端可能會存在一些問題,而 C ++前端就是來解決這些問題的。

在支援分布式訓練方面,PyTorch1.0 同樣做了一系列更新。例如,增加了一個修訂過的 torch.distributed 庫,能夠讓開發者在 Python 和 C++環境中進行更快的訓練。目前,PyTorch 架構的模型在多 GPU 的條件下可以保持幾乎線性的計算效率提升。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?
PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

PyTorch 1.0 在分布式訓練方面的更新包括全新的後端設計和高度可擴充的性能:

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

其中包括:

  • 全新異步後端庫:C10D;
  • 支援 Python 和 C++;
  • 全後向相容後端 Python API;
  • 在關鍵工作負載上的頂點性能;
  • 資料并行:單節點、多 GPU;
  • 資料并行:多節點、多 GPU。

目前研究員和工程師們需要使用多個架構和工具來研究新的深度學習模型并把它們遷移到産品環境中大規模運作,但這些架構或者工具大部分都是不相容的。如此一來,大大拉慢了研究員或者工程師産品化突破性 AI 研究的速度。在最新版本中,Facebook 結合了 PyTorch 架構的靈活性與 Caffe2 的産品化能力,提供了從研究到産品的無縫對接。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

對架構的開發者來說,幸運的是,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 的開源軟體庫。該軟體庫能提供高準确率和快速的深度學習模型,并隻需要非常少量的代碼,這些都令深度學習對于入門者和有經曆的開發者更加友好。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

小結

從 2015 年谷歌開源 TensorFlow 開始,深度學習架構之争越來越越激烈,全球多個看重 AI 研究與應用的科技巨頭均在加大這方面的投入。從

2017 年年初釋出

以來,PyTorch 可謂是異軍突起,短短時間内

取得了一系列成果

,成為了其中的明星架構。

Facebook 表示,PyTorch 1.0 是自推出以來最重要的版本,1.0 意味着架構版本已經非常穩定、成熟、有保證了。今天釋出的 preview 版,其中 90% 的功能已經能夠應對業界的考驗。

「1.0 是讓 PyTorch 進入生産環境的第一步,開發者們還會在未來繼續推進它的發展。」Facebook 研究工程師 Soumith Chintala 在釋出會上表示,「PyTorch 1.0 的最終穩定版會在 NIPS2018 大會之前釋出。」

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?

預覽版安裝位址:

https://pytorch.org/get-started/locally/

機器之心《全球500強上市公司人工智能戰略适應性報告》重磅釋出。17個行業,140家上市公司,縱覽500強落地人工智能的成與敗。

PyTorch1.0預覽版釋出:超越Python性能的C++前端接口?