欧美中文字幕第一页-欧美中文字幕一区-欧美中文字幕一区二区三区-欧美中文字幕在线-欧美中文字幕在线播放-欧美中文字幕在线视频

微博深度學習平臺架構和實踐-36大數據

我是創始人李巖:很抱歉!給自己產品做個廣告,點擊進來看看。  

微博深度學習平臺架構和實踐-36大數據

作者:黃波

隨著人工神經網絡算法的成熟、GPU計算能力的提升,深度學習在眾多領域都取得了重大突破。本文介紹了微博引入深度學習和搭建深度學習平臺的經驗,特別是機器學習工作流、控制中心、深度學習模型訓練集群、模型在線預測服務等核心部分的設計、架構經驗。微博深度學習平臺極大地提升了深度學習開發效率和業務迭代速度,提高了深度學習模型效果和業務效果。

深度學習平臺介紹

人工智能和深度學習

人工智能為機器賦予人的智能。隨著計算機計算能力越來越強,在重復性勞動和數學計算方面很快超過了人類。然而,一些人類通過直覺可以很快解決的問題,例如自然語言理解、圖像識別、語音識別等,長期以來很難通過計算機解決。隨著人工神經網絡算法的成熟、GPU計算能力的提升,深度學習在這些領域也取得了重大的突破,甚至已經超越人類。深度學習大大拓展了人工智能的領域范圍。

深度學習框架

深度學習框架是進行深度學習的工具。簡單來說,一套深度學習框架就是一套積木,各個組件就是某個模型或算法;開發者通過簡單設計和組裝就能獲得自己的一套方案。深度學習框架的出現降低了深度學習門檻。開發者不需要編寫復雜的神經網絡代碼,只需要根據自己的數據集,使用已有模型通過簡單配置訓練出參數。

TensorFlow、Caffe和MXNet是三大主流的深度學習開源框架:TensorFlow的優勢是社區最活躍,開源算法和模型最豐富;Caffe則是經典的圖形領域框架,使用簡單,在科研領域占有重要地位;MXNet在分布式性能上表現優異。PaddlePaddle、鯤鵬、Angel則是百度、阿里、騰訊分別推出的分布式計算框架。

2015年底,Google開源了TensorFlow深度學習框架,可以讓開發者方便地組合CNN、RNN等模塊實現復雜的神經網絡模型。TensorFlow是一個采用數據流圖(data flow graphs),用于數值計算的開源軟件庫。

2016年,百度開源了PaddlePaddle(PArallel Distributed Deep LEarning 并行分布式深度學習)深度學習框架。PaddlePaddle具有易用,高效,靈活和可伸縮等特點,為百度內部多項產品提供深度學習算法支持。

深度學習平臺

深度學習框架主要提供神經網絡模型實現,用于進行模型訓練。模型訓練只是機器學習和深度學習中的一環,除此之外還有數據輸入、數據處理、模型預測、業務應用等重要環節。深度學習平臺就是整合深度學習各環節,為開發者提供一體化服務的平臺。深度學習平臺能夠加快深度學習的開發速度,縮減迭代周期;同時,深度學習平臺能夠將計算能力、模型開發能力共享,提升開發效率和業務效果,也能夠將資源合理調度,提高資源利用率。

騰訊深度學習平臺DI-X

騰訊深度學習平臺DI-X于2017年3月發布。DI-X基于騰訊云的大數據存儲與處理能力來提供一站式的機器學習和深度學習服務。DI-X支持TensorFlow、Caffe以及Torch等三大深度學習框架,主要基于騰訊云的GPU計算平臺。DI-X的設計理念是打造一個一站式的機器學習平臺,集開發、調試、訓練、預測、部署于一體, 讓算法科學家和數據科學家,無須關注機器學習(尤其是深度學習)的底層工程繁瑣的細節和資源,專注于模型和算法調優。

DI-X在騰訊內部使用了一年,其主要用于游戲流失率預測、用戶標簽傳播以及廣告點擊行為預測等。

阿里機器學習平臺PAI

阿里機器學習平臺PAI1.0于2015年發布,包括數據處理以及基礎的回歸、分類、聚類算法。阿里機器學習平臺PAI2.0于2017年3月發布,配備了更豐富的算法庫、更大規模的數據訓練和全面兼容開源的平臺化產品。深度學習是阿里機器學習平臺PAI2.0的重要功能,支持TensorFlow、Caffe、MXNet框架,這些框架與開源接口兼容。在數據源方面,PAI2.0支持非結構化、結構化等各種數據源;在計算資源方面,支持CPU、GPU、FPGA等異構計算資源;在工作流方面,支持模型訓練和預測一體化。
PAI已經在阿里巴巴內部使用了2年。基于該平臺,在淘寶搜索中,搜索結果會基于商品和用戶的特征進行排序。

