融合 Caffe2、ONNX 的新版 PyTorch 發佈在即,能否趕超 TensorFlow?

雷鋒網 於 07/05/2018 發表 收藏文章
雷鋒網 AI 研習社按,上個月,Caffe2 代碼正式併入 PyTorch,就在今天,Facebook AI 系統與平台部(AI Infra and Platform)副總 Bill Jia 發文表示,PyTorch 1.0 發佈在即,全新的版本融合了 Caffe2 和 ONNX 支持模塊化、面向生產的功能,並保留了 PyTorch 現有的靈活、以研究為中心的設計。Caffe2 作者賈揚清也在知乎表示,這篇文章是他對「如何看待 Caffe2 代碼併入 PyTorch」的最新回答。

雷鋒網 AI 研習社將正文編譯整理如下:

縱觀人工智能的發展之路,從研究到生產涉及到多個步驟和工具,為了提高系統的準確性和性能,需要不停測試新方法,不斷進行部署和迭代,這一過程非常費時和複雜。

為了加速和優化這一流程,我們推出 PyTorch 1.0,它是 PyTorch 的最新版本。

PyTorch 1.0 結合了 Caffe2 和 ONNX 模塊化、面向生產的性能,並將這些性能與 PyTorch 現有的靈活、以研究為中心的設計結合在一起,為從研究原型設計到生產部署大量 AI 項目提供快速、無縫的路徑。

有了 PyTorch 1.0,AI 開發者可以通過混合前端在命令式和聲明式執行模式之間無縫轉換,從而快速實驗、優化性能。

PyTorch 1.0 中的技術已經為大量 Facebook 產品和服務賦能,包括每天 60 億次的文本翻譯。

我們將在未來幾個月內推出 PyTorch 1.0 測試版,會發布一系列工具、庫、預訓練模型、每個開發階段的數據集,使得社羣能大規模地快速創建和部署新的 AI 產品。

從研究到生產之路

得益於 PyTorch 命令式前端靈活和高效的編程模型,大家可以更快速地進行原型設計和實驗。

PyTorch 初版在一年多前推出,它的速度、生產力和支持動態圖等前沿 AI 模型的優點,使它成為 AI 研究人員中流行和重要的開發工具。

它的下載量超過 110 萬次,是上個月在 arxiv 上引用次數排名第二的深度學習框架,加州大學伯克利分校的計算機科學家們曾將 PyTorch 的動態圖功能用於他們矚目的 CycleGAN 圖像轉換研究中。


圖: 利用 PyTorch 實現 CycleGAN 圖像轉換

儘管當前版本的 PyTorch 為 AI 研究和開發提供了很大的靈活性,但考慮到它與 Python 的緊密耦合,在大規模生產上想要保持高性能是個挑戰。

我們經常需要將研究代碼——訓練腳本或訓練好的模型——轉換成 Caffe2 中的圖表示,以便大規模生產。Caffe2 基於圖的 executor 為開發人員提供最先進的優化功能,如圖轉換、高效內存重用和緊密的硬件接口集成。

Caffe2 項目於兩年前啟動,旨在規範我們的 AI 生產工具。現在 Facebook 的服務器正在用 Caffe2 運行神經網絡,此外,全球範圍內有超過 10 億部手機(包括第八代 iPhone 和第 6 代 Android CPU)上都有用到 Caffe2。

今天,Caffe2 在所有模型上的預測量每天超過 200 萬億,無論模型大小,都能實現最優的生產性能。

在過去,從 PyTorch 到 Caffe2 之間遷徙,進行傳送和生產,是時間密集型的人工過程,容易出錯。為了解決這個問題,我們與一些硬件和軟件公司合作推出了 ONNX(Open Neural Network Exchange),這是一種表示深度學習模型的開放格式。

有了 ONNX,開發人員可以在不同框架之間共享模型,例如,導出在 PyTorch 中構建的模型,並將它們導入到 Caffe2 中。這使得 Facebook 能在大規模服務器和移動端部署時更流暢地進行 AI 研究、訓練和推理。

