TechDay實錄 | 認識PaddlePaddle:更低使用成本、更高開發效率的深度學習框架

導讀:

在人工智能時代,各行各業都在嘗試利用機器學習/深度學習等前沿技術來解決自身的業務需求,深度學習框架也應運而生。爲了繼續幫助AI開發者們在深度學習的道路上快速升級,百度PaddlePaddle於2019年重磅啓動系列技術公開課“PaddlePaddle TechDay”。

2019年1月5日,第一期活動於北京中關村創業大街百度大腦創新體驗中心展開,秉承着“技術爲先,應用至上”的理念,百度邀請深度學習技術平臺主任工程師胡曉光和高級算法工程師、百度認證佈道師胡曉曼作爲此次主講嘉賓,分享PaddlePaddle框架設計原理、實現方式、完整實例等技術點,並結合百度自身AI實踐的應用發展,詳解PaddlePaddle針對深度學習模型的應用、訓練與優化等具體細節。

以下爲胡曉光講師的演講實錄:

2012年,百度開始深度學習的應用,其深度學習框架內部版本可追溯到2013年,到2016年,爲了滿足開發者的使用需求,百度開源了深度學習平臺PaddlePaddle,2018年底,百度又推出了PaddlePaddle Suit,力求框架使用成本越來越低。

如今,各大巨頭公司都在進入深度學習領域,那深度學習框架爲何如此重要?其實深度學習框架相當於傳統的操作系統,起到連接底層硬件和上層應用場景的作用,以此支持各種AI相關的應用,使其與業務結合,實實在在解決業務場景中的問題。例如,通過該框架,可以將底層的CPU、GPU、FPGA、專用AI芯片、手機移動端上的芯片等各類硬件相關隔離並進行管理;在中間層將數據進行組網、訓練,進一步得到模型進行預測;在應用層,還可以跟語音、NLP、視覺、推薦等實際場景中的業務進行結合。

可以看到,PaddlePaddle致力於通過輸出領先的深度學習技術,賦能各行各業,全方位滿足企業級深度學習的應用;同時,PaddlePaddle更加註重用戶的開發成本,以最少的時間獲得最滿意的功能和效果。

支持不同層級開發者需求的PaddlePaddle全功能套件

如上圖所示,PaddlePaddle的整體架構主要包含四個層面:核心框架、輔助工具、通用技術方案、服務平臺。

核心框架包括:PaddlePaddle訓練框架、PaddlePaddleServing(預測)、PaddlePaddle Mobile(移動端手機上可部署),在這個基礎框架之上,可以做深度學習相關的工作。

再往上一層,針對深度學習應用的輔助工具包括:Visual DL可視化工具、Auto DL網絡自動設計工具、PARL強化學習工具。

通用技術方案上,目前PaddlePaddle主要支持包括文本處理/NLP、CV 、智能推薦相關的三個方向,這三個方向裏有大量的模型。

服務平臺方面,面向用戶實際業務場景,Easy DL無需用戶寫代碼,便可低成本獲取定製化服務;此外,還有學習深度學習的平臺AI Studio、針對深度學習雲服務的Infinity。

PaddlePaddle設計思想

具體到執行流程,通常前端程序是用Python來寫的,但實際代碼程序是在後端的C++語言環境下實現的,那二者是如何關聯起來的呢?

在Python前端,有一個接口可做到前後端的調度,中間還有一個程序ProgramDecs,可進行網絡結構的序列化。然後將Programdesc通過接口傳給Transpiler,對原始Program做進一步優化,再傳給一個新的Programdesc。而在C++後端有一個執行器,這裏面對各種各樣的Operator進行計算和調用,相當於在CPU上跑的各種指令在這裏完成。之後,像梯度或參數等計算結果跑出來後,需要返回預測值,還是通過這個接口再傳給Python前端。也就是說,輸入數據和返回的結果都是可以在前端完成的。正因如此,整個框架後端是基於C++的,效率也十分高。

執行過程

編譯期:定義Program

1.    編譯時,用戶編寫一段python程序,通過調用 Fluid 提供的算子,向一段 Program 中添加變量(Tensor)以及對變量的操作(Operators 或者 Layers)。用戶只需要描述核心的前向計算,不需要關心反向計算、分佈式下以及異構設備下如何計算。

2.    原始的 Program在平臺內部轉換爲中間描述語言: ProgramDesc。

3.    編譯期最重要的一個功能模塊是 Transpiler。Transpiler 接受一段 ProgramDesc ,輸出一段變化後的 ProgramDesc ,作爲後端 Executor 最終需要執行的 Fluid Program

4.    後端 Executor 接受 Transpiler 輸出的這段 Program ,依次執行其中的 Operator(可以類比爲程序語言中的指令),在執行過程中會爲 Operator 創建所需的輸入輸出並進行管理。

執行期:1.執行Program

2.創建Executor

Fluid中使用fluid.Executor(place)創建Executor,place屬性由用戶定義,代表程序將在哪裏執行。

下例代碼表示創建一個Executor,其運行場所在CPU內:

3.運行Executor

Fluid使用Executor.run來運行程序。定義中通過Feed映射獲取數據,通過fetch_list獲取結果:

官方支持最多模型庫——PaddlePaddle Fluid模型庫

目前,基於PaddlePaddle框架基礎上開發了大量的模型,可以支持像CV、NLP、推薦等各類非常前沿的技術應用。值得一提的是,模型應用有很多已經放在GitHub上開源出來,如果開發者想要進一步嘗試PaddlePaddle,除了查看官方文檔,也可以在GitHub上快速找到PaddlePaddle最新開源的模型。

目前來看,PaddlePaddle官方支持的模型數量超過其他主流框架,主要包括計算機視覺裏的圖像分類、目標檢測、人臉檢測、關鍵點、OCR識別、語義分割、視頻分類,自然語言處理裏的中文詞法分析、語義匹配、機器翻譯,個性化推薦模型,語音識別等。

1.圖像分類

 目前網絡模型主要朝着兩個方向發展:一是越來越深;二是越來越複雜。如AlexNet、VGG、GoogleNet、ResNet、Inception-v4、MobileNet、Dual Path Network、SE-ResNeXt,2012年以來的經典圖像識別網絡都包含在PaddlePaddle的圖像分類模型庫裏。

2.目標檢測 SSD

Single Shot MultiBoxDetector (SSD) 是目標檢測領域較新且效果較好的檢測算法之一,具有檢測速度快且檢測精度高的特點。

對比 Faster R-CNN和SSD在GPU上的運行速度和準確率,可以得知,Faster R-CNN的準確率會很高,但跑得速度會慢些;而SSD會快很多,但準確率會低些。

3.人臉檢測 PyramidBox

 在圖像檢測裏,人臉檢測是比較特殊的,包括人臉拍照、人臉識別解鎖,其核心基礎都是檢測。2018年,百度最新推出的PyramidBox,可以說是迄今最好的人臉算法。除了傳統算法之外,重點考慮人臉的上下文特徵,可以很好地提升人臉檢測的交互率和準確率。

4.語義分割DeepLab V3+、語義實時分割ICNet

目前,用於語義分割的DeepLab V3+模型基於PaddlePaddle得到了實現,並取得了非常好的效果。可以看到,它有一些操作並不是標準的卷積,這意味着有可以針對這些操作進行更深入底層優化的空間。

5.視頻分類

 視頻分類方法主要包含基於卷積神經網絡、基於循環神經網絡、或將這兩者結合的方法,目前包含Temporal Segment Network(TSN)模型。 

6.中文詞法分析(LAC

 中文詞法分析(Lexical Analysis of Chinese)是一個聯合的詞法分析模型,包括中文分詞、詞性標註、專有名詞識別任務。LAC基於一個堆疊的雙向GRU結構,在長文本上準確復刻了百度AI開放平臺上的詞法分析算法。這三個任務可以做一個訓練,其效果是非常顯著的。 

7.語義匹配 DAM

 在最新發表的“Multi-Turn Response Selection for Chatbotswith Deep Attention Matching Network”論文中指出,主要使用了全局方法的網絡結構,可判斷全局信息,通過上下文表示句子語義結構,目前已在內部如聊天或對話系統中取得了非常好的效果。

8.機器翻譯 Transformer

 從2017年起提出的Transformer現已成爲業界機器翻譯模型訓練的標配。Transformer是一個基於自注意力機制的機器翻譯模型,其中不再有RNN或CNN結構,而是完全利用Attention學習語言中的上下文依賴。 

9.個性化推薦模型

 PaddlePaddle對推薦算法的訓練提供了完整的支持,並提供了多種模型配置供用戶選擇,包括:TagSpace、GRU4Rec、SequenceSemanticRetrieval、DeepCTR、Multiview-Simnet。

模型庫:

https://github.com/PaddlePaddle/models

總結來講,PaddlePaddle是一個功能全面而又特別注重實用性的框架,百度在生產環境的打磨使其具備了強大的工業級生產能力,同時從框架的內部設計和實現上注重接口的簡潔性和穩定性,並規避了複雜概念和設計的引入,使其降低了PaddlePaddle的開發門檻,對開發者也更加友好。此外,開放出大量支持最新主流的模型庫,從而全方位爲企業開發者提供幫助,使其可以順暢地進行上層開發。當前仍處於深度學習研究和應用的持續火熱期,深度學習框架及平臺在研究界和工業界的需求仍持續增長,百度PaddlePaddle也將隨着深度學習在各行各業的廣泛應用,持續迭代和更新,爲中國開發者和企業提供更強、更貼近需求的服務,我們也歡迎廣大開發者和企業加入到百度PaddlePaddle的大家庭當中來,共建深度學習生態,助力AI落地。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章