Baidu Create 2018深度學(xué)習(xí)前沿技術(shù)與工業(yè)應(yīng)用公開課精彩回顧
原創(chuàng)【51CTO.com原創(chuàng)稿件】中國開發(fā)者們的年度盛會——百度AI開發(fā)者大會于近日落下帷幕。百度在深度學(xué)習(xí)領(lǐng)域的技術(shù)研發(fā)始于2012年初,一年后,百度在深度學(xué)習(xí)平臺領(lǐng)域已取得初步成功,并將其應(yīng)用于百度的多項核心業(yè)務(wù)。
百度深度學(xué)習(xí)框架PaddlePaddle自2016年開源以來,受到了業(yè)界的廣泛關(guān)注,已經(jīng)成為全球發(fā)展熱度增速最高的開源深度學(xué)習(xí)平臺,PaddlePaddle社區(qū)更是匯集了一大批AI技術(shù)開發(fā)者。開源的模式使PaddlePaddle在近兩年取得了快速發(fā)展和升級,2017年11月百度發(fā)布了更細(xì)粒度的新一代深度學(xué)習(xí)框架——PaddlePaddleFluid,今年7月發(fā)布了PaddlePaddle3.0,這些相繼印證了百度在深度學(xué)習(xí)領(lǐng)域的雄厚實(shí)力。
實(shí)際上,無人車、智能家電、AI云、AlphaGo等常見的AI應(yīng)用領(lǐng)域,都離不開深度學(xué)習(xí)框架的訓(xùn)練和預(yù)測服務(wù),深度學(xué)習(xí)框架則相當(dāng)于AI時代的操作系統(tǒng),在AI領(lǐng)域扮演者至關(guān)重要的角色。本次大會中,深度學(xué)習(xí)框架PaddlePaddle備受開發(fā)者們的關(guān)注,深度學(xué)習(xí)前沿技術(shù)與工業(yè)應(yīng)用公開課分論壇現(xiàn)場座無虛席,開發(fā)者們擠爆全場,不少參會者甚至坐在地上聽完全部課程。
為滿足現(xiàn)場觀眾對前沿技術(shù)的渴求,本次公開課在每輪演講結(jié)束后特意設(shè)置了多輪問答環(huán)節(jié),與會嘉賓積極踴躍地提問,涉及到實(shí)操性的問題時更是連翻追問,百度的專家講師團(tuán)紛紛給出了耐心詳細(xì)的解答,會后參會者們紛紛表示受益頗豐。
本次公開課的課程內(nèi)容涉及到深度學(xué)習(xí)領(lǐng)域的方方面面,包括深度學(xué)習(xí)的語義計算技術(shù),百度視覺技術(shù)、OCR遷移至Paddle-Fluid版本的工程實(shí)例,PaddlePaddle的新特性,大規(guī)模稀疏數(shù)據(jù)分布式模型訓(xùn)練,移動端深度學(xué)習(xí)技術(shù)及應(yīng)用實(shí)踐,深度學(xué)習(xí)預(yù)測引擎Anakin的優(yōu)化,以及深度學(xué)習(xí)的可視化等,小編梳理了本屆開發(fā)者大會中百度專家講師們的最新研究及實(shí)踐成果,讓我們一睹為快吧。
深度學(xué)習(xí)公開課現(xiàn)場的一角:坐在地上的小伙伴們
百度自主研發(fā)的深度學(xué)習(xí)框架PaddlePaddle
基于深度學(xué)習(xí)的語義計算技術(shù)
百度產(chǎn)品中常見的語義匹配場景包括百度搜索、百度Feed流以及百度拍照搜索等,分別實(shí)現(xiàn)問題與答案匹配、用戶與新聞匹配、圖片與文本匹配的效果。
語義匹配模型包括輸入層、表示層、匹配層和匹配得分四層。
其中表示層需要完成輸入數(shù)據(jù)轉(zhuǎn)化為數(shù)值向量的過程。
匹配層需要完成兩個向量融合并產(chǎn)生打分的過程,表示層和匹配層都可以是一個深度神經(jīng)網(wǎng)絡(luò)。
上圖是百度常見的訓(xùn)練模型,百度擁有海量的用戶行為日志,包括點(diǎn)擊行為和非點(diǎn)擊行為,這些行為通常暗示一種語義關(guān)系,點(diǎn)擊行為的語義更相關(guān),因此要從海量的用戶行為日志信息中挖掘樣本,提取高質(zhì)量弱標(biāo)記數(shù)據(jù),將語義相關(guān)的數(shù)據(jù)作為正例,語義不太相關(guān)的數(shù)據(jù)作為負(fù)例,Query和正例的打分比Query和負(fù)例的打分大,使𝑺↓+ − 𝑺↓−> 𝝈,通過定義目標(biāo)函數(shù)來優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù)。
由于召回端有非常多的結(jié)果,如果用復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型來計算匹配度,系統(tǒng)很難承受,因此可以在召回層對Query做向量表示,將這個表示離線的計算出來,可以大大減少計算開銷。在精排階段,在結(jié)果很少的情況下可使用GPU做復(fù)雜的模擬計算,也就是在匹配層進(jìn)行復(fù)雜計算。
流行的Encoder, Decoder算法組件, Transformer:下載鏈接
接下來舉一個文本生成的例子。我們常用的機(jī)器翻譯模型,其目標(biāo)是把原語言通過神經(jīng)網(wǎng)絡(luò)建模翻譯成目標(biāo)語言,目前學(xué)術(shù)界對翻譯模型的抽象都是基于編碼器和解碼器兩個階段的建模方法。基于用戶輸入的原語言做Decoder編碼,然后對Decoder的詞做最大化的測量估計,在機(jī)器翻譯的解碼過程中,通常對用戶輸入的語言做原語言的編碼,通過Beam Search的方法找到最大可能的翻譯的結(jié)果。Transformer是近兩年比較常用的、效果和速度都比較好的模型,感興趣的開發(fā)者不妨跑一跑。
語言模型是自然語言處理中比較經(jīng)典的問題,其目標(biāo)是學(xué)習(xí)一個詞序列的聯(lián)合概率函數(shù),也就是說這個句子是否常見。如世界杯期間,在百度搜索中搜“阿根廷在”這四個字,“阿根廷在哪個組”這個Query的概率較大。
Neural Network Language Model. Bengio. 2003
上圖是神經(jīng)網(wǎng)絡(luò)中較常見的Neural Network Language Model,它是用神經(jīng)網(wǎng)絡(luò)做語言模型的比較常見的模型。
上圖是一個循環(huán)神經(jīng)網(wǎng)絡(luò),它會不斷融合歷史和當(dāng)前的信息,因此也是作為語言模型比較常見的侯選。
接下來介紹一下百度賣方的NLP的計算服務(wù),在ai.baidu.com網(wǎng)站有很多基于深度學(xué)習(xí)訓(xùn)練的NLP模型的可調(diào)用服務(wù),包括DNN語言模型、詞法分析、短文本相似度、中文情感分析等。百度在NLP方面開源了一些基于PaddlePaddle的項目,如NLP里的中文詞法分析,開源了整個模型訓(xùn)練的配置,以及部署的方法,其中基于深度學(xué)習(xí)網(wǎng)絡(luò),融合了切詞、標(biāo)注,以及專名識別,是三個任務(wù)融合為一體的一個開源項目。
PaddlePaddle應(yīng)用于百度視覺技術(shù)的工程實(shí)踐
百度的AI視覺技術(shù)主要包括四個方面:圖像識別、圖像搜索、視頻理解和機(jī)器人視覺。五年前百度已開始將機(jī)器人視覺全面轉(zhuǎn)向深度學(xué)習(xí)技術(shù),這些技術(shù)大量應(yīng)用于百度內(nèi)部和外部的各種業(yè)務(wù)。
圖像識別是把圖像生成文本標(biāo)簽,包括通用分類,百度內(nèi)部主要的分類模型有文字識別、人臉識別,以及醫(yī)療圖像、圖像審核和一些細(xì)粒度分類等一些特定領(lǐng)域的應(yīng)用,圖像識別主要使用CNN的分類技術(shù)。
圖像檢索是用深度學(xué)習(xí)定義圖像和圖像之間的關(guān)系,圖像檢索主要應(yīng)用于百度識圖,包括圖文檢索、相同圖片檢索,相似圖片檢索以及商品圖片檢索等功能。
視頻理解用于視頻分類、視頻標(biāo)簽等,也大量應(yīng)用于監(jiān)控場景下的目標(biāo)跟蹤、人體姿態(tài)跟蹤等。在小視頻帶來的新型市場環(huán)境下,視頻理解技術(shù)大量應(yīng)用于百度內(nèi)部的業(yè)務(wù)場景中。
機(jī)器人視覺主要用于一些工業(yè)場景,包括深度傳感器、SLAM、嵌入式視覺等,使用大量的嵌入式的技術(shù)。
據(jù)現(xiàn)場專家的介紹,這些AI視覺技術(shù)已經(jīng)開放,同時百度還會不斷通過新的數(shù)據(jù)進(jìn)行持續(xù)迭代,提供更加優(yōu)質(zhì)的服務(wù)。
進(jìn)行視覺技術(shù)研發(fā)的挑戰(zhàn)
百度內(nèi)部有上百個模型同時使用,每天會不斷產(chǎn)生新的數(shù)據(jù),模型迭代需要解決的問題主要有三個方面:一是如何評價對比模型,然后才能選擇最優(yōu)的模型結(jié)構(gòu)或優(yōu)化策略;二是如何快速經(jīng)濟(jì)的訓(xùn)練(復(fù)現(xiàn))這些模型;三是如何沉淀工程和算法經(jīng)驗,供大家共同使用。百度視覺技術(shù)研發(fā)的目標(biāo)是使得機(jī)器學(xué)習(xí)流程化、標(biāo)準(zhǔn)化,構(gòu)建模型持續(xù)快速迭代能力。
接下來介紹一下百度是如何基于PaddlePaddle解決上述問題的。
基于PaddlePaddle的模型研發(fā)
百度內(nèi)部有兩種模型的研發(fā),一是基線模型,是一些基礎(chǔ)的視覺問題,如圖像分類、圖像檢測、圖像跟蹤等,百度將這些問題定義為一個基本的機(jī)器學(xué)習(xí)問題。另一種是業(yè)務(wù)模型,就是針對業(yè)務(wù)場景、業(yè)務(wù)需求來收集數(shù)據(jù),訓(xùn)練模型。這兩種場景下采用不同的方式,使模型的比較和模型的復(fù)現(xiàn)更加容易。
自2017年P(guān)addlePaddle發(fā)布Fluid版本后,基線模型研發(fā)統(tǒng)一采用開源的方式實(shí)現(xiàn),并且通過開源社區(qū)提交基線模型的訓(xùn)練代碼和文檔等研究成果,它的好處在于可以把機(jī)器學(xué)習(xí)的各個步驟進(jìn)行標(biāo)準(zhǔn)化,包括將訓(xùn)練框架統(tǒng)一到PaddlePaddle的最新版本,數(shù)據(jù)讀取、預(yù)處理、網(wǎng)絡(luò)定義、優(yōu)化參數(shù)等接口均實(shí)現(xiàn)標(biāo)準(zhǔn)化,便于模型對比。
PaddlePaddle的技術(shù)支持
1、PaddlePaddle提供標(biāo)準(zhǔn)的符合論文實(shí)現(xiàn)的operator實(shí)現(xiàn);
2、通過PaddlePaddle實(shí)現(xiàn)統(tǒng)一的訓(xùn)練方式,保證單機(jī)單卡、單機(jī)多卡、多機(jī)多卡訓(xùn)練效率和收斂一致性;
3、基于開源社區(qū)開發(fā)新的視覺相關(guān)operator。
Paddle-Cloud 集群訓(xùn)練
Paddle-Cloud平臺的作業(yè)管理
百度內(nèi)部基于PaddlePaddle有一個較好的實(shí)現(xiàn)模型快速迭代的Paddle-Cloud平臺,基于Kubernetes資源調(diào)度、隊列管理、用戶管理等于一身,可管理模型訓(xùn)練,可統(tǒng)一管理訓(xùn)練配置,提供Visual-DL的支持。在數(shù)據(jù)讀取方面,Paddle-Cloud平臺上實(shí)現(xiàn)了統(tǒng)一的數(shù)據(jù)讀取、數(shù)據(jù)倉庫的直讀,保證可以從原始數(shù)據(jù)直接復(fù)現(xiàn)業(yè)務(wù)模型。此外,訓(xùn)練模型可以經(jīng)過平臺訓(xùn)練,直接存儲在模型倉庫中,跟存儲打通。
示例:圖像分類模型的論文結(jié)果復(fù)現(xiàn)——復(fù)現(xiàn)標(biāo)準(zhǔn)的分類模型
示例:圖像分類模型的論文結(jié)果復(fù)現(xiàn)——搭建過程
視覺模塊:已發(fā)布Paddle視覺模型
• 圖像分類:image_classification
• 人臉檢測:face_detection
• OCR識別:ocr_recognition
• 目標(biāo)檢測:object_detection
• 模型轉(zhuǎn)換:image_classification/caffe2fluid
視覺模塊:開發(fā)中的視覺模型
• 圖像特征學(xué)習(xí)
• OCR end2end
• 定點(diǎn)化訓(xùn)練
未來會發(fā)布更多自研模型
• 人臉檢測: 2018 WiderFace 第一名
• 大規(guī)模分類: 2018 Webvision 第一名
• 視頻識別: 2018 ActivityNet 第一名
工程示例:OCR Paddle-v1 遷移到Paddle-Fluid
下面重點(diǎn)介紹一下OCR的工程示例,OCR于三年前開始使用Paddle-V1版本進(jìn)行識別模型訓(xùn)練,由于V1版本已不是主流的維護(hù)版本,因此要將OCR升級到最新的Fluid的版本,把訓(xùn)練統(tǒng)一遷移到內(nèi)部的Paddle-Cloud集群,與此同時,百度一些優(yōu)化的預(yù)測庫也可以應(yīng)用到最新的OCR預(yù)測中。
在此背景下,百度在開源社區(qū)成立了Paddle-vision聯(lián)合項目組,并在遷移的過程中實(shí)現(xiàn)了模型研發(fā)、訓(xùn)練遷移和預(yù)測遷移三大目標(biāo)。
在模型遷移的過程中,項目組將Paddle的一些特殊OP用Fluid的版本進(jìn)行打平,驗證了Paddle-Fluid版本的前向網(wǎng)絡(luò)和Paddle-V1的一致性,同時也驗證了新版本的訓(xùn)練效果。Fluid版本與舊版本Paddle對齊了模型訓(xùn)練指標(biāo),通過對比多種優(yōu)化方法和學(xué)習(xí)率動態(tài)調(diào)整策略,使得整個網(wǎng)絡(luò)的準(zhǔn)確率大幅提升。
模型訓(xùn)練方面,實(shí)現(xiàn)Fluid框架訓(xùn)練OCR英文識別模型,與舊版本Paddle訓(xùn)練出的模型相比,精度相對提升1%。此外,還在Paddle-Cloud上實(shí)現(xiàn)了afs數(shù)據(jù)分發(fā),實(shí)現(xiàn)了Paddle-Cloud進(jìn)行單機(jī)單卡、單機(jī)多卡訓(xùn)練OCR識別模型。
OCR預(yù)測庫接入和封裝需要解決的問題包括:
1、開發(fā)Fluid預(yù)測庫框架,實(shí)現(xiàn)統(tǒng)一接口的封裝;
2、實(shí)現(xiàn)Fluid預(yù)測庫框架下的多batch預(yù)測;
3、攜手sys anakin團(tuán)隊優(yōu)化了GPU預(yù)測速度,加速47%;
4、將fluid-OCR預(yù)測加入到QA自動回歸測試流程,避免因Paddle升級而引入新的bug。
在預(yù)測庫的接入和封裝方面遇到了不少困難,其中包括封裝的接口與原服務(wù)Tcmalloc兼容、預(yù)測加速不明顯、新預(yù)測庫對原檢測系統(tǒng)耗時的影響大等問題。
具體的解決方法如下:
1、在動態(tài)庫里面提供glibc編譯的內(nèi)存釋放接口;
2、與sys anakin團(tuán)隊合作,優(yōu)化了預(yù)測速度;
3、fluid默認(rèn)打開了openblas的多線程。openblas多線程優(yōu)先級較高,導(dǎo)致系統(tǒng)默認(rèn)多線程的資源只能分配到單核CPU上,需要服務(wù)顯式關(guān)閉openblas的多線程。
經(jīng)過一番努力之后,實(shí)現(xiàn)了基于PaddlePaddle Fluid框架訓(xùn)練和預(yù)測的OCR英文識別模型上線。成功上線后,整體中英文系統(tǒng)QPS提升7%,每天影響約1500w含英文文本圖像的OCR流量。
模型研發(fā)總結(jié)
1、基于公開數(shù)據(jù)集對齊公開算法,保證基線模型正確性,標(biāo)準(zhǔn)化數(shù)據(jù)集合和訓(xùn)練步驟,便于橫向?qū)Ρ取?o:p>
2、基于開源方式,百度實(shí)現(xiàn)貢獻(xiàn)到Paddle社區(qū),經(jīng)過重復(fù)review,提升代碼和文檔質(zhì)量,實(shí)現(xiàn)社區(qū)反饋,技術(shù)積累和問題解決。
3、基于PaddlePaddle統(tǒng)一的集群訓(xùn)練方式,實(shí)現(xiàn)一些高級訓(xùn)練特性的快速集成;Paddlemobile,anakin等團(tuán)隊針對不同硬件的優(yōu)化;獨(dú)立的訓(xùn)練QA測試,保證訓(xùn)練結(jié)果隨版本迭代可復(fù)現(xiàn)。
深度學(xué)習(xí)框架PaddlePaddle的新特性與煉成之路
PaddlePaddle能全面支撐Modeling、Training和Serving下的各種AI場景。
Paddle Modeling
Paddle Modeling涵蓋數(shù)百種計算operator和layer組網(wǎng);支持序列變長,動態(tài)batch size;Pre-trained模型開放。
Paddle Training
Paddle Training支持同步,異步分布式;多線程,多GPU,多stream異構(gòu)并行計算;ring,trainer-pserver拓?fù)洹?o:p>
Paddle Serving
Paddle Serving能實(shí)現(xiàn)服務(wù)器端快速部署;匯編層高度性能優(yōu)化;移動端Linux-ARM/iOS/Android/DuerOS多終端支持。
PaddlePaddle Serving靈活適配多種預(yù)測引擎:
- 靈活融合原生計算operator與第三方預(yù)測引擎;
- 默認(rèn)引擎,快速可用;
- 兼容業(yè)內(nèi)流行預(yù)測引擎TensorRT;
- Anakin,百度開源預(yù)測引擎,性能優(yōu)異。
PaddlePaddle Serving的默認(rèn)引擎:
- 統(tǒng)一的training與serving的基礎(chǔ)架構(gòu)和實(shí)現(xiàn),訓(xùn)后模型快速部署。
- 多pass進(jìn)行圖優(yōu)化。
- CPU MKLDNN高性能加速。
- GPU可以混合調(diào)度TensorRT。
PaddlePaddle核心框架
PaddlePaddle Fluid版本主要包含四大組成部分:Python API;模型改寫與優(yōu)化;訓(xùn)練Runtime;CPU/GPU支持。
Python API支持圖像模型、NLP模型、語音模型、推薦模型等各類模型。Python API大致可分為組網(wǎng)類底層API以及執(zhí)行類底層API兩大類別。組網(wǎng)類底層API包含通用、控制、計算、優(yōu)化、IO等類型的API。執(zhí)行類底層API包含訓(xùn)練、預(yù)測、分布式等API。
組網(wǎng)類API
- Variables:Paddle中的變量,可以是Tensor,可以是Parameter,也可以是RPCClient。概念類似高級語言中的變量,可以有不同類型。
- Layers:Paddle中,用戶配置模型的基礎(chǔ)模塊,Layer表示一個或者一組緊密關(guān)聯(lián)的計算,Layers可以通過輸入輸出連接起來。
- Block:Block表示一組連續(xù)的計算邏輯,通常是一個或多個順序Layer組成。通常主模型是一個block0,另外在control flow中,比如while, iflese,也會單獨(dú)形成一個子block。
- Control Flow:Paddle支持if-else, while, switch等編程語言中常見的control flow。以確保模型的靈活表達(dá)。control flow通常以block的形式存在。
- Program:包含了1個或者多個block,表示一個完整的模型執(zhí)行單元。執(zhí)行器需要完整的執(zhí)行Program,并保證讀寫關(guān)系符合用戶的預(yù)期。
執(zhí)行類API
執(zhí)行類API
執(zhí)行類API
示例
訓(xùn)練Runtime
訓(xùn)練Runtime
顯存優(yōu)化
- InPlace Activation
- 反向不需要input,并且輸出和輸入的tensor一致,可以直接overwrite input,節(jié)省顯存開銷。
- Memory Optimizer
- Live variable analysis:分析每個Op的live-in和live-out,找到可以將來被復(fù)用的candidate。在將來的op output中,如果有match candidate的,復(fù)用candidate,節(jié)省顯存分配。
多卡并行-SSA Graph
- 將模型program轉(zhuǎn)換成一個可并發(fā)執(zhí)行的Intermediate Representation (IR);利用Static Single Assignment為variable加version,得到一個正確的依賴關(guān)系;Build Pass中插入通信節(jié)點(diǎn)和額外的依賴關(guān)系。
- 基于圖依賴的執(zhí)行:Input ready的所有operator可以并發(fā)執(zhí)行;Operators在多個GPU上數(shù)據(jù)并行執(zhí)行;多卡gradient聚合,確保數(shù)據(jù)并行中參數(shù)一致。
多卡并行-Profile
多機(jī)分布式
多機(jī)分布式支持ring、pserver兩種模式。ring:自動插入多機(jī)communicator,多機(jī)同步訓(xùn)練,支持高性能RDMA通信。pserver:拆分成trainer program和pserver program。支持同步和異步的分布式訓(xùn)練。Trainer端多線程異步發(fā)送gradient;Pserver端多線程異步apply optimization。
用戶Focus Modeling, 框架自動多機(jī)化部署:
- 發(fā)現(xiàn)optimizer operators,parameters, gradients。
- split和assign他們到parameter server上。
- 在trainer和parameter server上插入發(fā)送和接收的通信節(jié)點(diǎn)。
- 生成在trainer執(zhí)行的program。
- 生成在parameter server執(zhí)行的program。
多機(jī)分布式的通信和集群:
- 支持MPI, RPC等通信方式。
- RPC將來會換成brpc,并提供原生的RPC+RDMA支持,極大提高通信效率。
- 支持Kubernetes集群部署。
多機(jī)分布式下的容錯:
- trainer或者pserver failure后可以重啟恢復(fù)訓(xùn)練。
- 即將支持pserver端的分布式checkpoint和恢復(fù),支持大規(guī)模embedding。
大規(guī)模稀疏數(shù)據(jù)分布式模型訓(xùn)練
在互聯(lián)網(wǎng)場景中,億級的用戶每天產(chǎn)生著百億級的用戶數(shù)據(jù),百度的搜索和推薦系統(tǒng)是大規(guī)模稀疏數(shù)據(jù)分布式模型訓(xùn)練的主要應(yīng)用場景。
如何利用這些數(shù)據(jù)訓(xùn)練出更好的模型來給用戶提供服務(wù),對機(jī)器器學(xué)習(xí)框架提出了很高的要求。主要包括:
- 樣本數(shù)量大,單周20T+。
- 特征維度多達(dá)千億甚至萬億。
- T級別,參數(shù)大。
- 小時級更新,時效要求高。
主要問題包括三個方面:
1. 在千億feature的時候,一個寬度8的 embedding table的參數(shù)量2980.23GB。
2. Feature ID使用hash算法計算,分布在int64范圍內(nèi),難以預(yù)先確定。
3. 輸入特征非常稀疏。(數(shù)百/千億)
分布式查找表(Distribute Lookup Table):
1. 參數(shù)量大:針對數(shù)據(jù)特點(diǎn)的數(shù)據(jù)結(jié)構(gòu)SelectedRows(key-value);分布式存儲;Pserver端 save/load。
2. Feature ID不確定:Auto Growth。
3. 輸入特征稀疏:參數(shù)Prefetch。
系統(tǒng)整體架構(gòu)一
系統(tǒng)整體架構(gòu)二
應(yīng)用優(yōu)化
- Model Average Optimizer:訓(xùn)練中通過窗⼝累計歷史parameter,在預(yù)測時使用average后的parameter,整體提高預(yù)測的精度。
- 序列變長:Batch中序列長度不一,計算時無需填充。
- 動態(tài)Batch:訓(xùn)練中,每個iteration的batch size可變。
移動端深度學(xué)習(xí)優(yōu)化
移動端深度學(xué)習(xí)具有低延遲、節(jié)省流量、節(jié)省吞吐量和隱私安全四大優(yōu)勢,同時也面臨著來自性能、機(jī)型覆蓋、硬件芯片覆蓋、SDK尺寸、內(nèi)存使用、模型尺寸和32位APP限制等多方面的挑戰(zhàn)。
影響移動端深度學(xué)習(xí)性能的硬件包括:
- CPU:緩存預(yù)取,Block 對齊;降低總線帶寬占用;DL預(yù)測加速。
- GPU:矩陣運(yùn)算,DL預(yù)測加速;圖形渲染加速。
- DSP/NPU:DSP高通多媒體芯片;NPU華為AI芯片。
- FPGA:AIG合作研發(fā)ARM的AI框架;落地安防監(jiān)控,各類攝像頭場景。
影響移動端深度學(xué)習(xí)性能的工具:
- ATrace - 從ftrace中讀取統(tǒng)計信息然后交給數(shù)據(jù)分析工具來處理。
- Gprof - gprof精確地給出函數(shù)被調(diào)用的時間和次數(shù)。
- xcode - instrument 動態(tài)調(diào)追蹤和分析OS X和iOS代碼的性能分析。
- streamline - 查看核心數(shù)據(jù)。
影響移動端深度學(xué)習(xí)性能的trick包括編譯選項、循環(huán)展開、內(nèi)聯(lián)、分支優(yōu)先和匯編。
緩存優(yōu)化
neon優(yōu)化
移動端深度學(xué)習(xí)的體積優(yōu)化有編譯選項、避免不必要引入、根據(jù)網(wǎng)絡(luò)適配、定制probuf或者去掉。移動端深度學(xué)習(xí)的能效比優(yōu)化從DSP、GPU和AI處理器三方面著手。
百度已與華為、ARM等多家硬件廠商展開合作。與華為的合作,基于百度視覺搜索SDK驗證,在圖像分類和主體監(jiān)測方面,GoogLeNet-V3和squeezenet兩種網(wǎng)絡(luò)CPU與NPU性能對比,華為AI芯片的NPU加速效果顯著。
百度還與ARM合作,且在Paddle-Mobile 中已經(jīng)融入了ARM的合作成果,在Mali GPU上性能表現(xiàn)優(yōu)異,實(shí)現(xiàn)了在G71 mobilenet 1.0運(yùn)行時的自動切換。
此外,百度專家在本次公開課上還分享了深度學(xué)習(xí)預(yù)測引擎Anakin的優(yōu)化以及深度學(xué)習(xí)的可視化,來自英特爾人工智能產(chǎn)品事業(yè)部的高級經(jīng)理Marcin Rysztowski也分享了《PaddlePaddle在Intel平臺的優(yōu)化》的主題演講。整場公開課可謂干貨滿滿,不難看出百度在深度學(xué)習(xí)領(lǐng)域的成果頗豐。
據(jù)了解,為了更好的幫助開發(fā)者學(xué)習(xí)深度學(xué)習(xí),PaddlePaddle建立了覆蓋線上、線下的全套課程及培訓(xùn)。PaddlePaddle公開課擁有10大系列、400節(jié)課程、累計學(xué)習(xí)時間3000分鐘的在線課程體系,可以覆蓋開發(fā)者的學(xué)習(xí)全階段。
沒有到現(xiàn)場聽課的小伙伴們也不必感到惋惜和沮喪,本次公開課的視頻正在加緊剪輯中,并將在PaddlePaddle的官方微信號上更新,讓我們共同期待吧。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】


















































