深度學習是機器學習中一種基於對數據進行表證學習的方法,近些年不斷髮展並廣受歡迎。研究熱潮的持續高漲,帶來各類開源深度學習框架層出不窮,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、PaddlePaddle、Theano、DeepLearning4、Lasagne、Neon等,在此背景下,PaddlePaddle如何在這條深度學習的高速路上彎道超車,看PaddlePaddle架構師潘欣如何解答。程序員
如下爲潘欣老師演講實錄編程
藉助傳統編程語言理念的全功能深度學習框架安全
PaddlePaddle是國內惟一的開源深度學習平臺,由百度自主研發並具有徹底的自主核心技術和知識產權,支持從建模、網絡、強化學習、語音識別到最後部署的所有環節,具備易學、易用、安全、高效等特色,是全功能的深度學習框架。網絡
圖一 PaddlePaddle核心框架結構多線程
PaddlePaddle的核心架構如圖所示,它的總體運行流程是經過API接口組輸入/輸出網絡,並在底層作統一轉化,而後經過Runtime進行訓練,最後轉換成線上部署的模型。線上部署分爲服務端和移動端,爲應對不一樣體系平臺、能耗的要求,咱們部署不一樣的設備。架構
其中左側第一層是API接口,它採用Python語言編寫,大體分爲兩大類,一類是組網類API,包括控制邏輯、構成邏輯、計算邏輯、IO的模塊、讀取數據的模塊等;另外一類是執行類底層API,把用戶組好的模型進行分析,並將計算方法進行合併優化,以此提升訓練速度。併發
除此以外,對於API的組網,PaddlePaddle還有一些新特性。衆所周知,目前不少的框架是在用戶層暴露出來一個圖的接口,以此進行組網。但咱們認爲,大多數的程序員更熟悉的是傳統的如變量、block的流式程序的概念,而不是經過一個圖去鏈接算子、編寫模型。因此在PaddlePaddle API接口的設計中,咱們使用了這些傳統編程語言的理念,使得最終編寫更相似於傳統編程語言。框架
組網類API機器學習
組網類API包含通用、控制、計算、優化、IO等類型的API。異步
執行類API
示例
訓練Runtime
多卡並行-SSA Graph
多卡並行-Profile
多機分佈式
多機分佈式支持Ring、Pserver兩種模式。
用戶Focus Modeling, 框架自動多機化部署
多機分佈式的通訊和集羣
多機分佈式下的容錯
Trainer或者PserverFailure後能夠重啓恢復訓練。即將支持Pserver端的分佈式CheckPoint和恢復,支持大規模Embedding。
大規模稀疏數據分佈式模型訓練
在互聯網場景中,億級的用戶天天產生着百億級的用戶數據,百度的搜索和推薦系統是大規模稀疏數據分佈式模型訓練的主要應用場景。
如何利用這些數據訓練出更好的模型來給用戶提供服務,對機器學習框架提出了很高的要求。主要包括:
注:文中所提架構基於PaddlePaddle 0.14版本,將來,會發出更爲穩定的新版本,歡迎你們關注
提問環節
提問:在分佈式訓練的時候,有同步和異步兩種,何時適合用同步,何時適合用異步?
潘欣:目前沒有機械化的方法肯定這個問題,可是有一些經驗能夠跟你們分享。如在圖像這個領域用同步更穩定,還有最近的翻譯模型,也是經過同步的方法訓練。固然,並非說同步必定比異步好。根據過去在公司的經驗,中國的主流實際上是異步,異步的好處是訓練更加可擴展,對於不少傳統NLP任務,異步比同步要好。因此要驗證這個問題須要在實驗中比較。
實錄結束
潘欣,百度深度學習框架PaddlePaddle的架構設計以及核心模塊開發負責人,百度深度學習技術平臺部TC主席。在計算機視覺CVPR和雲計算SoCC等國際會議發表多篇論文。