博客專欄

EEPW首頁 > 博客 > AI加速器與機(jī)器學(xué)習(xí)算法:協(xié)同設(shè)計(jì)與進(jìn)化

AI加速器與機(jī)器學(xué)習(xí)算法:協(xié)同設(shè)計(jì)與進(jìn)化

發(fā)布人:AI科技大本營 時(shí)間:2022-09-26 來源:工程師 發(fā)布文章

作者 | Shashank Prasanna

翻譯 | 胡燕君

此刻,你應(yīng)該是在電腦或手機(jī)上看這篇文章。不管怎樣,這些機(jī)器都屬于現(xiàn)代計(jì)算機(jī),它們都有中央處理器(CPU)和其他為特定功能服務(wù)的專用芯片,例如顯卡、聲卡、網(wǎng)卡、傳感器融合等。處理特定任務(wù)時(shí),專用處理器往往比通用CPU更快更高效。圖片計(jì)算機(jī)發(fā)展早期,CPU都會(huì)和專用處理器配合使用。1970年代的8位和16位CPU需要依賴軟件來模擬浮點(diǎn)指令,因此執(zhí)行浮點(diǎn)運(yùn)算非常慢。而由于計(jì)算機(jī)輔助設(shè)計(jì)(CAD)和工程模擬等應(yīng)用對(duì)浮點(diǎn)運(yùn)算的速度要求較高,于是人們開始用數(shù)學(xué)協(xié)處理器(math coprocessor)輔助CPU,讓數(shù)學(xué)協(xié)處理器分擔(dān)所有浮點(diǎn)運(yùn)算任務(wù),它的浮點(diǎn)運(yùn)算速度和效率都比CPU更高。這就是專用處理器的一個(gè)例子。圖片關(guān)注AI和半導(dǎo)體行業(yè)的朋友近來可能聽說過“機(jī)器學(xué)習(xí)(ML)專用處理器”(即AI加速器)。最常見的AI加速器莫過于NVIDIA GPU,此外還有Intel的Habana Gaudi處理器、Graphcore的Bow IPU、Google的TPU、AWS的Trainium和Inferentia芯片等。為什么如今有這么多AI加速器可供選擇?它們和CPU有什么不同?算法如何改變才能適應(yīng)這些硬件?硬件又該如何發(fā)展才能支持最新的算法?本文將一一解答。本文主要內(nèi)容包括:

  • 為什么需要專用AI加速器?
  • ML硬件的分類:CPU、GPU、AI加速器、FPGA和ASIC
  • “硬件感知(Hardware-aware)”的算法和“算法感知(Algorithms-aware)”的硬件
  • AI加速器與高效ML算法的協(xié)同進(jìn)化
  • 針對(duì)推理的AI加速器與高效算法
  • 針對(duì)訓(xùn)練的AI加速器與高效算法
  • AI加速器的未來

 圖片為什么需要專用AI加速器?

構(gòu)建ML專用處理器有三個(gè)方面的原因:能效、性能、模型大小及復(fù)雜度。近來,要提高模型準(zhǔn)確率,通常做法是擴(kuò)大模型參數(shù)量,并用更大型的數(shù)據(jù)集訓(xùn)練模型。計(jì)算機(jī)視覺、自然語言處理和推薦系統(tǒng)都采用這種做法。語言模型方面,前幾年誕生的GPT-3有1750億參數(shù),當(dāng)時(shí)被視為大模型的“天花板”,但后來又出現(xiàn)了GLaM和NVIDIA MT-NLG,參數(shù)量分別達(dá)到1.2萬億和5300億。按照歷史規(guī)律,模型將越來越大,而現(xiàn)有處理器的算力將無法滿足大模型在訓(xùn)練時(shí)間和推理延遲方面的要求。不過,構(gòu)建AI專用加速器的最重要原因還是能效,開發(fā)AI專用芯片可節(jié)省巨大的能源,可覆蓋研發(fā)投入有余。為什么需要高能效的處理器?ML模型越大,需要執(zhí)行的內(nèi)存訪問操作就越多。與內(nèi)存訪問相比,矩陣-矩陣運(yùn)算和矩陣-向量運(yùn)算的能效高很多。根據(jù)斯坦福大學(xué)韓松博士的論文(https://arxiv.org/pdf/1506.02626v3.pdf),讀取內(nèi)存的能耗比加/乘運(yùn)算操作的能耗高出好幾個(gè)數(shù)量級(jí)。大型神經(jīng)網(wǎng)絡(luò)由于無法片上存儲(chǔ),需要執(zhí)行更多DRAM讀取操作,因此能耗還要更高。圖片圖源:https://arxiv.org/pdf/1506.02626v3.pdf
用通用處理器運(yùn)行深度神經(jīng)網(wǎng)絡(luò)時(shí),擴(kuò)大處理器規(guī)??梢詭硇阅芴嵘?,但即便只是小幅提升也須以大量能耗和巨額設(shè)備成本為代價(jià)。

CPU等通用處理器犧牲低能耗換取通用性,AI加速器等專用處理器則犧牲通用性換取低能耗。

使用AI加速器則不一樣。AI加速器通過改進(jìn)設(shè)計(jì),可以減少內(nèi)存訪問,提供更大的片上緩存,還可以具備特定的硬件功能(如加速矩陣-矩陣計(jì)算)。由于AI加速器是基于特定而構(gòu)建的設(shè)備,可根據(jù)算法進(jìn)行適配改進(jìn),因此其運(yùn)行效率會(huì)比通用處理器更高。 


圖片

ML硬件的分類——CPU、GPU、AI加速器、FPGA和ASIC

 接下來我們談?wù)劶铀倨鞯牟煌N類,以及它們的通用和專用程度。圖片

