谷歌第一次向全世界介紹TPU(Tensor Processing Unit)時,其背后的戰略方向已經很清楚了:通過設計并使用專用的硬件來提高機器學習的速度。使用商品化的GPU來訓練機器學習模型,使用定制的TPU來部署那些經過定制的模型。
新一代谷歌TPU的設計旨在處理這兩項任務:訓練和部署——在同一個芯片上。無論其獨立運行還是與其他TPU向外擴展構成一個名為“TPU pod”的小型集群時,新一代TPU的速度也更快。
但是,使機器學習更快速并不是這種設計的唯一好處。TPU,尤其是這種新形式,構成了另一項內容,即谷歌構建端對端機器學習流程,涵蓋從數據輸入到部署訓練模型的所有內容。
機器學習:一條流程貫穿其中
目前,機器學習的最大障礙之一是,為數據輸入、規范化、模型訓練、模型和部署提供一個完整的流程是非常困難的。這些碎片化的流程仍然高度分散,不協調。像百度這樣的公司已經暗示過想要建立一個簡單的、統一的、無需包裝的的解決方案,但是到目前為止,這只是一個概念。
這種解決方案最有可能出現在云計算中。隨著時間的推移,越來越多的機器學習數據(以及其他相關的東西)將會默認被保存在云上。而且硬件也需要產生一個可操作的結果。給人們一個端對端的、在云上的機器學習工作流,默認情況下只有幾個按鈕的話,人們會很樂意在上面構建機器學習應用的。
這樣的方式已經快要實現了,谷歌的愿景是每一個階段都能夠以盡可能快的速度在云中執行,以盡可能快的速度接近數據。通過TPU,谷歌還試圖提供多階段的定制硬件加速,可以按需擴展。
新的TPU旨在以多種方式促進流程加速,一種加速來自于將多個TPU組合起來的能力,另一種方式是能夠在同一塊硅片上訓練和部署模型。對于后一種情況,隨著新數據的出現,對模型進行增量再培訓會變得更加容易,因為數據不需要移動太多。
這種優化——在數據上運行以便加快操作速度——與其他機器學習性能的改進是一致的,比如一些推薦的Linux內核補丁和用于機器學習數據訪問的通用API。
你是否愿意將自己捆綁在Tensor Flow?
谷歌的計劃可能會有一個缺點:只有當你使用正確的機器學習框架時,TPU所提供的性能提升才會產生作用,也就是谷歌自己的Tensor Flow。
這并不是說Tensor Flow是一個糟糕的框架,事實上,它是相當不錯的。但它只是眾多框架中的一個,而每個框架適合不同的需求和用例。因此,TPU只支持Tensor Flow的限制意味著如果你想從谷歌的機器學習云中獲得最大的性能,你就必須使用它,無論它是否合適。其他的框架對于特定的工作來說可能更方便,但它可能不會很快的對預測進行訓練和服務,因為它只能在GPU上運行。
這并沒有排除谷歌引入其他硬件的可能——如客戶可重新編程的FPGA,會使不直接由谷歌發起的框架同樣具有優勢。
但對于大多數人來說,擁有一個可管理的、基于云的“一站式”機器學習工作流程所帶來的便利,遠遠超過TPU所帶來的一些不便之處。所以,Tensor Flow的優勢仍然是顯而易見的。