百度深度學習平臺

百度深度學習平臺是一個面向海量數據的深度學習平臺,基于PaddlePaddle和TensorFlow開源計算框架,支持GPU運算,為深度學習技術的研發和應用提供可靠性高、擴展靈活的云端托管服務。通過百度深度學習平臺,不僅可以輕松訓練神經網絡,實現情感分析、機器翻譯、圖像識別,也可以利用百度云的存儲和虛擬化產品直接將模型部署至應用環境。

微博深度學習平臺設計

微博在Feed CTR、反垃圾、圖片分類、明星識別、視頻推薦、廣告等業務上廣泛使用深度學習技術,同時廣泛使用TensorFlow、Caffe、Keras、MXNet等深度學習框架。為了融合各個深度學習框架,有效利用CPU和GPU資源,充分利用大數據、分布式存儲、分布式計算服務,微博設計開發了微博深度學習平臺。

微博深度學習平臺支持如下特性:

  • 方便易用 :支持數據輸入、數據處理、模型訓練、模型預測等工作流,可以通過簡單配置就能完成復雜機器學習和深度學習任務。特別是針對深度學習,僅需選擇框架類型和計算資源規模,就能模型訓練。
  • 靈活擴展 :支持通用的機器學習算法和模型,以及用戶自定義的算法和模型。
  • 多種深度學習框架 :目前支持TensorFlow、Caffe等多種主流深度學習框架,并進行了針對性優化。
  • 異構計算 :支持GPU和CPU進行模型訓練,提高模型訓練的效率。
  • 資源管理 :支持用戶管理、資源共享、作業調度、故障恢復等功能。
  • 模型預測 :支持一鍵部署深度學習模型在線預測服務。

微博深度學習平臺架構和實踐

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

微博深度學習平臺架構和實踐-36大數據

圖1 微博深度學習平臺架構
下面將以機器學習工作流、控制中心、深度學習模型訓練集群、模型在線預測服務等典型模塊為例,介紹微博深度學習平臺的實踐。

機器學習工作流WeiFlow

微博深度學習和機器學習工作流中,原始數據收集、數據處理、特征工程、樣本生成、模型評估等流程占據了大量的時間和精力。為了能夠高效地端到端進行深度學習和機器學習的開發,我們引入了微博機器學習工作流框架WeiFlow。

WeiFlow的設計初衷就是將微博機器學習流的開發簡單化、傻瓜化,讓業務開發人員從紛繁復雜的數據處理、特征工程、模型工程中解脫出來,將寶貴的時間和精力投入到業務場景的開發和優化當中,徹底解放業務人員的生產力,大幅提升開發效率。

WeiFlow的誕生源自于微博機器學習的業務需求。在微博的機器學習工作流中(如圖2所示),多種數據流經過實時數據處理,存儲至特征工程并生成離線的原始樣本。在離線系統,對原始樣本進行各式各樣的數據處理、特征處理、特征映射,從而生成訓練樣本;業務人員根據實際業務場景(排序、推薦),選擇不同的算法模型,進行模型訓練、預測、測試和評估;待模型迭代滿足要求后,通過自動部署將模型文件和映射規則部署到線上。線上系統根據模型文件和映射規則,從特征工程中拉取相關特征,根據映射規則進行預處理,生成可用于預測的樣本格式,進行線上實時預測,最終將預測結果(用戶對微博內容的興趣程度)輸出,供線上服務調用。

微博深度學習平臺架構和實踐-36大數據

圖2 微博機器學習工作流
為了應對微博多樣的計算環境,WeiFlow采用了雙層的DAG任務流設計,如圖3所示。外層的DAG由不同的Node構成,每一個Node是一個內層的DAG,具備獨立的執行環境,即上文提及的Spark、TensorFlow、Hive、Storm、Flink等計算引擎。

微博深度學習平臺架構和實踐-36大數據

圖3 WeiFlow雙層DAG任務流設計
外層DAG設計的初衷是利用各個計算引擎的特長,同時解決各個計算引擎間的依賴關系和數據傳輸問題。內層的DAG,利用引擎的特性與優化機制,實現不同的抽象作為DAG中計算模塊之間數據交互的載體。