如上圖所示,最具通用性的是CPU,可以運(yùn)行任意代碼。專用芯片可執(zhí)行的任務(wù),CPU也能執(zhí)行,如圖像處理、語音處理、機(jī)器學(xué)習(xí)等。然而,CPU的性能和能效都比較低。 

專用性最強(qiáng)的是專用集成電路(ASIC),又稱固定功能芯片,因?yàn)樗荒軋?zhí)行一種或幾種任務(wù),而且通常不可編程,也沒有面向開發(fā)者的API。耳機(jī)中的降噪處理器就是一種ASIC芯片,它需要同時(shí)具備低能耗和高性能,這樣才能既延長耳機(jī)電池使用時(shí)間,又能實(shí)現(xiàn)低延遲,以免用戶看節(jié)目時(shí)遇到聲畫不同步的糟糕體驗(yàn)。上圖中,越靠左代表通用性和可編程性越強(qiáng);越靠右代表專用性和效率越高。那么GPU、FPGA和AI加速器分別處于圖中什么位置呢?答案是:它們都處在這兩個(gè)極端之間。 

圖片

靠近ASIC一端的是現(xiàn)場可編程邏輯門陣列(FPGA)。顧名思義,F(xiàn)PGA是可編程的,但編程人員需要具備硬件設(shè)計(jì)知識(shí),還須對(duì)Verilog、VHDL等硬件描述語言(HDL)有一定了解。換言之,F(xiàn)PGA編程與硬件關(guān)聯(lián)度太高,而軟件開發(fā)人員缺乏這方面的編程技能和工具,因此難以對(duì)它進(jìn)行編程。靠近CPU一端的是GPU。GPU是面向特定目的處理器,擅長處理并行任務(wù),例如圖形著色器計(jì)算和矩陣乘法。CPU更適合延遲敏感型應(yīng)用,GPU則更適合要求高吞吐量的應(yīng)用。GPU與CPU的相似之處在于它們都可編程。而作為并行處理器,GPU使用NVIDIA CUDA和OpenCL等語言,雖然能處理的任務(wù)種類比CPU少,但在運(yùn)行包含并行任務(wù)的代碼時(shí)極高效。Intel的Habana Gaudi處理器、AWS的Trainium和Inferentia芯片等AI加速器則處在GPU的右側(cè)。Habana Gaudi處理器具備可編程性,但通用性比GPU更低,所以應(yīng)處GPU右側(cè)。AWS的Inferentia芯片不可編程,但可以加速多種操作,如果你的ML模型不支持這些操作,Inferentia就會(huì)執(zhí)行CPU回退(fallback)模式。綜上,Inferentia應(yīng)處Habana Gaudi的右側(cè)。

