微博深度學(xué)習(xí)平臺架構(gòu)分析_第1頁
微博深度學(xué)習(xí)平臺架構(gòu)分析_第2頁
微博深度學(xué)習(xí)平臺架構(gòu)分析_第3頁
微博深度學(xué)習(xí)平臺架構(gòu)分析_第4頁
微博深度學(xué)習(xí)平臺架構(gòu)分析_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

微博深度學(xué)習(xí)平臺架構(gòu)分析隨著人工神經(jīng)網(wǎng)絡(luò)算法的成熟、GPU計(jì)算能力的提升,深度學(xué)習(xí)在眾多領(lǐng)域都取得了重大突破。本文介紹了微博引入深度學(xué)習(xí)和搭建深度學(xué)習(xí)平臺的經(jīng)驗(yàn),特別是機(jī)器學(xué)習(xí)工作流、控制中心、深度學(xué)習(xí)模型訓(xùn)練集群、模型在線預(yù)測服務(wù)等核心部分的設(shè)計(jì)、架構(gòu)經(jīng)驗(yàn)。微博深度學(xué)習(xí)平臺極大地提升了深度學(xué)習(xí)開發(fā)效率和業(yè)務(wù)迭代速度,提高了深度學(xué)習(xí)模型效果和業(yè)務(wù)效果。

