平安科技高級算法工程師瞿曉陽:雲端終端雙場景的AI加速研究

平安科技高級算法工程師瞿曉陽:雲端終端雙場景的AI加速研究


10月28日FMI2018人工智能與大數據高峰論壇深圳場圓滿落幕,平安科技高級算法工程師瞿曉陽就雲端終端雙場景的AI加速研究進行了精彩的分享。

以下是瞿曉陽演講全部內容,飛馬網根據現場速記進行了不改變原意的編輯(有刪減):

瞿曉陽:大家好!我今天講的是《雲端終端雙場景的AI加速研究》。

分享分為四大部分:一是背景;二是雲端AI加速;三是終端;四是總結。

第一部分:背景

人工智能的發展歷史可以用一句話總結:一個地點(達特茅斯會議)、兩次寒流、三個名人(圖靈、維納、約翰·麥卡錫)。

人工智能有三大學派:符號主義、聯結主義、控制論學派。

符號主義是字體向下或者字體向上的方法,什麼都將有規則和推理,人工智能也是用推理實現的。

聯結主義學派是當下很火的深度學習,是人工自動特徵提取,是仿生學派。

控制論學派,控制論之父是維納,這個學派主要以反饋為核心來實現人工智能。

今天講深度學習,屬於聯結主義學派,也是仿生學派,是仿生人的大腦。人的大腦神經細胞有兩個數據,抽象的是100億個神經元;具體的是140億神經元。神經元的數量從某種角度可以判斷人的智商。神經連接就是把100億神經元相互連接起來,它的長度可以繞到月球再繞回來。神經連接非常重要,生物學數據顯示兒童2歲之前每兩週建立上千級別的神經連接,現在達到百萬級別,等於每秒有百萬神經元的神經連接,現在很多早教內容涉及到這個問題。神經連接是每秒百萬級別的神經連接的建立,它受三個因素的決定,一是基因,二是環境,三是自身。

2006年發表的三篇文章標誌深度神經網絡的正式開始。深度信念網絡、深度自動編碼等,在當時解決的是自動初始化問題,即如果神經網絡初始化的效果很好,就不會進入局部最優,而是進入全局最優。生物學也顯示人的大腦神經連接不是隨機連接,而是根據基因建立,很多記憶對事物的認知能力是從祖輩和元人時代一點點傳遞下來。

我們大腦的神經連接都有冗餘性(冗餘性是指大腦的開發量不大)。我們的大腦大部分沒有使用,存儲的東西也不是存在一個局部,而是分佈在很多地方。

機械思維與數據思維

另一個學派是機器主義學派,即邏輯學派。邏輯學派講究的是任何東西都可以推理出來。我們知道,天王星是業餘愛好者通過天文觀測找到的,但是海王星是兩個天才算出來的,一位是劍橋大學的大學生亞當斯,還有一位是法國的勒威耶。他們都是通過推理計算找出來,這就是傳統的機械思維,用牛頓定律把它給算出來。

物理界有兩個分界線,1920年,前面是牛頓,後面是量子和相對論。萬有引力無法計算電子運算,因為電子雲的運行速度很快,如果用麥克斯韋方程計算,速度太快,會以電磁波的形式輻射出去,跌落到原子核上。這時候要轉變為數據思維。你用大數據利用概率知道它出現在什麼位置。這是機械思維與數據思維的特點。

機器學習與深度學習

機器學習是人工特徵的,深度學習是自動特徵提取。機器學習需要垂直領域的專業知識,如果搞金融,一定要有自己垂直領域深厚的知識,因為你看到別人看不到的,再結合機器學習來做人工特徵提取。人工和機器的理解方法是不一樣的。機器學習是靠人工告訴它特徵,深度學習是自己找特徵,這是兩者的區別,其實就是邏輯學派和它一部分的分支。

深度學習的發展

1982年Yann LeCun,就是現在Face book的首席,他當時的卷積神經網絡在1998年到2012年,這中間已經隔了14年,這14年卷積神經網絡沒有起來的原因是被知識向量機吊打,知識向量機的效果,傳統機器學習的效果比深度學習好很多,深度學習當時面臨兩個問題,一是數據過擬合問題,二是陷入局部最優。