圖片“硬件感知(Hardware-aware)”的算法和“算法感知(Algorithms-aware)”的硬件

 通過以上分類,我們對(duì)各種處理器有了大致認(rèn)識(shí)。下面我們來談?wù)勥@些處理器如何與軟件互相配合。圖片通用計(jì)算模型有兩個(gè)組成部分:(1)軟件與算法;(2)運(yùn)行軟件的硬件處理器。一般而言,這兩部分互相獨(dú)立——編寫軟件時(shí)很少會(huì)考慮軟件會(huì)在什么硬件上運(yùn)行;而硬件設(shè)計(jì)的出發(fā)點(diǎn)則是讓硬件盡可能支持更多種類的軟件。圖片通用計(jì)算模型逐漸演進(jìn),需要應(yīng)用于深度學(xué)習(xí)等要求高性能和高能效的領(lǐng)域,因此需要加強(qiáng)算法設(shè)計(jì)和硬件設(shè)計(jì)之間的聯(lián)系?,F(xiàn)代ML計(jì)算模型同樣包含兩個(gè)組成部分:(1)ML算法與軟件框架;(2)與AI加速器配合使用的通用處理器。不同于通用計(jì)算模型的開發(fā),ML研發(fā)人員會(huì)針對(duì)特定硬件設(shè)計(jì)ML算法。比如,編寫代碼時(shí)可以充分利用硬件的特定功能(如支持多種精度:INT8、FP16、BF16、FP32)實(shí)現(xiàn)特定的芯片功能(混合精度、結(jié)構(gòu)化稀疏)。然后,用戶就可以通過常見的ML軟件框架使用這些功能。同理,硬件設(shè)計(jì)師會(huì)針對(duì)特定算法構(gòu)建AI加速器。比如,為加速M(fèi)L矩陣計(jì)算而設(shè)計(jì)專門的芯片功能(如NVIDIA在Volta GPU架構(gòu)中引入Tensor Core)。這就是AI加速器和ML算法的協(xié)同進(jìn)化。硬件設(shè)計(jì)師為AI加速器增加ML算法可以使用的功能,而ML研發(fā)人員則利用AI加速器的硬件功能量身設(shè)計(jì)新的算法。

硬件和軟件的協(xié)同可以帶來更好的性能和更高的能效。
 
圖片AI加速器與高效ML算法的協(xié)同進(jìn)化

 AI加速器分為兩類:(1)用于訓(xùn)練的AI加速器;(2)用于推理的AI加速器。由于訓(xùn)練和推理的目標(biāo)不同,而AI加速器是針對(duì)特定工作負(fù)載的專用處理器,因此有必要為不同類型的工作負(fù)載分別設(shè)計(jì)處理器。用于訓(xùn)練的AI加速器的目標(biāo)是減少訓(xùn)練時(shí)間,而且應(yīng)具備能配合訓(xùn)練算法的硬件特點(diǎn)。因此,AI訓(xùn)練加速器的功率通常較大,內(nèi)存空間也較大,以滿足較高的吞吐量(每秒處理的數(shù)據(jù))要求。由于AI訓(xùn)練加速器注重吞吐量,因此提高吞吐量和利用率有助于降低能耗成本(即通過擴(kuò)大吞吐量降低“能耗/吞吐量”之間的比率)。AI訓(xùn)練加速器還支持混合精度訓(xùn)練,使用較低精度以加快計(jì)算速度,使用高精度累積計(jì)算結(jié)果,從而實(shí)現(xiàn)比通用處理器更高的能效。(后文還將詳談AI加速器的混合精度訓(xùn)練。 AI推理加速器的目標(biāo)是,在運(yùn)行大量獨(dú)立數(shù)據(jù)批次時(shí)降低預(yù)測延遲,因此需要具備高能效特點(diǎn),需要降低“能耗/預(yù)測”之間的比率。雖然也可將訓(xùn)練加速器用于推理加速(畢竟訓(xùn)練中的前向傳播過程本質(zhì)上即是一種推理任務(wù)),但使用訓(xùn)練加速器時(shí),“能耗/推理”之比會(huì)大很多,因?yàn)橛?xùn)練加速器處理小型數(shù)據(jù)批次的推理請(qǐng)求時(shí)利用率較低。圖片訓(xùn)練加速器就像公交車,只有保持乘客滿員才能實(shí)現(xiàn)高能效(油耗/乘客數(shù)之比低)。如果偌大的公交車每次只載一個(gè)人,其油耗/乘客數(shù)之比將變得極高。而推理加速器就像跑車,其速度比公交車快,只載一人時(shí)能效比公交車高(跑車的單名乘客油耗比公交車低)。但如果想用跑車一次載50個(gè)人,它就會(huì)跑得極慢(何況超載違法)。下文將分別談?wù)撚?xùn)練和推理的工作流,以及AI加速器和軟件應(yīng)具備什么特點(diǎn)才能在訓(xùn)練和推理中實(shí)現(xiàn)高性能和高能效。

