0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Hadoop上運(yùn)行這些深度學(xué)習(xí)工作

電子工程師 ? 來源:lq ? 2019-01-15 16:29 ? 次閱讀

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

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

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

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

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

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

為什么叫Submarine 這個(gè)名字?

因?yàn)闈撏俏ㄒ豢梢詫⑷祟悗У礁钐幍难b置設(shè)備。B-)

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

SUBMARINE 概覽

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

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

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

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

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

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

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

SUBMARINE 能夠做什么?

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

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

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

這項(xiàng)工作是使用用戶指定的 Docker 鏡像,與YARN 上運(yùn)行的其他作業(yè)共享計(jì)算資源(如CPU / GPU /內(nèi)存)。

yarn jar hadoop-yarn-applications-submarine-.jar job run -name tf-job-001–docker_image -input_path hdfs://default/dataset/cifar-10-data -checkpoint_path hdfs://default/tmp/cifar-10-jobdir -num_workers2-worker_resources memory=8G,vcores=2,gpu=2-worker_launch_cmd “cmdforworker …” -num_ps2-ps_resources memory=4G,vcores=2-ps_launch_cmd “cmdforps”

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

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

yarn jar hadoop-yarn-applications-submarine-.jar job run –name tensorboard-service-001 –docker_image–tensorboard

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

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

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

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

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

