中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Submarine:在Apache Hadoop中運行深度學(xué)習(xí)框架

2019-01-10    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

介紹

Hadoop 是用于大型企業(yè)數(shù)據(jù)集的分布式處理的最流行的開源框架,它在本地和云端環(huán)境中都有很多重要用途。

深度學(xué)習(xí)對于語音識別,圖像分類,AI 聊天機器人,機器翻譯等領(lǐng)域的企業(yè)任務(wù)非常有用,僅舉幾例。 為了訓(xùn)練深度學(xué)習(xí) / 機器學(xué)習(xí)模型,可以利用 TensorFlow / MXNet / Pytorch / Caffe / XGBoost 等框架。 有時需要將這些框架進行組合使用以用于解決不同的問題。

為了使分布式深度學(xué)習(xí) / 機器學(xué)習(xí)應(yīng)用程序易于啟動,管理和監(jiān)控,Hadoop 社區(qū)啟動了 Submarine 項目以及其他改進,例如一流的 GPU 支持,Docker 容器支持,容器 DNS 支持,調(diào)度改進等。

這些改進使得在 Apache Hadoop YARN 上運行的分布式深度學(xué)習(xí) / 機器學(xué)習(xí)應(yīng)用程序就像在本地運行一樣簡單,這可以讓機器學(xué)習(xí)工程師專注于算法,而不是擔(dān)心底層基礎(chǔ)架構(gòu)。 通過升級到最新的 Hadoop,用戶現(xiàn)在可以在同一群集上運行其他 ETL / streaming 作業(yè)來運行深度學(xué)習(xí)工作負(fù)載。 這樣可以輕松訪問同一群集上的數(shù)據(jù),從而實現(xiàn)更好的資源利用率。

 

 

典型的深度學(xué)習(xí)工作流程:數(shù)據(jù)從各個終端(或其他來源)匯聚到數(shù)據(jù)湖中。 數(shù)據(jù)科學(xué)家可以使用筆記本進行數(shù)據(jù)探索,創(chuàng)建 pipelines 來進行特征提取 / 分割訓(xùn)練 / 測試數(shù)據(jù)集。 并開展深度學(xué)習(xí)和訓(xùn)練工作。 這些過程可以重復(fù)進行。 因此,在同一個集群上運行深度學(xué)習(xí)作業(yè)可以顯著提高數(shù)據(jù) / 計算資源共享的效率。

讓我們仔細看看 Submarine 項目(它是 Apache Hadoop 項目的一部分),請看下如何在 Hadoop 上運行這些深度學(xué)習(xí)工作。

為什么叫 Submarine 這個名字?

因為潛艇是唯一可以將人類帶到更深處的裝置設(shè)備。B-)

 

 

圖片由 NOAA 辦公室提供海洋勘探與研究,墨西哥灣 2018 年。

SUBMARINE 概覽

Submarine 項目有兩個部分:Submarine 計算引擎和一套集成 Submarine 的生態(tài)系統(tǒng)軟件和工具。

Submarine 計算引擎 通過命令行向 YARN 提交定制的深度學(xué)習(xí)應(yīng)用程序(如 Tensorflow,Pytorch 等)。 這些應(yīng)用程序與 YARN 上的其他應(yīng)用程序并行運行,例如 Apache Spark,Hadoop Map / Reduce 等。

最重要的是我們的有一套集成 Submarine 的生態(tài)系統(tǒng)軟件和工具,目前包括:

Submarine-Zeppelin integration: 允許數(shù)據(jù)科學(xué)家在 Zeppelin 的 notebook 中編寫算法和調(diào)參進行可視化輸出,并直接從 notebook 提交和管理機器學(xué)習(xí)的訓(xùn)練工作。

Submarine-Azkaban integration: 允許數(shù)據(jù)科學(xué)家從 Zeppelin 的 notebook 中直接向 Azkaban 提交一組具有依賴關(guān)系的任務(wù),組成工作流進行周期性調(diào)度。

Submarine-installer: 在您的服務(wù)器環(huán)境中安裝 Submarine 和 YARN,輕松解決 Docker 、Parallel network 和 nvidia 驅(qū)動的安裝部署難題,以便您更輕松地嘗試強大的工具集。

 

 