圖片針對(duì)推理的AI加速器與高效算法

 ML推理即是根據(jù)新的數(shù)據(jù)使用訓(xùn)練好的模型以輸出預(yù)測結(jié)果。本節(jié)將討論AI加速器上運(yùn)行的可提升推理性能和效率的算法。

圖片

提升機(jī)器學(xué)習(xí)效率最重要的方法是量化。要充分理解量化,首先須了解計(jì)算機(jī)硬件中的數(shù)字表示方法。浮點(diǎn)數(shù)是數(shù)字計(jì)算機(jī)中用以表示連續(xù)實(shí)值的離散表示形式。ML算法通?;贗EEE 754標(biāo)準(zhǔn)用單精度(FP32)儲(chǔ)存和處理數(shù)字。IEEE 754還規(guī)定了AI加速器支持的其他常見浮點(diǎn)類型,如半精度(FP16)和雙精度(FP64)。現(xiàn)代AI加速器也支持IEEE 754以外的數(shù)字格式,例如BF16(由Google Brain引進(jìn);NVIDIA Ampere GPU、AWS Inferential、AWS Tranium、Intel Habana Gaudi和Google TPU均支持此格式)和TF32(NVIDIA Ampere架構(gòu)和AWS Tranium芯片支持此格式)。推理加速器還支持整數(shù)精度,如INT8和INT4。量化在推理中的優(yōu)勢(shì)在推理任務(wù)中,模型權(quán)重和激活函數(shù)輸出均可被量化,例如可將FP32(訓(xùn)練常用精度)轉(zhuǎn)化為更低精度的表示形式(FP16、BF16和INT8)。使用較低精度可以獲得更高的性能和能效。當(dāng)把FP32轉(zhuǎn)化為FP16操作時(shí),數(shù)據(jù)大小可減半,能耗可減少約75%(數(shù)據(jù)來源:https://arxiv.org/pdf/1506.02626v3.pdf) ,使用的硅面積(silicon area)也可減少約75%。 如果僅從推理的角度考慮硬件設(shè)計(jì),可以構(gòu)建僅供推理使用、僅支持較低精度的加速器,這樣就可以縮小加速器的尺寸,并提高能效。將運(yùn)算結(jié)果從FP32轉(zhuǎn)化為INT8數(shù)據(jù)還可進(jìn)一步減少能耗,因?yàn)閿?shù)據(jù)大小減少到原來的1/4。然而,通過量化方法提升計(jì)算效率會(huì)損失一定的預(yù)測準(zhǔn)確性。因?yàn)閷⒏呔缺硎拘问睫D(zhuǎn)化為低精度本質(zhì)上是一種壓縮,壓縮意味著會(huì)損失部分?jǐn)?shù)據(jù)。FP32的動(dòng)態(tài)范圍比FP16和INT8更大,因此,推理中,量化的目的是保留數(shù)據(jù)中的“信號(hào)”,去除數(shù)據(jù)中的“噪聲”,為實(shí)現(xiàn)這個(gè)目的可以有多種方法。使用NVIDIA GPU進(jìn)行量化NVIDIA的Ampere和Turing等較新GPU架構(gòu)均支持多種精度類型。2016年,NVIDIA在Pascal架構(gòu)中首次引進(jìn)了FP16精度類型,而最新的Ampere和Turing架構(gòu)GPU均體現(xiàn)了“硬件與算法的協(xié)同進(jìn)化”。我之前寫過一篇文章介紹GPU的完整發(fā)展史和不同架構(gòu)的GPU及其特點(diǎn):Choosing the right GPU for deep learning on AWS(https://towardsdatascience.com/choosing-the-right-gpu-for-deep-learning-on-aws-d69c157d8c86)。本節(jié)將聚焦硬件和軟件層面如何支持GPU進(jìn)行量化。以NVIDIA 的Ampere架構(gòu)為例。你可以在AWS云服務(wù)器上通過啟動(dòng)Amazon EC2 p4d實(shí)例或G5實(shí)例體驗(yàn)Ampere架構(gòu)的性能。p4d和G5實(shí)例分別使用NVIDIA的A100和A10G GPU,兩款GPU都基于Ampere架構(gòu),都支持FP64、FP32、FP16、 INT8、BF16和TF32精度類型,也都包含一種被NVIDIA稱為“Tensor Core”的運(yùn)算單元,用于混合精度計(jì)算。推理時(shí)用到的重點(diǎn)精度類型只有FP16和INT8兩種(其他精度類型將在下一節(jié)中提到訓(xùn)練時(shí)詳談)。大多數(shù)深度學(xué)習(xí)框架都使用NVIDIA GPU和FP32格式訓(xùn)練模型,因此NVIDIA 推出TensorRT編譯器,用以加快推理速度。TensorRT可將FP32格式的模型權(quán)重和激活函數(shù)量化為FP16和INT8格式。量化時(shí),TensorRT先確定一個(gè)比例因子(scaling factor),然后根據(jù)該系數(shù)將FP32的動(dòng)態(tài)范圍映射到FP16或INT8的動(dòng)態(tài)范圍。映射到INT8的難度尤其高,因?yàn)镮NT8的動(dòng)態(tài)范圍比FP32小太多。INT8僅能表示256個(gè)數(shù)值,而FP32足足能表示4.2×109個(gè)數(shù)值。如何在通過量化提高推理速度的同時(shí)減少精度損失?一般有兩種方法:

  • 訓(xùn)練后量化(PTQ):使用一個(gè)訓(xùn)練好的、以FP32格式計(jì)算的模型,確定比例因子,然后將FP32映射為INT8。確定比例因子的方法是:TensorRT衡量每個(gè)神經(jīng)網(wǎng)絡(luò)層中激活函數(shù)輸出的分布,然后找到一個(gè)使參考分布(reference distribution)和量化分布(quantized distribution)之間信息損失(KL散度)最小的比例因子。

  • 量化感知訓(xùn)練(QAT):在訓(xùn)練中計(jì)算比例因子,使模型可以適應(yīng)信息損失并將信息損失降到最低。

可見,硬件不斷發(fā)展,具備更多可提升效率的功能(如降低精度)。同時(shí),算法也不斷進(jìn)化,可以更好地利用硬件的功能。我的另一篇文章提供了NVIDIA TensorRT在GPU上實(shí)行量化的代碼示例https://towardsdatascience.com/a-complete-guide-to-ai-accelerators-for-deep-learning-inference-gpus-aws-inferentia-and-amazon-7a5d6804ef1c)。使用AWS Inferentia芯片進(jìn)行量化NVIDIA GPU設(shè)計(jì)之初用于圖像處理加速,后來才演變成強(qiáng)大的AI加速器,而AWS Inferentia芯片一開始即是為機(jī)器學(xué)習(xí)推理而生。每塊AWS Inferentia芯片含4個(gè)NeuronCore。NeuronCore是基于脈動(dòng)陣列的矩陣相乘引擎,有兩級(jí)存儲(chǔ)層次結(jié)構(gòu)和極大的片上緩存空間。AWS Inferentia芯片支持FP16、BF16和INT8數(shù)據(jù)類型,不支持更高精度的格式——畢竟AWS Inferentia是一種推理專用處理器,推理時(shí)無須用到更高的精度。正如NVIDIA為GPU推出了TensorRT編譯器,AWS也推出了AWS Neuron SDK和AWS Neuron編譯器,該編譯器支持量化和優(yōu)化,可提高推理效率。盡管AWS Inferentia芯片支持INT8格式,但截至本文撰寫時(shí),AWS Neuron編譯器只支持量化到FP16和BF16格式。用FP32格式訓(xùn)練的模型會(huì)在編譯過程中自動(dòng)被轉(zhuǎn)化為BF16格式。如果在使用AWS Neuron編譯器之前人工將FP32格式的權(quán)重量化為FP16,那么編譯器就會(huì)保留FP16精度用于推理。與GPU相比,AWS Inferentia芯片不可編程,專用性比GPU更強(qiáng),更接近ASIC。如果模型中包含的操作均為AWS Inferentia所支持,那么對(duì)于特定的模型和批次規(guī)模(batch size)而言,使用Inferentia就比使用GPU更能提高模型的能效。然而,如果模型含有Inferentia不支持的操作,AWS Neuron編譯器會(huì)自動(dòng)將相應(yīng)操作置于主機(jī)CPU上,這就導(dǎo)致CPU和加速器之間需要進(jìn)行數(shù)據(jù)搬運(yùn),進(jìn)而降低性能和效率。

 圖片針對(duì)訓(xùn)練的AI加速器與高效算法

 ML訓(xùn)練即利用訓(xùn)練數(shù)據(jù)優(yōu)化模型參數(shù),以提高模型的預(yù)測準(zhǔn)確度。本節(jié)將討論AI加速器上運(yùn)行的算法如何提升推理性能和能效。 接下來我們依舊會(huì)討論精度,不過這次是從訓(xùn)練工作流的角度。如前所述,訓(xùn)練時(shí),模型權(quán)重和激活函數(shù)都以FP32格式存儲(chǔ),F(xiàn)P32遵循早在深度學(xué)習(xí)之前就誕生的IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn)。FP32之所以被選為機(jī)器學(xué)習(xí)默認(rèn)的浮點(diǎn)數(shù)表示形式,是因?yàn)橛?xùn)練時(shí)FP16可表示的信息量不夠大,而FP64可表示的信息量則太大,而且也不必用到這么高的精度。機(jī)器學(xué)習(xí)需要一種精度處在FP16 和FP64之間的表示格式,但當(dāng)時(shí)的硬件并不支持。換言之,當(dāng)時(shí)的硬件并不能滿足ML算法的需求,并未成為“算法感知”的硬件。如果當(dāng)時(shí)的ML研究人員有更好的選擇,他們應(yīng)該會(huì)選一種不同于FP32的格式,或者使用混合精度來提升性能和效率。混合精度也正是目前AI加速器的發(fā)展方向。實(shí)現(xiàn)混合精度,需要硬件和算法的協(xié)同設(shè)計(jì)。圖片
