0
本文作者: 張夢華 | 2020-08-13 08:52 | 專題:CCF-GAIR 2020 全球人工智能與機器人峰會 |
雷鋒網(wǎng)按:8 月 7 日 - 9 日,由中國計算機學(xué)會(CCF)主辦,雷鋒網(wǎng)、香港中文大學(xué)(深圳)承辦,鵬城實驗室、深圳市人工智能與機器人研究院協(xié)辦的第五屆 CCF-GAIR 2020 全球人工智能與機器人峰會如期落地。
8 日,大會與 AI 研習(xí)社、OpenI 啟智社區(qū)聯(lián)合舉辦“AI 源創(chuàng)專場”,重點討論了新基建背景下,國內(nèi)開源創(chuàng)新建設(shè)將催生的新勢能,以及其將引發(fā)和促進的新產(chǎn)業(yè)機會。
會上,百度深度學(xué)習(xí)技術(shù)平臺部高級總監(jiān)馬艷軍做了主題為《開源深度學(xué)習(xí)平臺助力產(chǎn)業(yè)智能化:百度飛槳的實踐》的分享,他從開源如何為產(chǎn)業(yè)賦能的角度切入,結(jié)合飛槳四年來的成長與實踐案例,就開源深度學(xué)習(xí)框架如何進行生態(tài)構(gòu)建、深度學(xué)習(xí)如何賦能產(chǎn)業(yè)、飛槳的智能化落地案例等給出了清晰的解讀。雷鋒網(wǎng)將馬艷軍的演講進行了不改變原意的編輯,以下為全文:
我跟大家分享的主題是“開源深度學(xué)習(xí)平臺助力產(chǎn)業(yè)智能化”,我會從開源如何給產(chǎn)業(yè)賦能這個角度分享。
飛槳在 2016 年已經(jīng)開源了,時間是比較早的,在這個過程中,我們一直認為,技術(shù)的迭代有兩個方面:
首先,在百度內(nèi)部會有大量的應(yīng)用,并且非常注重配合大量的落地場景,這會驅(qū)動我們做一些事情,比如速度做得更快,部署做得更好。
然后,在這個循環(huán)過程中持續(xù)打磨開源項目。開源以后,我們社區(qū)里的開發(fā)者非常多,他們的要求非??量?。社區(qū)里開源的工程師把代碼亮出來以后,大家都能知道你是如何設(shè)計的,以及你的代碼、文檔有沒有問題。這就對整個編程的易用性、API 的完備性提出了新的要求,這些要求以前在公司內(nèi)不做開源時就不會考慮太多。
這兩個循環(huán)同時進行,就形成了一個產(chǎn)品。
現(xiàn)在的飛槳框架部分已經(jīng)滿 70 萬行代碼,是工程量非常大的工作。如果再加上圍繞核心框架的周邊一系列的模型、工具,現(xiàn)在飛槳有 200 萬行代碼。這樣規(guī)模的工程量,要想真正讓它打磨得比較順暢,需要慢慢做,確實沒辦法一下子放出一個跑起來不出問題的大型的工程系統(tǒng)。
飛槳經(jīng)過這么長時間,已經(jīng)形成完整的體系,現(xiàn)在有一些能力可以直接在平臺上使用。
開源深度學(xué)習(xí)框架的建設(shè)和很多開源項目有一定的差異性。很多開源項目是把這個開源項目做好,其他人拿去用就可以了。但深度學(xué)習(xí)框架上下游的生態(tài)比較復(fù)雜,我們經(jīng)常說,它是一個生態(tài)系統(tǒng)的問題。生態(tài)系統(tǒng)里要和很多芯片做對接,因為要基于它做算法研發(fā),再被集成解決方案,形成比較深的產(chǎn)業(yè)鏈條,由此就形成了生態(tài)。
所以,開源深度學(xué)習(xí)框架和一般開源項目的差異性就在于,它的生態(tài)體系構(gòu)建非常關(guān)鍵,比如說 飛槳放在這兒沒人用那它就掛了,因為沒有生態(tài)體系和它一起聯(lián)動。沒有生態(tài)的構(gòu)建很成問題,現(xiàn)在國內(nèi)的深度學(xué)習(xí)框架一直朝著生態(tài)構(gòu)建的方向發(fā)展,開源就是幫助構(gòu)建生態(tài)的很好的方式。
飛槳發(fā)展了這么長時間,在很多行業(yè)中已經(jīng)被應(yīng)用,使用的場景也很多。AI 在應(yīng)用時和行業(yè)綁定非常緊密,需要結(jié)合很多行業(yè)專家的知識,并和 AI 技術(shù)平臺一起設(shè)計可在企業(yè)中應(yīng)用的更完整方案。
另一方面,深度學(xué)習(xí)框架需要和芯片做深度的對接適配才能達到高性能?,F(xiàn)在芯片的種類還是蠻多的,把芯片設(shè)計好需要非常大的工作量,芯片企業(yè)要做更多的貢獻才能把能力提升上來。
現(xiàn)在真實應(yīng)用中使用的芯片類型也是不一樣的,環(huán)境差別很大。真正要讓深度學(xué)習(xí)框架在芯片上跑起來,是非常大的工程,可能得投入不小的工程團隊開發(fā)一年左右,才能把整個硬件的功能進行很好的適配。
咱們國家做開源很重要,需要時間投入,耐心把這事兒做了,沒有巧妙的辦法把工程開發(fā)的時間繞過去。一定要投入時間,把這些工程開發(fā)做了才有更好的發(fā)展基礎(chǔ)。
飛槳一直和國內(nèi)外的芯片企業(yè)都有非常緊密的合作,做軟硬件的適配,社區(qū)也有快速的成長。到現(xiàn)在,整個飛槳在 Github 共有 45000 的 Star。
做項目的過程中,第三方的生態(tài)貢獻增長非常重要。第三方生態(tài)貢獻增長是指什么?比如飛槳這個項目,很多的開發(fā)不是百度工程師做的,還有一些其他人在基于這個做出新的項目和更多的貢獻,這就是第三方的貢獻。我們很高興地看到,今年上半年,由于疫情原因,大家的時間變多了,貢獻也非常踴躍,Star 數(shù)增長速度非???,整個生態(tài)也在快速成長。這說明國內(nèi)的開發(fā)者也在積極主動做這樣的事情。
飛槳也有一個開發(fā)者專家計劃(PPDE),希望不同層次的開發(fā)者都能夠加入到這里面做貢獻,可以給框架做貢獻,也可以貢獻算法庫,貢獻各種各樣的應(yīng)用工具,由此形成整套開發(fā)體系。非常歡迎開發(fā)者加入這個項目。
飛槳核心技術(shù)
我們常常說飛槳有幾個特點:
一是框架層,我們是動態(tài)圖和靜態(tài)圖統(tǒng)一設(shè)計的框架,希望可以從動態(tài)圖編程轉(zhuǎn)成靜態(tài)圖部署,并做到極致。
另外是訓(xùn)練。百度做大規(guī)模的數(shù)據(jù)處理,天然需要有大規(guī)模訓(xùn)練能力。這個大規(guī)模訓(xùn)練也有很大的挑戰(zhàn),包括真正做了大規(guī)模、分布式,飛槳的大規(guī)模分布式訓(xùn)練已經(jīng)經(jīng)過了實踐驗證,比如速度提上來了,收斂性怎么樣,精度是否有保證,這些都需要在實踐檢驗中持續(xù)打磨。
再就是部署,對多種硬件的支持。飛槳目前已經(jīng)支持非常多的硬件,尤其對國產(chǎn)芯片也進行了深入的適配融合。
最后是模型算法。飛槳開放了很多的算法,這上面的算法有 146 個,工業(yè)界使用比較廣泛的基本都涵蓋了。
動態(tài)圖的編程是飛槳主推的,代碼的行數(shù)、編程靈活性都提升很多,語義理解的算法現(xiàn)在都是動態(tài)圖實現(xiàn)。
大規(guī)模分布式訓(xùn)練在 CPU 和 GPU 上都有做,并且支持異構(gòu)硬件的訓(xùn)練,我們也做了大規(guī)模的稀疏參數(shù)訓(xùn)練,這些在公司內(nèi)用得很多,多種大規(guī)模的分布式訓(xùn)練模式都能支持。
大家可以看到,部署是多種平臺、多種操作系統(tǒng)都支持。這就是部署麻煩的地方,要適配的環(huán)境很多、很復(fù)雜,需要很多的工程化工作才能把部署做上去。
現(xiàn)在飛槳的模型庫算法很多,涵蓋的任務(wù)也很多,這些算法我們都做了比較多的調(diào)優(yōu)工作,把算法的速度、訓(xùn)練的速度、參數(shù)本身設(shè)計到最優(yōu)。
飛槳助力產(chǎn)業(yè)智能化:案例剖析
互聯(lián)網(wǎng)行業(yè)對深度學(xué)習(xí)的擁抱是非常明顯的,但要進一步擴展到更多的行業(yè),還有非常大的空間。今天的案例不是互聯(lián)網(wǎng)行業(yè),而是實體經(jīng)濟——無人巡檢的場景。
我們是制造業(yè)大國,制造在我們國家占的 GDP 比重非常大。在真實的生活中,很多事情需要檢測,比如設(shè)備是否可以正常運轉(zhuǎn);工廠里也常常有很多檢查,比如聽到設(shè)備發(fā)生異響,這些都是真實場景里遇到的。
深度學(xué)習(xí)在真實場景中的應(yīng)用面臨的挑戰(zhàn)非常多,比如它有可能算力非常低,不像很多互聯(lián)網(wǎng)公司有大型的服務(wù)器。在很多真實的行業(yè)場景,不僅很多算力很低,也沒那么多的內(nèi)存,這種情況下,要把深度學(xué)習(xí)技術(shù)真正應(yīng)用到行業(yè)中就需要克服很多不一樣的挑戰(zhàn)。
舉一個例子,要監(jiān)測哪兒有沒有著火,需要在某個位置架設(shè)一個攝像頭,把深度學(xué)習(xí)影像拍到。這是挺復(fù)雜的系統(tǒng),深度學(xué)習(xí)的模型訓(xùn)練只是其中一環(huán),行業(yè)里的業(yè)務(wù)系統(tǒng)是比較復(fù)雜的,即使設(shè)計了一個系統(tǒng),跟業(yè)務(wù)系統(tǒng)再對接也是非常復(fù)雜的工作。這個過程就需要后臺的訓(xùn)練,從數(shù)據(jù)標注到模型訓(xùn)練,通過攝像頭、相機、光源一系列的因素,包括無人機的配合,在邊緣端進行計算,和后臺形成聯(lián)動,最后形成預(yù)警系統(tǒng)。
整個系統(tǒng)搭建需要很復(fù)雜的設(shè)計,這個理念會涉及比較難的技術(shù)點,比如檢測有沒有著火,需要目標檢測技術(shù)。飛槳開源的目標檢測工具 PaddleDetection 里面有一些非常經(jīng)典和實用的算法,結(jié)合真實的場景、少量的數(shù)據(jù),效果基本上足夠你用。內(nèi)存要求有限,ARM 算力有限,可以通過 PaddleSlim 把模型變小。
另外需要部署,要部署在 ARM 架構(gòu)的芯片上面,快速運行,這其中的技術(shù)選型就非常關(guān)鍵。
我們通過技術(shù)使得很小的模型識別的精度也可以非常高。煙霧檢測一方面要有高準確率,再就是推理速度,比如著火這種應(yīng)急場景下,對性能的要求非常高。
這是今年在淄博發(fā)生的一件真實的事情。高壓線底下著火,通過剛剛的技術(shù)方案,可以真正發(fā)現(xiàn)并解決問題。
目標檢測在真實場景中應(yīng)用非常多,是復(fù)雜的技術(shù),里面涉及到的組件非常豐富,另外還需要把壓縮能力和部署能力打通,涉及到的工程化工作非常多。這些都是通過 PaddleDetection 開源的。我們提供了一系列的算法,開發(fā)者可以非常靈活地組合自己想要的算法。當然我們也提供了在什么場景下用什么最好的組合方案,直接給出了幾款應(yīng)用最多、效果最好的算法。
算法豐富性、精度、速度以及一系列的驗證,這個套件已經(jīng)在很多場景下做了很多工作,基本上可以放心用到工業(yè)、企業(yè)里。
訓(xùn)練完這些模型以后,我們需要做一些壓縮工作。算力畢竟有限,部署的場景非常復(fù)雜,有可能是服務(wù)器,有可能是邊緣端、網(wǎng)頁端的程序,也有可能集成到軟件上或是做服務(wù),部署的環(huán)節(jié)是非常復(fù)雜的流程,需要做非常多的工作。
我們把主流的壓縮方案都做了,跟檢測、分割算法庫結(jié)合可以直接實現(xiàn)模型的壓縮和使用。通過 Paddle Lite,可以實現(xiàn)的算法適用比較多,現(xiàn)在在飛騰、寒武紀、百度昆侖、RK、華為NPU、MTK APU 等多種芯片都可以實現(xiàn)端到端的使用。
飛槳在百度 AI 中是基礎(chǔ)底座,對于整個 AI 平臺而言是底層技術(shù),這個基礎(chǔ)上會有一系列的定制化開發(fā)以及 AI 能力,比如語音、語言、視覺,再結(jié)合一些場景化的方案,最終會形成一整套具備 AI 能力的完整方案。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。
本專題其他文章