基于百度英伟达EasyDL公开课的学习笔记
本文是基于智東西公開課《零算法基礎(chǔ)的百度EasyDL定制化圖像識別揭秘》整理的學(xué)習(xí)筆記
本文非廣告,標(biāo)注單純是出于尊重智東西和EasyDL的知識產(chǎn)權(quán)
如若涉及侵權(quán),請聯(lián)系本人
作者:李皮皮
謝絕任何不標(biāo)注原出處的轉(zhuǎn)載以及百度百家號抄襲
?
本次公開課為期一小時,涉及四個方面:
1. AI賦能行業(yè)的的痛點(diǎn)
2. EasyDL服務(wù)端和設(shè)備端技術(shù)解析
3. GPU集群加速EasyDL訓(xùn)練與推理
4. EasyDL賦能行業(yè)案例分享
AI賦能行業(yè)的痛點(diǎn)
在目前的AI行業(yè)中,需求大致可以分為兩種:通用需求和定制需求。
對于通用需求,我們可以用通用模型解決。例如語音識別,圖像識別,OCR,人臉識別等。
對于定制需求,則是一些通用模型解決不了的問題。例如輔助醫(yī)藥工作者對中草藥進(jìn)行鑒定,生物研究輔助研究員對生物品種進(jìn)行分類……在本科階段,北京郵電大學(xué)經(jīng)管院的陳霞老師曾告訴過我們,電子商務(wù)做的就是抓用戶的痛點(diǎn),這一點(diǎn)也同樣適用于互聯(lián)網(wǎng)行業(yè)。根據(jù)百度AI技術(shù)生態(tài)部高級算法工程師趙鵬昊老師的介紹,AI定制需求的核心訴求大概有三個:
(1)客戶往往需要使用自己的數(shù)據(jù)訓(xùn)練自己特有的模型
(2)客戶通常對自己領(lǐng)域都有很強(qiáng)的專業(yè)知識,但是并不了解深度學(xué)習(xí)(以下簡稱DL),也不愿意去做復(fù)雜的模型訓(xùn)練、服務(wù)部署和運(yùn)維
(3)客戶的需求往往比較急切,希望快速驗證模型效果(并直接獲得可集成的定制化服務(wù)API和私有化部署能力)
根據(jù)這些痛點(diǎn),百度的EasyDL應(yīng)運(yùn)而生,大致服務(wù)流程如下:
——圖片摘自智東西公開課課件
?
這款產(chǎn)品的亮點(diǎn)是,它不僅提供云端的API服務(wù),更提供了離線SDK的服務(wù),能讓用戶在線下部署自己的私有化定制。
EasyDL服務(wù)端和設(shè)備端技術(shù)解析
在EasyDL的服務(wù)端,有下面幾種核心技術(shù):AI Workflow分布式引擎,百度自創(chuàng)PaddlePaddle深度學(xué)習(xí)框架,遷移學(xué)習(xí),Auto Model Search機(jī)制, early stoopping機(jī)制,模型效果評估機(jī)制。下面來一一了解一下。
對于一個DL建模,大致工作流程如下:
(1)在數(shù)據(jù)倉庫提取數(shù)據(jù)
(2)ETL*進(jìn)行數(shù)據(jù)清洗,特征提取,驗證集的切分
(3)分布式訓(xùn)練
(4)模型評估
(5)自動服務(wù)(auto serving)
?
* ETL(以下解釋摘自百度百科《ETL》【1】):?
ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽取(extract)、交互轉(zhuǎn)換(transform)、加載(load)至目的端的過程。ETL一詞較常用在數(shù)據(jù)倉庫,但其對象并不限于數(shù)據(jù)倉庫。
ETL是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán),用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中去。
信息是現(xiàn)代企業(yè)的重要資源,是企業(yè)運(yùn)用科學(xué)管理、決策分析的基礎(chǔ)。目前,大多數(shù)企業(yè)花費(fèi)大量的資金和時間來構(gòu)建聯(lián)機(jī)事務(wù)處理OLTP的業(yè)務(wù)系統(tǒng)和辦公自動化系統(tǒng),用來記錄事務(wù)處理的各種相關(guān)數(shù)據(jù)。據(jù)統(tǒng)計,數(shù)據(jù)量每2~3年時間就會成倍增長,這些數(shù)據(jù)蘊(yùn)含著巨大的商業(yè)價值,而企業(yè)所關(guān)注的通常只占在總數(shù)據(jù)量的2%~4%左右。因此,企業(yè)仍然沒有最大化地利用已存在的數(shù)據(jù)資源,以至于浪費(fèi)了更多的時間和資金,也失去制定關(guān)鍵商業(yè)決策的最佳契機(jī)。于是,企業(yè)如何通過各種技術(shù)手段,并把數(shù)據(jù)轉(zhuǎn)換為信息、知識,已經(jīng)成了提高其核心競爭力的主要瓶頸。而ETL則是主要的一個技術(shù)手段。
這里需要注意,可能我們會有一個誤區(qū)——AI訓(xùn)練集不需要太大。其實,AI的訓(xùn)練集往往都符合大數(shù)據(jù)的經(jīng)典3V原則*,所以我們需要用MongoDB,Hadoop的DFS做數(shù)據(jù)存儲、用spark集群做分布式預(yù)處理和模型評估、使用百度的PaddlePaddle調(diào)用框架建模,最后把訓(xùn)練好的模型通過Docker技術(shù)做AI平臺服務(wù)。個人認(rèn)為這是一個很好的學(xué)習(xí)指南,讓大數(shù)據(jù)工程師能夠很好查漏補(bǔ)缺。
大數(shù)據(jù)經(jīng)典3V原則(摘自動點(diǎn)科技文章【2】):
如果你問人們,大數(shù)據(jù)是什么?比較樣板化的答案通常是三個 V:數(shù)量(volume),效率(velocity)和廣闊性(variety)。接下來他們會開始討論,他們的數(shù)據(jù)到底有多大才能被定義為“大數(shù)據(jù)”。當(dāng)你開始看到實際技術(shù)的時候,事情開始變得比較復(fù)雜。這些主要的挑戰(zhàn)使事情發(fā)展到,今天已經(jīng)沒有單一的一種科技可以一次性處理有關(guān)于大數(shù)據(jù)的三個 V 的所有問題——數(shù)量。效率和廣闊性。
?
剛才提到了的核心技術(shù)除去AI workflow, 還有百度自創(chuàng)PaddlePaddle深度學(xué)習(xí)框架。PaddlePaddle全名叫做PArallel Distributed Deep Learning, “是一個深度學(xué)習(xí)框架/語言”。在EasyDL中,Paddle有如下應(yīng)用示例:
——摘自智東西公開課課件
可以看到,它可能是一個類TensorFlow的框架,具體我也沒有了解過,就過了。
下面重點(diǎn)講一下遷移學(xué)習(xí)(transfer learning)*。在我看來,遷移學(xué)習(xí)在百度這個產(chǎn)品中占據(jù)的是核心地位,為什么呢?因為普通的機(jī)器學(xué)習(xí)不能很好滿足客戶需求。一般來說有定制化需求的客戶的標(biāo)注數(shù)據(jù)都是很有限的,甚至其領(lǐng)域內(nèi)的數(shù)據(jù)標(biāo)注成本非常高。在這樣的情況下,客戶的需求確實通過較少的數(shù)據(jù)快速獲得可用且準(zhǔn)確率較高的模型。一般來說,從開頭開始搭建神經(jīng)網(wǎng)絡(luò)顯然不符合這樣的客戶需求。為了解決這個矛盾,百度使用了遷移學(xué)習(xí)。舉個栗子,做中草藥識別模型時,EasyDL會將已有的植物識別模型運(yùn)用到中草藥識別當(dāng)中去:將百度大規(guī)模標(biāo)注的數(shù)據(jù)集在深度神經(jīng)網(wǎng)絡(luò)上做預(yù)訓(xùn)練,將預(yù)訓(xùn)練參數(shù)加入神經(jīng)網(wǎng)絡(luò)中做調(diào)解(遷移學(xué)習(xí)),從而大大提高效率。這樣可以將幾十個小時的訓(xùn)練降低到幾小時甚至幾分鐘量級。此外,EasyDL還支持多點(diǎn)預(yù)訓(xùn)練,持續(xù)閉環(huán)等機(jī)制,使得工作流實現(xiàn)配置化和自動化。
遷移學(xué)習(xí)(摘自知乎用戶“劉詩昆”關(guān)于《什么是遷移學(xué)習(xí)(Transfer Learning)?這個領(lǐng)域歷史發(fā)展前景如何?》的回答【3】)
遷移學(xué)習(xí)(Transfer learning) 顧名思義就是就是把已學(xué)訓(xùn)練好的模型參數(shù)遷移到新的模型來幫助新模型訓(xùn)練。考慮到大部分?jǐn)?shù)據(jù)或任務(wù)是存在相關(guān)性的,所以通過遷移學(xué)習(xí)我們可以將已經(jīng)學(xué)到的模型參數(shù)(也可理解為模型學(xué)到的知識)通過某種方式來分享給新模型從而加快并優(yōu)化模型的學(xué)習(xí)效率不用像大多數(shù)網(wǎng)絡(luò)那樣從零學(xué)習(xí)(starting from scratch,tabula rasa)。
這里不禁想感嘆一下當(dāng)時學(xué)《電子商務(wù)概論》課程時,就覺得百度和騰訊是緊緊抓住了流量入口的。現(xiàn)在百度的搜索引擎產(chǎn)生的數(shù)據(jù)量真是奠定了其數(shù)據(jù)霸主的地位啊。
此外,EasyDL還使用了Auto Model Search 和 Early stopping機(jī)制,讓少兩樣本就能有用高精度。Auto Model Search就是對模型結(jié)構(gòu)和超參數(shù)做自動搜索,更好匹配不同類型數(shù)據(jù),做最佳模型。而early stopping呢,能夠降低過擬合風(fēng)險。做過DL的同學(xué)應(yīng)該都有體會,DL是能分分鐘過擬合的,對于這種風(fēng)險,early stopping能很好抑制過擬合和欠擬合。目前EasyDL的模型絕大多數(shù)準(zhǔn)確率都在80%以上。
技術(shù)本身是一方面,學(xué)統(tǒng)計的同學(xué)肯定有體會,模型的評估也是至關(guān)重要的。在呈現(xiàn)評估結(jié)果時,EasyDL就非常好的利用了混淆矩陣的各個指標(biāo)和F1-score,做了盡可能精細(xì)的結(jié)果展示。這里我覺得有一個亮點(diǎn),就是bad case的展示。一般可能大家是不愿意把擬合的不好的結(jié)果放出來的,但是百度這里把badcase放出來,讓客戶對預(yù)測結(jié)果有了一個感性的認(rèn)知。再結(jié)合其領(lǐng)域內(nèi)專業(yè)知識,說不定可以很好解決錯誤分類的問題,而且也有利于他們專門對錯誤分類的數(shù)據(jù)做一個訓(xùn)練集的補(bǔ)充。
下面來學(xué)習(xí)一下EasyDL設(shè)備端計算(Edge Computing)。據(jù)趙鵬昊老師說,這個設(shè)備端的實現(xiàn)是谷歌目前都沒有的。這個創(chuàng)意我覺得超級好,現(xiàn)在真的有一點(diǎn)資源浪費(fèi)嚴(yán)重了,上云就是高大上,但是并不是所有開發(fā)都需要云端才能完成的,夠用就可以了。EasyDL在自己的設(shè)備上就可以完成,如果算力不夠,就會進(jìn)入霧計算;如果霧計算也不能滿足需求,才會啟動云計算。這樣的多層計算結(jié)構(gòu)很好的抑制了浪費(fèi)(就是不知道真實情況如何了)。然后放一個云計算和設(shè)備端計算的對比課件:
?
服務(wù)器集群訓(xùn)練的機(jī)器學(xué)習(xí)模型通常大小都在200MB-500MB,其本質(zhì)原因是模型含有上千萬的單精度浮點(diǎn)參數(shù)。顯然對于手機(jī)這樣的設(shè)備端是不可能給這么多內(nèi)存來計算的。所以就需要對模型進(jìn)行體積壓縮,通常目標(biāo)體積為20MB-30MB。采用的壓縮技術(shù)有:參數(shù)剪枝(Pruning),將浮點(diǎn)數(shù)量化成8bit或者4bit的數(shù)值,輕量網(wǎng)絡(luò)(SqueezeNet, MobileNet)。
除去壓縮問題,還有設(shè)備加速問題,這里通過異構(gòu)芯片實現(xiàn)加速。還有一個小知識點(diǎn),對于IOS的游戲開發(fā),MPS庫是一個常用的加速手段,更好利用IOS上的GPU做加速。還有使用ARM芯片通過NEON技術(shù)加速。
GPU集群加速EasyDL訓(xùn)練與推理
這一趴老師主要講了一下英偉達(dá)GPU*集群的構(gòu)成。通常使用的是英偉達(dá)特斯拉系列搭建平臺,有P4, P40, V100這三個版。P4顯存8G, P40顯存24G, 所以通常用P4做部署,P40和V100做訓(xùn)練。結(jié)論就是GPU集群在做圖像分類和物體檢測時,性能遠(yuǎn)超CPU集群。EasyDL用戶最快五分鐘就可以使用小規(guī)模數(shù)據(jù)集訓(xùn)練,完成定制化模型并獲得服務(wù)。并且GPU集群的分布式架構(gòu)能夠確保任何單節(jié)點(diǎn)的故障都不會影響整體的服務(wù)能力。
其實有一個細(xì)思極恐的問題,百度的EasyDL能夠在短時間內(nèi)完成如此快速的計算,一方面是算法等百度自身開發(fā)的功勞,但是有一個大功勞是英偉達(dá)的(“P4提升吞吐量高達(dá)30倍,同時延遲降低75%”)。不禁讓人想起了中興的慘案。核心的技術(shù)還是掌握在別人手里。
GPU與CPU的區(qū)別與聯(lián)系(摘自CSDN用戶“JackZhangNJU”的文章【4】)
從硬件來分析,CPU和GPU似乎很像,都有內(nèi)存、cache、ALU、CU,都有著很多的核心,但是二者是有區(qū)別的。
但以核心為例,CPU的核心比較重,可以用來處理非常復(fù)雜的控制邏輯,預(yù)測分支、亂序執(zhí)行、多級流水等等CPU做得非常好,這樣對串行程序的優(yōu)化做得非常好;
但是GPU的核心就是比較輕,用于優(yōu)化具有簡單控制邏輯的數(shù)據(jù)并行任務(wù),注重并行程序的吞吐量。
簡單來說就是CPU的核心擅長完成多重復(fù)雜任務(wù),重在邏輯,重在串行程序;GPU的核心擅長完成具有簡單的控制邏輯的任務(wù),重在計算,重在并行。
另外,并行和并發(fā)的概念是不一樣的,并行就是大家一起干,同時去做,并發(fā)就是多線程競爭資源
EasyDL賦能行業(yè)案例分享
這一部分是我覺得最有意思的了。目前EasyDL能解決的問題有三類,圖像分類、物體檢測和定制聲音識別,還在開發(fā)別的功能(文字分類,情緒情感分析,視頻監(jiān)控)。給出了四個案例:
(1)蝶魚科技:使用3000張圖片訓(xùn)練,在制造和組裝鍵盤流水線中,識別鍵盤組裝后的合格性,將鍵盤圖片分類。每條生產(chǎn)流水線每年節(jié)省12萬人工檢測員人力成本,準(zhǔn)確率高達(dá)99%【科技是第一生產(chǎn)力啊。。。真是可怕】
(2)checkpoint零售安防:這是美國的一家連鎖超市,用于識別購物車下層是否有未付款商品,需求是精準(zhǔn)排除殘疾人購物車和兒童購物車。之前該公司使用的是傳感器,準(zhǔn)確率極差,使用了DL后,準(zhǔn)確率高達(dá)95%。據(jù)老師說,目前該公司計劃全部更新店鋪設(shè)備,使其能與百度EasyDL全面接軌。
(3)惠合科技e店佳:這個也非常有意思,是通過拍攝視頻來識別超市的物品陳列是否符合要求。在以往,需要專人到店鋪挨個檢查,不但耗時耗力,還有很多作弊情況。使用DL后,審核效率提升了30%。這讓我想到了除去法律和道德,科技也可以做到約束人性丑惡,減少作弊。
(4)CELLA(百度合作伙伴):CELLA為圣象地板做木地板瑕疵檢測木星,并且發(fā)布生成離線SDK.檢測率高達(dá)95%,提高了產(chǎn)能——處理單片木板原料的單位時間僅為原來的四分之一。
當(dāng)然EasyDL也存在很多問題,我能想到的一個就是目前的數(shù)據(jù)標(biāo)注問題,老師也提到目前是用戶自己標(biāo)注,后面可能會有眾包。
真是該好好關(guān)注一下各大互聯(lián)網(wǎng)公司的AI部署了,感覺自己好落后~~
參考文獻(xiàn):
【1】https://baike.baidu.com/item/ETL/1251949?fr=aladdin
【2】https://cn.technode.com/post/2013-11-08/3v-big-data/
【3】https://www.zhihu.com/question/41979241
總結(jié)
以上是生活随笔為你收集整理的基于百度英伟达EasyDL公开课的学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建一个在若干工具上交易的 EA 交易程
- 下一篇: 如何使用 UML 工具开发 EA 交易