圖表說明了 Submarine 的整體構(gòu)成,底部顯示了 Submarine 計算引擎,它只是 YARN 的一個應(yīng)用程序。 在計算引擎之上,它集成到其他生態(tài)系統(tǒng),如筆記本電腦(Zeppelin / Jupyter)和 Azkaban。

SUBMARINE 能夠做什么?

通過使用 Submarine 計算引擎,用戶只需提交一個簡單的 CLI 命令即可運行單 / 分布式深度學(xué)習(xí)訓(xùn)練工作,并從 YARN UI 中獲取完整的運行情況。 所有其他復(fù)雜性,如運行分布式等,都會由 YARN 負(fù)責(zé)。 我們來看幾個例子:

就像 HELLO WORLD 一樣輕松啟動分布式深度學(xué)習(xí)訓(xùn)練

以下命令啟動深度學(xué)習(xí)訓(xùn)練工作讀取 HDFS 上 的 cifar10 數(shù)據(jù)。 這項工作是使用用戶指定的 Docker 鏡像,與 YARN 上運行的其他作業(yè)共享計算資源(如 CPU / GPU / 內(nèi)存)。

yarn jar hadoop-yarn-applications-submarine-<version>.jar job run \
–name tf-job-001 –docker_image <your docker image> \
–input_path hdfs://default/dataset/cifar-10-data \
–checkpoint_path hdfs://default/tmp/cifar-10-jobdir \
–num_workers 2 \
–worker_resources memory=8G,vcores=2,gpu=2 \
–worker_launch_cmd “cmd for worker …” \
–num_ps 2 \
–ps_resources memory=4G,vcores=2 \
–ps_launch_cmd “cmd for ps”

通過 TENSORBOARD 訪問您所有的訓(xùn)練歷史任務(wù)

以下命令啟動深度學(xué)習(xí)訓(xùn)練工作讀取 HDFS 上的 cifar10 數(shù)據(jù)。

yarn jar hadoop-yarn-applications-submarine-<version>.jar job run \
–name tensorboard-service-001 –docker_image <your docker image> \
–tensorboard

在 YARN UI 上,用戶只需單擊即可訪問 tensorboard:

 

image

 

 

 

在同一 Tensorboard 上查看訓(xùn)練狀態(tài)和歷史記錄。

云端數(shù)據(jù)科學(xué)家 NOTEBOOK

想在 GPU 機器上用筆記本編寫算法嗎? 使用 Submarine,您可以從 YARN 資源池獲取云端 notebook。

通過運行以下命令,您可以獲得一個 notebook,其中包括 8GB 內(nèi)存,2 個 vcores 和 4 個來自 YARN 的 GPU。

yarn jar hadoop-yarn-applications-submarine-<version>.jar job run \
–name zeppelin-note—book-001 –docker_image <your docker image> \
–num_workers 1 \
–worker_resources memory=8G,vcores=2,gpu=4 \
–worker_launch_cmd “/zeppelin/bin/zeppelin.sh” \
–quicklink Zeppelin_Notebook=http://master-0:8080

然后在 YARN UI 上,您只需單擊一下即可訪問筆記本。

 

 

SUBMARINE 生態(tài)

Hadoop Submarine 項目的目標(biāo)是提供深度學(xué)習(xí)場景中的數(shù)據(jù)(數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)清理),算法(交互式,可視化編程和調(diào)優(yōu)),資源調(diào)度,算法模型發(fā)布和作業(yè)調(diào)度的全流程服務(wù)支持。

通過與 Zeppelin 結(jié)合,很明顯可以解決數(shù)據(jù)和算法問題。 Hadoop Submarine 還將解決 Azkaban 的作業(yè)調(diào)度問題。 三件套工具集:Zeppelin + Hadoop Submarine + Azkaban 為您提供一個零軟件成本的、開放所有源碼的隨時可用的深度學(xué)習(xí)開發(fā)平臺。

SUBMARINE 集成 ZEPPELIN

Zeppelin 是一款基于網(wǎng)絡(luò)的筆記本電腦,支持交互式數(shù)據(jù)分析。 您可以使用 SQL,Scala,Python 等來制作數(shù)據(jù)驅(qū)動的交互式協(xié)作文檔。

在完成機器學(xué)習(xí)之前,您可以使用 Zeppelin 中的 20 多種解釋器(例如 Spark,Hive,Cassandra,Elasticsearch,Kylin,HBase 等)在 Hadoop 中的數(shù)據(jù)中收集數(shù)據(jù),清理數(shù)據(jù),特征提取等。 模特訓(xùn)練,完成數(shù)據(jù)預(yù)處理過程。

