AI加速的意義?如何雲端AI加速?終端AI加速?

AI加速的意義

AI加速的意義?如何雲端AI加速?終端AI加速?

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

AI加速的意義?如何雲端AI加速?終端AI加速?

雲端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加速

AI加速的意義?如何雲端AI加速?終端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發展現狀和就業機會有了一定的瞭解。想了解下載更多學習資料的小夥伴們,可以關注公眾號:飛馬會,即可進行查看學習。


分享到:


相關文章: