版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
智能計算系統(tǒng)
期末復(fù)習(xí)中國科學(xué)院計算所李威副研究員liwei2017@什么是智能計算系統(tǒng)?智能計算系統(tǒng)是智能的物質(zhì)載體現(xiàn)階段的智能計算系統(tǒng)通常是集成CPU和智能芯片的異構(gòu)系統(tǒng),軟件上通常包括一套面向開發(fā)者的智能計算編程環(huán)境(包括編程框架和編程語言)2智能計算系統(tǒng)的形態(tài)數(shù)據(jù)中心智能手機嵌入式設(shè)備超級計算機語音識別自動翻譯藥物研制圖像分析商業(yè)分析廣告推薦3機器人自動駕駛處理過程輸入輸出建模實現(xiàn)運行4二三章章節(jié)定位5輸入輸出建模實現(xiàn)運行神經(jīng)網(wǎng)絡(luò)基礎(chǔ)深度學(xué)習(xí)學(xué)習(xí)了神經(jīng)網(wǎng)絡(luò)的基本知識,多層感知機的正反向計算過程,以及基礎(chǔ)優(yōu)化方法。本章通過分析經(jīng)典深度學(xué)習(xí)算法,學(xué)習(xí)將基礎(chǔ)神經(jīng)網(wǎng)絡(luò)應(yīng)用到實際場景,并逐步優(yōu)化實現(xiàn)工業(yè)級應(yīng)用的過程。包含關(guān)系人工智能機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)1深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)機器學(xué)習(xí)人工智能6如何學(xué)習(xí)?如何理解?如何學(xué)會?從最簡單的線性回歸模型開始,直至搭建出一個完整的神經(jīng)網(wǎng)絡(luò)架構(gòu)7線性回歸什么是回歸(regression)和線性回歸?
一種用統(tǒng)計方法來分析一個因變量和一組自變量關(guān)系的一個方法線性回歸:自變量跟因變量之間的關(guān)系是線性的8單變量線性回歸模型(一元回歸模型)線性回歸可以找到一些點的集合背后的規(guī)律:一個點集可以用一條直線來擬合,這條擬合出來的直線的參數(shù)特征,就是線性回歸找到的點集背后的規(guī)律。
單變量線性模型
9多變量線性回歸模型單變量線性模型多變量線性模型2個特征
10線性函數(shù)擬合得好不好?
損失函數(shù)
11
12多層感知機將大量的神經(jīng)元模型進(jìn)行組合,用不同的方法進(jìn)行連接并作用在不同的激活函數(shù)上,就構(gòu)成了人工神經(jīng)網(wǎng)絡(luò)模型。多層感知機一般指全連接的兩層神經(jīng)網(wǎng)絡(luò)模型輸入
隱層
輸出層
13多層感知機輸入
隱層
輸出層
14+1+1神經(jīng)網(wǎng)絡(luò)訓(xùn)練正向傳播(推斷)是根據(jù)輸入,經(jīng)過權(quán)重、激活函數(shù)計算出隱層,將輸入的特征向量從低級特征逐步提取為抽象特征,直到得到最終輸出結(jié)果的過程。反向傳播(訓(xùn)練)是根據(jù)正向傳播的輸出結(jié)果和期望值計算出損失函數(shù),再通過鏈?zhǔn)角髮?dǎo),最終從網(wǎng)絡(luò)后端逐步修改權(quán)重使輸出和期望值的差距變到最小的過程。
反向更新權(quán)值
15反向傳播的作用是將神經(jīng)網(wǎng)絡(luò)的輸出誤差反向傳播到神經(jīng)網(wǎng)絡(luò)的輸入端,并以此來更新神經(jīng)網(wǎng)絡(luò)中各個連接的權(quán)重當(dāng)?shù)谝淮畏聪騻鞑シㄍ瓿珊?,網(wǎng)絡(luò)的模型參數(shù)得到更新,網(wǎng)絡(luò)進(jìn)行下一輪的正向傳播過程,如此反復(fù)的迭代進(jìn)行訓(xùn)練,從而不斷縮小計算值與真實值之間的誤差。16訓(xùn)練完了結(jié)果就是不準(zhǔn),怎么辦?神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練調(diào)整網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)選擇合適的激活函數(shù)選擇合適的損失函數(shù)17神經(jīng)網(wǎng)絡(luò)的拓?fù)湔{(diào)節(jié)輸入:神經(jīng)元個數(shù)=特征維度輸出層:神經(jīng)元個數(shù)=分類類別數(shù)隱層:
隱層的數(shù)量?隱層神經(jīng)元的個數(shù)?神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)一般為:輸入×隱層×輸出層給定訓(xùn)練樣本后,輸入和輸出層節(jié)點數(shù)便已確定18選擇合適的激活函數(shù)
可微性:當(dāng)優(yōu)化方法是基于梯度的時候,這個性質(zhì)是必須的。
輸出值的范圍:當(dāng)激活函數(shù)輸出值是有限的時候,基于梯度的優(yōu)化方法會更加穩(wěn)定,因為特征的表示受有限權(quán)值的影響更顯著;當(dāng)激活函數(shù)的輸出是無限的時候,模型的訓(xùn)練會更加高效,不過在這種情況下,一般需要更小的學(xué)習(xí)率。激活函數(shù)需具備的性質(zhì)激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),因此神經(jīng)網(wǎng)絡(luò)可以應(yīng)用到眾多的非線性模型中
19神經(jīng)網(wǎng)絡(luò)中損失函數(shù)的特性同一個算法的損失函數(shù)不是唯一的損失函數(shù)是參數(shù)(w,b)的函數(shù)損失函數(shù)可以評價網(wǎng)絡(luò)模型的好壞,損失函數(shù)越小說明模型和參數(shù)越符合訓(xùn)練樣本(x,y)損失函數(shù)是一個標(biāo)量選擇損失函數(shù)時,挑選對參數(shù)(w,b)可微的函數(shù)(全微分存在,偏導(dǎo)數(shù)一定存在)損失函數(shù)又稱為代價函數(shù)、目標(biāo)函數(shù)20欠擬合和過擬合x1yx1yx1y欠擬合合適擬合過擬合欠擬合:訓(xùn)練考慮的維度太少,擬合函數(shù)無法滿足訓(xùn)練集,誤差較大過擬合:訓(xùn)練考慮的維度太多,使得擬合的函數(shù)很完美的接近訓(xùn)練數(shù)據(jù)集,但泛化能力差,對新數(shù)據(jù)預(yù)測能力不足21神經(jīng)網(wǎng)絡(luò)存在的問題及解決辦法神經(jīng)網(wǎng)絡(luò)規(guī)模不斷加大,可能會導(dǎo)致一個致命問題:過擬合,泛化能力差正則化22定義機器學(xué)習(xí)不僅要求模型在訓(xùn)練集上求得一個較小的誤差,在測試集上也要表現(xiàn)好。因為模型最終是要部署到?jīng)]有見過訓(xùn)練數(shù)據(jù)的真實場景。提升模型在測試集上的預(yù)測效果叫做泛化。神經(jīng)網(wǎng)絡(luò)的層數(shù)增加,參數(shù)也跟著增加,表示能力大幅度增強,極容易出現(xiàn)過擬合現(xiàn)象參數(shù)范數(shù)懲罰、稀疏化、Bagging集成、Dropout、提前終止、數(shù)據(jù)集擴(kuò)增等正則化方法可以有效抑制過擬合過擬合(overfitting)指模型過度接近訓(xùn)練的數(shù)據(jù),模型的泛化能力不足。具體表現(xiàn)為在訓(xùn)練數(shù)據(jù)集上的誤差很低,但在測試數(shù)據(jù)集上的誤差很大。23適合圖像處理的卷積神經(jīng)網(wǎng)絡(luò)計算機視覺24輸入圖像輸入圖像大小為32x32,輸入數(shù)據(jù)量為32x32x3=3072隱層神經(jīng)元個數(shù)為100,第一層權(quán)值數(shù)量為3072x100=307200卷積神經(jīng)網(wǎng)絡(luò)(CNN)25全連接卷積局部連接權(quán)重共享所有神經(jīng)元之間的連接都使用不同權(quán)重。輸出層神經(jīng)元共用同一組權(quán)重,進(jìn)一步減少權(quán)重數(shù)量。權(quán)重數(shù)量CNN組成VGG16卷積層(conv)池化層(max
pool)全連接層(FC)Softmax26卷積層27多輸入特征圖單輸出特征圖卷積運算*inputfilter=output6x6x33x3x34x4x1卷積層28*=6x6x33x3x34x4x10000110020000020120000220121-1-1-1-10-1111-1-1-10-1-101-111-11-11-11C=0C=1C=2*=2-2-1+2+0-2+0+2+(-1)+0+0+2=2卷積層29卷積層30多輸入特征圖多輸出特征圖卷積運算*inputfilter1=output6x6x32x3x3x34x4x2不同的權(quán)重可檢測不同特征。filter2output卷積層31邊界擴(kuò)充(padding)擴(kuò)大輸入圖像/特征圖的尺寸并填充像素防止深度網(wǎng)絡(luò)中圖像被動持續(xù)減小強化圖像邊緣信息卷積步長(stride)滑動濾波器時每次移動的像素點個數(shù)與pad共同確定輸出圖像尺寸
池化層32PoolingMaxPooling/AvgPooling/L2Pooling主動減小圖片尺寸,從而減少參數(shù)的數(shù)量和計算量,控制過擬合;不引入額外參數(shù);231523745231396042064712410806702163753964786Maxpooling
Maxpooling可保留特征最大值,提高提取特征的魯棒性。全連接層33FullyConnect卷積層和池化層構(gòu)成特征提取器,全連接層則為分類器;將特征提取得到的高維特征圖映射成一維特征向量,該特征向量包含
所有特征信息,可轉(zhuǎn)化為各個類別的概率。Softmax
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)34層排列規(guī)律Conv+relupoolFC+reluFC/softmaxNMK…dog常見卷積神經(jīng)網(wǎng)絡(luò)由卷積層(激活)、池化層和全連接層構(gòu)成;各層的常見排列方式如圖所示,其中N、M、K為重復(fù)次數(shù);例如:N=3,M=1,K=2情況下的網(wǎng)絡(luò)結(jié)構(gòu)為:
淺層學(xué)習(xí)局部特征,深層學(xué)習(xí)整體特征35神經(jīng)網(wǎng)絡(luò)可視化:conv6conv9Springenberg,J.T.;Dosovitskiy,A.;Brox,T.&Riedmiller,M.Strivingforsimplicity:theallconvolutinalnetICML,2015,1-12基于CNN的圖像分類算法36AlexNetVGGInception系列ResNetVGG37Paper:VeryDeepConvolutionalNetworksforLarge-ScaleImageRecognition(2014)Author:K.Simonyan,
A.ZissermanTest:errorrateonImageNet,top1:24.7%,top5:7.5%VGG16ResNet38Paper:DeepResidualLearningforImageRecognition(2015)Author:KaimingHe,XiangyuZhang,ShaoqingRen,JianSunTest:errorrateonImageNet,top5:3.57%(resnet152)ResNet39問題:卷積層堆積就能提升圖像分類準(zhǔn)確率嗎?實驗:分別用20層和56層卷積神經(jīng)網(wǎng)絡(luò)在cifar10數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試,發(fā)現(xiàn)更深的網(wǎng)絡(luò)錯誤率更高,在ImageNet數(shù)據(jù)集上也同樣如此。原因:梯度消失?No,使用BatchNorm可有效緩解梯度消失;
過擬合?No,更深的網(wǎng)絡(luò)在訓(xùn)練集上的誤差同樣更高;神經(jīng)網(wǎng)絡(luò)退化:收斂到極值點而非最值,誤差大。ResNet40Plainnetwork(普通網(wǎng)絡(luò)):直接用多項式擬合輸出;Residualnetwork(殘差網(wǎng)絡(luò)):建立在BN之上,用多項式擬合差值;優(yōu)點:在解附近時權(quán)重的反應(yīng)更靈敏,更容易學(xué)習(xí)獲得最優(yōu)解。什么是“殘差”inputCNNoutputplainnetworkinputCNNoutputresidualnetwork+(output–input)圖像分類算法41圖像分類CNNAlexNetZF-NetVGG網(wǎng)絡(luò)中的網(wǎng)絡(luò)GoogLeNetInception-v2Inception-v3Inception-v4層與層的連接ResNetResNextDenseNet通道注意力SENet輕量化可分離卷積MobileNetEfficientNetTransformer注意力機制ViTSwinTransformerDeiT多模態(tài)對齊CLIPCoOpMLPMLP-Mixer分類定位+分類物體檢測圖示輸入singleandbigobjectsingleandbigobjectmultiandsmallobject輸出labellabel&boundingboxmultilabel&boundingbox評價precision(top1/top5)IoU(交并比)mAP(MeanAveragePrecision)圖像檢測算法42基于CNN的圖像檢測算法43R-CNN系列YOLOSSD目前,基于深度學(xué)習(xí)的目標(biāo)檢測算法大致分為兩類:
1.兩階段(two-stage)算法:基于候選區(qū)域方法,先產(chǎn)生邊界框,再做CNN分類(R-CNN系列)
2.一階段(one-stage)算法:對輸入圖像直接處理,同時輸出定位及其類別(YOLO系列)
Two-stageOne-stage目標(biāo)檢測算法44/p/33277354目標(biāo)檢測TwostageR-CNNSPP-NetFastR-CNNFasterR-CNN更好的特征網(wǎng)絡(luò)HyperNetMS-CNNPVANetLight-HeadR-CNN更精確的RPNMR-CNNFPNCRAFT更完善的ROI分類R-FCNCoupleNetMask
R-CNNCascadeR-CNN目標(biāo)后處理OHEMSoft-NMSA-Fast-RCNNOnestageOverFeatYOLOYOLOv2YOLOv3YOLOv4YOLOv7YOLOv5YOLOv8YOLOv6YOLOXYOLORSSDR-SSDDSSDDSODFSSDRetinaNetEfficientDet生成對抗網(wǎng)絡(luò)GAN2014年IanGoodfellow提出生成式對抗網(wǎng)絡(luò)GANGoodfellowIJ,Pouget-AbadieJ,MirzaM,etal.Generativeadversarialnets[C]//InternationalConferenceonNeuralInformationProcessingSystems.2014.20年來機器學(xué)習(xí)領(lǐng)域最酷的想法——YannLeCun解決的問題:從訓(xùn)練樣本中學(xué)習(xí)出新樣本。為無監(jiān)督、預(yù)測學(xué)習(xí)提供算法框架。和蘇格拉底的辯證法有相似之處45GAN學(xué)習(xí)到了真實樣本集的數(shù)據(jù)分布/generative-models/生成對抗網(wǎng)絡(luò)GAN模型由兩部分組成生成器(偽裝者):找出觀測數(shù)據(jù)內(nèi)部的統(tǒng)計規(guī)律,盡可能生成能夠以假亂真的樣本,使判別網(wǎng)絡(luò)輸出接近0.5,難以區(qū)分真假。判別器(警察):判斷輸入數(shù)據(jù)是來自真實樣本集還是生成樣本集。如果輸入是真樣本,輸出接近1;如果輸入是生成樣本,輸出接近0。46生成模型G真實樣本x生成樣本G(z)判別模型D隨機噪聲z或真?假?卷積GANDCGAN:將GAN中全連接神經(jīng)網(wǎng)絡(luò)擴(kuò)展到卷積神經(jīng)網(wǎng)絡(luò)ResGAN:圖像恢復(fù),ResNetSRGAN:超分辨率,ResNetCycleGAN:圖像轉(zhuǎn)換條件GANCGANInfoGAN集成推斷模型的GANBiGAN對抗自編碼器VAE-GAN47GAN結(jié)構(gòu)生成對抗網(wǎng)絡(luò)vs擴(kuò)散模型48生成對抗網(wǎng)絡(luò)存在的問題生成圖像缺乏多樣性模式崩潰由對抗性帶來的難以訓(xùn)練擴(kuò)散模型的優(yōu)勢擴(kuò)散模型訓(xùn)練過程中沒有對抗,訓(xùn)練更容易不會受到模式崩潰的影響能夠產(chǎn)生多樣化圖像擴(kuò)散模型49J.Ho,A.Jain,andP.Abbeel.Denoisingdiffusionprobabilisticmodels[C].NeurIPS,2020.DDPM(去噪擴(kuò)散概率模型)在圖像合成方面擊敗了GAN擴(kuò)散模型50基本原理正向過程和反向過程51人獲得的輸入是什么?圖像信息序列信息任務(wù):理解圖像內(nèi)容方法:卷積神經(jīng)網(wǎng)絡(luò)任務(wù):理解語音/文字/視頻方法:循環(huán)神經(jīng)網(wǎng)絡(luò)任務(wù)特點:按時序輸入的數(shù)據(jù)之間不是相互獨立的,前后數(shù)據(jù)之間有相關(guān)性,所以網(wǎng)絡(luò)要有“存儲”信息的能力。序列模型:循環(huán)神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
52=unfold輸入輸出層隱層(記憶單元)
循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)53=unfold輸入輸出層隱層(記憶單元)
循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)正向計算過程54
一般時刻:
X+XfXsoftmaxRNNcell
循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)反向傳播BPTT(back-propagationthroughtime)某個時刻的損失函數(shù)為:整個序列的損失函數(shù)為:
損失函數(shù)對W的偏導(dǎo)為:
RNN的梯度消失與梯度爆炸梯度爆炸/梯度消失56根據(jù)推導(dǎo)可知序列損失函數(shù)對U和W的梯度為:
由于梯度爆炸或消失的存在,循環(huán)神經(jīng)網(wǎng)絡(luò)實際上只能學(xué)習(xí)到短期的依賴關(guān)系。RNN的梯度消失與梯度爆炸57循環(huán)神經(jīng)網(wǎng)絡(luò)的遞歸結(jié)構(gòu)導(dǎo)致梯度消失/梯度爆炸現(xiàn)象更明顯如何改進(jìn)梯度爆炸問題梯度截斷梯度消失問題模型上的改進(jìn),例如LSTM、GRU算法Pascanu,R.;Mikolov,T.&Bengio,Y.Dasgupta,S.&McAllester,D.(Eds.)Onthedifficultyoftrainingrecurrentneuralnetworks,ICML2013由編碼器(encoder)和解碼器(decoder)兩部分組成編碼器根據(jù)輸入數(shù)據(jù)生成語義編碼解碼器根據(jù)該語義編碼輸出處理結(jié)果Seq2Seq模型適用于輸入序列和輸出序列不等長的情況58Seq2SeqTransformerTransformer結(jié)構(gòu)圖Transformer網(wǎng)絡(luò)是目前NLP常用的模型之一與Seq2Seq模型結(jié)構(gòu)類似,Transformer也包括編碼器和解碼器兩個部分59AshishVaswani,NoamShazeer,NikiParmar,JakobUszkoreit,LlionJones,AidanN.Gomez,?ukaszKaiser,andIlliaPolosukhin.Attentionisallyouneed.NeurIPS’2017.60從Transformer到GPT4——GPT系列工作發(fā)展歷程GPT(2018.6)GPT-2(2019.2)GPT-3(2020.5)CodeX(2021.8)InstructGPT(2022.3)ChatGPT(2022.11)GPT-4(2023.3)GPT1-3對比模型GPT-1GPT-2GPT-3主要貢獻(xiàn)提出預(yù)訓(xùn)練和微調(diào)的統(tǒng)一框架用無監(jiān)督預(yù)訓(xùn)練模型做各種不同NLP任務(wù)無需微調(diào),利用少量演示指定任務(wù)發(fā)布時間2018年6月2019年2月2020年5月參數(shù)量1.17億15億1750億數(shù)據(jù)量5GB40GB45TB61從Transformer到GPT4——GPT系列工作發(fā)展歷程GPT(2018.6)GPT-2(2019.2)GPT-3(2020.5)CodeX(2021.8)InstructGPT(2022.3)ChatGPT(2022.11)GPT-4(2023.3)ChatGPT的訓(xùn)練語料里包含了多種主題的數(shù)據(jù),能夠處理不同任務(wù):回答各種問題,撰寫文章,多語種翻譯,生成代碼等ChatGPT可以主動記憶之前的對話內(nèi)容,實現(xiàn)連續(xù)對話ChatGPT可以識別敏感話題(如種族、政治、人身攻擊等),產(chǎn)生符合安全性、倫理性的回答ChatGPT使用來自人類反饋的強化學(xué)習(xí)對預(yù)訓(xùn)練大模型進(jìn)行微調(diào),提升了理解人類思維的準(zhǔn)確性,實現(xiàn)優(yōu)于GPT-3的功能(同InstructGPT)62從Transformer到GPT4——GPT系列工作發(fā)展歷程GPT(2018.6)GPT-2(2019.2)GPT-3(2020.5)CodeX(2021.8)InstructGPT(2022.3)ChatGPT(2022.11)GPT-4(2023.3)63神經(jīng)網(wǎng)絡(luò)量化方法分類神經(jīng)網(wǎng)絡(luò)量化數(shù)據(jù)量化方法量化對稱性對稱量化非對稱量化量化均勻性均勻量化非均勻量化量化粒度分層量化分通道量化優(yōu)化目標(biāo)推理加速訓(xùn)練后量化量化感知訓(xùn)練訓(xùn)練加速64大模型量化混合精度訓(xùn)練預(yù)訓(xùn)練和微調(diào)時,用FP16或BF16替代部分FP32進(jìn)行數(shù)據(jù)存儲和計算混合精度推理SmoothQuant,ICML2023Imagestyletransfer給定一張風(fēng)格圖像a和一張內(nèi)容圖像p;風(fēng)格圖像經(jīng)過CNN生成的featuremaps組成風(fēng)格特征集A;內(nèi)容圖像p通過CNN生成的featuremaps組成內(nèi)容特征集P;輸入一張隨機噪聲圖像x,隨機噪聲圖像x通過CNN生成的featuremaps構(gòu)成內(nèi)容特征和風(fēng)格特征集合F和G,目標(biāo)損失函數(shù)由A,P,F,G計算得到;優(yōu)化函數(shù)是希望調(diào)整圖像x,使其最后看起來既保持內(nèi)容圖像p的內(nèi)容,又有風(fēng)格圖像a的風(fēng)格。65
卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)
損失函數(shù)
Real-TimeImagestyletransfer66內(nèi)容圖像風(fēng)格圖像輸入圖像特征提取網(wǎng)絡(luò)(預(yù)訓(xùn)練)內(nèi)容特征表示風(fēng)格特征表示損失函數(shù)圖像轉(zhuǎn)換網(wǎng)絡(luò)(待訓(xùn)練)風(fēng)格特征表示內(nèi)容特征表示訓(xùn)練過程實時轉(zhuǎn)換過程輸入圖像圖像轉(zhuǎn)換網(wǎng)絡(luò)(訓(xùn)練完成)四五章章節(jié)定位67編程框架Bang輸入輸出建模實現(xiàn)運行第四章將學(xué)習(xí)到實現(xiàn)深度學(xué)習(xí)算法所使用的編程框架的簡單用法第五章將學(xué)習(xí)到實現(xiàn)深度學(xué)習(xí)算法所使用的編程框架的工作機理定義68隨著深度學(xué)習(xí)研究的深入,深度學(xué)習(xí)算法變得愈加復(fù)雜,研究人員需要花更多的時間和精力在算法的實現(xiàn)上深度學(xué)習(xí)編程框架:將深度學(xué)習(xí)算法中的基本操作封裝成一系列組件,這一系列深度學(xué)習(xí)組件,即構(gòu)成一套深度學(xué)習(xí)框架編程框架能夠幫助算法開發(fā)人員更簡單的實現(xiàn)已有算法,或設(shè)計新的算法。也有助于硬件程序員更有針對性的對關(guān)鍵操作進(jìn)行優(yōu)化,使其能充分發(fā)揮硬件效率PyTorch簡介PyTorch=Py+Torch2017年FacebookAIResearch開源PyTorch是一個基于Torch的Python開源機器學(xué)習(xí)庫,用于自然語言處理等應(yīng)用程序,具有強大的GPU加速的張量計算(如Numpy)能力產(chǎn)生背景:編程語言提供了面向深度學(xué)習(xí)的高效編程庫(NumPy、Eigen、Torch等)Python開源生態(tài)蓬勃發(fā)展691、NumPy基礎(chǔ)Python語言提供的高性能編程庫,提供大量庫函數(shù)和操作,提供針對高維數(shù)組的批量化處理,能夠高效處理機器學(xué)習(xí)、計算機視覺、基于數(shù)組的數(shù)學(xué)任務(wù)NumPy中最重要的數(shù)組類為ndarray,也叫array優(yōu)點易用:直接對數(shù)組進(jìn)行操作,并提供多種常用內(nèi)嵌API供用戶直接調(diào)用高性能:大部分NumPy代碼是基于C語言實現(xiàn)的,相比Python代碼有更高的實現(xiàn)性能局限性原生的NumPy只能在CPU上實現(xiàn)為了在GPU上高效運行Python計算庫,出現(xiàn)了CuPy、Numba、PyCUDA、PyTorch等70712、張量(tensor)張量是計算圖上的數(shù)據(jù)載體,用張量統(tǒng)一表示所有的數(shù)據(jù),張量在計算圖的節(jié)點之間傳遞張量對應(yīng)了神經(jīng)網(wǎng)絡(luò)中在各個節(jié)點之間傳遞、流動的數(shù)據(jù)張量可以看做是n維的數(shù)組,數(shù)組的維數(shù)即為張量的階數(shù)與NumPy中的ndarray不同,PyTorch中的張量可以運行在GPU或深度學(xué)習(xí)處理器上,因此具有較高的性能階數(shù)對應(yīng)數(shù)據(jù)形式0標(biāo)量1向量2矩陣nn維數(shù)組723、操作(operation)PyTorch基于張量開展各種類型的計算操作。每個操作接收若干個張量作為輸入,操作完成后更新原張量或生成新張量作為輸出計算操作是使用PyTorch實現(xiàn)模型訓(xùn)練和推理的基礎(chǔ)常用計算操作(torch./tensor.)函數(shù)名稱功能new_tensornew_zeros/new_ones返回一個新張量返回尺寸與原張量相同,元素值全為0/1的新張量grad訓(xùn)練時得到的張量梯度add/subtract/multiply/divide加/減/乘/除計算bitwise_and/bitwise_or/bitwise_not按位與/或/非操作sin/cos/tanh正弦/余弦/正切計算where(condition,x,y)按條件輸出不同張量to張量數(shù)據(jù)類型、設(shè)備類型轉(zhuǎn)換sort按指定維度將張量元素升序/降序排列round/ceil/floor四舍五入/向上取整/向下取整操作transpose轉(zhuǎn)置計算734、計算圖編程框架中使用有向圖來描述計算過程。有向圖中包含一組節(jié)點和邊支持通過多種高級語言來構(gòu)建計算圖(C++/Python)計算圖對應(yīng)了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示例:y=w*x靜態(tài)圖vs.動態(tài)圖matmulwxy靜態(tài)圖動態(tài)圖先定義整張圖,再運行即時運行,網(wǎng)絡(luò)模型可在運行時修改可以對圖進(jìn)行全局優(yōu)化,獲得更快的運算速度代碼編寫靈活,可立即獲得執(zhí)行結(jié)果,調(diào)試方便調(diào)試不方便優(yōu)化不方便74訓(xùn)練預(yù)測新數(shù)據(jù)模型參數(shù)預(yù)測值訓(xùn)練數(shù)據(jù)深度學(xué)習(xí)方法加載訓(xùn)練數(shù)據(jù)集構(gòu)建模型定義損失函數(shù)梯度計算與優(yōu)化保存模型訓(xùn)練模型構(gòu)建神經(jīng)網(wǎng)絡(luò)實例化神經(jīng)網(wǎng)絡(luò)調(diào)試讀取輸入圖像神經(jīng)網(wǎng)絡(luò)模型優(yōu)化Pytorch整體架構(gòu)75四大模塊計算圖構(gòu)建模塊:完成從輸入的用戶程序到編程框架內(nèi)部原始計算圖的轉(zhuǎn)換過程,編程框架的入口模塊分布式訓(xùn)練模塊:應(yīng)對更大規(guī)模的神經(jīng)網(wǎng)絡(luò),將訓(xùn)練、推理任務(wù)從一臺設(shè)備擴(kuò)展到多臺設(shè)備深度學(xué)習(xí)編譯模塊:對計算圖分別進(jìn)行圖層級和算子層級的編譯優(yōu)化,從而提升單設(shè)備上的執(zhí)行效率計算圖執(zhí)行模塊:將優(yōu)化后的計算圖中的張量和操作映射到指定設(shè)備上進(jìn)行具體執(zhí)行,并給出編程框架的輸出結(jié)果計算圖構(gòu)建計算圖執(zhí)行分布式訓(xùn)練深度學(xué)習(xí)編譯dataMatmulweightoutput原始計算圖優(yōu)化后的計算圖data_0OptMatmul_0weight_0output_0設(shè)備0data=torch.tensor(…)weight=torch.tensor(…)output=torch.matmul(data,weight)用戶程序編程框架輸出
output…拆分后的計算圖Matmul_0weight_0output_0設(shè)備0data_0Matmul_1weight_1output_1設(shè)備1data_1通信Pytorch整體架構(gòu)圖計算圖構(gòu)建77計算圖由兩個基本元素構(gòu)成:張量(Tensor)和張量操作(Operation)。計算圖是有向圖,有向邊指明了張量的流動方向計算圖執(zhí)行將計算圖中的張量和操作(本節(jié)又稱算子)映射到給定設(shè)備上具體執(zhí)行設(shè)備管理張量實現(xiàn)算子執(zhí)行獲取算子執(zhí)行序列實現(xiàn)算子:前端定義、后端實現(xiàn)、前后端綁定查找并調(diào)用算子78深度學(xué)習(xí)編譯79接收以計算圖形式表示的深度學(xué)習(xí)任務(wù),并在指定硬件平臺上生成高性能代碼多個層級中間表示&多個層級優(yōu)化圖層級優(yōu)化:子圖替換、常量折疊、公共子表達(dá)式刪除、布局優(yōu)化以及算子融合等算子層級優(yōu)化:自動調(diào)優(yōu),基于搜索的方法和基于多面體模型的方法常見深度學(xué)習(xí)框架中所采用的編譯技術(shù)和深度學(xué)習(xí)編譯器TVM、TC(TensorComprehensions)、XLA、MLIR…分布式訓(xùn)練80根據(jù)分布式計算中的分區(qū)情況,可以劃分出不同的分布式計算方法:數(shù)據(jù)并行:對輸入數(shù)據(jù)進(jìn)行分區(qū),用于解決單節(jié)點算力不足的問題。模型并行:對模型參數(shù)進(jìn)行分區(qū),用于解決單節(jié)點內(nèi)存不足的問題?;旌喜⑿校和瑫r對輸入數(shù)據(jù)和模型參數(shù)進(jìn)行分區(qū),將數(shù)據(jù)并行和模型并行在訓(xùn)練過程中同時使用。六七章章節(jié)定位輸入輸出建模實現(xiàn)運行81用來處理智能任務(wù)的處理器可以是CPU、GPU、FPGA等也可以是專用的深度學(xué)習(xí)處理器(DLP)82智能計算系統(tǒng)中的處理器832019201320082014201520162017國際首個深度學(xué)習(xí)處理器架構(gòu)DianNao國際首個多核深度學(xué)習(xí)處理器架構(gòu)DaDianNao國際首個深度學(xué)習(xí)處理器芯片國際首個深度學(xué)習(xí)指令集奠定寒武紀(jì)生態(tài)基礎(chǔ)近億臺手機和服務(wù)器開始集成寒武紀(jì)處理器國際上同期峰值速度最高的智能芯片MLU100AlphaGo用1202個CPU+176個GPU戰(zhàn)勝李世石Google公布其第一代深度學(xué)習(xí)處理器TPUNvidia在其V100GPU產(chǎn)品中加入深度學(xué)習(xí)加速器深度學(xué)習(xí)處理器發(fā)展第三次熱潮(2006-至今)可用于人工智能的GPUGoogleBrain貓臉識別1.6萬個CPU核訓(xùn)練數(shù)天20122018MLU270性能提升4倍首個面向深度學(xué)習(xí)的GPU架構(gòu)Pascal以精簡的通用處理器結(jié)構(gòu)為基礎(chǔ)省去了分支預(yù)測器數(shù)據(jù)緩存被便箋存儲器取代添加直接訪存模塊(DMA)負(fù)責(zé)便箋存儲器與主存儲器間的數(shù)據(jù)搬運添加矩陣運算單元添加矩陣指令的控制單元84DLP結(jié)構(gòu)深度學(xué)習(xí)處理器(DLP)的特點計算:矩陣、卷積運算為主,輔以標(biāo)量、向量運算控制:計數(shù)循環(huán)為主,輔以條件分支指令存儲:便箋存儲器為主,輔以寄存器采用分形方式進(jìn)行規(guī)模擴(kuò)展85深度學(xué)習(xí)處理器的特點計算矩陣運算單元可設(shè)計為矩陣乘向量單元、矩陣乘法單元、脈動陣列機等矩陣乘向量單元適用于深度學(xué)習(xí)模型推理場景矩陣乘法單元適用于高性能的深度學(xué)習(xí)訓(xùn)練場景脈動陣列機在設(shè)計規(guī)模更大時能夠帶來多種優(yōu)勢86訪存便箋存儲器是DLP核心的數(shù)據(jù)樞紐訪問便箋可能成為瓶頸“拓寬道路”:增加端口、設(shè)計為分組SRAM代價:硬件開銷增加“規(guī)劃車流”:根據(jù)算法特征,采用分離式設(shè)計代價:降低通用性通過軟件流水線(而不再是硬件)使計算/訪存并行起來指令重新排序,不需要亂序執(zhí)行顯式控制同步,不需要依賴檢查87通信通信結(jié)構(gòu)的設(shè)計原則:邏輯上:環(huán)狀鏈路足以高效完成通信物理上:鏈路設(shè)計適當(dāng)增加冗余,按需配成環(huán)路綜合考慮性能和成本約束做出選擇88優(yōu)化設(shè)計一些常用的/前沿的優(yōu)化設(shè)計:變換對算法進(jìn)行變換,削減計算強度壓縮對算法進(jìn)行壓縮,直接減少算法的參數(shù)量和計算量近似對算法進(jìn)行近似替代,降低計算成本非傳統(tǒng)結(jié)構(gòu)和器件探索采用CMOS數(shù)字電路以外的技術(shù),改寫計算范式89第八章章節(jié)定位90編程框架智能編程語言
輸入輸出建模實現(xiàn)運行本章將學(xué)習(xí)到智能編程語言的基礎(chǔ)知識及相應(yīng)的應(yīng)用開發(fā)、調(diào)試和調(diào)優(yōu)方法等學(xué)習(xí)了實現(xiàn)深度學(xué)習(xí)算法所使用的編程框架的基本原理、簡單用法等抽象硬件架構(gòu)層次化的智能計算系統(tǒng)抽象硬件架構(gòu)91智能計算系統(tǒng)中每一層都包含存儲單元、控制單元和若干個計算單元每個計算單元又進(jìn)一步分解為子控制單元、子計算單元和子存儲單元三部分,整個系統(tǒng)以這樣的方式遞歸構(gòu)成在最底層,每個葉節(jié)點都是具體的加速器,用于完成最基本的計算任務(wù)。典型智能計算系統(tǒng)多卡的DLP服務(wù)器抽象為五個層次,即服務(wù)器級(Server)、板卡級(Card)、芯片級(Chip)、處理器簇級(Cluster)和處理器核級(Core)。92可以方便地通過增加各層次的規(guī)模來提升整個系統(tǒng)算力異構(gòu)編程模型異構(gòu)計算系統(tǒng)組成通用處理器:控制設(shè)備(簡稱主機端),負(fù)責(zé)控制和調(diào)度等工作領(lǐng)域處理器:從設(shè)備(簡稱設(shè)備端),負(fù)責(zé)大規(guī)模的并行計算或領(lǐng)域?qū)S糜嬎闳蝿?wù)二者協(xié)同完成完整計算任務(wù)93典型異構(gòu)計算系統(tǒng)(a)GPU為核心(b)FPGA為核心(c)TPU為核心(d)DLP為核心異構(gòu)編程模型:流程異構(gòu)編程模型的編譯和鏈接流程整體采用分離式編程方式:主機端代碼和設(shè)備端代碼94異構(gòu)編程模型:編譯器支持編譯器支持是異構(gòu)并行編程模型的核心95異構(gòu)并行編程編譯器任務(wù)劃分?jǐn)?shù)據(jù)分布數(shù)據(jù)通信并行同步編程模型需要向程序員提供并行編程接口,方便程序員定義和劃分任務(wù)。編譯器負(fù)責(zé)底層的任務(wù)劃分,使得程序可以在并行架構(gòu)上高效執(zhí)行。對于編譯器和底層運行時系統(tǒng)而言,需要根據(jù)算法和硬件架構(gòu)的特點,通過合適的數(shù)據(jù)分布指導(dǎo)后續(xù)編譯和運行時優(yōu)化。由于設(shè)備端通常有多級存儲空間、編譯器需要支持各種地址空間聲明,以方便程序員顯式控制存儲數(shù)據(jù)的地址空間。設(shè)備端程序一般要求感知多個核的并行處理,因此需要提供對同步機制的支持。異構(gòu)編程模型:運行時支持完成任務(wù)映射及調(diào)度,即指定任務(wù)具體在哪個設(shè)備或計算單元上以何種順序執(zhí)行分為主機端和設(shè)備端
主機端:控制部分和串行任務(wù)在主機端執(zhí)行
設(shè)備端:計算部分和并行任務(wù)在設(shè)備端執(zhí)行96通用智能編程模型:編譯器支持任務(wù)劃分并行內(nèi)建變量硬件:clusterDim(維度),clusterId(序號),coreDim,coreId任務(wù):taskDim[XYZ],taskId[XYZ]表示Kernel啟動task的規(guī)模,有XYZ三個維度,用戶根據(jù)需求進(jìn)行指定任務(wù)調(diào)度類型表示Kernel運行調(diào)度時需要的硬件核BLOCK類型:Kernel為單核任務(wù),按單核進(jìn)行調(diào)度UNIONx類型:Kernel為多核并行任務(wù)(其中x可以為1/2/4,UNION1對應(yīng)1個cluster4個核)97taskDimZtaskDimYtaskDimXtaskID[XYZ]通用智能編程模型:運行時支持任務(wù)調(diào)度單位(BLOCK/UNIONx)以調(diào)度單位將Kernel中的任務(wù)在時間或空間維度展開BLOCK:單核調(diào)度,當(dāng)有一個核空閑時,調(diào)度一個任務(wù)執(zhí)行UNION1:調(diào)度時需要1個cluster,當(dāng)有1個cluster空閑時,調(diào)度任務(wù)執(zhí)行UNION2:調(diào)度時需要2個cluster,當(dāng)有2個cluster空閑時,調(diào)度任務(wù)執(zhí)行調(diào)度單位需要用戶在編程時指定。運行時只有當(dāng)空閑的硬件資源數(shù)大于調(diào)度單位時,Kernel才會被調(diào)度隊列(Queue)管理需要執(zhí)行的任務(wù),隊列既可以單獨工作,也可以協(xié)同工作運行時(或硬件)不斷把任務(wù)放到隊列中,一旦硬件計算資源有空閑,就從隊列中取出一個任務(wù)執(zhí)行981、主機端異步發(fā)射3個Kernel到Queue中。用戶可以根據(jù)同步和通信的需要,在三次發(fā)射之間或之后任意位置調(diào)用同步接口SyncQueue。假設(shè)在三次發(fā)射之后調(diào)用,則等待Queue中的任務(wù)全部完成后再繼續(xù)執(zhí)行主機端SyncQueue后面的程序;2、第一個任務(wù)Kernel1在Time1被發(fā)射后立即進(jìn)入Queue,設(shè)備端發(fā)現(xiàn)當(dāng)前全部核心空閑則立即執(zhí)行Kernel1。Kernel1的任務(wù)類型為UNION2,會從Time1開始占用2個Cluster執(zhí)行計算;99主機端執(zhí)行3個Kernel任務(wù)設(shè)備端有4個Cluster,16個Core1003、因沒有調(diào)用SyncQueue,所以主機端發(fā)射Kernel1后立即發(fā)射Kernel2,設(shè)備端調(diào)度器在調(diào)度執(zhí)行Kernel1后發(fā)現(xiàn)隊列中有了新的Kernel2,也幾乎在Time1時刻開始執(zhí)行Kernel2。Kernel2的任務(wù)類型為UNION1,會從Time1開始占用1個Cluster計算;4、Kernel1和Kernel2幾乎同時被調(diào)度器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商虛擬現(xiàn)實購物體驗合作合同3篇
- 2025年度農(nóng)家樂鄉(xiāng)村旅游資源整合與開發(fā)協(xié)議4篇
- 二零二五年度農(nóng)業(yè)科技創(chuàng)新承包合同4篇
- 二零二五年度多功能車間租賃及配套服務(wù)協(xié)議4篇
- 2025年校園配送服務(wù)食品安全快速檢測中心建設(shè)合作協(xié)議3篇
- 二零二五年度現(xiàn)代化廚房櫥柜定制工程合同4篇
- 2025版農(nóng)業(yè)合作社農(nóng)產(chǎn)品直銷渠道建設(shè)合同4篇
- 2025年度石材幕墻與鋼架施工質(zhì)量控制與驗收標(biāo)準(zhǔn)合同2篇
- 2025年個人房產(chǎn)買賣合同稅務(wù)籌劃合同
- 2025年度創(chuàng)業(yè)團(tuán)隊股權(quán)合作與約束協(xié)議4篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊》專題培訓(xùn)
- 湖南財政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 全國身份證前六位、區(qū)號、郵編-編碼大全
- 2024-2025學(xué)年福建省廈門市第一中學(xué)高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學(xué)第二版教學(xué)》課件
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級下學(xué)期期末數(shù)學(xué)試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學(xué) 中國大學(xué)慕課答案
評論
0/150
提交評論