1、Scalar、Vector、Marix、Tensor,點(diǎn)線面體一個(gè)都不少
我們先從點(diǎn)線面體的視角形象理解一下。點(diǎn),標(biāo)量(scalar);線,向量(vector);面,矩陣(matrix);體,張量(tensor)。我們再詳細(xì)看一下他們的定義
Scalar定義:標(biāo)量是只有大小、沒有方向的“量”。一個(gè)具體的數(shù)值就能表征,如重量、溫度、長度等。
Vector定義:向量是即有大小、又有方向的“量”。由大小和方向共同決定,如力、速度等。
Matrix定義:矩陣是一個(gè)“按照長方陣列排列”的數(shù)組,而行數(shù)與列數(shù)都等于N的矩陣稱為N階矩陣,在卷積核中我們常用3x3或5x5矩陣。
Tensor定義:張量是一個(gè)“維度很多”的數(shù)組,它創(chuàng)造出了更高維度的矩陣、向量,在深度學(xué)習(xí)知識域的術(shù)語中張量也可解釋為數(shù)學(xué)意義的標(biāo)量、向量和矩陣等的抽象。即標(biāo)量定義為0級張量,向量定義為1級張量,矩陣定義為2級張量,將在三維堆疊的矩陣定義為3級張量,參考下圖。
2、深度學(xué)習(xí)依賴Tensor運(yùn)算,GPU解決了算力瓶頸(1)卷積網(wǎng)絡(luò)神經(jīng)中有海量的矩陣運(yùn)算,包括矩陣乘法和矩陣加法 參考機(jī)器學(xué)習(xí)中的函數(shù)(4) - 全連接限制發(fā)展,卷積網(wǎng)絡(luò)閃亮登場卷積神經(jīng)網(wǎng)絡(luò)(CNN)作為是實(shí)現(xiàn)深度學(xué)習(xí)的重要方法之一,整個(gè)網(wǎng)絡(luò)第一步就是應(yīng)用卷積進(jìn)行特征提取,通過幾輪反復(fù)后獲得優(yōu)質(zhì)數(shù)據(jù),達(dá)成改善數(shù)據(jù)品質(zhì)的目標(biāo),我們一起復(fù)習(xí)一下卷積層工作的這兩個(gè)關(guān)鍵步驟。
首先,進(jìn)行圖像轉(zhuǎn)換:先把我們眼中的“圖像”變成計(jì)算機(jī)眼中的“圖像”。
下一步,選擇一個(gè)卷積核進(jìn)行“濾波”:假設(shè)以一個(gè)2×2的小型矩陣作為卷積核,這樣的矩陣也被稱為“濾波器”。如果把卷積核分別應(yīng)用到輸入的圖像數(shù)據(jù)矩陣上(如上圖計(jì)算機(jī)眼中的貓),執(zhí)行卷積運(yùn)算得到這個(gè)圖像的特征圖譜(Feature Map)。從下圖體現(xiàn)看到,圖像的特性提取本質(zhì)上就是一個(gè)線性運(yùn)算,這樣的卷積操作也被稱為線性濾波。
2012年,辛頓(Hinton)和他的博士生(Alex Krizhevsky)等提出了經(jīng)典的Alexnet,它強(qiáng)化了典型CNN的架構(gòu),這個(gè)網(wǎng)絡(luò)中卷積層更深更寬,通過大量的”卷積層->激活層->池化層”的執(zhí)行過程提純數(shù)據(jù),因此在這個(gè)網(wǎng)絡(luò)中有海量的矩陣運(yùn)算,包括矩陣乘法和矩陣加法。
(2)應(yīng)用GPU解決算力瓶頸,Tensor是最基礎(chǔ)的運(yùn)算單元
Alexnet之所以是經(jīng)典中的經(jīng)典,除了它強(qiáng)化了典型CNN的架構(gòu)外,還有其它創(chuàng)新點(diǎn),如首次在CNN中應(yīng)用了ReLU激活函數(shù)、Dropout機(jī)制,最大池化(Max pooling)等技術(shù)等。還有一點(diǎn)特別重要,Alexnet成功使用GPU加速訓(xùn)練過程(還開源了CUDA代碼),上世紀(jì)90年代限制Yann LeCun等人工智能科學(xué)家的計(jì)算機(jī)硬件“算力瓶頸”被逐步打開。
深度學(xué)習(xí)為什么需要GPU呢?因?yàn)橹挥蠫PU能夠提供“暴力計(jì)算”能力,降低訓(xùn)練時(shí)間。大家都知道,GPU處理器擁有豐富的計(jì)算單元ALU,它相對于CPU處理器架構(gòu)的優(yōu)勢就在于能執(zhí)行“并行運(yùn)算”,參考下圖中的一個(gè)簡單的矩陣乘法就是矩陣某一行的每一個(gè)數(shù)字,分別和向量的每一個(gè)數(shù)字相乘之后再相加,這就是并行運(yùn)算。
而如剛才討論的深度學(xué)習(xí)中的運(yùn)算大部分都是矩陣運(yùn)算,讓計(jì)算從“單個(gè)的”變成“批處理的”,充分利用GPU的資源。而Tensor是專門針對GPU來設(shè)計(jì)的,Tensor作為一個(gè)可以運(yùn)行在GPU上的多維數(shù)據(jù),加速運(yùn)算速度,提升運(yùn)算效率。參考深度學(xué)習(xí)靠框架,期待國產(chǎn)展雄風(fēng)中的討論,在一個(gè)框架中,必須有“張量對象”和“對張量的計(jì)算”作基礎(chǔ),TensorFlow、PyTorch等等主流框架中,張量Tensor都是最基礎(chǔ)的運(yùn)算單元。
3、提升Tensor效率,大家各顯神通 現(xiàn)在主要的GPU廠家為了能夠提高芯片在AI、HPC等應(yīng)用場景下的加速能力,都在芯片計(jì)算單元的設(shè)計(jì)上花大力氣,不斷創(chuàng)新優(yōu)化。比如AMD的CDNA架構(gòu)中計(jì)算是通過Compute Unit來實(shí)現(xiàn)的,在Compute unit中就有Scalar、Vector、Matrix等不同的計(jì)算功能模塊,針對不同的計(jì)算需求各司其職。Nvidia的計(jì)算是通過SM來實(shí)現(xiàn)的,SM中計(jì)算從Cuda Core發(fā)展到Tensor Core,針對Tensor的計(jì)算效率越來越高,到今年三月份發(fā)布的H100系列中,Tensor Core已經(jīng)發(fā)展到了第四代。而Google干脆就把自己的芯片定義為TPU(Tensor processing Unit),充分發(fā)揮Tensor加速能力,其中主要的模塊就是海量的矩陣乘法單元。(1)英偉達(dá)的Tensor Core 今年3月份黃教主穿著皮衣發(fā)布了H100(Hopper系列),Nvidia每一代GPU都是用一個(gè)大神的名字命名,這個(gè)系列是向Grace Hopper致敬,她被譽(yù)為計(jì)算機(jī)軟件工程***、編譯語言COBOL之母。她也被譽(yù)為是計(jì)算機(jī)史上第一個(gè)發(fā)現(xiàn)Bug的人,有這樣一個(gè)故事,1947年9月9日當(dāng)人們測試Mark II計(jì)算機(jī)時(shí),它突然發(fā)生了故障。經(jīng)過幾個(gè)小時(shí)的檢查后,工作人員發(fā)現(xiàn)了一只飛蛾被打死在面板F的第70號繼電器中,飛蛾取出后,機(jī)器便恢復(fù)了正常。當(dāng)時(shí)為Mark II計(jì)算機(jī)工作的女計(jì)算機(jī)科學(xué)家Hopper將這只飛蛾粘帖到當(dāng)天的工作手冊中,并在上面加了一行注釋,時(shí)間是15:45。隨著這個(gè)故事傳開,更多的人開始使用Bug一詞來指代計(jì)算機(jī)中的設(shè)計(jì)錯(cuò)誤,而Hopper登記的那只飛蛾看作是計(jì)算機(jī)里上第一個(gè)被記錄在文檔中的Bug,以后debug(除蟲)變成了排除故障的計(jì)算機(jī)術(shù)語。
讓我們回到英偉達(dá)GPU的計(jì)算單元設(shè)計(jì),Nvidia的9代GPU中計(jì)算單元架構(gòu)演進(jìn)過程如下,Tesla2.0(初代)-> Fermi(Cuda core提升算力)-> Kepler(core數(shù)量大量增長)-> Maxwell(Cuda core結(jié)構(gòu)優(yōu)化)-> Pascal(算力提升)-> Volta(第一代Tensor core提出,優(yōu)化對深度學(xué)習(xí)的能力) -> Turning(第二代Tensor core)-> Ampere(第三代Tensor core)-> Hopper(第四代Tensor core),其中從Volta開始,每一代Tensor Core的升級都能帶來算力X倍的提升。Tensor core專門為深度學(xué)習(xí)矩陣運(yùn)算設(shè)計(jì),和前幾代的“全能型”的浮點(diǎn)運(yùn)算單元CUDA core相比,Tensor core運(yùn)算場景更有針對性,算力能力更強(qiáng),下圖就是NV一個(gè)計(jì)算單元SM中各種模塊的組成,各種類型的計(jì)算模塊配置齊全。
再詳細(xì)討論一下Tensor Core,Tensor Core是專為執(zhí)行張量或矩陣運(yùn)算而設(shè)計(jì)的專用執(zhí)行單元,每個(gè)時(shí)鐘執(zhí)行一次矩陣乘法,包含批次的混合精度乘法操作(區(qū)別于Cuda core每個(gè)時(shí)鐘執(zhí)行單次混合精度的乘加操作),矩陣乘法(GEMM)運(yùn)算是神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理的核心,Tenore Core更加高效。參考下圖(藍(lán)色和紫色為輸入,綠色是計(jì)算結(jié)果,中心的灰色部分就是計(jì)算單元),第一代Tencor Core加入Votal后,以4x4 矩陣乘法運(yùn)算時(shí)為例,參考英偉達(dá)白皮書上的數(shù)據(jù),優(yōu)化后與前一代的Pascal相比,用于訓(xùn)練的算力峰值提升了 12 倍,用于推理的算力峰值提升了6 倍。
(2)Google的TPU
2013年,Google意識到數(shù)據(jù)中心快速增長的算力需求方向,從神經(jīng)網(wǎng)絡(luò)興起開始矩陣乘加成為重要的計(jì)算loading,同時(shí)商用GPU很貴,也為了降低成本,Google選擇了擼起袖子自己干,定制了Tensor Processing Unit(TPU)專用芯片,發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了4代了。
TPU V1:2014年推出,主要用于推理,第一代TPU指令很少,能夠支持矩陣乘法(MatrixMultiple / Convole) 和特定的激活功能(activation)。
TPU V2:2017年推出,可用于訓(xùn)練,這一代芯片指令集豐富了;提升計(jì)算能力,可以支持反向傳播了;內(nèi)存應(yīng)用了高帶寬的HBM;針對集群方案提供了芯片擴(kuò)展能力。
TPU V3:2018年推出,在V2的結(jié)構(gòu)上進(jìn)一步優(yōu)化,對各個(gè)功能模塊的性能都做了提升。
TPU V4:2022年推出,算力繼續(xù)大幅度提升,尤其是集群能力不斷優(yōu)化后,TPU成為谷歌云平臺上很關(guān)鍵的一環(huán)。
相信Google會在Tensor processing unit的路徑上繼續(xù)加速,對于云大廠來說,這是業(yè)務(wù)底座。
4、只有硬件是不夠的,TensorFlow讓Tenor流動(dòng)起來 我們看到了各個(gè)廠家在硬件上的不懈努力和快速進(jìn)步,當(dāng)然,只有硬件是遠(yuǎn)遠(yuǎn)不夠的,一個(gè)好的Deep Learning Framework才能發(fā)揮這些硬件的能力,我們還是從最出名的框架TensorFlow說起。
2011年,Google公司開發(fā)了它的第一代分布式機(jī)器學(xué)習(xí)系統(tǒng)DistBelief。著名計(jì)算機(jī)科學(xué)家杰夫·迪恩(Jeff Dean)和深度學(xué)習(xí)專家吳恩達(dá)(Andrew )都是這個(gè)項(xiàng)目的成員。通過杰夫·迪恩等人設(shè)計(jì)的DistBelief,Google可利用它自己數(shù)據(jù)中心數(shù)以萬計(jì)的CPU核,建立深度神經(jīng)網(wǎng)絡(luò)。借助DistBelief,Google的語音識別正確率比之前提升了25%。除此之外,DistBelief在圖像識別上也大顯神威。2012年6月,《紐約時(shí)報(bào)》報(bào)道了Google通過向DistBelief提供數(shù)百萬份YouTube視頻,來讓該系統(tǒng)學(xué)習(xí)貓的關(guān)鍵特征,DistBelief展示了他的自學(xué)習(xí)能力。DistBelief作為谷歌X-實(shí)驗(yàn)室的“黑科技”開始是是閉源的,Google在2015年11月,Google將它的升級版實(shí)現(xiàn)正式開源(遵循Apache 2.0)。而這個(gè)升級版的DistBelief,也有了一個(gè)我們熟悉的名字,它就是未來深度學(xué)習(xí)框架的主角“TensorFlow”。
TensorFlow命名源于其運(yùn)行原理,即“讓張量(Tensor)流動(dòng)起來(Flow)”,這是深度學(xué)習(xí)處理數(shù)據(jù)的核心特征。TensorFlow顯示了張量從數(shù)據(jù)流圖的一端流動(dòng)到另一端的整個(gè)計(jì)算過程,生動(dòng)形象地描述了復(fù)雜數(shù)據(jù)結(jié)構(gòu)在人工神經(jīng)網(wǎng)絡(luò)中的流動(dòng)、傳輸、分析和處理模式。
Google的深度學(xué)習(xí)框架TensorFlow的有三大優(yōu)點(diǎn)
形象直觀:TensorFlow有一個(gè)非常直觀的構(gòu)架,它有一個(gè)“張量流”,用戶可以借助它的工具(如TensorBoard)很容易地、可視化地看到張量流動(dòng)的每一個(gè)環(huán)節(jié)。
部署簡單:TensorFlow可輕松地在各種處理器上部署,進(jìn)行分布式計(jì)算,為大數(shù)據(jù)分析提供計(jì)算能力的支撐。
平臺兼容:TensorFlow跨平臺性好,不僅可在Linux、Mac和Windows系統(tǒng)中運(yùn)行,還可在移動(dòng)終端下工作。
審核編輯:郭婷
-
Google
+關(guān)注
關(guān)注
5文章
1772瀏覽量
57730 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5512瀏覽量
121434
原文標(biāo)題:【AI】深度學(xué)習(xí)框架(1)
文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個(gè)為什么】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論