在使用方面,業務人員根據事先約定好的規范和格式,將雙層DAG的計算邏輯定義在XML配置文件中。依據用戶在XML指定的依賴關系和處理模塊,WeiFlow自動生成DAG任務流圖,并在運行時階段調用處理模塊的實現來完成用戶指定的任務流。通過在XML配置文件中將所需計算模塊按照依賴關系堆疊,即可以搭積木的方式完成配置化、模塊化的流水線作業開發。

控制中心WeiCenter

控制中心WeiCenter的目標就是簡單、方便、易用,讓大家便利地使用微博深度學習平臺。下面將介紹控制中心的作業管理、數據管理和調度管理等部分。

  • 作業管理 :我們在進行深度學習、大規模機器學習、實時處理的過程中,由于需要各種不同框架的配合使用共同完成一個任務,比如TensorFlow適合進行高性能學習、Spark適合大規模億維特征訓練、Storm或者Flink適合實時特征生成以及實時模型生成等,將這些結合到一起才能完成從離線訓練到線上實時預測。以前這需要開發者去學習各種框架復雜的底層開發,現在通過控制中心選擇不同的作業類型,可以方便地生成各種類型的作業任務。用戶只需要在可視化UI上進行作業類型選擇、數據源選擇、輸出目的地選擇或者使用WeiFlow進行編程,就能生成一個高大上的深度學習或機器學習作業。
  • 數據管理 :當大數據的數據量,每天按P級增長,使用人員每天上百人時,數據管理就顯得尤為重要。如果模型訓練的集群和數據所在的集群,不是同一個集群,如何高效地將數據同步到模型訓練的集群是一個難點。并且在完成模型訓練后,能自動根據訓練結果作出評估,對訓練數據進行刪除。由于使用集群的開發人員素質不齊,你會發現總是有很多冗余數據沒刪除,而且總有無用數據生成,這個時候需要一個統一的數據管理平臺,去約束大家生成數據的同時刪除數據,去各個平臺上探測長時間無訪問的數據并進行確認清理。
  • 調度管理 :作業有多種分類,按重要程度分:高、中、低;按占用資源量分:占用多、占用一般、占用少;按調度器分:Yarn、Mesos、Kubernetes等。Spark、Hadoop利用Yarn調度解決了優先級高的作業和資源占用多作業之間的矛盾;TensorFlow利用成熟的Kubernetes或Mesos調度TensorFlow節點進行GPU集群化任務管理;普通離線作業和服務部署利用Mesos進行資源調度。控制中心集成了多種調度器,利用各種成熟的解決方案,簡化了作業負責調度這一難題。

總之,控制中心負責用戶權限控制、作業圖依賴管理、數據依賴管理等,調度服務負責具體的作業執行、資源抽象、資源管理。控制中心和調度服務如圖4所示。

微博深度學習平臺架構和實踐-36大數據

圖4 控制中心和調度服務

深度學習模型訓練集群

微博深度學習訓練集群與傳統HPC集群有重大區別,分別體現在計算服務器選型、分布式訓練、網絡設備、存儲系統、作業調度系統。

  • 單機多GPU卡 :深度學習模型訓練大部分情況下單機運算,且幾乎完全依靠GPU,因此選用能掛載2/4/8塊GPU的服務器,盡量提高單機運算能力。
  • 分布式訓練 :如果訓練時間長或者樣本規模大,超過單臺服務器能力時,需要支持分布式訓練。以TensorFlow分布式運行方式為例進行說明,如圖5所示。一個TensorFlow分布式程序對應一個抽象的集群,集群(cluster)由工作節點(worker)和參數服務器(parameter server)組成。工作節點(worker)承擔矩陣乘、向量加等具體計算任務,計算出相應參數(weight和bias),并把參數匯總到參數服務器;參數服務器(parameter server)把從眾多工作節點收集參數匯總并計算,并傳遞給相應工作節點,由工作節點進行下一輪計算,如此循環往復。

微博深度學習平臺架構和實踐-36大數據

圖5 TensorFlow分布式架構
  • 萬兆以太網絡 :參數更新過程中,通信粒度大,而且允許異步通信,對延時沒有嚴格要求。因此,訓練集群沒有選用HPC集群必備的InfiniBand或Omini-Path低延時網絡設備,而是選用普通的以太網設備。
  • HDFS分布式文件系統 :TensorFlow分布式工作節點讀取訓練樣本文件時,不同工作節點讀取的數據段不交叉,訓練過程中也不會交換樣本數據。寫出模型文件也只有某一個工作節點負責,不涉及工作節點間的數據交換。因此,深度學習訓練作業不要求HPC機群中常見的并行文件系統,只要是一個能被所有工作節點同時訪問文件系統就可以。實際上,微博深度學習平臺采用HDFS,不但滿足要求,而且方便與其它業務共享數據。
  • 定制的作業調度系統 :TensorFlow分布式參數服務器進程不會自動結束,需要手動殺死,而HPC應用中的MPI進程同時開始同時結束。設計作業調度方案時必須考慮這個特點,使之能夠在所有工作節點都運行結束后自動殺死參數服務器進程。

