重磅2.0 Alpha版,TensorFlow新定位:端到端開源機器學習平台
剛剛,谷歌在 Tensorflow Developer Summit 2019 大會上發布 TensorFlow 2.0 Alpha 版。雖然在此之前關於 TensorFlow2.0 的眾多更新已經放出,但作為當前最為流行的深度學習框架,2.0 Alpha 版的正式發布依舊引人關注。此外,今日谷歌還開源了新的框架與庫,發布了兩款有趣的開發硬體。還換了 Logo~
自 2015 年開源以來,TensorFlow 得到了越來越多開發者的認可,成為了當前最受歡迎的深度學習框架之一。據現場介紹,目前為止 TensorFlow 已經被下載超過 4100 萬次、提交 5 萬多次代碼更新、1800 多位貢獻者。
與此同時,這 3 年來深度學習框架之爭越來越激烈:Facebook 主推的 PyTorch 成為後起之秀,有力壓 TensorFlow 之勢;2016 年國內科技巨頭百度發布 PaddlePaddle,2018 年底發布的 PaddlePaddle 1.0 版本標誌著該框架走向成熟。
不得不說,迫於 PyTorch 的壓力,TensorFlow 2.0 有了眾多改變,例如 2018 年 9 月份在上海谷歌開發者大會上,機器之心了解到一個重大改變是將會把 Eager Execution 變為 TensorFlow 默認的執行模式。2019 年 1 月份,谷歌上線了 TensorFlow 2.0「開發者預覽版」,讓開發者們可以嘗試使用。
下圖展示了近幾年 TensorFlow 的版本更新。但今天,TensorFlow 已經成熟為一個完全端到端的生態系統,所以今天發布的 TensorFlow 2.0 標誌著一個新時代的開始。
發布 TF 2.0 Alpha 版
TensorFlow 作為下載量最大的深度學習框架,過去收到了大量的反饋。據介紹,TensorFlow 用戶希望能夠有更簡單的 API、減少冗餘、改進文檔與示例。因此,TensorFlow 2.0 在設計上注重以下三點:簡單、強大、可擴展。
在簡單方面,TensorFlow 2.0 提供更簡化的 API、注重 Keras、結合了 Eager Execution。通過擴展到 exaflops 級別,TensorFlow2.0 變得更加強大,在同樣的穩健性與性能下效率會更高。
TensorFlow 在過去的開發中已經構建了非常多的模塊或組件,而 TensorFlow 2.0 則需要對整體工作流組件做極大的優化。下圖展示了 TensorFlow 的高層設計架構,這些組件和特徵將被打包成一個綜合平台,從而支持從訓練到部署的整個機器學習工作流程。
下圖展示了 Tensorflow2.0 的強大 API 組件在整個工作流的適配,其中數據導入與處理可調用 tf.data、模型構建可以用便捷高效的 Keras 與 Estimators、訓練又會有 Eager 模式和 Autograph 新特性。最後保存的模型還能通過不同的模塊部署到雲、移動端和網頁等等。
基於這些整體設計,TF 2.0 也在快速成長。工程總監 Rajat Monga 隨後宣布,TensorFlow 2.0 Alpha 版今天發布,RC 版將於今年第二季度發布。
TensorFlow 2.0 Alpha 版新特性
TensorFlow 2.0 的特性主要體現在三方面,即易用性、簡潔性與靈活性。其中易用性主要體現在使用 tf.keras 作為高級 API,且將 Eager execution 作為默認模式。如下所示在 2.0 中定義加法運算不再返回節點屬性,而是直接返回運算值:
TensorFlow 一直有很多龐大而冗餘的 API 函數,尤其是 contrib 模塊里。但在 TF 2.0 中,開發團隊做了大量工作來移除重複的 API 函數,並重新組織它們。
此外,tf.contrib 將從核心 TensorFlow 存儲庫和構建過程中移除。TensorFlow 的 contrib 模塊已經超出了單個存儲庫可以維護和支持的範圍。較大的項目最好單獨維護,而較小的擴展將逐漸移至核心 TensorFlow 代碼。
儘管 TF 2.0 更關注使用便捷性,但這並不表明會犧牲靈活性。它同樣提供完全的底層 API,同樣能通過 tf.raw_ops 訪問內部 OP。
此外,這些特性聽起來很美好,但 TF 2.0 的向下兼容性同樣十分重要。TF 2.0 將增加兼容性模塊 tf.compat.v1,以及提供升級 1.X 代碼的腳本。在我們使用 pip 安裝 TensorFlow 2.0 時,系統會自動添加 tf_upgrade_v2 腳本,它可將現有的 TensorFlow Python 代碼轉換為 TensorFlow 2.0 代碼。
如下所示在升級代碼時會自動將 1.X 的 API 換為新的 API,如果 TF2.0 沒有對等的 API,那麼還能調用 tf.compat.v1 使用 1.X 的兼容 OP。因為 tensorflow.compat.v1 在 TensorFlow 2.x 的時間線內將長期得到維護,我們用 TensorFlow 1.x 編寫的代碼也能保持功能。
Eager execution
可能 TensorFlow 2.0 最明顯的改變就是將 Eager execution 作為默認優先模式。這表明任何運算在調用後就會立即運行,我們不再需要預先定義靜態圖,再通過「tf.Session.run()」執行圖的各個部分。
a = tf.constant([1, 2])
b = tf.constant([3, 4])
print(a + b)
# returns: tf.Tensor([4 6], shape=(2,), dtype=int32)
此外,Eager execution 還有一個很重要的新特性,即 tf.function 注釋可以將 Python 程序轉換成 TensorFlow 計算圖,所有我們熟悉的 Python 控制流和內置函數等都可以轉化為 TensorFlow 計算圖。
這個過程保留了 TensorFlow1.x 基於靜態計算圖執行的所有優點:性能優化、遠程執行,以及序列化、導出和部署的能力,同時增加了用簡單 Python 表達程序的靈活性和易用性。因此總體而言,Eager execution 將是 2.0 的核心功能,它會使 TensorFlow 更容易學習和應用。
TF 2.0 當然是 Dev Summit 中的重頭戲,但經過一年,很多模塊與功能都走向了成熟,其中就包含 TensorFlow.js。
TensorFlow.js 1.0
2018 年,谷歌發布了 TensorFlow.js,一個在瀏覽器、節點和其他平台中使用 JS 建立、部署機器學習模型的庫。自發布以來,TensorFlow.js 被大量採用,截至目前該庫已被下載 30 萬次,Github 星標數量超過 1 萬,項目貢獻者超過 100 個。
今日,TensorFlow.js 1.0 版本發布,在先前版本的基礎上做了許多改進,也添加了許多新特徵。1.0 版本包含一個面向圖像、文本、語音等常見機器學習任務的現成模型庫。此外,TensorFlow.js 1.0 還添加了運行 JS 的更多平台,例如桌面 app、移動端本地的平台等。在性能上,該版本也有極大的改進,例如相比於去年,在瀏覽器中 MobileNet 的推斷速度快了 8 倍。
TensorFlow.js 1.0 版本項目地址:https://github.com/tensorflow/tfjs/releases
從研究到產品、從伺服器端到移動端,TensorFlow 已經成熟為了一個全面的生態系統。
在 TF 2.0 和 TF.js 之外,現場還介紹了 TensorFlow 新網站,從網頁中我們也可以看到谷歌將 TensorFlow 定位為端到端的開源機器學習平台,它添加了更多文檔、示例和工具。
不過尷尬的是,直播過程中,小編髮現 TensorFlow 新網站 404 了……
TensorFlow 家族新成員
TensorFlow Federated:針對分散式數據
此外,TensorFlow 還發布了開源框架 TensorFlow Federated(TFF),它適用於分散式數據(decentralized data)上執行機器學習和其他計算。TFF 旨在促進聯合學習(Federated Learning,FL)的開放性研究和實驗,聯合學習是一種機器學習方法,可在多個客戶端上訓練共享的全局模型,同時在本地保存訓練數據。例如,FL 曾被用於訓練手機鍵盤的預測模型,同時不將敏感輸入數據載入到伺服器上。
- TensorFlow Federated 鏈接:https://www.tensorflow.org/federated
- TFF 代碼庫鏈接:https://github.com/tensorflow/federated
TensorFlow Federated 讓開發者能夠展示和模擬聯合學習系統。如圖所示,每部手機在本地訓練模型 (A)。它們的更新會匯總到一起 (B),形成一個改進後的共享模型 (C)。
TFF 可使開發者在自己的模型和數據上模擬使用聯邦學習演算法,促進對新演算法的實驗。TFF 提供的構建塊還可用於實現非學習計算。TFF 的介面由兩個層組成:Federated Learning (FL) API 和 Federated Core (FC) API。FC API 支持針對分散式數據集的各種計算的表達。
- Federated Learning (FL) API 鏈接:https://www.tensorflow.org/federated/federated_learning
- Federated Core (FC) API 鏈接:https://www.tensorflow.org/federated/federated_core
TensorFlow Privacy 開源庫
TensorFlow Privacy 是 TensorFlow 今天發布的另一個開源庫,不僅能讓開發者在保護隱私的情況下訓練機器學習模型,也能讓研究者在保護隱私的情況下推進機器學習的前沿研究。
- Github 地址:https://github.com/tensorflow/privacy
現代機器學習越來越多地被應用到新技術和用戶體驗中,很多應用需要基於敏感數據(如個人照片或郵件)來訓練。完美情況下,訓練模型的參數應該編碼一般模式,而不是特定訓練樣本的事實。差分隱私(differential privacy)技術可用於保護隱私數據,當模型基於用戶數據訓練時,差分隱私技術可以提供強數學保證,確保模型不學習或記住任意用戶的數據細節。對於深度學習來說,更要添加額外的保障。
谷歌近年來開展機器學習差分隱私方面的基礎研究,以及開發實用的差分隱私機制。今天,谷歌正式發布 TensorFlow Privacy。它不要求用戶具備隱私及其底層機制方面的專業知識,使用標準 TensorFlow 框架的用戶在使用 TensorFlow Privacy 時也無需對模型架構、訓練步驟做任何更改,只需簡單地修改幾行代碼,並調整與隱私相關的超參數。
Coral 開發板和 USB 加速器
比較有趣的是,今日谷歌還發布兩個全新的硬體產品:Coral 開發板和 USB 加速器。
首先介紹下 Coral。Coral 是一個構建智能設備的平台,它提供完全本地的 AI 工具箱,包括硬體組件、軟體工具,以及幫助你創造、訓練、運行神經網路的模塊。
Coral 的首個硬體組件就是之前谷歌發布的 ASIC——Edge TPU,它能為低功率設備提供極高的機器學習推理性能。例如,它能以高能效方式在 100+ 的 fps 下執行 MobileNet v2 這樣的視覺模型。
Coral 攝像模塊、開發板和 USB 加速器。
作為全新的開發產品,Coral 開發板是個完全集成的系統,它被設計成構建在載板上的系統模塊(SoM)。SoM 把強大的 NXP iMX8M SoC 與谷歌的 Edge TPU 協處理器(包括 Wi-Fi、藍牙、RAM 和 eMMC 存儲)融合在了一起。為了讓計算機視覺應用原型更簡單,谷歌還提供了一個攝像頭連接開發板與 MIPI 介面。
為了把 Edge TPU 加入到已有的設計中,Coral USB 加速器允許通過 USB2.0、3.0 介面輕鬆接入到任何 Linux 系統中,之後谷歌還會添加 PCIe 版本。
價格方面,Coral 開發板售價為 149.99 美元,Coral USB 加速器售價為 74.99 美元。
小結
以上就是一年一度的谷歌 TensorFlow 開發者大會上的全新發布了。總體而言,我們看到了 TensorFlow 在設計上的重大革新。雖然今日沒能看到 TensorFlow 2.0 的正式發布,但這些新特徵是否讓你對它有所期待呢?
最後提一句,小編中意 PyTorch(差點與另一小編打起來)。
來自另一小編的反對
※驍龍855超越麒麟980?手機晶元AI性能最新評測基準出爐
※彩雲天氣:用神經網路「看見」北京的下一場雪
TAG:機器之心 |