深度學(xué)習(xí)平臺介紹人工智能和深度學(xué)習(xí)人工智能為機(jī)器賦予人的智能。隨著計(jì)算機(jī)計(jì)算能力越來越強(qiáng),在重復(fù)性勞動和數(shù)學(xué)計(jì)算方面很快超過了人類。然而,一些人類通過直覺可以很快解決的問題,例如自然語言理解、圖像識別、語音識別等,長期以來很難通過計(jì)算機(jī)解決。隨著人工神經(jīng)網(wǎng)絡(luò)算法的成熟、GPU計(jì)算能力的提升,深度學(xué)習(xí)在這些領(lǐng)域也取得了重大的突破,甚至已經(jīng)超越人類。深度學(xué)習(xí)大大拓展了人工智能的領(lǐng)域范圍。深度學(xué)習(xí)框架深度學(xué)習(xí)框架是進(jìn)行深度學(xué)習(xí)的工具。簡單來說,一套深度學(xué)習(xí)框架就是一套積木,各個組件就是某個模型或算法;開發(fā)者通過簡單設(shè)計(jì)和組裝就能獲得自己的一套方案。深度學(xué)習(xí)框架的出現(xiàn)降低了深度學(xué)習(xí)門檻。開發(fā)者不需要編寫復(fù)雜的神經(jīng)網(wǎng)絡(luò)代碼,只需要根據(jù)自己的數(shù)據(jù)集,使用已有模型通過簡單配置訓(xùn)練出參數(shù)。TensorFlow、Caffe和MXNet是三大主流的深度學(xué)習(xí)開源框架:TensorFlow的優(yōu)勢是社區(qū)最活躍,開源算法和模型最豐富;Caffe則是經(jīng)典的圖形領(lǐng)域框架,使用簡單,在科研領(lǐng)域占有重要地位;MXNet在分布式性能上表現(xiàn)優(yōu)異。PaddlePaddle、鯤鵬、Angel則是百度、阿里、騰訊分別推出的分布式計(jì)算框架。2015年底,Google開源了TensorFlow深度學(xué)習(xí)框架,可以讓開發(fā)者方便地組合CNN、RNN等模塊實(shí)現(xiàn)復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。TensorFlow是一個采用數(shù)據(jù)流圖(dataflowgraphs),用于數(shù)值計(jì)算的開源軟件庫。2016年,百度開源了PaddlePaddle(PArallelDistributedDeepLEarning并行分布式深度學(xué)習(xí))深度學(xué)習(xí)框架。PaddlePaddle具有易用,高效,靈活和可伸縮等特點(diǎn),為百度內(nèi)部多項(xiàng)產(chǎn)品提供深度學(xué)習(xí)算法支持。深度學(xué)習(xí)平臺深度學(xué)習(xí)框架主要提供神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn),用于進(jìn)行模型訓(xùn)練。模型訓(xùn)練只是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中的一環(huán),除此之外還有數(shù)據(jù)輸入、數(shù)據(jù)處理、模型預(yù)測、業(yè)務(wù)應(yīng)用等重要環(huán)節(jié)。深度學(xué)習(xí)平臺就是整合深度學(xué)習(xí)各環(huán)節(jié),為開發(fā)者提供一體化服務(wù)的平臺。深度學(xué)習(xí)平臺能夠加快深度學(xué)習(xí)的開發(fā)速度,縮減迭代周期;同時,深度學(xué)習(xí)平臺能夠?qū)⒂?jì)算能力、模型開發(fā)能力共享,提升開發(fā)效率和業(yè)務(wù)效果,也能夠?qū)①Y源合理調(diào)度,提高資源利用率。騰訊深度學(xué)習(xí)平臺DI-X騰訊深度學(xué)習(xí)平臺DI-X于2017年3月發(fā)布。DI-X基于騰訊云的大數(shù)據(jù)存儲與處理能力來提供一站式的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)服務(wù)。DI-X支持TensorFlow、Caffe以及Torch等三大深度學(xué)習(xí)框架,主要基于騰訊云的GPU計(jì)算平臺。DI-X的設(shè)計(jì)理念是打造一個一站式的機(jī)器學(xué)習(xí)平臺,集開發(fā)、調(diào)試、訓(xùn)練、預(yù)測、部署于一體,讓算法科學(xué)家和數(shù)據(jù)科學(xué)家,無須關(guān)注機(jī)器學(xué)習(xí)(尤其是深度學(xué)習(xí))的底層工程繁瑣的細(xì)節(jié)和資源,專注于模型和算法調(diào)優(yōu)。DI-X在騰訊內(nèi)部使用了一年,其主要用于游戲流失率預(yù)測、用戶標(biāo)簽傳播以及廣告點(diǎn)擊行為預(yù)測等。阿里機(jī)器學(xué)習(xí)平臺PAI阿里機(jī)器學(xué)習(xí)平臺PAI1.0于2015年發(fā)布,包括數(shù)據(jù)處理以及基礎(chǔ)的回歸、分類、聚類算法。阿里機(jī)器學(xué)習(xí)平臺PAI2.0于2017年3月發(fā)布,配備了更豐富的算法庫、更大規(guī)模的數(shù)據(jù)訓(xùn)練和全面兼容開源的平臺化產(chǎn)品。深度學(xué)習(xí)是阿里機(jī)器學(xué)習(xí)平臺PAI2.0的重要功能,支持TensorFlow、Caffe、MXNet框架,這些框架與開源接口兼容。在數(shù)據(jù)源方面,PAI2.0支持非結(jié)構(gòu)化、結(jié)構(gòu)化等各種數(shù)據(jù)源;在計(jì)算資源方面,支持CPU、GPU、FPGA等異構(gòu)計(jì)算資源;在工作流方面,支持模型訓(xùn)練和預(yù)測一體化。

PAI已經(jīng)在阿里巴巴內(nèi)部使用了2年?;谠撈脚_,在淘寶搜索中,搜索結(jié)果會基于商品和用戶的特征進(jìn)行排序。百度深度學(xué)習(xí)平臺百度深度學(xué)習(xí)平臺是一個面向海量數(shù)據(jù)的深度學(xué)習(xí)平臺,基于PaddlePaddle和TensorFlow開源計(jì)算框架,支持GPU運(yùn)算,為深度學(xué)習(xí)技術(shù)的研發(fā)和應(yīng)用提供可靠性高、擴(kuò)展靈活的云端托管服務(wù)。通過百度深度學(xué)習(xí)平臺,不僅可以輕松訓(xùn)練神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)情感分析、機(jī)器翻譯、圖像識別,也可以利用百度云的存儲和虛擬化產(chǎn)品直接將模型部署至應(yīng)用環(huán)境。