模型在線預測服務WeiServing

模型在線預測服務是深度學習平臺的一個重要功能。由于微博業務場景需求,模型在線預測服務并發量大,對延時、可用性要求極高。考慮到這些業務需求以及服務本身以后的高擴展性,微博分布式模型在線預測服務WeiServing的架構如圖6所示。

微博深度學習平臺架構和實踐-36大數據

圖6 WeiServing-微博分布式模型在線預測服務架構
  • 特征處理多樣化 :模型在線預測服務首先要解決的問題是,將在線的原始特征數據,映射成模型可以處理的數據格式。基于大量的業務模型實踐與調優,微博機器學習工作流框架WeiFlow抽象出了一套特征處理函數,來提升開發效率和業務效果。WeiServing與WeiFlow在特征處理方面一脈相承,支持一系列特征處理函數,包括piecewise、pickcat、descartes、combinehash等映射函數,對特征進行歸一化、離散化、ID化、組合等特征處理。
  • 多模型多版本支持 :由于微博業務場景多種多樣,不同的業務場景對模型與特征有不同的需求,WeiServing支持同一個集群為多個業務提供服務,通過docker+k8s進行資源隔離與負載均衡。在相同特征情況下,可以選擇不同的模型算法進行處理。另外,對于同一個模型,WeiServing支持在線升級與多版本同時在線,為業務灰度測試提供可能。所有的差異化都被映射到配置文件中,通過簡單的配置來完成線上模型的轉換。
  • 分布式服務支持 :為了應對大規模模型服務與在線機器學習,WeiServing參考通用的參數服務器解決方案,實現了WeiParam分布式服務架構,除了支持傳統的PS功能之外,WeiParam針對在線服務需求,通過分布式調度系統,提供多副本、高可用、高性能的系統機制。
  • 多源支持 :對于普通離線學習,模型會導出到文件中,WeiServing通過ModelManager模塊管理模型加載,支持本地存儲與分布式存儲。同時,WeiServing為支持在線機器學習,提供對實時流接口對接,在線訓練的模型參數可以實時推送到WeiParam中,為線上提供服務。

總結

本文介紹了深度學習框架和平臺的概念和特征,基于微博深度學習平臺深入探討了深度學習平臺的設計思考和技術架構。機器學習工作流和控制中心是我們在規范機器學習工作流程的設計成果,系統化的標準流程能極大提升機器學習開發效率和業務迭代速度。深度學習模型訓練集群和模型在線預測服務是我們在深度學習模型訓練、模型預測的集群化、服務化方面的系統產出,是保障模型效果和業務效果的基礎。希望上述介紹能給大家帶來思考和幫助。

End.

轉載請注明來自36大數據(36dsj.com): 36大數據 ? 微博深度學習平臺架構和實踐

隨意打賞

大數據hadoop架構大數據平臺架構大數據架構
提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 国产一级影院 | 久久精品无码一区二区日韩av | 伊人色视频 | 天天操天天碰 | 国产激情久久久久影 | 欧美一级毛片免费看高清 | 欧美日韩高清一区二区三区 | 国产尤物视频在线 | www.av毛片| 欧美一级久久久久久久大 | 狠狠综合久久综合网站 | 久久―日本道色综合久久 | 伊人热人久久中文字幕 | 五月天丁香婷婷综合 | 久草久热| 午夜特级毛片 | 人人干夜夜操 | 亚洲精品伊人久久久久 | 曰本人一级毛片免费完整视频 | 欧美曰批人成在线观看 | 亚洲精品mm1313久久 | 四虎看片 | 福利99| 欧美日韩国产最新一区二区 | 日本黄色网址免费 | 亚洲精品国产男人的天堂 | 国产一级影片 | 国产精品视频免费播放 | 一本大道久久香蕉成人网 | 国产一起色一起爱 | 一级床上爽高清播放 | 免费区欧美一级毛片精品 | 真实国产乱弄免费视频 | 精品国产成人a在线观看 | 99热这里只有精品免费国产 | 在线观看一级毛片免费 | 五月婷婷综合在线 | 国产一区二区在线视频观看 | 亚洲国产天堂久久九九九 | 国内自拍在线观看 | 老司机观看精品一区二区 |