2012年,Alex建立了卷積神經網絡。

2014年的冠軍VGG是牛津大學還是劍橋大學的人,NIN是新加坡國立大學那邊的,還有GoogleNet,然後殘差網絡,一步步發展。

AI加速的意義

深度學習模型不斷演進,使得精度越來越高、層次越來越深、模型越來越複雜,參數也越來越多。加速的目的從雲端來講是為了加快訓練速度;移動端則是為了減少推斷消耗算力和IO;此外,加速可以消除冗餘,提高泛化能力。

第二部分:雲端AI加速

屬於並行計算,並行計算的方法歸納為7個:

向量化

並行裡面,搞分佈式計算的人不多。數據並行分為兩種,數據並行和模型並行。以TensorFlow作為例子,它分為參數服務器和work,每個work機裡面都會放部分數據,這樣就實現數據並行。模型並行現在支持的比較少。並行面臨的挑戰有兩個:一是機器的異質性;二是線性擴展問題,這是機器學習裡面最大的問題,不是算力的問題,而是通信問題,節點越增多,通信量會隨之增多,這種情況下會導致網絡效率不好;三是模型越來越大,現在模型,如果想效果更好,有時候拿更大的模型真的效果會好很多,如果要部署到移動端,你的模型太大就是很大的問題,現在搞模型小型化的人很多,大家都想知道怎麼把模型放到機器裡面,放到機器人或者自動駕駛裡面,實現離線部署,特別是政府部門,他們都講究離線部署,他們不希望自己的數據是流出來的。

改變一致性模型

大家知道同步和異步如果有1024臺機器,其中一臺機器磨損太厲害,速度非常慢,用同步的話,1023臺機器都等那臺,大家都等它來了之後做規約計算,這就太慢。一致性有同步和異步。第三種方案是折中的,它的文章是ATC上發表的文章,他們自己做的也是用這套技術,其實很多公司把這個引進來了,它是做了折中方案,是同步和異步的折中。

流水線技術

卡內基梅隆他們公司提出的幾個技術很厲害,是計算機的頂級學府,他們的牛人十分可觀。這個技術是他們提出來的,流水線,他們發現梯度計算和全值更新的時候,根本沒有必要等,傳統的方法是計算,把梯度發出局再把更新的梯度拉回來,這時候把流水線變得更好,有的地方是計算還有把梯度推出去,還有更新的梯度拉回來,使用疊加方式,把計算和通信重疊,提高這種加速比速度會進一步加深。

大批量

機器學習、深度學習裡面一個是梯度下降、一個是隨機梯度下降,梯度下降是完備的數據,假設有一百萬條數據,對一百萬條數據全部計算一遍之後再進行梯度更新。隨機梯度下降是另外一種極端,隨機梯度下降是每個數據只要計算一遍更新梯度,這樣是兩個極端,右邊的梯度下降很容易陷入局部最優,然後很難得到全局最優,離初始值,到最小值就不會再迭代,隨機梯度往往可以找到更好的值。數據並行越多、數據樣本越多,這時候就趨向梯度下降,這時候容易進局部最優。騰訊發表文章說4分鐘訓練好Image Net,他們4分鐘用Image Net訓練好VGG,6.6分鐘訓練好殘差網絡50,當時它的副標題這樣寫的,我開始看到這篇文章很驚訝,後來看到Face book寫的文章,副標題是1小時之內把Image Net訓練好,騰訊的副標題是4分鐘訓練好Image Net,這個地方都面臨一個問題:大數據塊太大。解決的方案和騰訊差不多,都是學習速度的控制,控制學習速度,另外可以延遲更新也可以解決。

量化技術

這個在移動端裡面的模型小型化裡面經常出現,訓練裡面用這個量化技術有風險,把浮點數變成整數,如果把它變得更小,會導致精度下降,你必須參劾其他的方法解決。騰訊當時提出的是混合物進度。包括微軟CNTK提出1-bit ,CNTK用的人很少。當時CNTK有一篇文章提出1-bit量化,這時候精度損失我覺得太大了。

Auto ML

