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