我們已經使用了這些工具(PyTorch、Caffe2 和 ONNX)來構建和部署 Translate,Translate 已經在大規模使用——幫助翻譯 Facebook 上 48 種最常用的語言。

另外還有 VR,這些工具已經在 Oculus 的產品上應用,在新研究的部署上起到至關重要的作用,可以使得虛擬化身更加真實。

儘管將這三種工具進行組合很有效,但仍然存在一些極其複雜和耗時的人工步驟,我們仍然不能無縫將新的 AI 研究創新帶到生產中。

集研究和生產於一身的框架

PyTorch 1.0 融合了即時和圖執行模式,支持靈活研究和生產性能優化。更具體地説,PyTorch 1.0 提供了一個混合前端,使大家能夠無縫在即時模式的原型設計和圖執行模式的生產間共享大部分代碼,而不是非得要開發人員重寫整套代碼,以從 Python 中優化或遷移。

此外,ONNX 也與 PyTorch 1.0 進行了融合,大家可以在 PyTorch 1.0 模型與其他 AI 框架間進行互操作。

ONNX 還作為加速運行或特定硬件庫的集成接口,這使得開發人員可以自由混合和匹配最好的 AI 框架和工具,而不需要使用資源密集型的定製工程。

Facebook 致力於讓 ONNX 支持新特徵和功能,ONNX 仍然是一種強大的開放格式,也是運用 PyTorch 1.0 進行開發的重要部分。

構建端到端深度學習系統

除了 PyTorch 1.0,我們還將開源許多我們目前頻繁使用的 AI 工具,包括 Translate——一個 PyTorch 庫——用於快速、靈活的神經機器翻譯,新一代 ELF——一個用於 AI 推理應用的綜合遊戲平台。

開發人員還可以使用類似 Glow(一種機器學習編譯器,可以在不同硬件平台上提升框架性能)的工具,還有 Tensor Comprehensions(從高級數學運算中自動生成高效 GPU 代碼的工具)。

我們也開源了其他庫,比如 Detectron,它用於對象檢測研究,可以輸出邊框和對象實例分割結果。

大家可以訪問 facebook.ai/developers(Facebook AI 開發者網站)查看完整開源名單,可以在 PyTorch 和 Caffe2 博客上了解更多關於 PyTorch 的信息。

接下來幾個月,我們將重構和統一 Caffe2 與 PyTorch 0.4 的代碼庫,刪除重複組件、共享抽象。最終,將產生一個支持高效的圖模式執行,包括性能分析、移動端部署、廣泛集成等的統一框架。

與 ONNX 等其他開放 AI 項目一樣,我們也與其他公司和社羣合作,為更多開發人員提供這種加速研究到生產的能力。

現在,微軟計劃在 Azure 雲和開發者產品(包括 Azure Machine Learning 服務和 Data Science Virtual Machines)上支持 PyTorch 1.0。亞馬遜 Web Services 目前已經支持最新版本的 PyTorch 並在 P3 GPU 實例上進行了優化,他們計劃在 PyTorch 1.0 可用之後儘快在其雲產品(包括 Amazon Machine Image)上提供支持。

這僅僅是個開始,我們希望創建和共享更好的 AI 編程模型、接口和自動優化工具。現今,AI 是 Facebook 的一項基礎性技術,它使現有的產品更好,是構建全新體驗的力量之源。大家可以在論文、代碼和模型上看到我們的工作,我們可以與所有的 AI 研究人員和實踐者一起研究,以更快地推進最先進的技術,並以全新的方式幫助應用這些技術。

via:https://code.facebook.com

雷鋒網(公眾號:雷鋒網) AI 研習社編譯整理。

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知



資料來源:雷鋒網

如果喜歡我們的文章,請即分享到︰

留言

會員
我要評論
請按此登錄後留言。未成為會員? 立即註冊
快捷鍵:←
快捷鍵:→