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