微博深度學(xué)習(xí)平臺設(shè)計(jì)

微博在FeedCTR、反垃圾、圖片分類、明星識別、視頻推薦、廣告等業(yè)務(wù)上廣泛使用深度學(xué)習(xí)技術(shù),同時廣泛使用TensorFlow、Caffe、Keras、MXNet等深度學(xué)習(xí)框架。為了融合各個深度學(xué)習(xí)框架,有效利用CPU和GPU資源,充分利用大數(shù)據(jù)、分布式存儲、分布式計(jì)算服務(wù),微博設(shè)計(jì)開發(fā)了微博深度學(xué)習(xí)平臺。微博深度學(xué)習(xí)平臺支持如下特性:方便易用:支持?jǐn)?shù)據(jù)輸入、數(shù)據(jù)處理、模型訓(xùn)練、模型預(yù)測等工作流,可以通過簡單配置就能完成復(fù)雜機(jī)器學(xué)習(xí)和深度學(xué)習(xí)任務(wù)。特別是針對深度學(xué)習(xí),僅需選擇框架類型和計(jì)算資源規(guī)模,就能模型訓(xùn)練。靈活擴(kuò)展:支持通用的機(jī)器學(xué)習(xí)算法和模型,以及用戶自定義的算法和模型。多種深度學(xué)習(xí)框架:目前支持TensorFlow、Caffe等多種主流深度學(xué)習(xí)框架,并進(jìn)行了針對性優(yōu)化。異構(gòu)計(jì)算:支持GPU和CPU進(jìn)行模型訓(xùn)練,提高模型訓(xùn)練的效率。資源管理:支持用戶管理、資源共享、作業(yè)調(diào)度、故障恢復(fù)等功能。模型預(yù)測:支持一鍵部署深度學(xué)習(xí)模型在線預(yù)測服務(wù)。

微博深度學(xué)習(xí)平臺架構(gòu)和實(shí)踐

微博深度學(xué)習(xí)平臺是微博機(jī)器學(xué)習(xí)平臺的重要組成部分,除繼承微博機(jī)器學(xué)習(xí)平臺的特性和功能以外,支持TensorFlow、Caffe等多種主流深度學(xué)習(xí)框架,支持GPU等高性能計(jì)算集群。微博深度學(xué)習(xí)平臺架構(gòu)如圖1所示。

