導(dǎo)讀:近期,DataFunSummit AI基礎(chǔ)軟件架構(gòu)峰會(huì)以線上形式成功召開(kāi),其中深度學(xué)習(xí)框架論壇更是云集了各大著名科技企業(yè)的頂級(jí)專家。來(lái)自百度飛槳的資深研發(fā)工程師藍(lán)翔老師在大會(huì)上為大家系統(tǒng)地介紹了源于產(chǎn)業(yè)實(shí)踐的開(kāi)源深度學(xué)習(xí)平臺(tái)——飛槳,包括飛槳的核心技術(shù),在各行各業(yè)中的廣泛應(yīng)用,以及飛槳在生態(tài)建設(shè)上的突出成績(jī)。
下面就為您帶來(lái)此次演講的實(shí)錄。
01
飛槳深度學(xué)習(xí)平臺(tái)
從2010年開(kāi)始,百度開(kāi)始全面布局人工智能技術(shù)。2016年,百度正式將飛槳開(kāi)源,把人工智能技術(shù)分享給了廣大開(kāi)發(fā)者。歷經(jīng)5年,飛槳已經(jīng)發(fā)展成完整的全景圖,集深度學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫(kù)、端到端開(kāi)發(fā)套件和豐富的工具組件于一體,是中國(guó)首個(gè)自主研發(fā)、功能豐富、開(kāi)源開(kāi)放的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái)。
1. 飛槳全景圖
- 核心框架
在飛槳全景圖中,最底部為飛槳核心框架,為開(kāi)發(fā)者提供了動(dòng)態(tài)圖和靜態(tài)圖兩種編程范式,訓(xùn)練方面包含了大規(guī)模的分布式訓(xùn)練和產(chǎn)業(yè)數(shù)據(jù)的處理能力,推理部署能力包括服務(wù)器端、移動(dòng)端、網(wǎng)頁(yè)前端等,同時(shí)通過(guò)模型壓縮工具,可以幫助開(kāi)發(fā)者獲得更小體積的模型和更高的性能。
- 基礎(chǔ)模型庫(kù)
基礎(chǔ)模型庫(kù)目前覆蓋了主流的深度學(xué)習(xí)研究領(lǐng)域,如自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、推薦、語(yǔ)音等,包含多類任務(wù)的SOTA模型。開(kāi)發(fā)者可以直接使用,也可以做二次研發(fā),從而滿足用戶不同需求。
- 端到端開(kāi)發(fā)套件
在基礎(chǔ)模型庫(kù)的基礎(chǔ)上,飛槳還封裝了端到端的開(kāi)發(fā)套件,以滿足用戶更高級(jí)的需求,通過(guò)開(kāi)發(fā)套件,用戶可以像搭積木一樣更快更好地開(kāi)發(fā)、訓(xùn)練和部署模型。
- 工具組件
為了進(jìn)一步提升開(kāi)發(fā)效率,針對(duì)企業(yè)的需求,如強(qiáng)化學(xué)習(xí)、聯(lián)邦學(xué)習(xí)以及前沿技術(shù),如量子機(jī)器學(xué)習(xí)、生物計(jì)算等領(lǐng)域的需求,飛槳團(tuán)隊(duì)還開(kāi)發(fā)了相應(yīng)的工具組件,以幫助開(kāi)發(fā)者和企業(yè)快速落地AI應(yīng)用。
- 飛槳企業(yè)版
針對(duì)企業(yè)實(shí)際應(yīng)用需求,飛槳企業(yè)版以飛槳深度學(xué)習(xí)開(kāi)源平臺(tái)為基礎(chǔ),提供了EasyDL零門(mén)檻AI開(kāi)發(fā)平臺(tái)和BML全功能AI開(kāi)發(fā)平臺(tái)兩個(gè)平臺(tái),旨在為企業(yè)提供更好的開(kāi)發(fā)壞境,讓企業(yè)更加聚焦于業(yè)務(wù)與創(chuàng)新。
2. 飛槳核心技術(shù)
下面我們來(lái)詳細(xì)介紹下飛槳框架的核心技術(shù)。當(dāng)前深度學(xué)習(xí)在大規(guī)模產(chǎn)業(yè)化方面面臨諸多挑戰(zhàn)。
首先在開(kāi)發(fā)階段,模型實(shí)現(xiàn)復(fù)雜,開(kāi)發(fā)效率較低;
在訓(xùn)練階段,產(chǎn)業(yè)界的數(shù)據(jù)量大,訓(xùn)練時(shí)間長(zhǎng),反復(fù)訓(xùn)練困難;
在部署階段,實(shí)際產(chǎn)業(yè)落地的要求很高,同時(shí)多硬件還會(huì)帶來(lái)了很大的部署成本;
產(chǎn)業(yè)模型庫(kù)包含的模型較少,無(wú)法滿足開(kāi)發(fā)者的應(yīng)用訴求。
面對(duì)這些挑戰(zhàn),飛槳實(shí)現(xiàn)了四大特性,下面將分別詳細(xì)介紹。
① 開(kāi)發(fā)便捷的深度學(xué)習(xí)框架
飛槳自然完備地兼容支持便于性能優(yōu)化的靜態(tài)圖和易于調(diào)試的動(dòng)態(tài)圖兩種編程范式,默認(rèn)編程范式采用動(dòng)態(tài)圖,并完美地實(shí)現(xiàn)了動(dòng)靜統(tǒng)一。開(kāi)發(fā)者使用飛槳可以便捷地獲得動(dòng)態(tài)圖編程調(diào)試,一行代碼轉(zhuǎn)靜態(tài)圖訓(xùn)練部署的良好開(kāi)發(fā)體驗(yàn)。
此外,飛槳還設(shè)計(jì)了具有獨(dú)創(chuàng)性的中間表示——ProgramDesc,它區(qū)別于常用的圖表達(dá)方式,使得表達(dá)簡(jiǎn)潔,更好承接上一層編程范式,以及兼顧性能。ProgramDesc還可以更加方便地?zé)o縫銜接分布式訓(xùn)練和推理。此外,在編譯優(yōu)化方面,ProgramDesc層之外還有圖的表達(dá)方式,形成雙層中間表示的結(jié)構(gòu)。
為了更高效地提供動(dòng)態(tài)圖和靜態(tài)圖兩種編程范式,飛槳的底層設(shè)計(jì)把可以復(fù)用的模塊形成公用部分,僅從接口和執(zhí)行邏輯上來(lái)區(qū)分兩種編程模式,這樣設(shè)計(jì)可以實(shí)現(xiàn)兩種范式的靈活轉(zhuǎn)換。飛槳提供了全面完備的動(dòng)轉(zhuǎn)靜支持,在Python語(yǔ)法支持覆蓋度上達(dá)到領(lǐng)先水平。開(kāi)發(fā)者在動(dòng)態(tài)圖編程調(diào)試的過(guò)程中,只需在動(dòng)態(tài)圖上添加一個(gè)裝飾器,就可以無(wú)縫平滑地自動(dòng)轉(zhuǎn)化成靜態(tài)圖,代碼改動(dòng)量最小。
此外,飛槳還做到了模型存儲(chǔ)和加載的接口統(tǒng)一,保證動(dòng)轉(zhuǎn)靜之后保存的模型文件能夠被純動(dòng)態(tài)圖加載和使用。
飛槳為了簡(jiǎn)化用戶的開(kāi)發(fā)成本,還設(shè)計(jì)了高層API。高層API同時(shí)支持動(dòng)態(tài)圖和靜態(tài)圖,所以使用高層API時(shí)不用考慮所使用的編程范式。高層API對(duì)數(shù)據(jù)預(yù)處理、數(shù)據(jù)加載、模型組網(wǎng)、模型訓(xùn)練、模型評(píng)估、模型保存等都進(jìn)行了封裝,每個(gè)步驟僅使用幾行代碼即可實(shí)現(xiàn)。同時(shí)高層API對(duì)計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域API也做了封裝,例如transformer中的encoder結(jié)構(gòu),這樣的設(shè)計(jì)不僅簡(jiǎn)化了代碼,還保證了模型效果和高性能。
高層API的應(yīng)用效果,對(duì)于新用戶來(lái)說(shuō)屏蔽了底層的具體細(xì)節(jié),減少了學(xué)習(xí)成本、上手更快,代碼量的減少使得開(kāi)發(fā)效率可以提高50%。高層API和基礎(chǔ)API采用一體化設(shè)計(jì),兩者可以互相配合使用,兼顧開(kāi)發(fā)的便捷性和靈活性。
② 超大規(guī)模深度學(xué)習(xí)模型訓(xùn)練技術(shù)
大規(guī)模分布式訓(xùn)練歷來(lái)是飛槳非常有特色的一個(gè)功能,領(lǐng)先其它框架實(shí)現(xiàn)了千億稀疏特征、萬(wàn)億參數(shù)、數(shù)百節(jié)點(diǎn)并行訓(xùn)練技術(shù)。
此外,飛槳還覆蓋支持包括模型并行、流水線并行在內(nèi)的廣泛并行模式和加速策略,率先推出業(yè)內(nèi)首個(gè)通用異構(gòu)參數(shù)服務(wù)器模式和4D混合并行策略,引領(lǐng)大規(guī)模分布式訓(xùn)練技術(shù)的發(fā)展趨勢(shì)。
③ 多端多平臺(tái)推理部署引擎
對(duì)于推理架構(gòu)方面,飛槳設(shè)計(jì)了端邊云全面支持的推理引擎架構(gòu),由于采用了和訓(xùn)練框架一體的內(nèi)部表達(dá)和算子庫(kù),可以完美地實(shí)現(xiàn)即訓(xùn)即用,以及最全面的模型支持。除了最廣泛的硬件和操作系統(tǒng)平臺(tái)支持之外,我們也設(shè)計(jì)并開(kāi)發(fā)了可靈活插拔的加速庫(kù),以契合不同場(chǎng)景下部署任務(wù)的特點(diǎn)。
部署方面,飛槳還擁有全流程、全場(chǎng)景推理部署工具鏈。開(kāi)發(fā)訓(xùn)練得到的模型可以通過(guò)飛槳模型壓縮工具PaddleSlim的剪枝、量化或蒸餾技術(shù)來(lái)進(jìn)一步優(yōu)化,然后可以使用服務(wù)器、移動(dòng)端/邊緣端、網(wǎng)頁(yè)端等不同硬件場(chǎng)景的推理引擎進(jìn)行部署。從生態(tài)來(lái)看,飛槳還支持其它框架模型在飛槳平臺(tái)部署,也支持將飛槳模型轉(zhuǎn)換為ONNX格式部署。
④ 產(chǎn)業(yè)級(jí)的開(kāi)源模型庫(kù)
當(dāng)前官方模型庫(kù)支持的算法數(shù)量超過(guò)400個(gè),覆蓋計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、推薦、語(yǔ)音等多個(gè)領(lǐng)域,并包含經(jīng)過(guò)產(chǎn)業(yè)實(shí)踐長(zhǎng)期打磨的主流模型以及在國(guó)際競(jìng)賽中的奪冠模型,助力快速產(chǎn)業(yè)應(yīng)用。
隨著國(guó)產(chǎn)硬件的不斷發(fā)展,訓(xùn)練和推理端新型AI芯片的適配面臨著很大挑戰(zhàn)。
為了對(duì)接愈加豐富的各類硬件,飛槳框架設(shè)計(jì)了適配統(tǒng)一方案,多層次、多維度降低軟硬件適配和融合優(yōu)化的成本。針對(duì)不同的硬件特性,分別提供了算子開(kāi)發(fā)與映射、子圖與整圖接入以及編譯器后端接入三類不同方案供廠商根據(jù)硬件特性靈活選擇。飛槳自研了三個(gè)優(yōu)化方案:高性能基礎(chǔ)算子庫(kù)(Kernel Primitive API)、NNAdapter、編譯器CINN,分別對(duì)AI算子庫(kù)、圖、編譯器后端進(jìn)行軟硬件結(jié)合的深度融合優(yōu)化。目前飛槳可以說(shuō)已經(jīng)是硬件接入成本最低的框架。
基于成熟完備的硬件適配統(tǒng)一方案,飛槳硬件生態(tài)持續(xù)繁榮,包括英特爾、英偉達(dá)、ARM等諸多芯片廠商紛紛開(kāi)展對(duì)飛槳的支持,并主動(dòng)在開(kāi)源社區(qū)為飛槳貢獻(xiàn)代碼。飛槳還跟飛騰、海光、鯤鵬、龍芯、申威等CPU進(jìn)行深入融合適配,并結(jié)合麒麟、統(tǒng)信、普華操作系統(tǒng),以及百度昆侖、海光DCU、寒武紀(jì)、比特大陸、瑞芯微、高通、英偉達(dá)等Al芯片深度融合,與浪潮、中科曙光等服務(wù)器廠商合作形成軟硬一體的全棧Al基礎(chǔ)設(shè)施。當(dāng)前飛槳適配的芯片或IP超過(guò)30種,處于業(yè)界領(lǐng)先地位。
02
飛槳應(yīng)用案例
飛槳擁有豐富的產(chǎn)業(yè)實(shí)踐案例,以山東國(guó)家電網(wǎng)輸電線路可視化通道環(huán)境監(jiān)測(cè)為例。
該項(xiàng)目需要對(duì)近景和遠(yuǎn)景中的輸電線路進(jìn)行檢測(cè),并且需要在原有數(shù)萬(wàn)存量監(jiān)控設(shè)備基礎(chǔ)上進(jìn)行優(yōu)化。存量的監(jiān)控設(shè)備算力小、功耗低,為此飛槳團(tuán)隊(duì)選擇了YOLOv3模型。
首先該模型可以滿足精度上的要求,然后通過(guò)飛槳模型壓縮工具PaddleSlim進(jìn)行剪裁、蒸餾、量化,使之可以部署到內(nèi)存有限的存量設(shè)備上;最后通過(guò)飛槳輕量化推理引擎Paddle Lite成功部署上線,實(shí)現(xiàn)了輸電通道的可視化巡檢、重大火情極速預(yù)警。
03
飛槳生態(tài)建設(shè)
良好的生態(tài)有助于用戶更便捷地使用開(kāi)源產(chǎn)品。當(dāng)前飛槳開(kāi)源社區(qū)累計(jì)提交commits超過(guò)50萬(wàn)次,以PR或ISSUE提交形式的開(kāi)源貢獻(xiàn)者超過(guò)了15000人。
飛槳會(huì)定期組織各種分享活動(dòng),將來(lái)自各地的開(kāi)發(fā)愛(ài)好者集中在一起相互交流,并通過(guò)AI Studio學(xué)習(xí)與實(shí)訓(xùn)社區(qū),為廣大開(kāi)發(fā)者免費(fèi)提供豐富的教程、視頻課程以及算力。
在企業(yè)方向,飛槳還會(huì)舉辦AI快車道、AICA首席AI架構(gòu)師培養(yǎng)計(jì)劃等培訓(xùn)活動(dòng),為產(chǎn)業(yè)界培養(yǎng)更多的人才,不斷提升飛槳的影響力。
04
精彩問(wèn)答
Q1:Paddle Lite和TensorFlow Lite區(qū)別?
A:Paddle Lite 是一個(gè)高性能、輕量級(jí)、靈活性強(qiáng)且易于擴(kuò)展的深度學(xué)習(xí)推理框架,定位于支持包括移動(dòng)端、嵌入式以及服務(wù)器端在內(nèi)的多硬件平臺(tái),因此在硬件支持方面,Paddle Lite對(duì)硬件支持更加完善,尤其是對(duì)國(guó)產(chǎn)AI硬件的支持,比如百度XPU、華為麒麟NPU、華為昇騰 NPU、聯(lián)發(fā)科APU等其他硬件,同時(shí)也支持更多的操作系統(tǒng),比如Windows、MacOS等。另一方面,根據(jù)內(nèi)部測(cè)試結(jié)果,Paddle Lite在部分主流推理模型上,以及部分主流硬件上也有更加優(yōu)異的性能表現(xiàn)。
Q2:對(duì)于動(dòng)態(tài)圖和靜態(tài)圖,支持動(dòng)靜結(jié)合模型的決策在什么階段、有什么樣的動(dòng)力推動(dòng)了整個(gè)設(shè)計(jì)?
A:自2016年飛槳開(kāi)源后,整個(gè)團(tuán)隊(duì)就一直非常關(guān)注外部開(kāi)發(fā)者的反饋。通過(guò)調(diào)研,很多開(kāi)發(fā)者對(duì)動(dòng)態(tài)圖的需求非常強(qiáng)烈。針對(duì)企業(yè)上線場(chǎng)景需求,推理部署的對(duì)接必須要有動(dòng)態(tài)圖到靜態(tài)圖轉(zhuǎn)換的功能。2018年飛槳開(kāi)始動(dòng)態(tài)圖的開(kāi)發(fā),同時(shí)也籌備并實(shí)現(xiàn)了動(dòng)靜轉(zhuǎn)換的功能。
本文經(jīng)授權(quán)發(fā)布,不代表增長(zhǎng)黑客立場(chǎng),如若轉(zhuǎn)載,請(qǐng)注明出處:http://gptmaths.com/cgo/product/64663.html