奇虎360正式開源其深度學習調度平臺,支持TensorFlow、MXNet等框架

本文由 【 AI前線】原創,原文連接: t.cn/RYEwR0J


AI 前線導讀:「奇虎 360 今日宣佈開源深度學習調度平臺 XLearning,項目開源地址:git

https://github.com/Qihoo360/XLearning」。


XLearning 由 360 系統部大數據團隊與人工智能研究院聯合開發,基於 Hadoop Yarn 完成了對 TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等經常使用深度學習框架的集成。平臺上線運行近一年時間,經屢次版本迭代更新,爲各學習框架的使用者提供了統1、穩定的做業提交平臺,實現了資源共享,極大的提升了資源利用率,而且具備良好的擴展性和兼容性,在公司搜索、人工智能研究院、商業化、數據中心等業務部門獲得普遍使用。程序員

咱們第一時間採訪了XLearning項目負責人李遠策,瞭解平臺建設背景和設計思想。李遠策,2013 年加入奇虎 360,前後參與公司 Hadoop、Spark 、深度學習等平臺的建設,歷經公司 Hadoop 平臺高速發展及 Spark 平臺從無到大規模實踐及深度學習平臺的落地。曾主持 數據倉庫索引、MPI on Yarn、XLearning 等多個項目。工做中專一於解決平臺中的各類 Bug 及用戶遇到的各種問題,愛好開源,樂於學習和分享。目前主要關注 大數據索引、大數據 + 深度學習等領域。github

AI 前線:請問 XLearning 在 360 公司的研發歷史是什麼樣的?起初是爲了解決什麼問題?目前在 360 公司有哪些應用場景?爲何會在如今選擇開源?算法

李遠策:人工智能技術最近兩年發展迅速,以 Google 開源的 TensorFlow 爲表明的各類深度學習框架層出不窮。爲了能讓人工智能技術更好的在公司落地,咱們大數據基礎機構團隊聯合公司人工智能研究院共同開發了 XLearning 平臺。XLearning 從今年(2017)4 月份正式開始開發,曾經 3 個版本的迭代,目前已經在公司的搜索、人工智能研究院、商業化、大數據中心等業務線普遍使用。深度學習技術平臺化能夠有效的提高 GPU 等硬件資源的利用率,節省硬件投入的成本。另外,可讓算法工程師更方便的使用各種深度學習技術,從繁雜的諸如運行環境運維等工做中解脫出來。XLearning 的設計思路是採用 Hadoop Yarn 調度深度學習框架,是典型的「AI on Hadoop」的實現,同行業的公司都會有相似的需求,因此咱們選擇開源,但願能給你們建設大數據 + 人工智能平臺作個參考。服務器

AI 前線:爲何會考慮在大數據平臺的基礎上集成各類深度學習框架?XLearning 可知足哪些要求,減輕哪些工做量?微信

李遠策:在建設公司人工智能平臺的架構設計上確實有多個方案能夠選擇,咱們主要是從以下幾個方面考慮的:架構

(1)跟現有平臺的融合;公司已有的機器學習做業多數採用 Spark MLLib 和 MPI 框架,都是用過 Hadoop Yarn 進行統一調度,若是將深度學習框架也集成到 Yarn 上同時數據由 HDFS 存儲,則能夠實現平臺的統一。框架

(2)運維複雜度;從新建設一個新的平臺會引入新的運維工做;運維

(3)公司程序員的使用習慣;公司不少開發人員對 Hadoop 生態比較熟悉,直接在 Hadoop 上提交深度學習做業更容易推廣;機器學習

(4)開發工做量;咱們團隊對 Hadoop 生態系統的組件比較熟悉,再次以前曾經實現了「MPI on Yarn」系統。能夠說具有實現「AI on Hadoop」的技術儲備。

XLearning 開源版本兼容社區的 Hadoop,同行公司若是有 Hadoop 平臺則能夠直接使用它來調度深度學習做業。若是尚未 Hadoop 平臺則須要提早部署。深度學習的訓練每每依賴海量的樣本數據,一個可靠的大數據存儲系統是訓練平臺的必備條件,Hadoop 部署簡單、穩定可靠,是大數據平臺的行業標準,推薦使用。

AI 前線:XLearning 功能設計和架構設計要點是什麼?

李遠策:XLearning 的系統架構圖以下:

  • Client:XLearning 客戶端,負責啓動做業及獲取做業執行狀態;

  • ApplicationMaster(AM):負責輸入數據分片、啓動及管理 Container、執行日誌保存等;

  • Container:做業的實際執行者,負責啓動 Worker 或 PS(Parameter Server)進程,監控並向 AM 彙報進程狀態,上傳做業的輸出等。對於 TensorFlow 類型做業,還負責啓動 TensorBoard 服務。

XLearning 雖然架構簡潔,但具備豐富的功能方便用戶進行模型訓練,並依託於 Yarn 提供有做業資源的統一管理。

(1)支持多種深度學習框架

XLearning 支持 TensorFlow、MXNet 分佈式和單機模式,支持全部的單機模式的深度學習框架,如 Caffe、Theano、PyTorch 等。對於同一個深度學習框架支持多版本和自定義版本,知足用戶個性化需求,不受限於集羣機器上各學習框架的安裝版本。

(2)基於 HDFS 的統一數據管理

XLearning 提供多種模式用於數據的輸入、輸出,包括數據的流式讀寫、直接 HDFS 讀寫等,可根據做業處理的數據量與集羣機器硬盤容量,視狀況決定所採用的讀寫方式。

(3)可視化界面