我們提供 Submarine 解釋器,以支持機器學(xué)習(xí)工程師從 Zeppelin 筆記本中進行算法開發(fā),并直接向 YARN 提交訓(xùn)練任務(wù)并從 Zeppelin 中獲得結(jié)果。

使用 ZEPPELIN SUBMARINE 解釋器

你可以在 zeppelin 中創(chuàng)建 submarine 解釋器。

在 notebook 的第一行種輸入 %submarine.python REPL(Read-Eval-Print Loop,簡稱 REPL)名稱,你就可以開始編寫 tensorflow 的 python 算法,你可以在一個 Notebook 中至上而下分段落的編寫一個或多個算法模塊,分塊編寫算法結(jié)合可視化輸出將會幫助你更容易驗證代碼的正確性。

 

 

 

 

 

 

The zeppelin submarine 解釋器會自動將分塊編寫的算法模塊進行合并提交到 submarine 計算引擎中執(zhí)行。

通過點擊 Notebook 中的 YARN LOG 超鏈接,你將會打開 YARN 的管理頁面查看執(zhí)行的任務(wù)。

 

 

在 YARN 管理頁面中,您可以打開自己的任務(wù)鏈接,查看任務(wù)的 docker 容器使用情況以及所有執(zhí)行日志。

 

 

有了這個強大的工具,數(shù)據(jù)科學(xué)家不需要了解 YARN 的復(fù)雜性或如何使用 Submarine 計算引擎。 提交 Submarine 訓(xùn)練工作與在筆記本中運行 Python 腳本完全相同。 最重要的是,用戶無需更改其已有算法程序即可轉(zhuǎn)換為 Submarine 作業(yè)運行。

SUBMARINE 集成 AZKABAN

Azkaban 是一種易于使用的工作流程安排服務(wù),通過 Azkaban 安排 Zeppelin 編寫的 Hadoop Submarine Notebook 來安排指定 Notebook 設(shè)置某些段落之間的工作流程。

您可以在 Zeppelin 中使用 Azkaban 的作業(yè)文件格式,編寫具有執(zhí)行依賴性的多個筆記本執(zhí)行任務(wù)。

 

 

Azkaban 能夠調(diào)度這些通過 zeppelin 編輯好的具有依賴關(guān)系的 notebook。

 

 

 

 

一旦執(zhí)行了帶有 Azkaban 腳本的 notebook,它將被編譯為 Azkaban 支持的工作流并提交給 Azkaban 以執(zhí)行。

HADOOP SUBMARINE 安裝程序

由于分布式深度學(xué)習(xí)框架需要在多個 Docker 容器中運行,并且需要能夠協(xié)調(diào)容器中運行的各種服務(wù),因此需要為分布式機器學(xué)習(xí)完成模型訓(xùn)練和模型發(fā)布服務(wù)。 這其中將涉及到多個系統(tǒng)工程問題,如 DNS,Docker,GPU,網(wǎng)絡(luò),顯卡驅(qū)動,操作系統(tǒng)內(nèi)核修改等,正確部署這些運行環(huán)境是一件非常困難和耗時的事情。

我們?yōu)槟峁┝?submarine installer ,用于運行時環(huán)境的安裝, submarine installer 是一個完全由 Shell 腳本編寫,提供了簡單易用的菜單化操作方式,您只需要在一臺可以聯(lián)網(wǎng)的服務(wù)器上運行,就可以輕松便捷的安裝好運行環(huán)境。

 

 

安裝過程中你如果遇見問題,還可以通過我們提供的 安裝手冊 進行解決。

項目狀態(tài)

Alpha 版本的解決方案已經(jīng)合并到 Haodop 主干分支。 3.2.0 版本的一部分仍處于活動開發(fā) / 測試階段。Umbrella JIRA: YARN-8135.

Submarine 能夠運行在 Apache Hadoop 3.1+.x release 版本上,實際上你只需要安裝 Apache Hadoop 3.1 的 YARN 就可以使用完整的 Submarine 的功能和服務(wù),經(jīng)過我們的實際使用, Apache Hadoop 3.1 的 YARN 可以完全無誤的支持 Hadoop 2.7 + 以上的 HDFS 系統(tǒng)。