混合精度訓(xùn)練提升性能與效率
矩陣乘法運(yùn)算是神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理的基本操作。AI加速器的主要工作即為在神經(jīng)網(wǎng)絡(luò)的不同層中將輸入數(shù)據(jù)和權(quán)重的大型矩陣相乘。混合精度訓(xùn)練背后的思想是,訓(xùn)練時(shí)的矩陣乘法發(fā)生在較低精度表示(FP16、BF16、TF32),因此它們更快和能效更高,然后用FP32格式累積運(yùn)算結(jié)果,以降低信息損失,從而提升訓(xùn)練速度和能效。使用NVIDIA GPU進(jìn)行混合精度訓(xùn)練2017年,NVIDIA宣布推出Volta GPU架構(gòu),其中包含專門用于機(jī)器學(xué)習(xí)的Tensor Core運(yùn)算單元。Tensor Core通過FP16運(yùn)算和FP32累積結(jié)果實(shí)現(xiàn)混合精度訓(xùn)練(https://arxiv.org/abs/1710.03740)。NVIDIA的新一代新架構(gòu)還支持更多低精度格式(BF16、TF32)。在芯片層次,Tensor Core執(zhí)行低精度(reduced-precision)融合乘加(FMA)運(yùn)算,用FP32累積結(jié)果。每一代NVIDIA架構(gòu)的進(jìn)步都體現(xiàn)了硬件和算法之間的協(xié)同設(shè)計(jì)和協(xié)同發(fā)展。

  • NVIDIA Volta架構(gòu)(2017)引入第一代Tensor Core,當(dāng)時(shí)僅支持FP16運(yùn)算和FP32累積結(jié)果。
  • NVIDIA Turing架構(gòu)(2018)的Tensor Core支持更低精度的INT8和INT4(主要可以加速推理,而非加速訓(xùn)練)。
  • NVIDIA Ampere架構(gòu)(2020)的Tensor Core還支持BF16和TF32,也就是說,它可以執(zhí)行FP16、BF16和TF32運(yùn)算,并且用FP32累積結(jié)果,以實(shí)現(xiàn)混合精度

混合精度訓(xùn)練的一大難點(diǎn)是軟件層面的實(shí)現(xiàn)。用戶必須在訓(xùn)練時(shí)執(zhí)行額外的操作,比如將權(quán)重轉(zhuǎn)化為FP16格式,但同時(shí)會(huì)保留權(quán)重的FP32副本和損失縮放(loss scaling)。盡管NVIDIA可以讓深度學(xué)習(xí)框架在只需修改少量代碼的情況下執(zhí)行這些操作,它對(duì)用戶的要求依然很高,不像使用FP32訓(xùn)練那么簡單。
NVIDIA的Ampere架構(gòu)支持TF32,可以有效解決這一用戶體驗(yàn)難題。TF32格式的好處在于,它結(jié)合了FP32的動(dòng)態(tài)范圍和FP16的精度,因此深度學(xué)習(xí)框架無需轉(zhuǎn)換格式和保留副本等額外操作即可直接支持TF32格式。然而,在為開發(fā)者減少麻煩的情況下,使用TF32可實(shí)現(xiàn)比FP32更好的性能,但NVIDIA依然推薦使用FP16或BF16格式進(jìn)行混合精度訓(xùn)練,以便獲得最快的訓(xùn)練性能。使用其他AI加速器進(jìn)行混合精度訓(xùn)練Intel Habana Gaudi處理器Habana Gaudi加速器支持混合精度訓(xùn)練的方式與NVIDIA GPU類似——通過一個(gè)附加工具配合深度學(xué)習(xí)框架,使用格式轉(zhuǎn)換和副本保存功能。若想體驗(yàn)Intel Habana Gaudi AI加速器的功能,可以通過AWS云服務(wù)器啟動(dòng)Amazon EC2 DL1實(shí)例,該實(shí)例配備8個(gè)Gaudi加速器。AWS Tranium芯片AWS在2021年re:Invent大會(huì)上宣布推出Tranium芯片,該芯片由AWS的Annapurna實(shí)驗(yàn)室研發(fā),用于AI加速。目前,Tranium 芯片尚未得到大規(guī)模應(yīng)用。AWS在大會(huì)上介紹稱,Tranium將支持FP16、TF32、BF16、INT8,以及一種稱為cFP8(定制8位浮點(diǎn)數(shù))的全新格式。

 圖片AI加速器的未來

 如今,ML算法研究和硬件設(shè)計(jì)都在蓬勃發(fā)展。AI加速器也將在性能和能效方面持續(xù)進(jìn)步,逐漸可以像通用處理器一樣無縫使用。現(xiàn)代的AI加速器已具備理想中的硬件功能,例如支持INT1和INT4,這兩種精度類型尚未被用于訓(xùn)練和推理,但或許它們的存在可以催生新的ML算法。AI加速器之間的互聯(lián)也漸見革新。隨著模型規(guī)模越來越大,我們需要更大的計(jì)算集群,將更多AI加速器連接起來,從而支持更大的工作負(fù)載。為此,NVIDIA推出了高帶寬的NVLink和NVSwitch,用于GPU之間的互聯(lián);Intel的Habana Gaudi處理器則在片上集成了基于以太網(wǎng)的RoCE RDMA。未來AI應(yīng)用將更加廣泛, AI加速器也將成為現(xiàn)代計(jì)算環(huán)境的中流砥柱。希望未來的AI加速器帶來更好的用戶和開發(fā)者體驗(yàn)。如今的異構(gòu)計(jì)算模型需要協(xié)調(diào)多個(gè)CPU和AI加速器,對(duì)大部分?jǐn)?shù)據(jù)科學(xué)家和開發(fā)人員而言,掌握它們的聯(lián)網(wǎng)和存儲(chǔ)設(shè)置難度頗高。使用Amazon SageMaker等云托管服務(wù)可省去管理基礎(chǔ)設(shè)施的麻煩,可以方便地?cái)U(kuò)大機(jī)器學(xué)習(xí)規(guī)模,然而,開源框架仍希望用戶對(duì)底層硬件、精度類型、編譯器選擇和聯(lián)網(wǎng)原語等有較深的了解。未來,開發(fā)人員可以登入遠(yuǎn)程IDE,然后使用開源ML框架運(yùn)行代碼,而不必考慮代碼在何種設(shè)備上以何種方式運(yùn)行。他們唯一需要思考的只是成本和速度之間的權(quán)衡——想獲得高速度就多花錢,想省錢就在速度上妥協(xié)。我是個(gè)樂觀的人,我認(rèn)為距離這樣的未來已經(jīng)不遠(yuǎn)了。(本文經(jīng)授權(quán)后編譯發(fā)布。原文:https://towardsdatascience.com/ai-accelerators-machine-learning-algorithms-and-their-co-design-and-evolution-2676efd47179)

頭圖源自brookhaven, Pixabay

圖片


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

數(shù)字通信相關(guān)文章:數(shù)字通信原理


通信相關(guān)文章:通信原理




關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