無縫整合PyTorch 0.4與Caffe2,PyTorch 1.0即將問世

無縫整合PyTorch 0.4與Caffe2,PyTorch 1.0即將問世

來自專欄 機器之心

選自Facebook Research,作者:Bill Jia,機器之心編譯。

在 F8 的第二天中,Facebook 正式宣布 PyTorch1.0 即將與大家見面,這是繼一周前發布 0.4.0 後的一次較大調整。這一次調整重點在於提升 PyTorch 在產品部署方面的應用,包括重構和統一 Caffe2 和 PyTorch 0.4 框架的代碼庫,並將 ONNX 作為模型導出格式。

在 AI 開發中,從研究到產品的過程通常涉及很多的步驟和工具,使得測試新方法、部署以及迭代提高準確率和性能很耗時、複雜。為了幫助加速和優化這個過程,Facebook 發布了 PyTorch 1.0,其開源 AI 框架的最新版本。

PyTorch 1.0 從 Caffe2 和 ONNX 移植了模塊化和產品導向的功能,並將它們和 PyTorch 已有的靈活、專註研究的設計結合,已提供多種 AI 項目的從研究原型製作到產品部署的快速、無縫路徑。利用 PyTorch 1.0,AI 開發者可以通過混合前端快速地實驗和優化性能,該前端可以在命令式執行和聲明式執行之間無縫地轉換。PyTorch 1.0 中的技術已經讓很多 Facebook 的產品和服務變得更強大,包括每天執行 60 億次文本翻譯。

PyTorch 1.0 將在接下來幾個月內發布測試版,其中包含一系列工具、庫、預訓練模型和數據集,以服務於開發中的每個階段,使社區能快速、大規模地創建和部署新的 AI 技術革新。

從研究到產品

PyTorch 強大的前端允許其通過靈活而又高效的編程模型快速實現原型設計與實驗。第一版 PyTorch 在一年前發布,但它的速度、生產力和支持動態計算圖等頂尖 AI 模型等能力,令其快速成為 AI 研究者中的流行和重要開發工具。目前 PyTorch 有超過 110 萬次的下載量,並且在過去的一個月中,它是 arXiv 上引用量第二多的深度學習框架。例如 UC 伯克利計算機科學家使用 PyTorch 的動態計算圖構建他的 CycleGAN 圖像到圖像的轉換研究工作。

CycleGAN 的 PyTorch 實現已經被用於圖像到圖像的轉換

儘管當前版本的 PyTorch 為 AI 研究與開發提供了很大的靈活性,但由於與 Python 緊密結合,在生產上的性能有時是一項挑戰。不論是訓練腳本還是預訓練模型,我們經常需要將研究代碼轉換為 Caffe2 中的計算圖表徵,因而能在生產規模上高效使用。Caffe2 基於計算圖的執行器允許開發者利用頂尖的優化方法,例如計算圖轉換、高效的內存復用以及緊密的硬體介面集成。Caffe2 項目是兩年前提出的,其目的是標準化 AI 模型的生產工具,目前該框架在 Facebook 伺服器以及超過 10 億台手機上運行,橫跨了八代 iphone 和六代安卓 CPU 架構。Caffe2 目前每天在所有小或大模型上提供了 200 萬億次的預測,並優化了產品性能。

從 PyTorch 到 Caffe2 的遷移過程以前是手動的、耗時間的和容易出錯的。為了解決這個問題,Facebook 與主要的硬體和軟體公司合作創建了 ONNX(開放神經網路交換格式),這是一種用於表示深度學習模型的開放格式。通過 ONNX,開發者能在不同的框架間共享模型,例如我們可以導出由 PyTorch 構建的模型,並將它們導入到 Caffe2。在 Facebook 中,這令我們能在大規模伺服器和移動端上快速實現 AI 的研究、訓練和推斷。

Facebook 已經用這些工具(PyTorch、Caffe2 和 ONNX)來構建和部署 Translate,這一工具能大規模運行並支持翻譯 Facebook 中最常用的 48 種語言。在 VR 中,這些工具對於將基於 Oculus 的新研究部署到生產過程中至關重要。

然而,雖然結合這三種不同的工具是非常高效的,但仍然有非常多複雜且耗時的手動過程。因此它並不允許我們將 AI 研究創新無縫轉換為產品。

在一個框架里統一研究和產能

PyTorch 1.0 融合了動態執行和圖執行模式,為研究提供了靈活性,為產品提供了優化性能。具體來說,與其讓開發者完全重寫代碼來進行優化或從 Python 遷移模型,PyTorch 1.0 提供了一個混合前端,使我們能在原型製作的動態執行模式和產品的圖執行模式之間無縫地共享代碼主體。

此外,ONNX 也被原生地編入了 PyTorch 1.0 作為模型導出格式,使來自 PyTorch 1.0 的模型可以和其它 AI 框架進行互操作。ONNX 還提供了整合介面以加速運行時或硬體特定的庫。這給了開發者完全的自由度來混合、匹配最好的 AI 框架和工具,而不需要執行資源密集的自定義工程。Facebook 承諾在 ONNX 中支持新的特性和功能,它將繼續作為強大的開放格式和 PyTorch 1.0 中的重要開發工具。

構建端到端深度學習系統

除了 PyTorch 1.0,Facebook 還開源了他們如今大規模使用的多個 AI 工具。其中包括 Translate(一個 PyTorch 語言庫):用於快速、靈活的神經機器翻譯;以及下一代 ELF:AI 推理應用的綜合平台。開發者還可以充分利用 Glow:這是一個機器學習編譯器,可以在不同的硬體平台上加速框架的性能;以及 Tensor Comprehensions:可以從高級數學運算高效地自動生成 GPU 代碼的工具。他們還開源了其他庫,例如 Detectron:支持目標檢測研究,可以輸出邊框和目標實例分割。在 facebook.ai/developers 可以找到完整的列表。

在接下來的幾個月里,Facebook 將重構和統一 Caffe2 和 PyTorch 0.4 框架的代碼庫,以進行組件去重複和共享抽象。其結果是我們將得到一個統一的框架,它可以支持高效的圖模式執行、移動部署、廣泛的供應商整合等。正如其它開放的 AI 倡議如 ONNX,他們還將聯合其他公司和社區為更多開發者提供這些加速研究以提高產能。作為開端,微軟計劃在他們的 Azure 雲和開發者產品(包括 Azure Machine Learning 服務和 Data Science Virtual Machines)中支持 PyTorch 1.0;並且 AWS 目前也支持 PyTorch 的最新版本,為 P3 GPU 實例做了優化,並計劃在發布他們的雲產品(包括 Deep Learning AMI)之後的短期內支持 PyTorch 1.0。這僅僅是個開始,以後我們將可以創建和共享更好的 AI 編程模型、介面和自動優化。在如今的 Facebook,AI 是一項基礎技術,使現有的產品更優並能處理全新的經驗。通過論文、代碼和模型開源這些工作,Facebook 將和所有 AI 研究者和從業者一起工作,來使當前最佳技術更快,並將它們遷移到新的用途上。

原文鏈接:code.facebook.com/posts


推薦閱讀:

Machine Learning(一):基於 TensorFlow 實現寵物血統智能識別
深度神經網路學習筆記
乾脆面君,你給我站住!你已經被TensorFlow盯上了
tensorflow讀取數據-tfrecord格式
理解tf.train.slice_input_producer()和tf.train.batch()

TAG:PyTorch | TensorFlow | 人工智慧 |