XLearning - 深度学习调度平台
XLearning - 深度學(xué)習(xí)調(diào)度平臺(tái)
軟件簡介
XLearning **** 是奇虎 360 開源的一款支持多種機(jī)器學(xué)習(xí)、深度學(xué)習(xí)框架調(diào)度系統(tǒng)。基于 Hadoop Yarn 完成了對(duì)TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等常用框架的集成,同時(shí)具備良好的擴(kuò)展性和兼容性。
架構(gòu)設(shè)計(jì)
XLearning 系統(tǒng)包括三種組件:
? Client :XLearning 客戶端,負(fù)責(zé)啟動(dòng)作業(yè)及獲取作業(yè)執(zhí)行狀態(tài);
? ApplicationMaster(AM) :負(fù)責(zé)輸入數(shù)據(jù)分片、啟動(dòng)及管理 Container、執(zhí)行日志保存等;
? Container :作業(yè)的實(shí)際執(zhí)行者,負(fù)責(zé)啟動(dòng) Worker 或 PS(Parameter Server)進(jìn)程,監(jiān)控并向 AM 匯報(bào)進(jìn)程狀態(tài),上傳作業(yè)的輸出等。對(duì)于 TensorFlow 類型作業(yè),還負(fù)責(zé)啟動(dòng) TensorBoard 服務(wù)。
功能特性
1 支持多種深度學(xué)習(xí)框架
支持 TensorFlow、MXNet 分布式和單機(jī)模式,支持所有的單機(jī)模式的深度學(xué)習(xí)框架,如 Caffe、Theano、PyTorch等。對(duì)于同一個(gè)深度學(xué)習(xí)框架支持多版本和自定義版本。
2 基于 HDFS 的統(tǒng)一數(shù)據(jù)管理
訓(xùn)練數(shù)據(jù)和模型結(jié)果統(tǒng)一采用 HDFS 進(jìn)行存儲(chǔ),用戶可通過 --input-strategy 或 xlearning.input.strategy,指定輸入數(shù)據(jù)所采用的讀取方式。目前,XLearning 支持如下三種 HDFS 輸入數(shù)據(jù)讀取方式:
? Download : AM 根據(jù)用戶在提交腳本中所指定的輸入數(shù)據(jù)參數(shù),遍歷對(duì)應(yīng) HDFS 路徑下所有文件,以文件為單位將輸入數(shù)據(jù)平均分配給不同 Worker 。在 Worker 中的執(zhí)行程序?qū)?yīng)進(jìn)程啟動(dòng)之前,Worker 會(huì)根據(jù)對(duì)應(yīng)的文件分配信息將需要讀取的 HDFS 文件下載到本地指定路徑;
? Placeholder : 與 Download 模式不同,Worker 不會(huì)直接下載 HDFS 文件到本地指定路徑,而是將所分配的 HDFS 文件列表通過環(huán)境變量 INPUT_FILE_LIST 傳給 Worker 中的執(zhí)行程序?qū)?yīng)進(jìn)程。執(zhí)行程序從環(huán)境變量 os.environ[“INPUT_FILE_LIST”] 中獲取需要處理的文件列表,直接對(duì) HDFS 文件進(jìn)行讀寫等操作。該模式要求深度學(xué)習(xí)框架具備讀取 HDFS 文件的功能,或借助第三方模塊庫如 pydoop 等。
? InputFormat : XLearning 集成有 MapReduce 中的 InputFormat 功能。在 AM 中,根據(jù) “split size” 對(duì)所提交腳本中所指定的輸入數(shù)據(jù)進(jìn)行分片,并均勻的分配給不同 Worker 。在 Worker 中,根據(jù)所分配到的分片信息,以用戶指定的 InputFormat 類讀取數(shù)據(jù)分片,并通過管道將數(shù)據(jù)傳遞給 Worker 中的執(zhí)行程序進(jìn)程。
同輸入數(shù)據(jù)讀取類似,用戶可通過–output- strategy或xlearning.output.strategy指定輸出結(jié)果的保存方式。XLearning 支持如下兩種結(jié)果輸出保存模式:
? Upload : 執(zhí)行程序結(jié)束后,Worker 根據(jù)提交腳本中輸出數(shù)據(jù)參數(shù),將本地輸出路徑保存文件上傳至對(duì)應(yīng) HDFS 路徑。為方便用戶在訓(xùn)練過程中隨時(shí)將本地輸出上傳至 HDFS,XLearning 系統(tǒng)在作業(yè)執(zhí)行 Web 界面提供對(duì)輸出模型的當(dāng)前狀態(tài)主動(dòng)保存的功能,詳情請(qǐng)見“可視化界面”說明部分;
? OutputFormat : XLearning 集成有 MapReduce 中的 OutputFormat 功能。在訓(xùn)練過程中, Worker 根據(jù)指定的 OutputFormat 類,將結(jié)果輸出至 HDFS 。
3 可視化界面
作業(yè)運(yùn)行界面大致分為三部分:
? All Containers :顯示當(dāng)前作業(yè)所含 Container 列表及各 Container 對(duì)應(yīng)信息,如 Contianer ID、所在機(jī)器(Container Host)、所屬類型(Container Role)、當(dāng)前執(zhí)行狀態(tài)(Container Status)、開始時(shí)間(Start Time)、結(jié)束時(shí)間(Finish Time)、執(zhí)行進(jìn)度(Reporter Progress)。其中,點(diǎn)擊 Container ID 超鏈接可查看該 Container 運(yùn)行的詳細(xì)日志;
? View TensorBoard :當(dāng)作業(yè)類型為 TensorFlow 時(shí),可點(diǎn)擊該鏈接直接跳轉(zhuǎn)到 TensorBoard 頁面;
? Save Model :當(dāng)作業(yè)提交腳本中“–output”參數(shù)不為空時(shí),用戶可通過Save Model按鈕,在作業(yè)執(zhí)行過程中,將本地輸出當(dāng)前模型訓(xùn)練結(jié)果上傳至 HDFS 。上傳成功后,顯示目前已上傳的模型列表。
如下圖所示:
4 原生框架代碼的兼容性
TensorFlow 分布式模式支持 “ClusterSpec” 自動(dòng)分配構(gòu)建,單機(jī)模式和其它深度學(xué)習(xí)框架代碼不用做任何修改即可遷移到 XLearning上。
總結(jié)
以上是生活随笔為你收集整理的XLearning - 深度学习调度平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Jittor实现Conditiona
- 下一篇: X-Deep Learning功能模块