案例 – 網(wǎng)易

網(wǎng)易杭研大數(shù)據(jù)團隊是 Submarine 項目的主要貢獻者之一,主要希望通過 Submarine 來解決機器學(xué)習(xí)開發(fā)和運維過程中遇到的以下問題:

現(xiàn)有計算集群的狀態(tài):

♦ 網(wǎng)易通過互聯(lián)網(wǎng)提供在線游戲 / 電商 / 音樂 / 新聞等服務(wù)。

♦ YARN 集群中運行有 ~ 4k 服務(wù)器節(jié)點

♦ 每天 100k 計算任務(wù)

單獨部署的 Kubernetes 集群(配備 GPU)用于機器學(xué)習(xí)工作負(fù)載

♦ 每天 1000+ 計算學(xué)習(xí)任務(wù)

♦ 所有的 HDFS 數(shù)據(jù)都是通過 Spark、Hive、impala 等計算引擎進行處理

存在的問題:

♦ 用戶體驗不佳

沒有集成的操作平臺,全部通過手動編寫算法,提交作業(yè)和檢查運行結(jié)果,效率低,容易出錯。

♦ 利用率低

無法重用現(xiàn)有的 YARN 群集資源。

無法集成現(xiàn)有的大數(shù)據(jù)處理系統(tǒng)(例如:spark,hive 等)

♦ 維護成本高(需要管理分離的集群)

需要同時運維 Hadoop 和 Kubernetes 兩套操作環(huán)境,增加維護成本和學(xué)習(xí)成本。

網(wǎng)易內(nèi)部 Submarine 部署情況

♦ 積極與 Submarine 社區(qū)合作開發(fā),已經(jīng)驗證 20 個 GPU 節(jié)點集群上的 Submarine 的可靠性。

♦ 計劃將來將所有深度學(xué)習(xí)工作轉(zhuǎn)移到 Submarine 上

其他信息

♦ Submarine 設(shè)計文檔 Google doc: , umbrella JIRA for computation engine: YARN-8135

♦ Submarine 配套的生態(tài)項目: Github link.

♦ Submarine slides 在 Strata Data Conf 2018 大會上的演講.

歡迎大家參與到 Submarine 項目中來!

關(guān)于作者

Wangda Tan @ Hortonworks, Engineering Manager of YARN team @ Hortonworks. Apache Hadoop PMC member and committer, working on Hadoop since 2011. Major working field: scheduler / deep learning on YARN / GPUs on YARN, etc.

Xun Liu @ Netease, has been working on Hadoop development for 5 years. Currently in the Netease Hangzhou Research Institute is responsible for the machine learning development team.

Sunil Govindan, Staff Software Engineer @Hortonworks. Contributing to Apache Hadoop project since 2013 in various roles as Hadoop Contributor, Hadoop Committer and a member Project Management Committee (PMC). Majorly working on YARN Scheduling improvements / Multiple Resource types support in YARN etc.

Quan Zhou @ Netease, Senior Big Data Engineer @NetEase, Focusing on Hadoop, yarn, and hive, worked at Cisco since 2013 and joined in NetEase in 2015

Zhankun Tang. Staff Software Engineer @Hortonworks. He’s interested in big data, cloud computing, and operating system. Now focus on contributing new features to Hadoop as well as customer engagement. Prior to Hortonworks, he works for Intel.

致謝

Thanks for inputs and contributions from Vinod Vavilapalli, Saumitra Buragohain, Yanbo Liang, Zian Chen, Weiwei Yang, Jeff Zhang ,Zhe Zhang (Linkedin), Jonathan Hung (Linkedin), Keiqiu Hu (Linkedin), Anthony Hsu.
 

作者: Wangda Tan & Sunil Govindan & Zhankun Tang (這篇博文由網(wǎng)易杭研的 劉勛 和 周全 協(xié)助編寫).

原文地址:https://hortonworks.com/blog/submarine-running-deep-learning-workloads-apache-hadoop/

標(biāo)簽: dns Google 大數(shù)據(jù) 大數(shù)據(jù)處理 代碼 電商 服務(wù)器 互聯(lián)網(wǎng) 腳本 數(shù)據(jù)分析 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:用Python玩轉(zhuǎn)時序數(shù)據(jù)

下一篇:Yann LeCun、吳恩達等的2019年AI趨勢預(yù)測