圖1微博深度學(xué)習(xí)平臺架構(gòu)下面將以機(jī)器學(xué)習(xí)工作流、控制中心、深度學(xué)習(xí)模型訓(xùn)練集群、模型在線預(yù)測服務(wù)等典型模塊為例,介紹微博深度學(xué)習(xí)平臺的實(shí)踐。機(jī)器學(xué)習(xí)工作流WeiFlow微博深度學(xué)習(xí)和機(jī)器學(xué)習(xí)工作流中,原始數(shù)據(jù)收集、數(shù)據(jù)處理、特征工程、樣本生成、模型評估等流程占據(jù)了大量的時間和精力。為了能夠高效地端到端進(jìn)行深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的開發(fā),我們引入了微博機(jī)器學(xué)習(xí)工作流框架WeiFlow。WeiFlow的設(shè)計(jì)初衷就是將微博機(jī)器學(xué)習(xí)流的開發(fā)簡單化、傻瓜化,讓業(yè)務(wù)開發(fā)人員從紛繁復(fù)雜的數(shù)據(jù)處理、特征工程、模型工程中解脫出來,將寶貴的時間和精力投入到業(yè)務(wù)場景的開發(fā)和優(yōu)化當(dāng)中,徹底解放業(yè)務(wù)人員的生產(chǎn)力,大幅提升開發(fā)效率。WeiFlow的誕生源自于微博機(jī)器學(xué)習(xí)的業(yè)務(wù)需求。在微博的機(jī)器學(xué)習(xí)工作流中(如圖2所示),多種數(shù)據(jù)流經(jīng)過實(shí)時數(shù)據(jù)處理,存儲至特征工程并生成離線的原始樣本。在離線系統(tǒng),對原始樣本進(jìn)行各式各樣的數(shù)據(jù)處理、特征處理、特征映射,從而生成訓(xùn)練樣本;業(yè)務(wù)人員根據(jù)實(shí)際業(yè)務(wù)場景(排序、推薦),選擇不同的算法模型,進(jìn)行模型訓(xùn)練、預(yù)測、測試和評估;待模型迭代滿足要求后,通過自動部署將模型文件和映射規(guī)則部署到線上。線上系統(tǒng)根據(jù)模型文件和映射規(guī)則,從特征工程中拉取相關(guān)特征,根據(jù)映射規(guī)則進(jìn)行預(yù)處理,生成可用于預(yù)測的樣本格式,進(jìn)行線上實(shí)時預(yù)測,最終將預(yù)測結(jié)果(用戶對微博內(nèi)容的興趣程度)輸出,供線上服務(wù)調(diào)用。圖2微博機(jī)器學(xué)習(xí)工作流為了應(yīng)對微博多樣的計(jì)算環(huán)境,WeiFlow采用了雙層的DAG任務(wù)流設(shè)計(jì),如圖3所示。外層的DAG由不同的Node構(gòu)成,每一個Node是一個內(nèi)層的DAG,具備獨(dú)立的執(zhí)行環(huán)境,即上文提及的Spark、TensorFlow、Hive、Storm、Flink等計(jì)算引擎。圖3WeiFlow雙層DAG任務(wù)流設(shè)計(jì)外層DAG設(shè)計(jì)的初衷是利用各個計(jì)算引擎的特長,同時解決各個計(jì)算引擎間的依賴關(guān)系和數(shù)據(jù)傳輸問題。內(nèi)層的DAG,利用引擎的特性與優(yōu)化機(jī)制,實(shí)現(xiàn)不同的抽象作為DAG中計(jì)算模塊之間數(shù)據(jù)交互的載體。在使用方面,業(yè)務(wù)人員根據(jù)事先約定好的規(guī)范和格式,將雙層DAG的計(jì)算邏輯定義在XML配置文件中。依據(jù)用戶在XML指定的依賴關(guān)系和處理模塊,WeiFlow自動生成DAG任務(wù)流圖,并在運(yùn)行時階段調(diào)用處理模塊的實(shí)現(xiàn)來完成用戶指定的任務(wù)流。通過在XML配置文件中將所需計(jì)算模塊按照依賴關(guān)系堆疊,即可以搭積木的方式完成配置化、模塊化的流水線作業(yè)開發(fā)。控制中心WeiCenter控制中心WeiCenter的目標(biāo)就是簡單、方便、易用,讓大家便利地使用微博深度學(xué)習(xí)平臺。下面將介紹控制中心的作業(yè)管理、數(shù)據(jù)管理和調(diào)度管理等部分。作業(yè)管理:我們在進(jìn)行深度學(xué)習(xí)、大規(guī)模機(jī)器學(xué)習(xí)、實(shí)時處理的過程中,由于需要各種不同框架的配合使用共同完成一個任務(wù),比如TensorFlow適合進(jìn)行高性能學(xué)習(xí)、Spark適合大規(guī)模億維特征訓(xùn)練、Storm或者Flink適合實(shí)時特征生成以及實(shí)時模型生成等,將這些結(jié)合到一起才能完成從離線訓(xùn)練到線上實(shí)時預(yù)測。以前這需要開發(fā)者去學(xué)習(xí)各種框架復(fù)雜的底層開發(fā),現(xiàn)在通過控制中心選擇不同的作業(yè)類型,可以方便地生成各種類型的作業(yè)任務(wù)。用戶只需要在可視化UI上進(jìn)行作業(yè)類型選擇、數(shù)據(jù)源選擇、輸出目的地選擇或者使用WeiFlow進(jìn)行編程,就能生成一個高大上的深度學(xué)習(xí)或機(jī)器學(xué)習(xí)作業(yè)。數(shù)據(jù)管理:當(dāng)大數(shù)據(jù)的數(shù)據(jù)量,每天按P級增長,使用人員每天上百人時,數(shù)據(jù)管理就顯得尤為重要。如果模型訓(xùn)練的集群和數(shù)據(jù)所在的集群,不是同一個集群,如何高效地將數(shù)據(jù)同步到模型訓(xùn)練的集群是一個難點(diǎn)。并且在完成模型訓(xùn)練后,能自動根據(jù)訓(xùn)練結(jié)果作出評估,對訓(xùn)練數(shù)據(jù)進(jìn)行刪除。由于使用集群的開發(fā)人員素質(zhì)不齊,你會發(fā)現(xiàn)總是有很多冗余數(shù)據(jù)沒刪除,而且總有無用數(shù)據(jù)生成,這個時候需要一個統(tǒng)一的數(shù)據(jù)管理平臺,去約束大家生成數(shù)據(jù)的同時刪除數(shù)據(jù),去各個平臺上探測長時間無訪問的數(shù)據(jù)并進(jìn)行確認(rèn)清理。調(diào)度管理:作業(yè)有多種分類,按重要程度分:高、中、低;按占用資源量分:占用多、占用一般、占用少;按調(diào)度器分:Yarn、Mesos、Kubernetes等。Spark、Hadoop利用Yarn調(diào)度解決了優(yōu)先級高的作業(yè)和資源占用多作業(yè)之間的矛盾;TensorFlow利用成熟的Kubernetes或Mesos調(diào)度TensorFlow節(jié)點(diǎn)進(jìn)行GPU集群化任務(wù)管理;普通離線作業(yè)和服務(wù)部署利用Mesos進(jìn)行資源調(diào)度。控制中心集成了多種調(diào)度器,利用各種成熟的解決方案,簡化了作業(yè)負(fù)責(zé)調(diào)度這一難題??傊?,控制中心負(fù)責(zé)用戶權(quán)限控制、作業(yè)圖依賴管理、數(shù)據(jù)依賴管理等,調(diào)度服務(wù)負(fù)責(zé)具體的作業(yè)執(zhí)行、資源抽象、資源管理。控制中心和調(diào)度服務(wù)如圖4所示。圖4控制中心和調(diào)度服務(wù)深度學(xué)習(xí)模型訓(xùn)練集群微博深度學(xué)習(xí)訓(xùn)練集群與傳統(tǒng)HPC集群有重大區(qū)別,分別體現(xiàn)在計(jì)算服務(wù)器選型、分布式訓(xùn)練、網(wǎng)絡(luò)設(shè)備、存儲系統(tǒng)、作業(yè)調(diào)度系統(tǒng)。單機(jī)多GPU卡:深度學(xué)習(xí)模型訓(xùn)練大部分情況下單機(jī)運(yùn)算,且?guī)缀跬耆揽縂PU,因此選用能掛載2/4/8塊GPU的服務(wù)器,盡量提高單機(jī)運(yùn)算能力。分布式訓(xùn)練:如果訓(xùn)練時間長或者樣本規(guī)模大,超過單臺服務(wù)器能力時,需要支持分布式訓(xùn)練。以TensorFlow分布式運(yùn)行方式為例進(jìn)行說明,如圖5所示。一個TensorFlow分布式程序?qū)?yīng)一個抽象的集群,集群(cluster)由工作節(jié)點(diǎn)(worker)和參數(shù)服務(wù)器(parameterserver)組成。工作節(jié)點(diǎn)(worker)承擔(dān)矩陣乘、向量加等具體計(jì)算任務(wù),計(jì)算出相應(yīng)參數(shù)(weight和bias),并把參數(shù)匯總到參數(shù)服務(wù)器;參數(shù)服務(wù)器(parameterserver)把從眾多工作節(jié)點(diǎn)收集參數(shù)匯總并計(jì)算,并傳遞給相應(yīng)工作節(jié)點(diǎn),由工作節(jié)點(diǎn)進(jìn)行下一輪計(jì)算,如此循環(huán)往復(fù)。圖5TensorFlow分布式架構(gòu)萬兆以太網(wǎng)絡(luò):參數(shù)更新過程中,通信粒度大,而且允許異步通信,對延時沒有嚴(yán)格要求。因此,訓(xùn)練集群沒有選用HPC集群必備的InfiniBand或Omini-Path低延時網(wǎng)絡(luò)設(shè)備,而是選用普通的以太網(wǎng)設(shè)備。HDFS分布式文件系統(tǒng):TensorFlow分布式工作節(jié)點(diǎn)讀取訓(xùn)練樣本文件時,不同工作節(jié)點(diǎn)讀取的數(shù)據(jù)段不交叉,訓(xùn)練過程中也不會交換樣本數(shù)據(jù)。寫出模型文件也只有某一個工作節(jié)點(diǎn)負(fù)責(zé),不涉及工作節(jié)點(diǎn)間的數(shù)據(jù)交換。因此,深度學(xué)習(xí)訓(xùn)練作業(yè)不要求HPC機(jī)群中常見的并行文件系統(tǒng),只要是一個能被所有工作節(jié)點(diǎn)同時訪問文件系統(tǒng)就可以。實(shí)際上,微博深度學(xué)習(xí)平臺采用HDFS,不但滿足要求,而且方便與其它業(yè)務(wù)共享數(shù)據(jù)。定制的作業(yè)調(diào)度系統(tǒng):TensorFlow分布式參數(shù)服務(wù)器進(jìn)程不會自動結(jié)束,需要手動殺死,而HPC應(yīng)用中的MPI進(jìn)程同時開始同時結(jié)束。設(shè)計(jì)作業(yè)調(diào)度方案時必須考慮這個特點(diǎn),使之能夠在所有工作節(jié)點(diǎn)都運(yùn)行結(jié)束后自動殺死參數(shù)服務(wù)器進(jìn)程。模型在線預(yù)測服務(wù)WeiServing模型在線預(yù)測服務(wù)是深度學(xué)習(xí)平臺的一個重要功能。由于微博業(yè)務(wù)場景需求,模型在線預(yù)測服務(wù)并發(fā)量大,對延時、可用性要求極高??紤]到這些業(yè)務(wù)需求以及服務(wù)本身以后的高擴(kuò)展性,微博分布式模型在線預(yù)測服務(wù)WeiServing的架構(gòu)如圖6所示。圖6WeiServing-微博分布式模型在線預(yù)測服務(wù)架構(gòu)特征處理多樣化:模型在線預(yù)測服務(wù)首先要解決的問題是,將在線的原始特征數(shù)據(jù),映射成模型可以處理的數(shù)據(jù)格式?;诖罅康臉I(yè)務(wù)模型實(shí)踐與調(diào)優(yōu),微博機(jī)器學(xué)習(xí)工作流框架WeiFlow抽象出了一套特征處理函數(shù),來提升開發(fā)效率和業(yè)務(wù)效果。WeiServing與WeiFlow在特征處理方面一脈相承,支持一系列特征處理函數(shù),包括piecewise、pickcat、descartes、combinehash等映射函數(shù),對特征進(jìn)行歸一化、離散化、ID化、組合等特征處理。多模型多版本支持:由于微博業(yè)務(wù)場景多種多樣,不同的業(yè)務(wù)場景對模型與特征有不同的需求,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論