yarn jar hadoop-yarn-applications-submarine-.jar job run –name zeppelin-note—book-001–docker_image –num_workers1–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 項(xiàng)目的目標(biāo)是提供深度學(xué)習(xí)場(chǎng)景中的數(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 為你提供一個(gè)零軟件成本的、開放所有源碼的隨時(shí)可用的深度學(xué)習(xí)開發(fā)平臺(tái)。

SUBMARINE 集成 ZEPPELIN

zeppelin 是一個(gè)基于 notebook 交互式的數(shù)據(jù)分析系統(tǒng)。你可以使用 SQL,Scala,Python 等來制作數(shù)據(jù)驅(qū)動(dòng)的交互式協(xié)作文檔。

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

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

使用 ZEPPELIN SUBMARINE 解釋器

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

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

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

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

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

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

SUBMARINE 集成 AZKABAN

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

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

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

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

HADOOP SUBMARINE 安裝程序

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

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

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

項(xiàng)目狀態(tài)

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

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

案例 – 網(wǎng)易

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

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

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

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

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

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

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

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

存在的問題:

用戶體驗(yàn)不佳

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

利用率低

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

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

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

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器翻譯
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    14837
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24538
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120593

原文標(biāo)題:{Submarine} 在 Apache Hadoop 中運(yùn)行深度學(xué)習(xí)框架

文章出處:【微信號(hào):BigDataDigest,微信公眾號(hào):大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    在這篇文章中,我們將學(xué)習(xí)何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè),它比目前流行的canny邊緣檢測(cè)器更精確。
    的頭像 發(fā)表于 05-19 09:52 ?1925次閱讀
    如<b class='flag-5'>何在</b>OpenCV中使用基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的邊緣檢測(cè)?

    從零開始學(xué)習(xí)hadoophadoop快速入門

    倉庫三、Mapreduce學(xué)習(xí)1. Mapreduce四個(gè)階段介紹2. Job、Task介紹3. 默認(rèn)工作機(jī)制4. 創(chuàng)建MR應(yīng)用開發(fā),獲取年度的最高氣溫5. 在Windows運(yùn)行MR
    發(fā)表于 03-13 15:21

    hadoop工作流程

    Hadoop主要是分布式計(jì)算和存儲(chǔ)的框架,其工作過程主要依賴于HDFS分布式存儲(chǔ)系統(tǒng)和Mapreduce分布式計(jì)算框架,以下是其工作過程:階段 1用戶/應(yīng)用程序可以通過指定以下項(xiàng)目來向Hado
    發(fā)表于 05-11 16:02

    Nanopi深度學(xué)習(xí)之路(1)深度學(xué)習(xí)框架分析

    學(xué)習(xí),也就是現(xiàn)在最流行的深度學(xué)習(xí)領(lǐng)域,關(guān)注論壇的朋友應(yīng)該看到了,開發(fā)板試用活動(dòng)中有【NanoPi K1 Plus試用】的申請(qǐng),介紹中NanopiK1plus的高大優(yōu)點(diǎn)之一就是“可
    發(fā)表于 06-04 22:32

    學(xué)習(xí)hadoop需要什么基礎(chǔ)

    發(fā)現(xiàn)真正的問題所在。接觸過hadoop的人都知道,單獨(dú)搭建hadoo里每個(gè)組建都需要運(yùn)行環(huán)境、修改配置文件、測(cè)試等過程。如果僅僅是安裝一下運(yùn)行環(huán)境就行了,那你就大錯(cuò)特錯(cuò)了,幾乎每個(gè)組件都是坑,
    發(fā)表于 09-13 13:37

    Hadoop基礎(chǔ)入門之發(fā)行版本的選擇

    等待后,等到的結(jié)果可能是安裝失敗······Hadoop運(yùn)行環(huán)境的搭建就是初學(xué)者要解決的一個(gè)大問題,運(yùn)行環(huán)境搭建不成功,也就無從著手學(xué)習(xí)了。各種發(fā)行版本的
    發(fā)表于 11-28 13:25

    hadoop和spark的區(qū)別

    學(xué)習(xí)hadoop已經(jīng)有很長(zhǎng)一段時(shí)間了,好像是二三月份的時(shí)候朋友給了一個(gè)國(guó)產(chǎn)Hadoop發(fā)行版下載地址,因?yàn)檫€是在學(xué)習(xí)階段就下載了一個(gè)三節(jié)點(diǎn)的學(xué)習(xí)
    發(fā)表于 11-30 15:51

    大數(shù)據(jù)hadoop入門之hadoop家族產(chǎn)品詳解

    )。Flume設(shè)計(jì)的目的是便捷地從日志文件系統(tǒng)直接把數(shù)據(jù)導(dǎo)入到Hadoop數(shù)據(jù)集合(HDFS)中。以上這些數(shù)據(jù)轉(zhuǎn)移工具都極大地方便了使用的人,提高了工作效率,把精力專注在業(yè)務(wù)分析。
    發(fā)表于 12-26 15:02

    hadoop最新發(fā)行穩(wěn)定版:DKHadoop版本選擇詳解

    Hadoop對(duì)于從事互聯(lián)網(wǎng)工作的朋友來說已經(jīng)非常熟悉了,相信在我們身邊有很多人正在轉(zhuǎn)行從事hadoop開發(fā)的工作,理所當(dāng)然也會(huì)有很多hadoop
    發(fā)表于 12-28 16:08

    深度學(xué)習(xí)模型是如何創(chuàng)建的?

    到準(zhǔn)備模型,然后再在邊緣的嵌入式系統(tǒng)運(yùn)行。訓(xùn)練深度學(xué)習(xí)模型是過程的工作量和時(shí)間密集型部分,其中通過提供需要時(shí)間和
    發(fā)表于 10-27 06:34

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    ) 來解決更復(fù)雜的問題,深度神經(jīng)網(wǎng)絡(luò)是一種將這些問題多層連接起來的更深層網(wǎng)絡(luò)。這稱為深度學(xué)習(xí)。目前,深度
    發(fā)表于 02-17 16:56

    何在嵌入式設(shè)備運(yùn)行高性能Java

    何在嵌入式設(shè)備運(yùn)行高性能Java
    發(fā)表于 03-28 09:43 ?16次下載

    關(guān)于C程序源代碼是如何在硬件運(yùn)行的?

    C程序源代碼是如何在硬件運(yùn)行的?
    的頭像 發(fā)表于 02-05 12:37 ?2726次閱讀

    何在xWR1xxx芯片運(yùn)行mmw demo

    何在xWR1xxx芯片運(yùn)行mmw demo
    發(fā)表于 11-01 08:27 ?0次下載
    如<b class='flag-5'>何在</b>xWR1xxx芯片<b class='flag-5'>上</b><b class='flag-5'>運(yùn)行</b>mmw demo

    何在深度學(xué)習(xí)結(jié)構(gòu)中使用紋理特征

    篇文章中,我們將討論紋理分析在圖像分類中的重要性,以及如何在深度學(xué)習(xí)中使用紋理分析。我們還將討論一些常用的紋理提取技術(shù),這些技術(shù)用于預(yù)先訓(xùn)練的模型,以更有效地解決分類任
    的頭像 發(fā)表于 10-10 09:15 ?888次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>結(jié)構(gòu)中使用紋理特征