去年雅虎結合了大數據和機器學習領域的兩大明星,將內存數據處理框架Spark與深度學習框架Caffe集成。在Spark中編寫的應用程序將使用Caffe的訓練功能,或者使用經過訓練的模型來進行Spark本地機器學習無法實現的預測。
今年,雅虎又發了一波大招,最新的Yahoo開源項目TensorFlowOnSpark(TFoS)(Github地址:https://github.com/yahoo/TensorFlowOnSpark)再次融合了深度學習和大數據框架,據說能夠更有效地大規模運行,并且幾乎沒有改變現有的Spark應用程序。
在一篇博客文章中,雅虎的Big ML工程師團隊描述了為什么要實現深層思維和大數據的混合,這是為了讓TensorFlow更易分布式部署在現有集群上。Databricks的TensorFrames,它同時使用了GPU加速和SparkNet項目,正好與Spark在同一個伯克利實驗室創建的。雅虎說:“雖然這些方法是正確的,但在檢查完代碼后,發現無法使TensorFlow進程直接進行通信,無法實現異步分布式學習 ,我們將不得不花費大量精力來遷移現有的TensorFlow程序。TFoS就是為了應對這類項目中的不足。
TFoS被設計為在現有的Spark和Hadoop集群上運行,并使用現有的Spark庫,如SparkSQL或Spark的MLlib機器學習庫。雅虎聲稱現有的TensorFlow程序不需要大量修改就可以使用TFoS。通常,這種改變少于10行Python代碼,TensorFlow的并行實例可以直接相互通信,而無需通過Spark本身。數據可以從TensorFlow的本地設備中獲取,以便從HDFS或通過Spark讀取。
當使用遠程直接內存訪問(RDMA)時,集群機器學習框架運行速度更快。原來的TensorFlow項目不支持RDMA作為核心功能,雅虎選擇創建自己的RDMA支持,并將其添加到TensorFlow的C ++層。
即使沒有雅虎的貢獻,TensorFlow也取得了飛躍式的進步。第一個完整的1.0版本的框架也引入了優化,使其可以部署在智能手機級硬件上,IBM選擇TensorFlow作為其自定義機器學習硬件的深度學習系統。
當涉及到大規模運行時,TensorFlow最直接的競爭對手就是MXNet,亞馬遜推出的一款深度學習系統。亞馬遜聲稱MXNet在跨越多節點上更有競爭優勢,所以如果你的問題處理過程需要投入硬件,MxNet訓練模型速度會更快。這將是值得與TensorFlowOnSpark比較的地方——在大集群上的運行情況和工作便利度。