1. 程式人生 > >平安科技高階演算法工程師瞿曉陽:雲端終端雙場景的AI加速研究 | 2018FMI人工智慧與大資料高峰論壇(深圳站)

平安科技高階演算法工程師瞿曉陽:雲端終端雙場景的AI加速研究 | 2018FMI人工智慧與大資料高峰論壇(深圳站)

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

 

平安科技高階演算法工程師瞿曉陽

 

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

 

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

 

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

 

01

第一部分:背景

 

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

 

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

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

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

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

 

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

 

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

 

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

 

機械思維與資料思維

 

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

 

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

 

機器學習與深度學習

 

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

 

深度學習的發展

 

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

 

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

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

 

AI加速的意義

 

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

 

02

 第二部分:雲端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的晶片到上千上萬倍。

 

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

 

量子計算機

 

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

 

03

第三部分:終端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。   

 

04

第四部分:總結

 

訓練、推斷。

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

 

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

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

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

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

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

   

謝謝大家!