爲方便用戶查看做業信息,XLearning 提供可視化界面用於展現做業執行進度和輸出日誌等內容。做業執行完畢後,亦可查看日誌內容,便於分析訓練過程進展。對於 TensorFlow 類型做業,支持 TensorBoard 服務。做業運行界面大體分爲三部分(以下圖所示):

  • All Containers:顯示當前做業所含 Container 列表及各 Container 對應信息,如 Contianer ID、所在機器(Container Host)、所屬類型(Container Role)、當前執行狀態(Container Status)、開始時間(Start Time)、結束時間(Finish Time)、執行進度(Reporter Progress);

  • View TensorBoard:看成業類型爲 TensorFlow 時,可點擊該連接直接跳轉至 TensorBoard 頁面;

  • Save Model:用戶可在做業執行過程當中,能夠將當前訓練模型的輸出結果上傳至 HDFS,並顯示目前已上傳的模型列表。

(4)原生代碼兼容

XLearning 支持 TensorFlow 分佈式模式的 ClusterSpec 自動分配構建,單機模式和其餘深度學習框架代碼不用作任何修改便可遷移到 XLearning 上,便於用戶快速使用。

(5)Checkpoint 功能

利用深度學習框架自己的 Checkpoint 機制和直接讀寫 HDFS 數據功能,XLearning 方便用戶實現訓練恢復繼續執行。

AI 前線:XLearning 在性能上有哪些優點?平臺設計時考慮到了哪些易用性方面的需求?

李遠策:XLearning 主要負責調度和監控工做,從原理上講訓練性能跟原生的 TensorFlow、Caffe 等框架保持一致。平臺的應用性是推廣的關鍵因素,XLeanring 作了以下考慮:

(1)與原生框架的兼容性,除了剛纔說的性能保持一致外,代碼也保持兼容,能夠有效下降業務做業遷移的成本;

(2)Web 展現;XLearnin 調度的做業主頁上會展現必要的調度信息、做業進度、日誌等,同時還額外提供了隨時保存中間結果的功能,方便工程師根據實際狀況提早終止本身的做業;

(3)集成 TensorBoard;對於 TensorFlow 做業 XLearning 會自動拉起 TensorBoard 服務,相比以前手動啓動會更簡單;

(4)自動構建 TensorFlow 的 ClusterSpec;對於分佈式模式的 TensorFlow 做業,工程師再也不須要手動指定 worker、ps 的 host 信息,僅須要告知 XLearning 須要的 worker 和 ps 節點數便可;

這些在剛纔的結構設計要點環節裏也都有提到。

AI 前線:您們在開發 XLearning 有哪些經驗和心得值得和你們分享的呢?

李遠策:除了剛纔提到的架構選型以外最想分享的經驗就是:全部功能的設計都要以實際需求出發,空想出來的功能每每華而不實。XLearning 設計之初和新版本的規劃過程當中,都會跟公司實際用戶作充分的功能需求討論,明確你們工做的痛點,安排好優先級和 deadline 再作架構設計和開發。

AI 前線:XLearning 的開源版本和公司在使用的版本功能上是否存在差別?

李遠策:坦白講開源的 XLearning 是一個簡化的版本,主要是由於受限於對 Yarn 功能的依賴。公司的 Yarn 版本,是咱們在社區版本上作了很多加強。好比支持 GPU 的資源調度、GPU 通訊親和性的感知、DockerContainer 支持等。依賴於這些特性公司在用的版本多出了 GPU 資源調度支持、做業 Docker 化、臨時 GPU 虛擬機、Container Metrics 可視化圖表展現等功能。這些功能咱們後續會經過提供 Yarn Patch 或者開源自用 Yarn 版原本分享給你們,也歡迎你們隨時跟咱們溝通。

AI 前線:咱們知道您不只負責了 XLearning 深度學習平臺,也是 Spark 早期研究者和佈道者,歷經 360 公司 Hadoop 平臺高速發展及 Spark 平臺從無到大規模實踐和落地,可否結合您的經歷給你們講述下從通用大數據平臺到深度學習平臺的演進歷程?

李遠策:MR、Spark 這些計算框架在大多數互聯網公司都有普遍的使用,能知足大多數的數據處理需求。受限於 Spark MLLib 的性能和擴展性,公司還有很多 MPI 類型的做業跑在專用的調度系統(名爲 Euler)上。爲了實現調度的統一和服務器資源的複用,咱們團隊開發了 Euclid(MPI on Yarn)系統,初步統一了機器學習做業和大數據做業的統一調度。而後到了深度學習階段,咱們最初也走了些彎路。好比咱們最先在 2016 年下半年開發了一款名爲 SparkFlow(TensorFlow on Spark)的系統,能夠把 TensorFlow 集成到 Spark 中,經過 RDD 完成數據的交互。後來 Yahoo 研究院也開源一個「TensorFlowOnSpark」,實現原理基本相似。受限與 Spark 自己的問題,並不適合作 PS 架構,另外與原生 TensorFlow 代碼兼容性也很難作到徹底兼容,在推廣過程當中遇到了不少的問題。從新考慮後咱們開發了「TensorFlow on Yarn」,試行成功後爲了兼容其餘的深度學習框架就演化成了如今的 XLearning。

後續咱們會繼續沿着統一調度的方案前行。目前平臺還有不少問題須要繼續探索,好比咱們正在設計的更高性能的算法庫,但願能無縫替換如今的 Spark MLLib,進一步提高公司 AI 平臺的計算能力。關於這方面的工做但願能有機會跟同行的技術專家多多交流。謝謝你們!

關注咱們的微信號"AI前線",後臺回覆「AI」可得到《AI前線》系列PDF電子書

相關文章
相關標籤/搜索