微博深度学习平台架构和实践
深度學習平臺介紹:
什么是深度學習框架?
深度學習框架是進行深度學習的工具。簡單來說,一套深度學習框架就是一套積木,各個組件就是某個模型或算法;開發者通過簡單設計和組裝就能獲得自己的一套方案。深度學習框架的出現降低了深度學習門檻。開發者不需要編寫復雜的神經網絡代碼,只需要根據自己的數據集,使用已有模型通過簡單配置訓練出參數。
TensorFlow、Caffe和MXNet是三大主流的深度學習開源框架:TensorFlow的優勢是社區最活躍,開源算法和模型最豐富;Caffe則是經典的圖形領域框架,使用簡單,在科研領域占有重要地位;MXNet在分布式性能上表現優異。PaddlePaddle、鯤鵬、Angel則是百度、阿里、騰訊分別推出的分布式計算框架。
2015年底,Google開源了TensorFlow深度學習框架,可以讓開發者方便地組合CNN、RNN等模塊實現復雜的神經網絡模型。TensorFlow是一個采用數據流圖(data flow graphs),用于數值計算的開源軟件庫。
2016年,百度開源了PaddlePaddle(PArallel Distributed Deep LEarning 并行分布式深度學習)深度學習框架。PaddlePaddle具有易用,高效,靈活和可伸縮等特點,為百度內部多項產品提供深度學習算法支持。
什么是深度學習平臺?
深度學習平臺就是整合深度學習各環節,為開發者提供一體化服務的平臺。深度學習平臺能夠加快深度學習的開發速度,縮減迭代周期;同時,深度學習平臺能夠將計算能力、模型開發能力共享,提升開發效率和業務效果,也能夠將資源合理調度,提高資源利用率。
百度深度學習平臺是一個面向海量數據的深度學習平臺,基于PaddlePaddle和TensorFlow開源計算框架,支持GPU運算,為深度學習技術的研發和應用提供可靠性高、擴展靈活的云端托管服務。通過百度深度學習平臺,不僅可以輕松訓練神經網絡,實現情感分析、機器翻譯、圖像識別,也可以利用百度云的存儲和虛擬化產品直接將模型部署至應用環境。
?微博深度學習平臺架構
機器學習工作流WeiFlow
WeiFlow的設計初衷就是將微博機器學習流的開發簡單化、傻瓜化,讓業務開發人員從紛繁復雜的數據處理、特征工程、模型工程中解脫出來,將寶貴的時間和精力投入到業務場景的開發和優化當中,徹底解放業務人員的生產力,大幅提升開發效率。
控制中心WeiCenter
控制中心WeiCenter的目標就是簡單、方便、易用,讓大家便利地使用微博深度學習平臺。下面將介紹控制中心的作業管理、數據管理和調度管理等部分。
-
作業管理:我們在進行深度學習、大規模機器學習、實時處理的過程中,由于需要各種不同框架的配合使用共同完成一個任務,比如TensorFlow適合進行高性能學習、Spark適合大規模億維特征訓練、Storm或者Flink適合實時特征生成以及實時模型生成等,將這些結合到一起才能完成從離線訓練到線上實時預測。以前這需要開發者去學習各種框架復雜的底層開發,現在通過控制中心選擇不同的作業類型,可以方便地生成各種類型的作業任務。用戶只需要在可視化UI上進行作業類型選擇、數據源選擇、輸出目的地選擇或者使用WeiFlow進行編程,就能生成一個高大上的深度學習或機器學習作業。
-
數據管理:當大數據的數據量,每天按P級增長,使用人員每天上百人時,數據管理就顯得尤為重要。如果模型訓練的集群和數據所在的集群,不是同一個集群,如何高效地將數據同步到模型訓練的集群是一個難點。并且在完成模型訓練后,能自動根據訓練結果作出評估,對訓練數據進行刪除。由于使用集群的開發人員素質不齊,你會發現總是有很多冗余數據沒刪除,而且總有無用數據生成,這個時候需要一個統一的數據管理平臺,去約束大家生成數據的同時刪除數據,去各個平臺上探測長時間無訪問的數據并進行確認清理。
-
調度管理:作業有多種分類,按重要程度分:高、中、低;按占用資源量分:占用多、占用一般、占用少;按調度器分:Yarn、Mesos、Kubernetes等。Spark、Hadoop利用Yarn調度解決了優先級高的作業和資源占用多作業之間的矛盾;TensorFlow利用成熟的Kubernetes或Mesos調度TensorFlow節點進行GPU集群化任務管理;普通離線作業和服務部署利用Mesos進行資源調度。控制中心集成了多種調度器,利用各種成熟的解決方案,簡化了作業負責調度這一難題。
-
深度學習模型訓練集群
-
-
單機多GPU卡:深度學習模型訓練大部分情況下單機運算,且幾乎完全依靠GPU,因此選用能掛載2/4/8塊GPU的服務器,盡量提高單機運算能力。
-
分布式訓練:如果訓練時間長或者樣本規模大,超過單臺服務器能力時,需要支持分布式訓練。以TensorFlow分布式運行方式為例進行說明,如圖5所示。一個TensorFlow分布式程序對應一個抽象的集群,集群(cluster)由工作節點(worker)和參數服務器(parameter server)組成。工作節點(worker)承擔矩陣乘、向量加等具體計算任務,計算出相應參數(weight和bias),并把參數匯總到參數服務器;參數服務器(parameter server)把從眾多工作節點收集參數匯總并計算,并傳遞給相應工作節點,由工作節點進行下一輪計算,如此循環往復。
-
轉載于:https://www.cnblogs.com/zyt-bg/p/10989275.html
總結
以上是生活随笔為你收集整理的微博深度学习平台架构和实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux常用shell命令之目录操作命
- 下一篇: 开发者进阶之路 |UIBPlayer (