LinkedIn開源TonY 原生支持TensorFlow
LinkedIn開源TonY項目,讓用戶可在單節點或是大型Hadoop集群上,基於YARN構建TensorFlow應用的解決方案,TonY其運行方式就像是在Hadoop中的MapReduce,執行Pig和Hive腳本的方式類似,提供TensorFlow任務第一層級的支持。 TonY由三個主要組件組成,分別是客戶端、ApplicationMaster以及TaskExecutor,主要提供四大特色GPU調度、精度資源請求、TensorBoard支持以及容錯。
LinkedIn平台會員接近6億人,隨著深度學習技術的發展,LinkedIn的人工智慧工程師,努力在眾多像是摘要或是回復等功能中應用人工智慧,而其中有許多使用案例,皆使用Google開發的深度學習框架TensorFlow構建。一開始LinkedIn內部TensorFlow用戶都只在小型和非託管的裸機上執行應用,但隨著發展,他們逐漸意識到必須要讓TensorFlow連接並使用Hadoop大數據平台上的運算以及存儲資源。 LinkedIn的Hadoop集群擁有數百PB的數據,很適合適於開發深度學習應用。
雖然TensorFlow支持分散式訓練,但要編排TensorFlow必非一件簡單的事,LinkedIn調查了市面上現存的解決方案,但終究沒能符合需求。有一個Apache Spark運算引擎TensorFlow的開源解決方案,能夠在框架上執行一些LinkedIn內部深度學習應用程序,但其缺乏GPU調度和異構容器調度是最後不被採用的致命傷。而另一個TensorFlowOnYARN獨立函數庫則較接近LinkedIn的需求,但是其容錯以及可用性較差,且該項目已經停止維護更新。
基於這些原因,LinkedIn只好開始動手開發自家基於Hadoop YARN的TensorFlow解決方案TonY,以便可以完全控制Hadoop集群資源,TonY直接在YARN上運行,並以輕量相依執行,因此除了可以在YARN中使用堆棧較低級的部分,也能使用TensorFlow中堆棧高端的部分。
LinkedIn提到,TonY運行TensorFlow的方法,類似在Hadoop中MapReduce引擎執行Pig與Hive腳本,或是在Spark中以API執行Scala程序代碼,TonY通過處理資源溝通或是容器環境設置等任務,支持TensorFlow的工作。 TonY主要有3個組件,客戶端、ApplicationMaster和TaskExecutor。用戶向客戶端提交TensorFlow模型訓練程序代碼、參數以及Python虛擬環境,並由客戶端設置ApplicationMaster將其交付給YARN集群,ApplicationMaster會根據用戶的資源要求,與YARN的資源管理器進行資源協商,當ApplicationMaster收到確定的資源分配,便會在分配的節點上創建TaskExecutors,由TaskExecutors啟動用戶的訓練程序代碼並等待工作完成。
TonY除了可以完成基本在Hadoop上執行分散式TensorFlow的工作外,也實例了用來支持大規模訓練的功能。 TonY支持GPU調度,能夠利用Hadoop的API向集群請求GPU資源。另外,還支持高精度的資源請求,由於TonY能請求不同的實體作為單獨的組件,因此用戶可以針對每種實體類型請求不同的資源,也就是說,用戶可以良好的控制應用程序使用的資源,同時也有助於集群管理員避免浪費硬體資源。
TonY現在可以將應用程序關注的URL重定向TensorBoard上,讓用戶方便通過TensorBoard理解、調校和優化TensorFlow應用程序。而TonY重要的特色之一便是容錯,可以讓深度學習訓練更可靠。即便使用大量的機器,TensorFlow訓練仍可能需要數小時甚至數天,但長時間運行的TensorFlow任務比短期的任務,更容易受到暫時性錯誤或搶佔的問題影響。 TensorFlow擁有容錯API,可以將檢查點存儲成HDFS,還能從先前保存的檢查點恢復繼續訓練。 TonY則通過提供彈性分散式基礎架構,來從節點故障中恢復,因此當Worker錯誤、或是ApplicationMaster失去回應等情況,TonY將會重新啟動應用程序,並恢復到之前的檢查點。
現在LinkedIn在GitHub上開源他們在Hadoop和TensorFlow上的努力,讓其他用戶也能方便的構建分散式機器學習應用。
※剛獲得的NASA實習機會就這樣被自己整沒了!
※美、英等國政府將推動法規強制要求各公司提供加密數據的訪問途徑
TAG:十輪網 |