摘要:與其它可用于的軟件包一樣,新的軟件包亦可利用來加速各類機(jī)器學(xué)習(xí)與深度學(xué)習(xí)應(yīng)用。數(shù)據(jù)科學(xué)家們必須首先構(gòu)建起機(jī)器學(xué)習(xí)模型,確保其適合分布式計(jì)算特性,而后將其映射至深層神經(jīng)網(wǎng)絡(luò)當(dāng)中,最終編寫代碼以為這套新模型提供支持。
今天,我們興奮地宣布在Mesosphere DC/OS服務(wù)目錄當(dāng)中發(fā)布TensorFlow的beta測試版本。只需要一條命令,您現(xiàn)在即可將分布式TensorFlow部署在任意裸機(jī)、虛擬或者公有云基礎(chǔ)設(shè)施當(dāng)中。與其它可用于DC/OS的軟件包一樣,新的TensorFlow軟件包亦可利用GPU來加速各類機(jī)器學(xué)習(xí)與深度學(xué)習(xí)應(yīng)用。
在由深度學(xué)習(xí)技術(shù)掀起的新一輪軍備競賽當(dāng)中,專注于嘗試學(xué)習(xí)的數(shù)據(jù)科學(xué)家已經(jīng)成為人才市場上的新寵。而有效的數(shù)據(jù)科學(xué)基礎(chǔ)設(shè)施將幫助您吸引更多頂尖數(shù)據(jù)科學(xué)家,并獲得由他們傾力構(gòu)建起的工作成果,最終為您的企業(yè)帶來遠(yuǎn)超競爭對手的戰(zhàn)略優(yōu)勢。向DC/OS當(dāng)中引入分布式TensorFlow的作法,也進(jìn)一步鞏固了Mesosphere長久以來作出的支持開發(fā)人員、運(yùn)營人員以及數(shù)據(jù)科學(xué)家群體的承諾。
在今天的文章當(dāng)中,我們將對TensorFlow作出簡要介紹,探討分布式設(shè)置場景下的TensorFlow運(yùn)行挑戰(zhàn),同時(shí)聊聊我們的全新DC/OS TensorFlow軟件包如何解決這些挑戰(zhàn)。在DC/OS之上運(yùn)行分布式TensorFlow——盡管目前尚處于beta測試階段,已經(jīng)足以為如今的市場上提供一套簡單且易行的分布式TensorFlow運(yùn)行體驗(yàn)。
TensorFlow快速介紹
TensorFlow是一套極具人氣的開源庫,由谷歌Brain團(tuán)隊(duì)所打造,專門面向機(jī)器學(xué)習(xí)類場景。事實(shí)上,TensorFlow為2015年GitHub上的頭號fork項(xiàng)目,且在之后的兩年當(dāng)中一直雄踞fork活躍度榜前十位名次。TensorFlow的高人氣主要源自其利用一套基于數(shù)據(jù)流圖形的計(jì)算模型實(shí)現(xiàn)深層神經(jīng)網(wǎng)絡(luò)開發(fā)與訓(xùn)練簡化的強(qiáng)大能力。
在以上示例當(dāng)中,輸入層負(fù)責(zé)尋找局部對比模式,隱藏層1負(fù)責(zé)利用這些對比結(jié)果發(fā)現(xiàn)個(gè)人面部特征,隱藏層2則基于這些面部特征進(jìn)行整體面部識別。資料來源:https://www.edureka.co/blog/what-is-deep-learning。
一般來講,深層神經(jīng)網(wǎng)絡(luò)的生命周期需要經(jīng)歷兩個(gè)不同的階段:訓(xùn)練與推理。在我們的示例當(dāng)中,訓(xùn)練階段需要為神經(jīng)網(wǎng)絡(luò)提供成千上萬圖像,幫助其訓(xùn)練面部識別能力。這一訓(xùn)練過程可能需要數(shù)個(gè)小時(shí)、數(shù)天甚至數(shù)周時(shí)間才能完成,具體取決于數(shù)據(jù)集規(guī)模、模型復(fù)雜度以及硬件性能等各類因素。一旦訓(xùn)練工作完成,該神經(jīng)網(wǎng)絡(luò)即可用于“瞬時(shí)”識別圖像中的面部要素。
下圖所示為訓(xùn)練與推理過程的細(xì)節(jié)判斷:
雖然TensorFlow適用于上述分類網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn),但其強(qiáng)大的能力并不僅限于此。TensorFlow還能夠在對象追蹤(https://github.com/akosiorek/hart)、文本到語音生成(https://github.com/ibab/tensorflow-wavenet)甚至自動(dòng)駕駛車輛(https://github.com/udacity/self-driving-car/)領(lǐng)域有所建樹。
TensorFlow通過提供可直接集成至代碼當(dāng)中的基礎(chǔ)機(jī)器學(xué)習(xí)原語以簡化深層神經(jīng)網(wǎng)絡(luò)的開發(fā)工作。TensorFlow以庫的形式提供此類原語,并將其綁定至多種高人氣語言(例如C/C++、Go、Java以及Python等)當(dāng)中。此外,TensorFlow還能夠自動(dòng)計(jì)算出運(yùn)行代碼的較佳處理單元(CPU、GPU或者TPU等)。
在Python當(dāng)中開發(fā)TensorFlow應(yīng)用程序,且此應(yīng)用將CPU與GPU相結(jié)合以完成運(yùn)行。
感興趣的朋友可以點(diǎn)擊https://www.tensorflow.org/get_started/mnist/mechanics參閱TensorFlow 101教程,從而了解更多與利用TensorFlow構(gòu)建您首套神經(jīng)網(wǎng)絡(luò)相關(guān)的細(xì)節(jié)信息。
單節(jié)點(diǎn)對分布式TensorFlow
深度神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)(即使是在TensorFlow的幫助之下)并非小事。數(shù)據(jù)科學(xué)家們必須首先構(gòu)建起機(jī)器學(xué)習(xí)模型,確保其適合分布式計(jì)算特性,而后將其映射至深層神經(jīng)網(wǎng)絡(luò)當(dāng)中,最終編寫代碼以為這套新模型提供支持。另外,他們還必須決定是否有必要以分布式方式定義并實(shí)現(xiàn)自己的深層神經(jīng)網(wǎng)絡(luò),抑或直接將其設(shè)計(jì)為可在單一工作站之上運(yùn)行。
為單節(jié)點(diǎn)計(jì)算設(shè)計(jì)深層神經(jīng)網(wǎng)絡(luò)在難度上往往遠(yuǎn)低于分布式計(jì)算場景,但前者在訓(xùn)練耗時(shí)方面則處于劣勢。在另一方面,為分布式計(jì)算環(huán)境設(shè)計(jì)深層神經(jīng)網(wǎng)絡(luò)更加復(fù)雜,但卻能夠?qū)⒐ぷ髫?fù)載分發(fā)至多臺設(shè)備之上,從而將訓(xùn)練時(shí)長由原本的數(shù)個(gè)月縮短至數(shù)天甚至是數(shù)小時(shí)。
部署分布式TensorFlow的挑戰(zhàn)所在
各類組織機(jī)構(gòu)在部署分布式TensorFlow應(yīng)用程序時(shí),可通過在DC/OS上運(yùn)行該服務(wù)的方式解決眾多常見的挑戰(zhàn)。
在TensorFlow當(dāng)中運(yùn)行分布式計(jì)算時(shí),要求大家理解不同組件之間的復(fù)雜交互方式;其中Parameter Server負(fù)責(zé)將值交付至Worker處,而后者則負(fù)責(zé)執(zhí)行具體計(jì)算;此外,Master則協(xié)調(diào)并同步以上一切分布式處理工作。
開發(fā)人員與數(shù)據(jù)科學(xué)家們承擔(dān)著設(shè)計(jì)模型并編寫適合的分布式TensorFlow應(yīng)用程序,從而達(dá)成最終目標(biāo)的艱巨任務(wù)——但這還僅僅只是開始。在實(shí)際集群部署工作當(dāng)中,分布式TensorFlow代碼的運(yùn)行與維護(hù)如果缺少DC/OS的幫助,則將成為一項(xiàng)勞動(dòng)密集型任務(wù)。
TensorFlow提供的原語有助于在大型設(shè)備集群之上進(jìn)行工作負(fù)載分發(fā)。
開發(fā)人員的工作是為每套部署體系定義一個(gè)惟一的ClusterSpec,這些部署體系必須為不同的工作節(jié)點(diǎn)與參數(shù)服務(wù)器啟動(dòng)IP地址與端口列表。此后,開發(fā)人員必須手動(dòng)配置各設(shè)備以確保其與ClusterSpec當(dāng)中的定義內(nèi)容保持一致;最終,代碼才能被部署到這些設(shè)備上并開始運(yùn)行。即使是在基于云的動(dòng)態(tài)環(huán)境當(dāng)中,ClusterSpec仍然必須在基礎(chǔ)設(shè)施發(fā)生變化時(shí)進(jìn)行手動(dòng)更新。
然而,傳統(tǒng)的TensorFlow實(shí)現(xiàn)方案會交ClusterSpec嵌入至深度學(xué)習(xí)模型代碼當(dāng)中。如此一來,管理人員必須熟知ClusterSpec的編輯周期并針對每個(gè)工作節(jié)點(diǎn)進(jìn)行重啟以逐一進(jìn)行修改測試,方可實(shí)現(xiàn)操作參數(shù)的配置與微調(diào)。DC/OS則能夠自動(dòng)實(shí)現(xiàn)ClusterSpec更新,幫助數(shù)據(jù)科學(xué)團(tuán)隊(duì)擺脫這種枯燥且極易出錯(cuò)的負(fù)擔(dān)。
除此之外,分布式TensorFlow一旦發(fā)生故障,恢復(fù)工作也相當(dāng)令人頭痛。如果主節(jié)點(diǎn)或者任意參數(shù)服務(wù)器乃至工作節(jié)點(diǎn)因某種原因而無法工作,那么除了人為介入,再無其它辦法令其恢復(fù)正常。DC/OS則能夠自動(dòng)完成這項(xiàng)任務(wù),意味著管理人員不必反復(fù)對每臺設(shè)備進(jìn)行運(yùn)行狀態(tài)檢查,從而確保分布式TensorFlow部署體系的正常工作。
在DC/OS上運(yùn)行分布式TensorFlow的好處
DC/OS上發(fā)布的全新TensorFlow beta測試版本能夠解決以上所有難題。具體來講,其有助于:
簡化分布式TensorFlow的部署:將分布式TensorFlow集群中的全部組件部署在任意基礎(chǔ)設(shè)施之上——包括裸機(jī)、虛擬或者公有云——將變得異常簡單,具體操作類似于將JSON文件傳遞至一條CLI命令。參數(shù)的更新與調(diào)整亦可輕松實(shí)現(xiàn),意味著微調(diào)與優(yōu)化不再令人困擾。
在不同團(tuán)隊(duì)間共享基礎(chǔ)設(shè)施:DC/OS允許多個(gè)團(tuán)隊(duì)共享同一基礎(chǔ)設(shè)施并啟動(dòng)多項(xiàng)不同TensorFlow任務(wù),同時(shí)始終保持資源隔離。一旦TensorFlow任務(wù)完成,相關(guān)容量即被釋放并可供其它團(tuán)隊(duì)使用。
在同一集群之上部署不同TensorFlow版本:與眾多其它DC/OS服務(wù)一樣,您同樣可以在同一集群之上輕松部署同一服務(wù)的多個(gè)實(shí)例,并保證其采用不同的版本。這意味著當(dāng)TensorFlow發(fā)布新版本時(shí),您的一支團(tuán)隊(duì)可以使用其功能與特性,但又不必對其它團(tuán)隊(duì)的代碼作出變更。
動(dòng)態(tài)分配GPU資源:GPU能夠顯著提升深度學(xué)習(xí)模型的執(zhí)行速度,特別是在訓(xùn)練階段。然而,GPU是一種寶貴的資源,因?yàn)楸仨毜玫接行Ю?。由于DC/OS能夠自動(dòng)檢測集群上的所有GPU,所以其將實(shí)現(xiàn)基于GPU的資源調(diào)度,允許TensorFlow基于各項(xiàng)任務(wù)請求全部或者部分GPU資源(類似于請求CPU、內(nèi)存以及磁盤等其它常規(guī)資源)。一旦任務(wù)完成,GPU資源將被釋放并可供其它任務(wù)使用。
專注于模型開發(fā),而非部署:DC/OS 將模型開發(fā)從集群配置工作當(dāng)中剝離出來,從而消除了以手動(dòng)方式將ClusterSpec引入模型代碼的難題。相反,用戶在部署TensorFlow軟件包時(shí)只需要指定其希望模型在運(yùn)行中使用的各工作節(jié)點(diǎn)以及參數(shù)服務(wù)器屬性,而后軟件包自身會在部署時(shí)為此生成一個(gè)獨(dú)特的ClusterSpec。從實(shí)現(xiàn)層面來講,該軟件包會找到一組作為各工作節(jié)點(diǎn)/參數(shù)服務(wù)器運(yùn)行基礎(chǔ)的設(shè)備,使用合適的值填充CLusterSpec,啟動(dòng)各參數(shù)服務(wù)器與工作節(jié)點(diǎn)任務(wù),并傳遞其生成的ClusterSpec。開發(fā)人員只需要編寫出需要填充的代碼,該軟件包即可自行完成剩余任務(wù)。
下圖所示為一條JSON片段,其可用于將來自DC/OS CLI的TensorFlow軟件包部署至一組CPU與GPU工作節(jié)點(diǎn)當(dāng)中。
此命令將使用以上配置啟動(dòng)TensorFlow:
dcos package install beta-tensorflow --options=
該軟件包亦可通過在UI中指定參數(shù)的方式立足DC/OS服務(wù)目錄進(jìn)行部署。
自動(dòng)完成故障恢復(fù):TensorFlow軟件包利用DC/OS SDK編寫而成,并使用了自動(dòng)重啟等內(nèi)置彈性功能,因此能夠順利且高效地實(shí)現(xiàn)任務(wù)自我修復(fù)。
在運(yùn)行時(shí)中安全部署任務(wù)配置參數(shù):DC/OS秘密服務(wù)在運(yùn)行時(shí)會為每個(gè)TensorFlow實(shí)例動(dòng)態(tài)部署憑證與秘密配置選項(xiàng)。操作人員可以輕松添加憑證以訪問秘密信息或者特定配置URL,從而確保其不會暴露在模型代碼當(dāng)中。
原文鏈接:https://mesosphere.com/blog/tensorflow-gpu-support-deep-learning/
歡迎加入本站公開興趣群軟件開發(fā)技術(shù)群
興趣范圍包括:Java,C/C++,Python,PHP,Ruby,shell等各種語言開發(fā)經(jīng)驗(yàn)交流,各種框架使用,外包項(xiàng)目機(jī)會,學(xué)習(xí)、培訓(xùn)、跳槽等交流
QQ群:26931708
Hadoop源代碼研究群
興趣范圍包括:Hadoop源代碼解讀,改進(jìn),優(yōu)化,分布式系統(tǒng)場景定制,與Hadoop有關(guān)的各種開源項(xiàng)目,總之就是玩轉(zhuǎn)Hadoop
QQ群:288410967?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/4250.html
摘要:與其它可用于的軟件包一樣,新的軟件包亦可利用來加速各類機(jī)器學(xué)習(xí)與深度學(xué)習(xí)應(yīng)用。數(shù)據(jù)科學(xué)家們必須首先構(gòu)建起機(jī)器學(xué)習(xí)模型,確保其適合分布式計(jì)算特性,而后將其映射至深層神經(jīng)網(wǎng)絡(luò)當(dāng)中,最終編寫代碼以為這套新模型提供支持。 今天,我們興奮地宣布在Mesosphere DC/OS服務(wù)目錄當(dāng)中發(fā)布TensorFlow的be...
摘要:負(fù)責(zé)承載操作系統(tǒng)的分布式文件系統(tǒng)只需要使用必要的文件,而且事實(shí)上只需要下載并在本地緩存這部分必要數(shù)據(jù)。而第二項(xiàng)原則在于元數(shù)據(jù)即與文件存在相關(guān)的信息,而非文件內(nèi)容被優(yōu)先對待。這套鏡像隨后可進(jìn)行任意分發(fā),并被用于啟動(dòng)該項(xiàng)任務(wù)。 隨著Docker技術(shù)的日漸火熱,一些容器相關(guān)的問題也浮出水面。本文就容器數(shù)量激增后造成的分發(fā)效率低下問題進(jìn)行了探討,并提出了一種新的解決方法。發(fā)現(xiàn)問題,解決問題,正...
摘要:今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享來自社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云肖德時(shí)。第二級調(diào)度由被稱作的組件組成。它們是最小的部署單元,由統(tǒng)一創(chuàng)建調(diào)度管理。 今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享——來自KVM社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云CTO肖德時(shí)。 嘉賓介紹: 肖德時(shí),數(shù)人云CTO 十五年計(jì)算機(jī)行業(yè)從業(yè)經(jīng)驗(yàn),曾為紅帽 Engineering Service ...
摘要:方案二和也運(yùn)行在中。新增刪除節(jié)點(diǎn)變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個(gè)服務(wù)器上。目前我們在每個(gè)節(jié)點(diǎn)上部署了傳統(tǒng)的。在接下來的階段團(tuán)隊(duì)也會對此做進(jìn)一步的探索。 回想起第一次接觸Mesos, 當(dāng)時(shí)有很多困惑: 這到底是用來做啥的?跟YARN比有什么優(yōu)勢?有哪些大公司在使用么?。 然而現(xiàn)在技術(shù)日新月異地發(fā)展, Mesos這個(gè)生態(tài)圈也開始被越來越多的團(tuán)隊(duì)熟悉關(guān)注, 像k8...
摘要:在這一假設(shè)之下,是一個(gè)新奇的觀點(diǎn)編排才是容器生態(tài)的中心,而引擎就我們所知,只是一個(gè)開發(fā)工具。是特有的概念,但容器生態(tài)系統(tǒng)必須采用這個(gè)概念。 showImg(https://segmentfault.com/img/remote/1460000007157260?w=640&h=480); 開源項(xiàng)目 CRI-O ,其前身為 OCID ,官方簡介是 OCI-based implementa...
閱讀 3828·2021-10-08 10:12
閱讀 4324·2021-09-02 15:40
閱讀 933·2021-09-01 11:09
閱讀 1604·2021-08-31 09:38
閱讀 2542·2019-08-30 13:54
閱讀 2248·2019-08-30 12:54
閱讀 1242·2019-08-30 11:18
閱讀 1398·2019-08-29 14:06