公眾號天天製造焦慮、製造恐慌,天天都說上報工程師要下崗、什麼要下崗。谷歌出ML,當時推出這個產品,裡面包括兩個東西,auto ML,包括自動調參,很多深度學習的工程師他們都做調參,把它自動化,靠算力解決,設一個搜索空間,設定搜索策略,再拿一個評估方法,全自動的跑,最後搜出最優的。自動調參有些許麻煩,用網格搜索或者隨機搜索,消耗很大。很多公司裡面都用強化學習解決這個問題。另外就是自動機器學習,前面講自動調參,再就是構造神經網絡,等效於再解放一批人,剛剛解放自動調參數,再解放自動構建神經網絡的。解放就是把所有神經網絡變成一個小模塊,它裡面的模塊是怎麼構造,完全靠自己的搜索學習來搞定,不需要人為構造新的神經網絡。

硬件加速

馮諾依曼體系,GPU是通用型的,這個地方是定製化一點,要跟深度學習結合起來搞更好。非馮諾依曼體系,下面是類腦芯片,類腦芯片有一個概念芯片,可以把IBM的芯片到上千上萬倍。

馮諾依曼體系和非馮諾依曼體系區別:馮諾依曼體系是計算機存儲、網絡分離,現在很多高校的學院都是分開的,各做各的;非馮諾依曼體系,類腦芯片,是把計算、存儲、網絡結合在一起,每個都是獨立的。這樣就呈現很多芯片。

量子計算機

費曼講量子計算的時候講了一個東西,和大家分享一下。他解釋的非常好,他說要理解量子要了解一個實驗——雙縫干涉實驗。發射量子的時候有一個特點,如果你想觀測它的運動路徑,它不會形成干涉條紋;如果不觀察它的路徑,它的干涉條紋就會出現,這個實驗非常詭異、神奇,觀測它,它就以意識形態存在,不觀測它就不存在。

第三部分:終端AI加速

這裡講6個技術。

稀疏化方法

稀疏化方法大家應該經常看到。

這裡分為三類:一是正則法。

二是裁減法(剪枝法)。

三是增長法。

強化卷積

現在大家要看到一個趨勢,慢慢都使用1×1的卷積核,以前是7×7,後面是兩個3×3代替一個5×5,用三個3×3代替一個7×7,現在很多時候都是用1×1的卷積核,效果很好。

自動構造輕量級神經網絡

一個是AMC,韓松,你們做這個研究一定要跟他,韓松之前是斯坦福大學的博士,他後面是創業公司的創始人之一,也是搞AI芯片加速,在MIT當教授,還在搞這個研究,他的文章出來之後我馬上會看。如果你想研究某個方向,一定要知道前沿的是哪幾個公司在研究,一般很明顯的。騰訊前段時間是出了Pocket flow,代碼沒有開源,裡面都是集大成。

低秩分解

量化技術

簡單來說,把浮點數變成整數,把整數變成更小的。這個地方本來這裡要存16個浮點數,這時候只需要存3個,然後存一個索引就可以。

硬件加速

這個硬件加速和前面的序列硬件加速不一樣,如果對硬件加速感興趣可以關注兩個頂級會議,ISCA和HPCA。

第四部分:總結

訓練、推斷。

訓練包括七個技術,推斷包括6個技術。

這裡面有幾個技術是幾個發展趨勢:

一是線性加速,如果你搞分佈式計算達到線性加速,這樣訓練速度像剛剛說的騰訊4分鐘訓練好,加速是一個趨勢。

二是自動調參,解放一批調參師,搞成自動調參最好,寫一個腳本,其實不麻煩,定義好搜索空間、搜索策略,再寫搜索評估價值,搞自動調參。

三是自動構建神經網絡,現在的網絡都是人為提出來的,你用新的AI強化學習,搜索出更好的人工神經網絡,也是大牛。這個是算力的進步,也是算法的進步,同時進步。

四是自動壓縮,不要手動壓縮,浪費時間,最好想辦法搞成自動壓縮,壓縮的同時要注意,僅僅壓縮還不夠,最好能把它實現加速。

相信你對當下市場環境下的AI發展現狀和就業機會有了一定的瞭解。想了解下載更多學習資料的小夥伴們,可以關注公眾號:飛馬會,即可進行查看學習。


分享到:


相關文章: