作者 | 阿司匹林
2013年,百度開始研發深度學習框架PaddlePaddle,搜尋、鳳巢CTR預估上線DNN模型。
2016年,在百度世界大會上,百度宣佈PaddlePaddle開源,標誌著國產開源深度學習平臺的誕生。
時間來到2019,人工智慧已經進入商業落地的關鍵節點。
今年4月,在WaveSummit深度學習開發者峰會上,時任百度高階副總裁為PaddlePaddle的戰略地位進行了定調,並表示深度學習已經推動人工智慧進入工業大生產階段,而深度學習框架則是智慧時代的作業系統。
這一年對PaddlePaddle來說是至關重要的一年。國外強敵林立,PaddlePaddle的突圍戰開始從國外轉向國內,除了給自己取了箇中文名“飛槳”,還宣佈重金投入和補貼,爭搶中國AI開發者。
從此,PaddlePaddle的推進明顯加速。
時隔半年,百度再次召開WaveSummit+深度學習開發者峰會,此時王海峰已經升任為百度技術長,PaddlePaddle的全景圖也越來越越完善,也越來越清晰。
在短短的半年時間裡,PaddlePaddle全新發布和重要升級21個產品,重點聚焦在兩大方面:
1、平臺易用性全方位提升,進一步降低了開發和訓練部署的門檻;
2、更多強大的功能,讓產業應用落地的更加便捷,真正解決產業應用的痛點。
這些新產品和新升級囊括了面向產業應用場景的四大端到端開發套件、融合資料和知識的預訓練結合遷移學習的飛槳Master模式、端側推理引擎Paddle Lite 2.0、EasyDL專業版、前沿技術工具元件等等。
比如全新發布端側推理引擎Paddle Lite 2.0版本,打通端到端部署全流程,提升易用性,廣泛的硬體支援。在原有的工具元件基礎上,還全新發布3項深度學習前沿技術工具元件:聯邦學習PaddleFL、圖神經網路PGL和多工學習PALM。
全新發布EasyDL專業版為演算法工程師提供一站式AI開發平臺。PaddleHub 則支援飛槳Master模式。所謂Master(大師)模式,指的是:算力+資料和知識+演算法=產業級預訓練模型,產業級預訓練模型+遷移學習工具平臺構成Master的核心,可以用於多種行業場景。
可以看到,PaddlePaddle正在全面開放自己的AI能力,助力產業升級,這也契合了李彥宏在百度開發者大會上提出的產業智慧化的概念。
接下來,營長將會從PaddlePaddle平臺的整體框架出發,按照核心框架、基礎模型庫、端到端開發套件、工具元件和服務平臺幾大板塊,為讀者介紹完整的PaddlePaddle全景圖。
PaddlePaddle是一個全面的開源開放平臺,包含核心的開發、訓練、部署框架,以及非常豐富的模型庫。基於這個模型庫,PaddlePaddle可以覆蓋很多經典的應用場景,開發者可以進行二次開發,或者直接使用。在這個模型庫的基礎之上,PaddlePaddle還提供了端到端的開發套件,聚焦在人工智慧領域的常見任務和場景。在端到端開發套件之上是一整套的工具元件,這些工具元件可以幫助開發者解決更多人工智慧應用當中的問題。之後是服務平臺,在這個服務平臺上,開發者不僅可以基於算力做更多的人工智慧應用開發,也可以在PaddlePaddle的實訓平臺上進行學習。同時,PaddlePaddle還提供很多部署的工具鏈,方便開發者部署自己的應用。
核心框架
首先看一下核心框架。一個深度學習開源框架包含幾個非常關鍵的環節:一是演算法開發,開發環節API的易用性、功能的完備性至關重要;二是訓練,演算法開發完成之後,需要有非常大規模的資料進行高速訓練,提升研發效率;三是要把演算法模型真正部署到應用場景中,需要一系列的部署工具,通過這些部署的鏈條進一步落地。
一、開發
首先是開發框架易用性的全面提升,PaddlePaddle最近在GitHub上釋出了核心框架的V1.6版本,裡面包含了非常多的細節功能。
1)豐富的運算元庫:開發一個演算法,計算的基本運算元需要進一步完善和全面,目前PaddlePaddle已經支援AI領域幾乎所有的模型。
2)簡單高效的API介面:API介面是面向開發者最直接的一層,開發者需要更加方便便捷的API介面,主要體現在以下兩個層面:
一是資料層。在真正的開發過程中,資料的IO非常關鍵,也是在開發深度學習應用時非常關鍵的環節。這次PaddlePaddle把IO介面做了全面梳理,易用性大幅提升。同時,IO的速度一直以來也是PaddlePaddle的優勢,工業級IO的釋出可以讓開發者有更好的體驗。
二是分散式訓練的易用性。現在資料規模非常大,開發者往往需要進行分散式訓練,單臺機器無法完成。這種情況下,一個單機的應用程式如何快速地改成一個分散式訓練的程式非常關鍵。利用升級後的PaddlePaddle平臺,開發者只需要很少量的程式碼開發,就能夠把一個單機的程式快速變成一個分散式訓練的程式。
PaddlePaddle把工業領域常用的分散式訓練的模型做了Benchmark。開發者可以很方便地找到快速把一個單機的程式變成一個分散式訓練程式的程式,並且找到應用最為廣泛的一些演算法模型,用分散式來進行實現。在這裡新增5行程式碼就能實現高效的GPU並行訓練。
3)PaddlePaddle一直在不斷完善開發文件的內容。PaddlePaddle一直提供中英雙語的文件,這次PaddlePaddle對中文文件進行了非常多的升級和完善,尤其是API文件。
二、訓練
除了深度學習框架的易用性,效能也是開發者非常關注的。效能可以體現在速度、記憶體管理上。PaddlePaddle平臺的開發非常關注這兩點,通過這個Benchmark,可以看到PaddlePaddle在這些方面取得的新進展。
首先是基於GPU的分散式訓練。在GPU裝置上,利用PaddlePaddle可以快速地做分散式訓練的Benchmark。可以看到,PaddlePaddle的分散式訓練有非常好的擴充套件性,跟其他框架相比,可以真正帶來效率上的提升。
其次是基於CPU的訓練。GPU訓練更多是在影像領域或者複雜的文字處理領域,很多的推薦場景還在用基於CPU的分散式訓練。比如經典的Word2Vec的計算,通過百度自研的GUSGD方法,它的擴充套件性跟其他的框架相比有非常顯著的領先優勢,吞吐量可以達到對標產品的6倍以上。GUSGD為什麼有這樣的效果?因為Word2Vec模型的計算比較簡單,大量的時間都在通訊,GUSGD基於這個特點設計了一套全新的優化的方法,把計算和通訊之間的Balance問題解決得很好,從而使整個吞吐有大幅的提升。
三、端到端部署
開發完成之後是部署,這個環節涉及的工作非常多。首先要適配不同的硬體,最新的PaddlePaddle新增了對於華為NPU的適配,以及對於邊緣裝置上FPGA的適配。同時,PaddlePaddle很快還會進一步釋出跟寒武紀和位元大陸的適配工具。此外,硬體的加速在部署環節也非常關鍵的,它關係到部署推理的效能。再上面就是核心的Paddle Serving、Paddle Lite框架層。把底層硬體的細節遮蔽掉,開發者只需要關注這些介面就可以真正部署應用。此外,真實的應用當中都有非常苛刻的環境限制和要求,所以模型壓縮非常重要。
可以看到,整個開發過程中,開發者需要先開發演算法,然後進行訓練,最後得到模型。這個模型在最終部署之前往往會進行量化、剪枝、蒸餾等處理,尤其是在移動裝置端,開發者往往需要進一步壓縮模型的體積。然後就是Serving,把它真正部署成一個服務,能夠線上提供負載均衡等能力,真正作為一項服務使用。而PaddlePaddle可以打通端到端的全流程,方便開發者一站式完成全部任務。
1、PaddleSlim
PaddleSlim的上一個版本已經支援剪枝、量化、蒸餾等方法,這次的升級重點主要體現在自動化網路結構設計方面。通過這種自動化網路結構的方法,可以根據硬體的特點,把硬體作為其中的一個約束條件進行搜尋。比如開發者在基於某個硬體做部署時,既想保證精度,又要保證速度,把模型壓縮的足夠小,就可以利用PaddlePaddle的自動化網路結構搜尋技術。PaddlePaddle這次升級也提供了更豐富的模型支援,同時把訓練、壓縮和部署全流程進行了打通,並保證了足夠的效能。
地址: https://github.com/PaddlePaddle/models/tree/develop/PaddleSlim
2、Paddle Lite 2.0
Paddle Lite 2.0的編譯、硬體適配能力和易用性都得到了大幅的提升,它有幾個重要的特點:
一是高易用性。在移動端或邊緣裝置上開發應用程式涉及到非常多的裝置環境的連調工作,PaddlePaddle提供了大量的事例程式碼以及操作指南,方便開發者在不同的裝置場景上進行快速部署。
二是廣泛的硬體支援。PaddlePaddle目前已經支援8種主流的硬體,同時新增了華為的NPU和邊緣裝置的FPGA。並且Paddle Lite 的設計非常便於硬體擴充套件。比如你有一個新的硬體,只要在Paddle Lite裡新增這個硬體相關的Kernel即可,它跟其他的框架設計是高度解耦的。
三是效能。這是Paddle Lite一個顯著的優勢,其效能優勢不僅僅是在FP32這種場景下,在移動端已經廣泛普及的INT8上,領先優勢則更加明顯。
地址:https://github.com/PaddlePaddle/Paddle-Lite
基礎模型庫
PaddlePaddle的模型庫已經支援自然語言處理、計算機視覺、推薦和語音。這次升級,PaddlePaddle官方支援的模型從60個擴充到了100多個。
PaddleCV在影像分類、生成、檢測、視訊理解等領域都有新增的模型,並開放了一些最領先的模型。另外,PaddleNLP在語義理解、閱讀理解、對話這些場景上也做了開放。PaddleRec和Paddle Speech也都做了進一步的完善和升級。
同時,PaddlePaddle還開源了多個在2019年奪冠的一些演算法模型,這裡麵包括在視訊理解上取得冠軍的模型。此外,在EMNLP 2019競賽中獲得10項閱讀理解冠軍的D-NET模型,PaddleNLP也已經支援。
瞭解更多關於PaddlePaddle模型庫的相關知識,請檢視《 薅百度GPU羊毛!PaddlePaddle大升級,比Google更懂中文 戰》。
端到端的開發套件
PaddlePaddle在本次峰會上重點發布了4個端到端的開發套件。這些開發套件有哪幾個特點?一是真正的工業場景當中效能要足夠高,二是開發的時候簡潔易用,三是落地的時候足夠高效。
這4個套件面向的應用場景非常廣泛,也非常集中。一是ERNIE模型,主要用於語義理解;二是PaddleSeg,主要用於影像分割;三是Paddle Detection,主要用於目標檢測;四是ElasticCTR,主要用於個性化推薦。
一、ERNIE:語義理解
ERNIE開發套件的核心能力在於預訓練模型,尤其在中文領域。通過全景圖可以看到,ERNIE開發套件有非常多的預訓練的模型集,這個預訓練的模型集不僅具備通用語義表示的能力,比如詞的表示,句子的表示,篇章的表示等等。在通用語義表示的能力基礎之上,ERNIE還提供了一些面向任務的專門優化的語義表示模型,以及領域相關的模型。
除了預訓練模型,ERNIE開發套件還提供了一系列的工具,包括做遷移學習的Fine-Tuning工具。為了部署更方便,ERNIE提供了快速推理的工具。另外,ERNIE開發套件也提供了針對ERNIE的壓縮能力,以及部署需要的Service的能力。在平臺層面,開發者可以通過EasyDL平臺的算力進一步使用ERNIE相關的模型。它的應用場景非常廣泛,適用於各種各樣NLP的任務。
ERNIE預訓練模型裡面有幾個比較核心的元素:一是基於海量的資料和知識,二是多工學習的能力,三是持續學習的過程。什麼是持續學習的過程?ERNIE不是一次預訓練就結束了,而是一個可持續學習的語義理解框架。通過這種方式,開發者可以不斷往裡面新增資料,整個模型的表示能力就會變得更強。同時,它還可以持續擴充資料,兼顧更多工。
ERNIE開發套件的主要特點:支援各類訓練任務Fine-tuning,保證極速推理Fast-inference API,兼顧靈活部署ERNIE Service,具備輕量方案ERNIE Tiny。
ERNIE模型線上部署的時候會遇到效能的瓶頸問題,ERNIE開發套件提供了一個輕量化的方案——ERNIE Tiny,包括資料蒸餾和模型蒸餾,通過資料蒸餾可以提升1000倍的速度。
地址:https://github.com/PaddlePaddle/ERNIE
二、PaddleSeg:語義分割
在視覺領域,語義分割有非常廣泛應用的場景。這次升級的PaddleSeg包含了18個預訓練模型,能夠覆蓋主流的網路。
PaddleSeg提供了全面的資料增強能力。因為在視覺領域,資料非常關鍵,尤其是資料的預處理對整體效果的影響非常大。模型框架層面,PaddleSeg提供了幾乎所有的主流網路。在部署的環節,PaddleSeg提供了大量的輔助工具,方便開發者部署語義分割的技術和模型。
PaddleSeg的幾個主要特性:一、10+中資料增強策略提升了模型的魯棒性;二、PaddleSeg幾乎覆蓋了主流的模型;三,效能得到了了全方位的提升;四,部署能力更加強大。跟一些主流的模型的對比,不管是單卡還是雙卡上,訓練的速度、利用率、視訊記憶體的佔用,以及可以訓練的Max Batch Size,PaddleSeg都有顯著的優勢。
PaddleSeg的應用場景非常廣泛,包括智慧工業、智慧影像、智慧農業等等。利用PaddleSeg,模型部署後的預測效能比其他同類產品要提升20%以上。
地址:https://github.com/PaddlePaddle/PaddleSeg
三、Paddle Detection:目標檢測
影像分割和檢測有非常密切的關聯性。Paddle Detection釋出了60多個預訓練模型,並且包括多個在以往競賽當中奪冠的演算法模型。它提供了一整套的檢測框架,方便開發者適配、調整演算法。另外,Paddle Detection提供了大量的組塊化模組,調整起來非常非常方便。
此外,Paddle Detection提供了非常多的小模型,所謂的小模型就是它能夠在移動裝置上跑得足夠快。更多的小模型可以方便開發者在移動端裝置使用目標檢測功能。
Paddle Detection也跟PaddleSlim、PaddleLite的能力全面打通,開發者可以對檢測模型進行快速壓縮,並且適配到移動端裝置,最後進行應用。
效能方面,用YOLOv3模型進行測試,Paddle Detection實現的速度是對標產品1.4倍。另外它的視訊記憶體佔用更少,降低了30%。
車流的識別、安防監控等都非常依賴於目標檢測技術,因此Paddle Detection有非常廣泛的應用場景。
地址:https://github.com/PaddlePaddle/PaddleDetection
四、ElasticCTR:個性推薦
CTR預估模型在工業場景當中應用非常多,而且跟資源排程有非常緊密的關聯。因此ElasticCTR目前跟Kuberflow和華為的Volcano進行了深度整合,並在分散式訓練的環節提供了全非同步的引數伺服器技術,實現超大規模的CTR預估能力的工業化部署。ElasticCTR還提供了高效能的KV預估以及一鍵部署功能,方便開發者真正使用ElasticCTR的能力。
效能方面,在大規模的資料場景中,ElasticCTR能夠進行快速更新,並且工業級部署的效能是對標產品的13倍。
地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/1.6/user_guides/howto/training/deploy_ctr_on_baidu_cloud_cn.html#elastic-ctr
工具元件
剛才介紹了框架層、模型層以及開發套件,接下來介紹幾個重要的工具元件。
一、PaddleHub:遷移學習
首先是PaddleHub。PaddleHub整合了預訓練模型和遷移學習的工具,這次的升級增加了兩個核心能力:一是自動化調參,基於一鍵自動超參搜尋;二是進一步夯實了一鍵模型化服務的能力,開發者可以很容易把自己想要用的模型快速變成服務。
為了提升易用性,PaddleHub的API採用了高層封裝,包含遷移任務、遷移策略和資料處理等,方便開發者使用,在解決了開發效率的問題的同時,保持了靈活性。
地址:https://github.com/PaddlePaddle/PaddleHub
此次峰會上,PaddlePaddle釋出三個新的工具元件:一是PALM多工學習元件,ERNIE模型裡面用到的一個核心能力就是多工學習,通過多工學習,把多個任務的表示層進行共享,從而提升整個模型的效率;二是PGL圖神經網路,在資料量非常大的情況下,也有非常好的模型建模能力,利用這種圖神經網路,能夠解決原來很多模型無法解決的問題;三是PaddleFL聯邦學習。
二、PALM:多工學習
PALM底層有很多基礎的模組,包括一些預置的網路、學習任務和資料處理。同時PAML上層還有組裝層,因為多工學習需要很好的組裝和排程。這也意味著,PALM已經替開發者做好了底層的工作。在執行環節,PALM提供了高效的執行和快速部署的能力,使得多工學習在真正的實踐任務當中可以應用的更廣。目前,開發者只需要20行左右的程式碼,就可以同時訓練多個任務來提升模型效果,比如文字分類等。
地址:https://github.com/PaddlePaddle/PALM
三、PGL:圖神經網路
圖神經網路的應用越來越廣泛,尤其是在推薦場景,它的建模能力更加強大。這次PaddlePaddle正式釋出了PGL 1.0版本,它有幾個主要特性:一是高效,它充分利用了PaddlePaddle核心框架的LoD-Tensor(Level-of-Detail Tensor)進行訊息聚合,使得速度有非常大的提升;二是易用性,PGL在介面的設計上進行了大量的工作,方便開發者使用;三是演算法模型非常豐富;四是規模非常大,可以支援分散式的圖引擎,支援10億節點、百億巨圖的訓練,PALM其實跟PaddlePaddle的分散式訓練是一脈相承的,圖的規模跟分散式訓練的擴充套件能力有非常大的關係。
地址:https://github.com/PaddlePaddle/PGL
四、PaddleFL:聯邦學習
聯邦學習是針對資料隔離、資料安全等問題的一種解決手段。面向深度學習任務做聯邦學習,有很多特有的挑戰。PaddleFL主要是面向深度學習進行設計,包括幾個比較重要的方面:一是聯邦學習的策略,目前PaddleFL整合了比較多的橫向、縱向聯邦學習策略;另外,PaddleFL也整合了多種訓練方法。它的應用場景非常多,目前百度已經開始在推薦場景中開始嘗試使用聯邦學習。
地址:https://github.com/PaddlePaddle/PaddleFL
五、PARL:強化學習
PARL這次也有重要的升級,包括並行訓練的介面、文件、演算法等。強化學習在機器人控制領域有非常多的應用,利用強化學習做自動控制,有非常顯著的優勢,可以真正做自動控制。
地址:https://github.com/PaddlePaddle/PARL
服務平臺
PaddlePaddle的全景圖裡面還有一層非常關鍵,就是全面的服務平臺,這個服務平臺給開發者提供了很多額外的價值。
一、EasyDL
在經典版的基礎上,PaddlePaddle這次新增了EasyDL專業版,開發者可以利用EasyDL的算力開發自己的AI模型。同時百度還面向零售等場景定製了EasyDL行業版。
EasyDL專業版主要包含以下幾個特性:模型更加完善,資料服務更好,部署能力更靈活,而且支援飛槳Master模式,基於預訓練模型進行快速的遷移學習和定製。此外,EasyDL提供了完善的資料標註服務,可以節約資料標註的成本,並且支援端雲結合部署,以及公有云私有化部署。EasyDL已經成為一個面向AI模型開發和部署的全流程平臺。
二、AI Studio
除了EasyDL,另外一個跟PaddlePaddle關聯度非常高的是AI Studio平臺。AI Studio是深度學習開發者學習、交流和開發實訓的平臺。AI Studio包含了大量的學習的課程和開源專案,以及大量的比賽。
三、EasyEdge
EasyEdge平臺的目的是為了進一步減少端計算開發者的工作量,降低模型部署的門檻。目前EasyEgde是基於Paddle Lite核心開發框架,提供軟硬一體的能力給開發者使用。同時,EasyEdge把很多裝置的相容等問題進行了封裝,開發者可以非常便捷地在多種硬體上快速開發。
生態!生態!生態!
上個月的烏鎮世界網際網路大會,百度董事長李彥宏談到了一個對未來的判斷:“人工智慧正在驅動數字經濟向智慧經濟進化”。但是百度如何爭搶人工智慧時代的話語權?
2018 年 7 月,李彥宏在百度AI開發者上喊出了要讓“Everyone Can AI”的口號,其實這句口號後面還要加上一個限定——“通過百度的AI平臺”。 這也意味著,PaddlePaddle是這場攻堅戰中的突破點之一。
在這次峰會上,百度也釋出了完整的開發者激勵計劃:一是10多門課程進行全方位的免費開放;二是百度將輔助100多所高校,進行深度學習教育的培訓;三是輔助1000企業,助力AI業務轉型;四是釋出百萬級競賽獎金,推動各種各樣AI競賽的開展;五是億級GPU算力資源的支援,支撐開發者更好地使用PaddlePaddle平臺。
從個人開發者,到高校開發者,再到企業開發者,一切都是為了壯大PaddlePaddle的生態圈,促進百度的AI落地。
百度AI生態大戰的炮聲已經響起,這將是一場持久的攻堅戰,而PaddlePaddle是這場戰役的核心。只有讓聽到炮聲的人呼喚炮火,才能看到PaddlePaddle的突圍。