一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVIDIA首席科學(xué)家Bill Dally:深度學(xué)習(xí)硬件趨勢(shì)

sakobpqhz ? 來源:算力基建 ? 2024-02-25 16:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

算法(“燃料”):大多數(shù)深度學(xué)習(xí)算法在基本形式上自20世紀(jì)80年代以來就已存在,如深度神經(jīng)網(wǎng)絡(luò)、卷積網(wǎng)絡(luò)和使用隨機(jī)梯度下降和反向傳播進(jìn)行訓(xùn)練的方法。

數(shù)據(jù)(“空氣”):大型標(biāo)記數(shù)據(jù)集一直存在,特別是對(duì)于無監(jiān)督學(xué)習(xí)所需的數(shù)據(jù)。對(duì)于監(jiān)督學(xué)習(xí),像Pascal和ImageNet這樣的大型標(biāo)記數(shù)據(jù)集自2000年代初就已存在。

計(jì)算(“火花”):點(diǎn)燃算法和數(shù)據(jù)需要足夠的計(jì)算能力,即在合理的時(shí)間內(nèi),使用足夠多的數(shù)據(jù)來訓(xùn)練一個(gè)足夠大的模型。

當(dāng)前人工智能的復(fù)興,包括生成式AI如ChatGPT在內(nèi),可歸因于深度學(xué)習(xí)的進(jìn)步。基于深度學(xué)習(xí)的系統(tǒng)如今在語音識(shí)別、物體分類以及諸如象棋等游戲中的表現(xiàn)已經(jīng)超越了人類能力。

深度學(xué)習(xí)的成功得益于強(qiáng)大且高效的計(jì)算硬件。盡管深度學(xué)習(xí)的算法自上世紀(jì)80年代就存在,但直到最近十年,隨著強(qiáng)大GPU的問世,這項(xiàng)技術(shù)才變得實(shí)用。深度學(xué)習(xí)的進(jìn)展現(xiàn)在受到硬件性能的限制。在過去的十年中,GPU上深度學(xué)習(xí)推理的效率提高了1000倍。其中很大一部分增益歸功于數(shù)據(jù)表示的改進(jìn),從Kepler一代GPU的FP32開始,并在Hopper一代中擴(kuò)展到Int8和FP8。

本次演講將回顧這一歷史,并討論數(shù)字表示的進(jìn)一步改進(jìn),包括對(duì)數(shù)表示、最佳剪裁和每向量量化。

簡(jiǎn)介:

Bill Dally于2009年1月加入NVIDIA擔(dān)任首席科學(xué)家,此前在斯坦福大學(xué)任職12年,擔(dān)任計(jì)算機(jī)科學(xué)系主任。Dally及其斯坦福團(tuán)隊(duì)開發(fā)了系統(tǒng)架構(gòu)、網(wǎng)絡(luò)架構(gòu)、信號(hào)傳輸、路由和同步技術(shù),在今天的大多數(shù)大型并行計(jì)算機(jī)中都可以找到。Dally此前曾在麻省理工學(xué)院從事研究,從1986年到1997年,在那里他和他的團(tuán)隊(duì)建造了J-Machine和M-Machine,這是實(shí)驗(yàn)性的并行計(jì)算機(jī)系統(tǒng),開創(chuàng)了機(jī)制與編程模型的分離,并展示了非常低的開銷同步和通信機(jī)制。

從1983年到1986年,他在加州理工學(xué)院(CalTech)設(shè)計(jì)了MOSSIM模擬引擎和Torus路由芯片,開創(chuàng)了“蟲洞”路由和虛擬通道流控制。他是美國國家工程院的院士,美國藝術(shù)與科學(xué)學(xué)院的院士,IEEE和ACM的會(huì)士,并獲得了ACM Eckert-Mauchly獎(jiǎng),IEEE Seymour Cray獎(jiǎng)和ACM Maurice Wilkes獎(jiǎng)。他發(fā)表了250多篇論文,擁有120多項(xiàng)授予的專利,并是四本教科書的作者。Dally獲得了弗吉尼亞理工大學(xué)電氣工程學(xué)士學(xué)位,斯坦福大學(xué)電氣工程碩士學(xué)位和加州理工學(xué)院計(jì)算機(jī)科學(xué)博士學(xué)位。他曾是Velio Communications和Stream Processors的聯(lián)合創(chuàng)始人。

-----

3abce1d6-d391-11ee-a297-92fbcf53809c.png

現(xiàn)在,身為一名計(jì)算機(jī)架構(gòu)師,致力于深度學(xué)習(xí),這確實(shí)是一個(gè)令人心潮澎湃的時(shí)刻。

3ac7e040-d391-11ee-a297-92fbcf53809c.png

我將嘗試與大家分享一些事情。就像現(xiàn)在的大多數(shù)人一樣,當(dāng)我準(zhǔn)備這場(chǎng)演講時(shí),我首先讓ChatGPT為我草擬了一份講稿。因此,這就是演講的初稿。

那么,如何構(gòu)建一個(gè)關(guān)于深度學(xué)習(xí)硬件的演講呢?這讓我相當(dāng)困惑。于是我說,好吧,這不行。一切都得依靠工程指導(dǎo)。我不得不思考,Bill Dally可能會(huì)對(duì)深度學(xué)習(xí)硬件有何見解。這或許是一個(gè)合理的演講主題,但并非我所要探討的內(nèi)容。然而,我覺得這個(gè)想法很有趣。

3acca706-d391-11ee-a297-92fbcf53809c.png

如果你想更深入地了解——我總是喜歡在演講中穿插一些最新的資料——這是昨天《華爾街日?qǐng)?bào)》上的一篇文章,是我與該報(bào)記者進(jìn)行的一次訪談,內(nèi)容關(guān)于我們?nèi)绾卫^續(xù)推動(dòng)深度學(xué)習(xí)的發(fā)展。這確實(shí)是本次演講的核心議題。但我會(huì)比記者更深入地探討一些技術(shù)細(xì)節(jié)。

順便一提,這是我們的Grace Hopper超級(jí)芯片的照片。左邊是H100 GPU,右邊是Hopper多核CPU。實(shí)際上,它們的結(jié)合非常出色,盡管我作為一名并行計(jì)算的信徒,這款CPU的主要目的是為GPU提供更多的高帶寬內(nèi)存。它是一個(gè)出色的內(nèi)存控制器。

3ad0fc5c-d391-11ee-a297-92fbcf53809c.png

當(dāng)我們研究像現(xiàn)在每個(gè)人都在使用的大型語言模型這樣的技術(shù)時(shí),我認(rèn)為,他們真正在做的是將數(shù)據(jù)提煉成價(jià)值,這確實(shí)是——計(jì)算機(jī)科學(xué)的主要目標(biāo)之一。

我們通常從大量數(shù)據(jù)出發(fā)。人們往往會(huì)利用他們可以從互聯(lián)網(wǎng)上搜集到的所有信息來訓(xùn)練這些模型。這些數(shù)據(jù)集包含高達(dá)10的12次方個(gè)token——一個(gè)token大致相當(dāng)于一個(gè)單詞——當(dāng)通過分詞器處理它時(shí),通常會(huì)得到1.5到2個(gè)token對(duì)應(yīng)一個(gè)單詞的比例——以及可能達(dá)到十億級(jí)別的圖像數(shù)量。這就是數(shù)據(jù)集規(guī)模。我們希望從中提取價(jià)值。這種價(jià)值體現(xiàn)在能夠回答問題、提升工作效率,比如通過擁有教學(xué)助手來幫助老師給予學(xué)生更多個(gè)性化關(guān)注,或者輔助醫(yī)生做出更準(zhǔn)確的診斷。大型語言模型正廣泛應(yīng)用于這些領(lǐng)域。

思考這個(gè)問題的方式就像是在考慮如何將學(xué)生送入大學(xué)。這就是你擁有萬億級(jí)別token數(shù)據(jù)集的意義所在。實(shí)際上,我之前做過類似的幻燈片?,F(xiàn)在,大型模型的訓(xùn)練已經(jīng)涉及10萬億甚至更多的token。對(duì)于萬億token數(shù)據(jù)集,需要在AWS上投入相當(dāng)可觀的資金來購買計(jì)算時(shí)間。

順便提一下,購買GPU也是一筆不小的開銷。在AWS上,這些費(fèi)用是資本化的,即使只租用三個(gè)月并付清了費(fèi)用,他們也不會(huì)將GPU轉(zhuǎn)讓給你。然后運(yùn)行一個(gè)訓(xùn)練作業(yè)?,F(xiàn)在,擁有了一個(gè)訓(xùn)練有素的模型。

這是一個(gè)在本科教育階段接受過廣泛訓(xùn)練的大型語言模型,相當(dāng)于對(duì)互聯(lián)網(wǎng)上的所有標(biāo)記都有了一個(gè)基礎(chǔ)的文科教育背景。但在實(shí)際應(yīng)用中,你可能希望模型更加專業(yè)化,比如專門用于醫(yī)學(xué)或教學(xué)領(lǐng)域。這時(shí),就需要將模型送入研究生院進(jìn)行深造。在研究生院,你可以進(jìn)行一系列的組合操作,其中之一就是所謂的預(yù)訓(xùn)練(pretuning),即在特定數(shù)據(jù)集上繼續(xù)訓(xùn)練模型。

在NVIDIA內(nèi)部,我們使用的模型名為ChipNeMo,它旨在提高我們的硬件設(shè)計(jì)師的工作效率。NeMo是我們的通用大型語言模型,而ChipNeMo則是在240億個(gè)標(biāo)記上進(jìn)行了預(yù)訓(xùn)練,這些標(biāo)記主要來源于自1990年代中期以來我們?cè)O(shè)計(jì)GPU的架構(gòu)文檔、Verilog代碼、腳本等。ChipNeMo最顯著的應(yīng)用是幫助高級(jí)設(shè)計(jì)師節(jié)省時(shí)間,因?yàn)楦呒?jí)設(shè)計(jì)師通常需要花費(fèi)大量時(shí)間回答初級(jí)設(shè)計(jì)師的問題,例如“紋理單元是如何工作的?”等。通過向ChipNeMo提問,高級(jí)設(shè)計(jì)師可以得到準(zhǔn)確且有力的答案,因?yàn)镃hipNeMo已經(jīng)閱讀了所有相關(guān)的架構(gòu)文檔。

在預(yù)訓(xùn)練之后,你還需要進(jìn)行微調(diào),使模型更加符合人們的喜好。這通常是通過讓模型生成多個(gè)查詢回復(fù),并讓人類對(duì)這些回復(fù)進(jìn)行評(píng)分來實(shí)現(xiàn)的。通過收集人類的反饋,你可以不斷優(yōu)化模型,使其生成的回復(fù)更符合人們的口味。在這個(gè)過程中,人類的參與至關(guān)重要,因?yàn)樗麄兊姆答伿翘嵘P唾|(zhì)量的關(guān)鍵。

有意思的是,盡管開始時(shí)對(duì)模型進(jìn)行文科教育的成本很高,但人們可以通過微調(diào)來降低這一成本。據(jù)我估算,微調(diào)的費(fèi)用大約在10萬到100萬美元之間。盡管這個(gè)數(shù)字可能很高,但人們已經(jīng)通過利用僅花費(fèi)幾千美元的GPU時(shí)間,完成了非常有效的微調(diào)工作。因此,一旦擁有了專業(yè)模型,就可以開始實(shí)際應(yīng)用了。

從長(zhǎng)遠(yuǎn)來看,深度學(xué)習(xí)的大部分計(jì)算都集中在推理階段。在深度學(xué)習(xí)探索的早期階段,訓(xùn)練工作確實(shí)非常繁重,因?yàn)槿藗冃枰M(jìn)行大量的實(shí)驗(yàn)。然而,一旦他們找到了合適的模型,他們就可以定期重新訓(xùn)練這些模型,并在模型上進(jìn)行推理。這個(gè)過程可能會(huì)持續(xù)幾個(gè)月甚至更長(zhǎng)時(shí)間,然后再重新進(jìn)行整個(gè)訓(xùn)練過程。因此,大量的工作實(shí)際上是在推理階段完成的。即使每個(gè)查詢可能只需要一秒鐘的GPU時(shí)間,但當(dāng)進(jìn)行足夠多的查詢時(shí),這實(shí)際上會(huì)占據(jù)訓(xùn)練階段花費(fèi)的幾個(gè)月的時(shí)間。

這張幻燈片的最新補(bǔ)充部分,我稍微插入了關(guān)于檢索增強(qiáng)生成的內(nèi)容。這是近四五個(gè)月來非常流行的一種做法。在運(yùn)行大型語言模型和進(jìn)行推理之前,我們會(huì)使用查詢來查詢數(shù)據(jù)庫,提取所有相關(guān)文檔。對(duì)于ChipNeMo模型,我們回到了最初的240億個(gè)標(biāo)記文檔數(shù)據(jù)庫,提取了所有相關(guān)的架構(gòu)文檔,然后將它們與原始查詢一起輸入到模型的輸入窗口中,然后運(yùn)行推理代碼。這種做法可以防止大型語言模型使用虛構(gòu)的信息,因?yàn)樗饕趯?shí)際文檔進(jìn)行操作。它可以為我們提供真實(shí)文檔的引用,并大大提高準(zhǔn)確性。

3ad544c4-d391-11ee-a297-92fbcf53809c.png

接下來,我將先介紹一些動(dòng)機(jī),然后我們將討論我們是如何走到這一步的。而講座中最令人興奮的部分將是我們接下來將走向何方。

讓我們從一些動(dòng)機(jī)和歷史背景開始探討。當(dāng)前的深度學(xué)習(xí)革命是由硬件推動(dòng)的。我喜歡將深度學(xué)習(xí)視為由三個(gè)要素構(gòu)成的。它們分別是算法、數(shù)據(jù)和計(jì)算能力,這可以類比為燃料、空氣和火花。

首先,算法是這里的“燃料”。大多數(shù)這些算法,至少在它們的基本形式上,自20世紀(jì)80年代以來就已經(jīng)存在了。深度神經(jīng)網(wǎng)絡(luò)、卷積網(wǎng)絡(luò),以及使用隨機(jī)梯度下降和反向傳播進(jìn)行訓(xùn)練的方法,這些都在80年代就已經(jīng)出現(xiàn)——在某些情況下,甚至更早。

接下來是“空氣”,即數(shù)據(jù)。大型標(biāo)記數(shù)據(jù)集一直存在,特別是對(duì)于無監(jiān)督學(xué)習(xí)所需的數(shù)據(jù)。而對(duì)于監(jiān)督學(xué)習(xí),像Pascal和ImageNet這樣的大型標(biāo)記數(shù)據(jù)集自2000年代初就已經(jīng)存在了,所以在真正的“火花”點(diǎn)燃之前至少有10年的時(shí)間。

然而,點(diǎn)燃這種燃料和空氣混合物的“火花”是足夠的計(jì)算能力。這指的是在合理的時(shí)間內(nèi),使用足夠多的數(shù)據(jù)來訓(xùn)練一個(gè)足夠大的模型。以最初的ImageNet數(shù)據(jù)集為例,它大約包含1000萬張圖像。而足夠大的模型則是AlexNet。我稍后會(huì)展示這個(gè)訓(xùn)練對(duì)下一張幻燈片的要求。當(dāng)時(shí),訓(xùn)練這樣一個(gè)模型需要花費(fèi)兩周的時(shí)間,實(shí)際上是在一對(duì)采用Fermi架構(gòu)的GPU上完成的。

3af322fa-d391-11ee-a297-92fbcf53809c.png

自那時(shí)起,深度學(xué)習(xí)的進(jìn)展受限于我們能夠應(yīng)用的計(jì)算力。考慮到AlexNet的訓(xùn)練時(shí)間,它基本上是每秒千億次浮點(diǎn)運(yùn)算的百分之一——也就是說,如果我們有一臺(tái)每秒千億次的機(jī)器,你會(huì)花費(fèi)百分之一的時(shí)間在上面。我估算這大約是一個(gè)小時(shí)的四分之一,即15分鐘,在每秒千億次的機(jī)器上。在2012年至2016年的ConvNet時(shí)期,我們提高了大約兩個(gè)數(shù)量級(jí)的計(jì)算力。因此,當(dāng)我們達(dá)到ResNet時(shí),我們大約擁有了每秒千億次的計(jì)算能力。

自2018年開始使用BERT進(jìn)行大型語言模型的訓(xùn)練以來,我們每年大約提高了一個(gè)數(shù)量級(jí)的計(jì)算力。對(duì)于GPT-4,雖然OpenAI沒有發(fā)布該模型的詳細(xì)信息,但根據(jù)網(wǎng)絡(luò)上的各種傳言,我估算在2023年訓(xùn)練GPT-4大約需要100萬臺(tái)每秒千億次的機(jī)器。在大約十年的時(shí)間里,最先進(jìn)的深度學(xué)習(xí)模型的計(jì)算需求增加了10的8次方倍。我們付出了巨大的努力,個(gè)體GPU的性能提高了約1000倍,另外的10的6次方倍增加來自于GPU數(shù)量的擴(kuò)展和訓(xùn)練時(shí)間的增加。

3af905bc-d391-11ee-a297-92fbcf53809c.png

接下來,讓我稍微談?wù)剼v史。這是我想稱之為“黃氏定律”的曲線,以我們的創(chuàng)始人、NVIDIA的Jensen Huang命名。在深度學(xué)習(xí)領(lǐng)域,我們的推理性能在過去十年基本上每年翻一番,從大約四開始。這是Kepler世代單芯片推理中的INT8 TOPS,而在Hopper世代中則達(dá)到了4000。在10年內(nèi),性能增加了1000倍。如果每年翻一番,那么應(yīng)該是1024倍。那么我們是如何實(shí)現(xiàn)這一壯舉的呢?實(shí)際上,我將在下一張幻燈片中為你揭曉。

3b040be2-d391-11ee-a297-92fbcf53809c.png

主要的收益按照其貢獻(xiàn)程度列在這里。其中最大的收益來自于使用更小的數(shù)字。以Kepler為例,它原本并非專為深度學(xué)習(xí)設(shè)計(jì),而是為科學(xué)計(jì)算打造,支持FP64和FP32圖形處理。因此,在推理過程中,人們使用INT8在FP32環(huán)境中完成操作,導(dǎo)致數(shù)字需要放大四倍。然而,昂貴的算術(shù)運(yùn)算是乘法,其成本與比特?cái)?shù)的平方成正比,因此成本實(shí)際上增加了16倍,而非4倍。

在2017年的ISCA會(huì)議上,Dave Patterson發(fā)表了關(guān)于Google TPU V1的演講,聲稱其比NVIDIA GPU更高效。然而,TPU V1的整體性能優(yōu)勢(shì)——更確切地說是能源效率優(yōu)勢(shì)——主要?dú)w功于其執(zhí)行INT8操作的能力。Patterson將TPU V1與Kepler進(jìn)行比較,盡管當(dāng)時(shí)他本可以將其與更先進(jìn)的Volta甚至Turing進(jìn)行比較。Kepler是五年前的產(chǎn)品,主要支持FP32。因此,這一切都與這16倍的成本增加有關(guān)。

接下來的主要收益來自于執(zhí)行復(fù)雜指令。我將為此展示一張幻燈片,并詳細(xì)介紹相關(guān)內(nèi)容。即使在GPU的簡(jiǎn)化管道中,不進(jìn)行分支預(yù)測(cè)和亂序執(zhí)行,執(zhí)行一條指令的成本仍然比該指令中的算術(shù)運(yùn)算的成本高出約20倍。在更低的精度下,情況更糟,尤其是針對(duì)FP16。為了分?jǐn)傔@一成本,需要用一條指令完成更多的工作。因此,添加復(fù)雜指令成為了一個(gè)重要的優(yōu)化方向。我們從Kepler世代的最大指令FMA轉(zhuǎn)變?yōu)镻ascal世代的四元素點(diǎn)積DP4,再到我們的矩陣乘法指令,如HMMA用于半精度矩陣乘積累加和IMMA用于8位整數(shù)矩陣乘積累加。這些指令的引入分?jǐn)偭艘恍╅_銷,為我們帶來了額外的12.5倍性能提升。

這里展示了四代工藝技術(shù),它們以顏色進(jìn)行區(qū)分——黑色、綠色、藍(lán)色等。Kepler和Maxwell采用了28納米工藝,而Pascal、Volta和Turing則采用了16納米工藝。Ampere是7納米工藝,而Hopper更是達(dá)到了5納米工藝。然而,從28納米到5納米的巨大躍遷只為我們帶來了大約2.5倍的性能提升。我內(nèi)部有一個(gè)電子表格,一直在跟蹤這些數(shù)據(jù)。因此,我們并沒有從傳統(tǒng)的工藝技術(shù)提升中獲得太多好處,主要的提升來自于更先進(jìn)的架構(gòu)。另一個(gè)重要的架構(gòu)貢獻(xiàn)是稀疏性。當(dāng)我展望未來時(shí),我相信稀疏性將為我們帶來更多的性能收益。目前,我們僅在權(quán)重上利用了2比1的稀疏性,但我們可以實(shí)現(xiàn)更高級(jí)別的稀疏性,并將其應(yīng)用于激活上。

此外,我還想提到,算法領(lǐng)域的進(jìn)步也非常顯著。我認(rèn)為,僅通過多年來模型效率的提升,我們就已經(jīng)實(shí)現(xiàn)了另外1000倍的性能增長(zhǎng)。以ConvNet時(shí)代為例,當(dāng)大家都在ImageNet競(jìng)賽上競(jìng)爭(zhēng)時(shí),從VGGNet到GoogleNet的轉(zhuǎn)變就是一個(gè)很好的例子。GoogleNet是一個(gè)更高效的網(wǎng)絡(luò),它去掉了完全連接的后端,采用了可分離卷積和旁路等技術(shù),使網(wǎng)絡(luò)效率提高了數(shù)個(gè)數(shù)量級(jí)。因此,他們能夠在不增加太多操作的情況下,實(shí)現(xiàn)性能上的巨大提升。這樣的模型還有很多。

3b0f5ad8-d391-11ee-a297-92fbcf53809c.png

讓我們來談?wù)剰?fù)雜指令及其重要性。正如我之前提到的,即使對(duì)于具有非常簡(jiǎn)化管道的GPU,執(zhí)行指令的開銷因子也約為20。而對(duì)于執(zhí)行復(fù)雜、亂序CPU操作的CPU,比如執(zhí)行FP16操作,這個(gè)開銷因子更接近1000。這也是為什么我們不希望在CPU上進(jìn)行深度學(xué)習(xí)的原因之一,除非我們?nèi)渴褂肕MX指令進(jìn)行。

如果我們的工作僅限于融合乘加運(yùn)算,那么我們實(shí)際上在執(zhí)行兩個(gè)算術(shù)運(yùn)算。這意味著,我們的大部分能量都消耗在了開銷上,就像一個(gè)大公司運(yùn)營的成本。但如果我們能夠至少執(zhí)行八個(gè)操作——比如,一個(gè)點(diǎn)積運(yùn)算就需要四次乘法和四次加法,總共八個(gè)操作——那么有效負(fù)載的能量就會(huì)增加到六。盡管開銷能量保持不變,但開銷相對(duì)于有效負(fù)載的比例會(huì)下降到五倍。盡管如此,我們?nèi)匀辉陂_銷上花費(fèi)的能量比在實(shí)際操作上花費(fèi)的要多。

在Volta世代,我們引入了一個(gè)被市場(chǎng)人員稱為張量核心的功能,它實(shí)際上是一個(gè)專門用于執(zhí)行矩陣乘法的指令。HMMA,即半精度矩陣乘積累加,能夠接收兩個(gè)FP16的4x4矩陣,并執(zhí)行矩陣乘法。這意味著你需要將每個(gè)元素與另一個(gè)矩陣的每個(gè)元素相乘,這是一個(gè)n的三次方操作,即4x4x4,總共64次乘法。然后,你需要將這些結(jié)果全部加起來,并存儲(chǔ)到一個(gè)FP32的4x4矩陣中。這樣,總共進(jìn)行了128次操作。盡管操作的總能量是110,但現(xiàn)在的開銷比例已經(jīng)降低到了22%。

到了Turing世代,我們又引入了整數(shù)版本的該操作,即IMMA。它接收兩個(gè)8x8的INT8矩陣,進(jìn)行乘法運(yùn)算并求和。而在Hopper世代,我們更進(jìn)一步,引入了四分之一精度矩陣乘加法,使用FP8進(jìn)行運(yùn)算。需要強(qiáng)調(diào)的是,一旦我們擁有了這些大型指令,我們的完全可編程GPU在深度學(xué)習(xí)方面的效率就可以與硬連線的加速器,如TPU或其它專用芯片相媲美。因?yàn)檫@些專用芯片也并非毫無開銷。它們同樣需要移動(dòng)數(shù)字,而不僅僅是進(jìn)行矩陣乘法運(yùn)算。它們的開銷可能也在15%到20%左右。因此,在這個(gè)時(shí)間點(diǎn)上,我們的效率與專用加速器相當(dāng),同時(shí)我們還擁有可編程引擎的所有優(yōu)勢(shì),背后是一個(gè)成熟的編程系統(tǒng)和幾十年來積累的庫支持。

聽眾:這是能源開銷方面的討論,對(duì)吧?還有其它的嗎?

Bill Dally:沒錯(cuò),能源確實(shí)是一個(gè)很好的衡量標(biāo)準(zhǔn)。

3b161076-d391-11ee-a297-92fbcf53809c.png

那么,我們目前進(jìn)展到了什么階段呢?如今,我們有了Hopper。它具備一千萬億次的TensorFloat-32運(yùn)算能力。根據(jù)數(shù)據(jù)的稠密程度或稀疏程度,它的FP16或BF16運(yùn)算能力為1到2千萬億次,而FP8或INT8的運(yùn)算能力為2到4千萬億次。它的內(nèi)存帶寬超過3TB/s,高達(dá)94TB,這里的94是準(zhǔn)確的,配備了96GB的HBM3內(nèi)存。此外,它還擁有18個(gè)NVLink端口,為我們提供了900GB/s的帶寬,而整個(gè)芯片的功耗為700瓦。不過,有一點(diǎn)需要指出的是,將這個(gè)部件運(yùn)往中國是違法的,這種做法其實(shí)并不明智,因?yàn)閷?duì)這種部件的出口限制只會(huì)促使中國的程序員為華為部件編寫代碼,這對(duì)美國并無益處。

3b212f9c-d391-11ee-a297-92fbcf53809c.png

這個(gè)部件擁有一些令人印象深刻的功能。事實(shí)上,我親自為這個(gè)部件中的動(dòng)態(tài)規(guī)劃指令撰寫了建議書,以加速生物信息學(xué)代碼的運(yùn)行。因此,如果你需要進(jìn)行動(dòng)態(tài)規(guī)劃來進(jìn)行基因序列匹配,這個(gè)部件將會(huì)表現(xiàn)出極高的運(yùn)算速度。

關(guān)于比值——當(dāng)我分享我們?cè)诩铀倨魃纤龅囊恍?shí)驗(yàn)時(shí),我會(huì)詳細(xì)解釋這一點(diǎn)——它達(dá)到了每瓦9兆次的運(yùn)算性能。這是基于INT8或FP8數(shù)學(xué)運(yùn)算的結(jié)果。這也是我們?cè)u(píng)估不同深度學(xué)習(xí)解決方案效率的一種方式。盡管我們已經(jīng)實(shí)現(xiàn)了1000倍的性能提升,但我們還需要達(dá)到10的8次方倍的目標(biāo)。那么,剩下的性能提升從哪里來呢?答案在于使用多個(gè)GPU。事實(shí)上,你必須使用多個(gè)GPU,因?yàn)閱我坏腉PU無法容納像GPT-4這樣規(guī)模高達(dá)1.2萬億參數(shù)的模型。在進(jìn)行訓(xùn)練時(shí),每個(gè)參數(shù)大約需要20字節(jié)的存儲(chǔ)空間,這不僅包括了參數(shù)本身,還包括了動(dòng)量系數(shù)、訓(xùn)練算法以及其它一些開銷。因此,要保存一個(gè)GPT-4的完整副本,我們需要大約20個(gè)GPU。

因此,我們將工作劃分為兩個(gè)維度的并行化。

首先是張量并行,這涉及多個(gè)GPU協(xié)同工作在一個(gè)模型副本上。具體來說,我們將單個(gè)矩陣進(jìn)行切片處理,通常只在一個(gè)維度上進(jìn)行切片,例如將矩陣切分成列條。然后,我們進(jìn)行相應(yīng)操作,并將結(jié)果匯總。

另一個(gè)維度是管道并行,我們將網(wǎng)絡(luò)的不同層分別部署在不同的GPU上,并將結(jié)果逐層傳遞。值得注意的是,早期的層并不會(huì)閑置,而是在處理后續(xù)數(shù)據(jù)批次的同時(shí),開始處理下一批訓(xùn)練數(shù)據(jù)。隨著規(guī)模的進(jìn)一步擴(kuò)大,我們還會(huì)采用數(shù)據(jù)并行策略。這意味著我們將運(yùn)行模型的不同副本,并將一個(gè)訓(xùn)練數(shù)據(jù)批次分割到這些副本中,使它們各自進(jìn)行訓(xùn)練。之后,它們會(huì)交換權(quán)重更新,以確保在下一次迭代中每個(gè)副本都擁有相同的權(quán)重集。

3b32ed2c-d391-11ee-a297-92fbcf53809c.png

為了實(shí)現(xiàn)這些并行化策略,我們?cè)O(shè)計(jì)了一系列硬件。首先是DGX服務(wù)器,它配備了8個(gè)H100 GPU和四個(gè)我們的NV交換機(jī)。這些交換機(jī)負(fù)責(zé)連接從H100 GPU引出的NVLink互連。盡管我不能詳細(xì)介紹每個(gè)細(xì)節(jié),但這款服務(wù)器具備32 petaFLOPS的計(jì)算能力,功耗為11千瓦,背板輸出達(dá)到900GB/s。

3b37bf5a-d391-11ee-a297-92fbcf53809c.png

除了上述的四個(gè)NV交換機(jī)外,為了連接更多這樣的服務(wù)器,我們還設(shè)計(jì)了一個(gè)類似披薩盒的裝置。這個(gè)盒子里裝有兩個(gè)NV交換機(jī),通過它和使用主動(dòng)光纜,可以構(gòu)建更大規(guī)模的系統(tǒng)。

3b444414-d391-11ee-a297-92fbcf53809c.png

因此,通常向客戶提供的解決方案看起來像這樣:一個(gè)DGX超級(jí)機(jī)架。在這個(gè)機(jī)架中,每個(gè)小金色前面板板子上都裝有一個(gè)HGX100,它集成了8個(gè)GPU??梢允褂肗VLink將多個(gè)這樣的機(jī)架連接起來,或者在某些情況下,采用InfiniBand網(wǎng)絡(luò)——中間那些是InfiniBand量子交換機(jī)——并將所有這些設(shè)備整合在一起。

這樣做的好處有很多。首先,軟件是預(yù)配置的。因此,當(dāng)從NVIDIA購買這樣的機(jī)器,并在你的數(shù)據(jù)中心中將其連接好,插入所有主動(dòng)光纜后,只需簡(jiǎn)單地開機(jī),便可以在一小時(shí)內(nèi)開始訓(xùn)練深度學(xué)習(xí)模型。相反,如果嘗試從頭開始配置所有網(wǎng)絡(luò)設(shè)置并進(jìn)行調(diào)整,那可能需要耗費(fèi)一個(gè)月的時(shí)間。我過去曾與Cray和其它公司合作構(gòu)建了許多超級(jí)計(jì)算機(jī)。但通常情況下,從我們?cè)诼逅拱⒗够蛳饦鋷X等地將這些機(jī)器完全組裝并放置在地板上,到它們能夠運(yùn)行一個(gè)有用的問題,往往需要六個(gè)月的時(shí)間。這是因?yàn)閱?dòng)和調(diào)整過程需要花費(fèi)大量時(shí)間。而通過使用預(yù)配置的系統(tǒng),我們已經(jīng)解決了這些問題??梢院?jiǎn)單地開機(jī),它就能立即投入工作。這并不是因?yàn)橛布嬖诠收?,而是需要花費(fèi)大量時(shí)間來準(zhǔn)備和調(diào)整軟件。

觀眾:那么這臺(tái)機(jī)器是否更側(cè)重于訓(xùn)練任務(wù)呢?

Bill Dally:其實(shí)它同樣適用于推理任務(wù)。此外,還可以根據(jù)自己的需求配置所需的帶寬。機(jī)器內(nèi)部的帶寬是預(yù)配置的,有八個(gè)GPU通過NV交換機(jī)連接在一起。但在背板上,可以選擇是否將所有GPU都連接起來。同時(shí),我們還提供了PCIe插槽,用于安裝InfiniBand網(wǎng)卡。因此,可以根據(jù)實(shí)際需要決定連接多少網(wǎng)卡。這樣,可以為每個(gè)盒子提供所需的帶寬。

對(duì)于訓(xùn)練任務(wù)來說,另一個(gè)突出的優(yōu)點(diǎn)是,無論是NVLink網(wǎng)絡(luò)還是InfiniBand網(wǎng)絡(luò)都支持網(wǎng)絡(luò)集合功能。這意味著在進(jìn)行數(shù)據(jù)并行訓(xùn)練時(shí),每個(gè)GPU都需要交換權(quán)重。通過網(wǎng)絡(luò)集合功能,你只需發(fā)送你的權(quán)重并接收總和,而無需進(jìn)行逐個(gè)交換和相加的操作。這極大地提高了數(shù)據(jù)并行訓(xùn)練的有效網(wǎng)絡(luò)帶寬。

3b505876-d391-11ee-a297-92fbcf53809c.png

接下來,讓我們來談?wù)勡浖矫娴囊恍﹥?nèi)容。

有時(shí)我想說,關(guān)于深度學(xué)習(xí)的一點(diǎn)是,雖然任何人都可以構(gòu)建一個(gè)矩陣乘法器,但真正讓它變得有用的是軟件。在NVIDIA,我們從2010年開始致力于深度學(xué)習(xí)軟件的研發(fā)。當(dāng)時(shí),在早餐時(shí)我遇到了我的斯坦福同事Andrew Ng,他正在跟我分享關(guān)于在互聯(lián)網(wǎng)上找貓的事情。我一聽就覺得,天哪,GPU在這方面比CPU更擅長(zhǎng)。于是我指派了一位NV研究部的同事——實(shí)際上是一個(gè)名叫Bryan Catanzaro的編程語言研究員——與Andrew一起工作,去尋找互聯(lián)網(wǎng)上的貓。他編寫的軟件后來演變成了cuDNN。當(dāng)然,后來Andrew挖走了Bryan,讓他在百度工作了一段時(shí)間。不過Bryan最終又回到了NVIDIA。從那時(shí)起,我們就一直在構(gòu)建大量的軟件。

這是我們的軟件堆棧的不同層次。我們擁有三個(gè)主要的軟件堆?!狝I堆棧、HPC堆棧,以及我們稱之為Omniverse的圖形堆棧。在此基礎(chǔ)上,我們還建立了許多垂直領(lǐng)域,涵蓋了從Clara的醫(yī)療診斷到Modulus的物理模擬,再到Drive的自動(dòng)駕駛汽車技術(shù)等各種領(lǐng)域。這里涉及到的軟件工作量可能高達(dá)成千上萬人年。這種努力在MLPerf基準(zhǔn)測(cè)試中得到了真正的體現(xiàn)。

3b6eb988-d391-11ee-a297-92fbcf53809c.png

我認(rèn)為MLPerf是一個(gè)非常好的衡量標(biāo)準(zhǔn)——我喜歡查看它以了解競(jìng)爭(zhēng)對(duì)手的情況,也了解整個(gè)深度學(xué)習(xí)社區(qū)的發(fā)展?fàn)顩r。這真的很棒。

我的意思是,在CPU領(lǐng)域,當(dāng)我在80年代和90年代從事CPU架構(gòu)工作時(shí),有SPECmark基準(zhǔn)測(cè)試,大家都會(huì)在這個(gè)基準(zhǔn)上進(jìn)行競(jìng)爭(zhēng)。但隨著時(shí)間的推移,它們變得有些不自然了。我認(rèn)為MLPerf基準(zhǔn)測(cè)試真正出色的地方在于,它們定期推出新的基準(zhǔn)測(cè)試?,F(xiàn)在他們有一個(gè)LLM基準(zhǔn)測(cè)試,還有一個(gè)很好的推薦基準(zhǔn)測(cè)試。他們緊跟行業(yè)發(fā)展的步伐,幾乎沒有延遲。

我想通過這張幻燈片傳達(dá)的觀點(diǎn)并不是Hopper比H100剛推出時(shí)快6.7倍。事實(shí)上,當(dāng)H100首次推出時(shí),與首次推出的Ampere相比,它的性能提高了2.5倍。這是硬件的進(jìn)步,更是Ampere軟件的改進(jìn)以及龐大的軟件基礎(chǔ)所帶來的優(yōu)勢(shì)。人們可以構(gòu)建出非常出色的矩陣乘法器,但除非他們?cè)谏疃葘W(xué)習(xí)軟件上投入了成千上萬人年的努力,否則很難在競(jìng)爭(zhēng)中脫穎而出。這一點(diǎn)在MLPerf的結(jié)果中得到了體現(xiàn)。

3b76bbe2-d391-11ee-a297-92fbcf53809c.png

這里只是我剪輯的一些文章標(biāo)題。最近的一篇是昨天——11月8日。雖然你可能需要仔細(xì)閱讀文章,才能找到稱贊NVIDIA的部分,但在其它文章中,我都強(qiáng)調(diào)了NVIDIA在這些方面的優(yōu)勢(shì)。

現(xiàn)在的情況就像是電影中的場(chǎng)景,主角們?cè)谂懿?,后面緊跟著蒙古軍隊(duì)和一大群野獸。他們必須拼命地跑才能保持領(lǐng)先。這就像是現(xiàn)在的NVIDIA,因?yàn)槊總€(gè)人和他們的狗都在嘗試構(gòu)建AI硬件,因?yàn)樗麄冋J(rèn)為這是下一個(gè)淘金熱的機(jī)會(huì)。我們?cè)噲D保衛(wèi)我們的領(lǐng)先地位,不是通過阻礙他們的方式,而是試圖比他們跑得更快。然而,尷尬的是,他們中的大多數(shù)人都會(huì)絆倒摔倒,但只需要一個(gè)人繼續(xù)奔跑。如果我們絆倒了,結(jié)果就不會(huì)好。

那么我們?cè)撊绾伪3诸I(lǐng)先,就像在古代戰(zhàn)爭(zhēng)中超越蒙古軍隊(duì)一樣,確保我們?cè)贏I硬件領(lǐng)域的領(lǐng)先地位呢?

3b96608c-d391-11ee-a297-92fbcf53809c.png

一個(gè)很好的方法是繪制一張圖表,展示推理過程中能量的流向。在這張圖表中,我們可以看到數(shù)學(xué)、數(shù)據(jù)路徑和數(shù)學(xué)占據(jù)了47%的比例,這意味著我們有一半的能量用于進(jìn)行數(shù)學(xué)計(jì)算。為了改進(jìn)這一點(diǎn),我們需要進(jìn)行更高效的數(shù)學(xué)計(jì)算,這可以通過采用更好的數(shù)字表示或利用稀疏性來減少計(jì)算量來實(shí)現(xiàn)。

接下來,我們看到圖表中的另一個(gè)大塊是內(nèi)存,包括累積緩沖區(qū)、輸入緩沖區(qū)、權(quán)重緩沖區(qū)和累積收集器,還有6%的能量用于數(shù)據(jù)傳輸。這主要涉及到將數(shù)據(jù)從片外存儲(chǔ)器傳輸?shù)狡洗鎯?chǔ)器,以及從大的片上存儲(chǔ)器傳輸?shù)捷^小的片上存儲(chǔ)器。

那么,我們應(yīng)該如何改進(jìn)呢?在數(shù)字表示方面,我們可以采取多種策略。這里,我將討論其中幾種。我們學(xué)到的一個(gè)重要經(jīng)驗(yàn)是,我們應(yīng)該使用我們能夠應(yīng)對(duì)的最經(jīng)濟(jì)的數(shù)字表示。為了實(shí)現(xiàn)這一點(diǎn),我們需要將數(shù)字精確地縮放到該數(shù)字表示的動(dòng)態(tài)范圍內(nèi)。接下來,我會(huì)分享一些我們發(fā)現(xiàn)的有效方法。

此外,我對(duì)長(zhǎng)數(shù)字特別感興趣,并會(huì)介紹一些使長(zhǎng)數(shù)字加法變得更容易的技巧,因?yàn)橥ǔ碚f,乘法相對(duì)容易,因?yàn)樗鼈兛梢赞D(zhuǎn)化為加法,但加法卻更復(fù)雜,因?yàn)樗鼈冃枰D(zhuǎn)換回整數(shù)。

目前,我們主要在權(quán)重上使用稀疏性。然而,我們還可以考慮在激活上使用稀疏性,并利用其它低密度特性來利用稀疏性。為了減少那6%的數(shù)據(jù)移動(dòng),我們可以優(yōu)化平鋪策略——基本上是一種更好的循環(huán)調(diào)度方式,以最大限度地減少移動(dòng)并提高重用率。

在電路方面,我們也做了很多工作??紤]到內(nèi)存消耗了大約一半的能量,我們可以通過一些簡(jiǎn)單的方法來提高內(nèi)存效率。例如,我們發(fā)現(xiàn)這些內(nèi)存通常是“一次寫入,多次讀取”的。因此,在寫入時(shí)使它們?cè)谀茉瓷舷鄬?duì)昂貴是可以接受的。一種利用這一點(diǎn)的方法是使用每個(gè)單元格具有一個(gè)位線的設(shè)計(jì)。這樣,你可以寫入單元格,然后激活該位線,內(nèi)存的輸出就會(huì)輸出。這種方法使得寫入操作變得非常節(jié)能。這只是我們正在考慮的一項(xiàng)改進(jìn)。我們還有許多其它的改進(jìn)方案,我會(huì)在接下來的部分繼續(xù)介紹。

針對(duì)我們接下來的計(jì)劃,我們將持續(xù)聚焦于優(yōu)化數(shù)學(xué)計(jì)算和內(nèi)存使用,以確保我們的硬件在處理深度學(xué)習(xí)任務(wù)時(shí)達(dá)到更高的效率。此外,我們還將不斷探索新的數(shù)字表示技術(shù)和稀疏性利用方法,以進(jìn)一步降低能量消耗并提升性能??偠灾覀兊哪繕?biāo)是維持在AI硬件領(lǐng)域的領(lǐng)先地位,持續(xù)創(chuàng)新和改進(jìn),以滿足不斷增長(zhǎng)的深度學(xué)習(xí)需求。

沒錯(cuò)吧?那么,當(dāng)你在進(jìn)行讀取操作時(shí),你所做的就是從位于乘法器前面的一大堆位線中選擇一個(gè),這個(gè)讀取過程幾乎不消耗能量。相反,寫入操作是能量消耗的主要環(huán)節(jié)。因此,你就不需要在每次讀取時(shí)都切換位線。你只需要進(jìn)行一次寫入操作。情況會(huì)有所不同。但在讀取時(shí),你只需要切換乘法器的輸入即可。

優(yōu)化通信電路可以帶來諸多好處。如果讓我指導(dǎo)一個(gè)電路專業(yè)的學(xué)生來設(shè)計(jì)一種從芯片一端到另一端傳遞位的信號(hào)方式,并鼓勵(lì)他們盡可能多地消耗能量,他們很可能會(huì)采用我們現(xiàn)今的常規(guī)做法——利用邏輯電平,其中電源代表1,地線代表0。但實(shí)際上,只需稍微增加一些晶體管面積,你就不再需要1伏特的電壓來表示1或0了。那么高的電壓簡(jiǎn)直是浪費(fèi),且可能對(duì)設(shè)備造成損害。實(shí)際上,你只需要確保足夠的能量使Eb/N0達(dá)到大約20分貝,就足以保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性了——可能僅需50毫伏的電壓就足夠了。因此,通過改進(jìn)通信電路,我們可以實(shí)現(xiàn)很多優(yōu)化。

我想分享一件令我非常興奮的事情,我們正在為此付出巨大的努力,那就是通過直接在GPU上方堆疊DRAM來擴(kuò)大我們的內(nèi)存帶寬,并同時(shí)降低內(nèi)存的能量消耗。但我們必須承認(rèn),這個(gè)過程中存在許多技術(shù)難題需要我們?nèi)ソ鉀Q,可能需要幾代人的努力才能最終實(shí)現(xiàn)。

3c898ca8-d391-11ee-a297-92fbcf53809c.png

讓我們從數(shù)字表示開始討論。

3c8da48c-d391-11ee-a297-92fbcf53809c.png

當(dāng)你問一個(gè)數(shù)字系統(tǒng)有多好時(shí),實(shí)際上你關(guān)心的有兩個(gè)方面。首先是準(zhǔn)確性,即實(shí)際數(shù)字與理論數(shù)字之間的差距。在數(shù)字系統(tǒng)中,數(shù)字必須覆蓋整個(gè)數(shù)字線,因此準(zhǔn)確性主要關(guān)注的是在將任意數(shù)字轉(zhuǎn)換為數(shù)字系統(tǒng)時(shí)可能產(chǎn)生的最大誤差,因?yàn)槲覀兺ǔP枰獙?duì)數(shù)字進(jìn)行四舍五入以匹配可表示的值。另一方面是動(dòng)態(tài)范圍,即數(shù)字系統(tǒng)可以表示的數(shù)字范圍有多大。這既涉及到準(zhǔn)確性,也涉及到成本。數(shù)字位數(shù)是一個(gè)關(guān)鍵因素。在存儲(chǔ)和傳輸數(shù)據(jù)時(shí),存儲(chǔ)器和線路并不關(guān)心這些位的具體值,而是關(guān)心你引用了多少位。因此,理論上使用的位數(shù)越少越好。但同時(shí),我們還要考慮執(zhí)行操作的成本,比如進(jìn)行乘積累加時(shí)所需的資源消耗。

3c99a0e8-d391-11ee-a297-92fbcf53809c.png

接下來,我會(huì)簡(jiǎn)要介紹一些代表性的數(shù)字。使用整數(shù),事實(shí)上,其準(zhǔn)確性并不理想。原因在于其誤差與數(shù)值大小無關(guān)。不論處理的是小數(shù)還是大數(shù),誤差都是一個(gè)半最低有效位。稍后我會(huì)在下一張幻燈片上通過圖表來展示這一點(diǎn)。因此,它們?cè)谧顗那闆r下的誤差達(dá)到了33%。這是1.5和1之間的差異,因?yàn)槲覀儽仨殞?.5四舍五入到2或1。這相當(dāng)于從1中取走了一半,顯然并不理想。相比之下,浮點(diǎn)數(shù)的表現(xiàn)要好得多,對(duì)數(shù)的表現(xiàn)也更好。我應(yīng)該選擇使用對(duì)數(shù)8和FP8,但我稍后會(huì)通過圖表來展示這一點(diǎn)。

關(guān)于符號(hào),它的表現(xiàn)相當(dāng)不錯(cuò)。那么,符號(hào)具體是什么呢?事實(shí)證明,你可以使用反向傳播和隨機(jī)梯度下降來訓(xùn)練各種模型。例如,我和宋曾在ICLR上發(fā)表了一篇論文,大約是在2015年,我們訓(xùn)練了一個(gè)16條目的碼本,以獲取代表我們所擁有的權(quán)重分布的最佳16個(gè)權(quán)重。這是一個(gè)很好的方法,因?yàn)槿绻阒幌抻谑褂?6個(gè)值,或者64個(gè)、256個(gè)值,這取決于你使用的位數(shù),這就是你能找到的最佳方式來代表那些權(quán)重。這將有助于最小化存儲(chǔ)和移動(dòng)的能量消耗。然而,在實(shí)際執(zhí)行數(shù)學(xué)運(yùn)算時(shí),你必須表示你選擇的那些點(diǎn)。這意味著你需要在表中進(jìn)行高精度的查找,而這本身就是一個(gè)相當(dāng)耗時(shí)的過程。接下來,我們進(jìn)行了16位數(shù)學(xué)運(yùn)算。最終,我們用這些4位符號(hào)進(jìn)行了16位數(shù)學(xué)運(yùn)算,這完全抵消了我們?cè)谀芰肯姆矫娴娜魏蝺?yōu)勢(shì)。這個(gè)想法雖然巧妙,但并不實(shí)用。

接著,我們來看尖峰表示。我之所以要提到它,是因?yàn)槿绻獜乃心茉葱蕵O低的表示方法中挑選一個(gè),尖峰表示無疑是首選。在CMOS技術(shù)中,什么會(huì)消耗能量呢?答案是線路切換。假設(shè)我需要表示一個(gè)介于1和128之間的整數(shù)。在尖峰表示中,如果平均表示,比如在64這個(gè)數(shù)值上,我必須切換這條線路64次。然而,如果我選擇使用7位整數(shù)來表示0到128,我擁有7個(gè)位,其中大約一半會(huì)發(fā)生翻轉(zhuǎn),而不是切換。這樣一來,就只需要翻轉(zhuǎn)3.5次。比較一下,這就是1.75次切換與64次切換的差距。因此,尖峰表示與整數(shù)表示相比,能量開銷高達(dá)32倍,這顯然不是一個(gè)理想的選擇。

再來看模擬表示。關(guān)于模擬表示,我有一整套的論述來解釋為什么它在執(zhí)行單個(gè)操作時(shí)表現(xiàn)良好,但在系統(tǒng)級(jí)別上卻不盡如人意。不過,為了簡(jiǎn)潔起見,我就不深入探討了。簡(jiǎn)而言之,無論是存儲(chǔ)還是移動(dòng)模擬信號(hào),通常都需要將其轉(zhuǎn)換為數(shù)字信號(hào)。然而,這種轉(zhuǎn)換會(huì)消除你從模擬操作中獲得的任何優(yōu)勢(shì),因?yàn)椴]有簡(jiǎn)單直接的方法來存儲(chǔ)或移動(dòng)模擬信號(hào)。

3ca871ae-d391-11ee-a297-92fbcf53809c.png

現(xiàn)在,讓我們來談?wù)劚硎竞头植肌H绻銓?duì)網(wǎng)絡(luò)進(jìn)行剪枝,或者利用稀疏性,你可能會(huì)得到一個(gè)雙峰分布。這實(shí)際上是我2015年那篇ICLR論文中的權(quán)重分布圖。如果你選擇線性量化,也就是基本上只使用整數(shù)表示,并且你有16個(gè)值,它們將會(huì)出現(xiàn)在X所在的位置。你可以看到我在這里有很多取樣點(diǎn),而那里幾乎沒有什么。在整個(gè)分布的葉下,我只有像三個(gè)X這樣的點(diǎn)。因此,我將會(huì)得到非常高的誤差。然而,如果我訓(xùn)練碼本,我得到的小紅點(diǎn)將會(huì)更加集中,我基本上會(huì)把所有的點(diǎn)都放在它們表現(xiàn)良好的地方。事實(shí)上,這樣做是最優(yōu)的。你訓(xùn)練碼本就是為了達(dá)到這樣的效果。雖然有一個(gè)k均值聚類步驟,但除此之外,你基本上是在使用隨機(jī)梯度下降來將這些碼本條目移動(dòng)到最佳位置。這就是你想要達(dá)到的目標(biāo)。

3cbaa2c0-d391-11ee-a297-92fbcf53809c.png

如果你不進(jìn)行剪枝,你往往會(huì)得到這樣的分布。這里要理解的重要事情是,你大部分的值都接近零。因此,非常重要的是要很好地表示小值。因?yàn)樾≈档恼`差往往比大值的誤差權(quán)重更大,因?yàn)樾≈档臄?shù)量并不多。

3cc592e8-d391-11ee-a297-92fbcf53809c.png

接下來,我們談?wù)剬?duì)數(shù)表示法。

3cc99d34-d391-11ee-a297-92fbcf53809c.png

對(duì)于我們這一代人來說,上大學(xué)時(shí),我們可能是在這樣的工具上進(jìn)行數(shù)學(xué)計(jì)算的。這就是計(jì)算尺,它主要進(jìn)行對(duì)數(shù)運(yùn)算。上面刻的小線代表了對(duì)數(shù)間隔。例如,我要計(jì)算1.12乘以1.2,只需將1.12放在這里,移動(dòng)到1.2的位置,然后讀出答案。實(shí)際上,我將乘法運(yùn)算轉(zhuǎn)化為了加法運(yùn)算。我計(jì)算的是線性距離,同時(shí)利用刻度線上編碼的對(duì)數(shù)表進(jìn)行數(shù)學(xué)計(jì)算。與整數(shù)或浮點(diǎn)數(shù)表示法相比,對(duì)數(shù)表示法具有出色的特性。

3cdc15f4-d391-11ee-a297-92fbcf53809c.png

如果我選擇對(duì)數(shù)表示法——這里,我正在使用我所說的8位對(duì)數(shù)4.3表示法。其中包含一個(gè)符號(hào)位,7個(gè)指數(shù)位,其中4位在二進(jìn)制點(diǎn)的左側(cè),3位在右側(cè)。這意味著,如果你將這些位串聯(lián)起來,你實(shí)際上是在計(jì)算2的某個(gè)冪次除以8。在二進(jìn)制點(diǎn)的右側(cè)需要有一些數(shù)值,因?yàn)槿绻豢紤]2的冪次,它們之間的間隔會(huì)過大。你的數(shù)字系統(tǒng)需要更細(xì)致的分級(jí)。通過移動(dòng)二進(jìn)制點(diǎn),你可以在精度和動(dòng)態(tài)范圍之間找到平衡。

與FP8相比,我選擇了E4M3,即4位指數(shù),然后取相同的3位,但不是擴(kuò)展的指數(shù),而是尾數(shù)值。在這里,我們擁有相同的動(dòng)態(tài)范圍,因?yàn)槲一旧线x擇了相同的指數(shù)。但我的最差情況準(zhǔn)確性提高了50%。稍后我會(huì)給你一個(gè)圖表來展示這一點(diǎn)?;旧?,我是按塊值來縮放誤差的。每個(gè)具有相同指數(shù)的塊具有相同的誤差,然后跳到一個(gè)更大的誤差,而對(duì)數(shù)表示法則是對(duì)每個(gè)值都進(jìn)行了縮放。因此,最小數(shù)字的誤差非常小。

3cef8170-d391-11ee-a297-92fbcf53809c.png

這里是對(duì)數(shù)表示與整數(shù)表示的比較。你可以清晰地看到,對(duì)數(shù)表示法的優(yōu)勢(shì)在于表示較小的數(shù)字,而這恰恰是我們最為關(guān)心的部分,因?yàn)榇蠖鄶?shù)權(quán)重都集中在這個(gè)范圍內(nèi),其誤差非常小。在1.5左右的最大誤差,無論是向上還是向下調(diào)整,都大約是9%。這是使用4位對(duì)數(shù)2.2(無符號(hào)位)時(shí)的情況。而使用4位整數(shù)表示時(shí),這里的最大誤差高達(dá)33%,因?yàn)檎`差的絕對(duì)值是一樣的。在任何位置,誤差都是0.5。所以,在1.5或15.5這樣的數(shù)值上,誤差同樣是0.5。這意味著,在我們真正關(guān)心的區(qū)域,整數(shù)表示法會(huì)帶來非常大的誤差,而且這種誤差是不成比例的。

3cf68e3e-d391-11ee-a297-92fbcf53809c.png

浮點(diǎn)數(shù)在某種程度上可以被視為一種不那么理想的對(duì)數(shù)表示。這里我們比較了浮點(diǎn)數(shù)2.2與對(duì)數(shù)2.2的誤差。你可以看到,誤差增加了一半,從9增加到了13。這是因?yàn)椋谑褂酶↑c(diǎn)數(shù)時(shí),你對(duì)前四個(gè)步驟使用了相同的步長(zhǎng),接著對(duì)接下來的四個(gè)步驟也是如此。而在使用對(duì)數(shù)表示時(shí),你在每個(gè)元素中都增加了步長(zhǎng)。因此,你最終得到的誤差更小,這在表示最小值時(shí)尤為重要。

3d041536-d391-11ee-a297-92fbcf53809c.png

對(duì)數(shù)數(shù)字系統(tǒng)有哪些特性呢?首先,乘法運(yùn)算變得非常高效,因?yàn)橹恍柽M(jìn)行加法運(yùn)算。實(shí)際上,與在整數(shù)或浮點(diǎn)數(shù)系統(tǒng)中進(jìn)行乘法相比,加法運(yùn)算的成本要低得多。在整數(shù)或浮點(diǎn)數(shù)系統(tǒng)中,乘法是一種二次成本的操作,而加法則是一種線性成本的操作——與位數(shù)成比例。然而,加法在對(duì)數(shù)數(shù)字系統(tǒng)中并不容易實(shí)現(xiàn),因?yàn)橥ǔP枰M(jìn)行查找操作。所以,具體性能還取決于綠色區(qū)域(EI和EF)的轉(zhuǎn)換效率。

EI只是一個(gè)簡(jiǎn)單的移位操作。你取得那個(gè)指數(shù),它告訴你需要移位多遠(yuǎn)。然而,EF則需要一個(gè)查找操作。你必須在八個(gè)值中查找一個(gè),這些值都是2的冪——2的0次方很簡(jiǎn)單,就是1。但接下來是2的1/8次方、2的1/4次方、2的3/8次方、2的1/2次方等等。你需要查找這些值的二進(jìn)制表示,并用足夠的位數(shù)來表示它們以保持準(zhǔn)確性。然后,根據(jù)EI的數(shù)量進(jìn)行移位操作,再進(jìn)行加法。如果每次加法都這樣做,那將是一個(gè)非常耗時(shí)的操作。但想象一下你在深度學(xué)習(xí)系統(tǒng)中做的事情。你通常在進(jìn)行大量的乘法運(yùn)算,并將所有結(jié)果相加來計(jì)算新的激活值——實(shí)際上,通常是成千上萬次的乘法,然后將它們?nèi)肯嗉印?/p>

3d1c2ebe-d391-11ee-a297-92fbcf53809c.png

這里有一個(gè)來自某個(gè)美國專利申請(qǐng)的圖。數(shù)字在下方,展示了如何以低成本進(jìn)行這種操作。你需要做的是將這個(gè)表查找操作移到這10,000個(gè)元素的外部。假設(shè)我有10,000個(gè)元素要相加,每個(gè)元素都有EI和EF。我根據(jù)EF對(duì)它們進(jìn)行排序,EF可能是2的1/8、2/8、3/8或1/4。我需要在最后乘以它們嗎?我取所有這些元素,并將它們的整數(shù)部分相加在一起,這很簡(jiǎn)單。然后,如果我取余數(shù)部分,也就是EF部分,并在排序單元中選擇——假設(shè)它是三位——我將指向由商部分確定的八個(gè)輸出之一。在典型的應(yīng)用中,不是每個(gè)周期處理一個(gè)元素,通常是每個(gè)周期處理8或16個(gè)元素。然后,我傳遞符號(hào)和EI,我取得符號(hào)位,并將其移位到商。接著,我將這些累加器相加。這是一個(gè)熱和求和的過程,你可以利用它,因?yàn)槟阒环D(zhuǎn)了一個(gè)位。如果你足夠聰明,你可以利用這一點(diǎn)來提高能效。我將所有這些元素相加,直到我完成整個(gè)張量的計(jì)算。

完成了10,000次加法運(yùn)算——平均每個(gè)區(qū)間大約1,000次。然后,我進(jìn)行一次查找操作。實(shí)際上,這不是真正的查找操作。它是硬連線的。我將那個(gè)常數(shù)硬連線到這里。我用這個(gè)硬連線的數(shù)字進(jìn)行最后的乘法運(yùn)算,取出部分總和,然后將它們相加?,F(xiàn)在,我得到了整數(shù)形式的值。而且,有一種非常簡(jiǎn)單的方法可以將其轉(zhuǎn)換回對(duì)數(shù)形式。這就是對(duì)數(shù)數(shù)字系統(tǒng)的運(yùn)作原理。

3d3166c6-d391-11ee-a297-92fbcf53809c.png

接下來,我們將討論如何最優(yōu)地裁剪你的數(shù)字。

3d3f9e9e-d391-11ee-a297-92fbcf53809c.png

這實(shí)際上是一個(gè)關(guān)于如何選擇適當(dāng)?shù)膭?dòng)態(tài)范圍的問題。不論你采用哪種表示方式,無論是整數(shù)、對(duì)數(shù)還是浮點(diǎn)數(shù),關(guān)鍵的操作是如何確定一組數(shù)字的可表示范圍的居中位置。簡(jiǎn)單來說,你必須表示分布。

3d480034-d391-11ee-a297-92fbcf53809c.png

讓我介紹兩種可能的做法。

首先是大多數(shù)人目前采用的方法。你基本上會(huì)掃描——假設(shè)我有一堆權(quán)重或激活值。我掃描我的權(quán)重或激活值,并且可以在不同的粒度上執(zhí)行此操作。稍后我會(huì)談到這一點(diǎn),通常是對(duì)每一層進(jìn)行一次操作。所以,我會(huì)選擇網(wǎng)絡(luò)的一層,掃描所有權(quán)重,比如找到最小權(quán)重-0.8和最大權(quán)重0.8。然后,我會(huì)調(diào)整我可表示范圍的數(shù)字——在這種情況下,它是一個(gè)整數(shù)表示,因?yàn)樗蔷鶆蚍植嫉摹员阄铱梢跃_地表示最大值和最小值。這樣,你就不會(huì)遇到任何剪輯噪聲。通過限制較大的數(shù)字,我不會(huì)產(chǎn)生任何噪聲。但我的量化噪聲會(huì)非常大。這些紅色條之間的間隔非常大。

另一方面,我可以選擇進(jìn)行裁剪。我可以選擇說,與其表示0.8,我將我的最大可表示數(shù)字設(shè)為0.2。這意味著我必須將這里的任何數(shù)字都限制在0.2以下。這將引入剪輯噪聲,降低這些數(shù)字的值。但我的量化噪聲會(huì)小得多。

在某次會(huì)議上,我提出了一個(gè)有趣的問題,我認(rèn)為這個(gè)問題很難回答,那就是是否存在一種方法可以找到設(shè)置這個(gè)剪輯因子的最佳位置,以便獲得最小的均方誤差。雖然這并不是你真正想要的,但它是一個(gè)很好的代理,也是一個(gè)可以明確表述的問題。你真正想要的是神經(jīng)網(wǎng)絡(luò)中的最小誤差,但那是一項(xiàng)更具挑戰(zhàn)性的任務(wù)。

3d528e78-d391-11ee-a297-92fbcf53809c.png

然而,我們團(tuán)隊(duì)中最近加入的一位員工在一個(gè)小時(shí)內(nèi)就解決了這個(gè)積分問題。他告訴我:“是的,你只需要解決這個(gè)積分。”我對(duì)此感到相當(dāng)震驚。

聽眾問:GPT-4或? Bill Dally:不,這是在GPT-4之前。他實(shí)際上親手解決了這個(gè)數(shù)學(xué)問題。我必須說,這真的令人印象深刻。解決那個(gè)積分是相當(dāng)困難的,你可能不會(huì)希望每次針對(duì)變化的激活函數(shù)都這樣做。

然而,有了這個(gè)迭代方程,我們可以近似這個(gè)積分,而他在大約一天后就給出了結(jié)果。如果你進(jìn)行2或3次迭代,它可以為你提供一個(gè)非常接近真實(shí)積分的值。這個(gè)方程還給出了上下裁剪點(diǎn)。直觀地來說,讓我們看看這個(gè)例子。這是一個(gè)特定的層,我們正在查看的網(wǎng)絡(luò)的第13層。假設(shè)我使用四位數(shù)字來表示。如果我的裁剪比例尺在這里,那就意味著我沒有進(jìn)行任何裁剪。我可以表示直到4.2或其它最大可表示的值。因此,當(dāng)我開始裁剪時(shí),我的噪聲會(huì)減少,因?yàn)槲掖蟠蠼档土肆炕肼暋6?,我?shí)際上沒有引入太多的裁剪噪聲,因?yàn)樵谶@個(gè)范圍內(nèi)幾乎沒有權(quán)重,直到我移動(dòng)到大約這里的這一點(diǎn)。在這一點(diǎn)上,我達(dá)到了一個(gè)最小值。如果我再降低裁剪比例,裁剪噪聲開始變得足夠大,以至于實(shí)際上使整體的均方誤差增加。但這就是我想要的位置。如果我查看誤差的點(diǎn),我這里沒有5位數(shù)線的具體數(shù)據(jù),但實(shí)際上我最終得到的誤差遠(yuǎn)低于5位數(shù)線的頂部。事實(shí)上,如果我沒有進(jìn)行任何裁剪,我的誤差幾乎達(dá)到了6位數(shù)線。因此,在減少均方誤差方面,這樣做是非常值得的。所以,最重要的不是按照你認(rèn)為的方式進(jìn)行縮放,而是找到最優(yōu)的縮放方式來最小化均方誤差。

聽眾:這個(gè)假設(shè)是基于一個(gè)預(yù)先訓(xùn)練好的網(wǎng)絡(luò),你進(jìn)行裁剪。如果在訓(xùn)練循環(huán)中,你實(shí)際上假設(shè)在訓(xùn)練期間有一定數(shù)量的表示形式,那么這個(gè)答案會(huì)不會(huì)有很大的變化?

Bill Dally:這是一個(gè)很有深度的問題。實(shí)際上,我并不確定它是否會(huì)有很大的變化。如果能夠訓(xùn)練裁剪因子,那將會(huì)是非常理想的情況。

聽眾:好吧,為了得到可能最簡(jiǎn)單的結(jié)果,這里確實(shí)有很多需要權(quán)衡的地方。

Bill Dally:我很高興你這么認(rèn)為,因?yàn)槲易约褐耙矝]有深入考慮過這個(gè)問題。但我認(rèn)為,理論上講,我們是可以訓(xùn)練裁剪因子的,只需要將反向傳播應(yīng)用到裁剪因子上。然后,其它的權(quán)重將會(huì)根據(jù)裁剪因子進(jìn)行調(diào)整。目前,我們是在訓(xùn)練完成后再進(jìn)行這個(gè)操作的。實(shí)際上,我們并沒有用剪輯重新訓(xùn)練網(wǎng)絡(luò),盡管這樣做也是可能的,而且可能會(huì)得到更好的效果。

聽眾:我想更廣泛地探討一下,是否可以選擇最簡(jiǎn)單的數(shù)字表示形式,以便在可能的任何合理動(dòng)態(tài)范圍內(nèi),以及你所描述的分布中的任何極端特性下,都能得到理想的效果?我假設(shè)這是你目前唯一可用的數(shù)學(xué)方法,所以—— Bill Dally:我們?nèi)匀恍枰x擇一個(gè)scale factor。關(guān)鍵在于,你不僅僅是使用表示形式本身,而是結(jié)合一個(gè)scale factor來使用它。這個(gè)scale factor的選擇變得尤為關(guān)鍵。

3d5eaa14-d391-11ee-a297-92fbcf53809c.png

因此,讓我再深入談?wù)勏蛄靠s放。實(shí)際上,向量縮放可能是這次演講的核心信息。在通常的實(shí)踐中,我們都會(huì)進(jìn)行縮放。當(dāng)我們開始縮放時(shí),需要兩個(gè)縮放因子,一個(gè)用于前向傳播,另一個(gè)用于反向傳播。這是因?yàn)閮烧咦罱K使用的值可能會(huì)有很大的差異,特別是在反向傳播中,你需要乘以一個(gè)學(xué)習(xí)率,這會(huì)使返回的數(shù)字變得更小。然后,我們會(huì)逐層進(jìn)行縮放。如果你發(fā)現(xiàn)某種方法有效并改善了結(jié)果,你可能會(huì)想是否可以進(jìn)一步優(yōu)化?

3d72393a-d391-11ee-a297-92fbcf53809c.png

于是,我們轉(zhuǎn)向了更細(xì)粒度的縮放。這進(jìn)一步提升了效果。于是,我們提出了一個(gè)問題:如果我們不是按層進(jìn)行縮放,而是按矢量進(jìn)行縮放,效果會(huì)如何呢?這里的‘矢量’指的是包含16、32或64個(gè)元素的集合。由于每個(gè)矢量都有一個(gè)非常緊湊的分布,我們可以對(duì)其進(jìn)行縮放,從而獲得非常出色的結(jié)果。這實(shí)際上相當(dāng)于增加了額外的精度位數(shù)。

因此,我們的思考方式是,在常規(guī)操作中,你會(huì)按照這里展示的方式處理ConvNet。我們有一個(gè)維度為高度乘以寬度乘以通道數(shù)的張量,即 H、W 和 C。接著,我們通過 R 乘以 S 進(jìn)行卷積,這里的 R 和 S 是卷積核的大小。但在通道維度上,我們會(huì)使用對(duì)應(yīng)通道的權(quán)重進(jìn)行點(diǎn)乘操作。

假設(shè)我選取一個(gè)在通道維度上長(zhǎng)度為32的矢量元素,并與該元素進(jìn)行點(diǎn)乘,我可以獨(dú)立地對(duì)這個(gè)32元素矢量進(jìn)行縮放,而不影響張量的其它部分。為了實(shí)現(xiàn)這一點(diǎn),我最終在我的 MAC 單元中添加了一個(gè)小單元。在輸出端,完成所有權(quán)重與激活函數(shù)的乘法運(yùn)算以將其轉(zhuǎn)換回預(yù)縮放數(shù)字之后,我必須乘以兩個(gè)縮放因子——一個(gè)用于權(quán)重,一個(gè)用于激活函數(shù),即 sw 和 sa。

3d7684b8-d391-11ee-a297-92fbcf53809c.png

從圖形化的角度來看,我們可以這樣想象:這個(gè)大藍(lán)色塊代表整個(gè)層的分布,而這條線的小范圍則代表我的矢量的范圍。因此,現(xiàn)在基本上我在對(duì)一個(gè)更小的矢量進(jìn)行縮放。

如果我對(duì)這個(gè)更小的矢量進(jìn)行最優(yōu)裁剪,我可以獲得更好的效果。因此,這個(gè)方法在實(shí)際應(yīng)用中表現(xiàn)非常出色。接下來,我將展示我們構(gòu)建的一款加速器的一些實(shí)驗(yàn)結(jié)果。

3d7b32f6-d391-11ee-a297-92fbcf53809c.png

讓我先談?wù)勏∈栊浴?/p>

3d84364e-d391-11ee-a297-92fbcf53809c.png

這張圖來自我和宋于2015年在NeurIPS(當(dāng)時(shí)稱為NIPS)上發(fā)表的一篇論文。在這篇論文中,我們展示了一個(gè)實(shí)驗(yàn):取一個(gè)神經(jīng)網(wǎng)絡(luò)——這里展示的是一個(gè)多層感知器——?jiǎng)h除其中一部分權(quán)重,然后使用掩碼重新訓(xùn)練它。這個(gè)掩碼的作用是保持被刪除的權(quán)重不變。最終,我們幾乎得到了與原始網(wǎng)絡(luò)相同的準(zhǔn)確性。

實(shí)際上,對(duì)于多層感知器,我們可以刪除高達(dá)90%的權(quán)重而仍能保持相同的準(zhǔn)確性。而對(duì)于卷積神經(jīng)網(wǎng)絡(luò)(ConvNets),這個(gè)數(shù)字通常更接近30%。也就是說,你可以刪除60%到70%的權(quán)重,使網(wǎng)絡(luò)的密度保持在30%到40%,同時(shí)仍然保持相同的準(zhǔn)確性。我們覺得這一發(fā)現(xiàn)非常有趣。

為了進(jìn)一步驗(yàn)證這一發(fā)現(xiàn),我們實(shí)際上設(shè)計(jì)了一個(gè)小型測(cè)試條帶,名為“高效推斷引擎”。這個(gè)引擎的目的是展示我們?nèi)绾卧趯?shí)際應(yīng)用中實(shí)現(xiàn)稀疏計(jì)算,并且這種計(jì)算方式是高效的。與標(biāo)量引擎相比,我們的高效推斷引擎具有更高的效率。為了實(shí)現(xiàn)這一點(diǎn),我們使用了專用硬件來遍歷CSR結(jié)構(gòu),從而能夠在50%的密度下有效地進(jìn)行稀疏計(jì)算。

我記得原始論文的一個(gè)審稿人曾經(jīng)評(píng)論說,這只是學(xué)術(shù)上的好奇,因?yàn)榇蠹叶贾?,如果使用稀疏矩陣包,那么矩陣的密集度必須非常低,比如不超過0.1%,否則直接運(yùn)行它會(huì)更快。確實(shí),如果全部在軟件中進(jìn)行稀疏計(jì)算,那么審稿人的觀點(diǎn)是正確的。但我們的方法有所不同。我們基本上為CSR指針分配了單獨(dú)的內(nèi)存數(shù)組。我們還設(shè)計(jì)了特殊的硬件來遍歷這些內(nèi)存數(shù)組。因此,我們的稀疏計(jì)算幾乎沒有額外的開銷。

問題是,實(shí)際上沒有多少人愿意去做標(biāo)量計(jì)算。為了進(jìn)行比較,我們構(gòu)建了一些最先進(jìn)的加速器,它們配備了并行向量單元。這些加速器基本上可以同時(shí)執(zhí)行16個(gè)長(zhǎng)向量的運(yùn)算,每個(gè)周期可以完成256次乘法。現(xiàn)在,我們面臨的挑戰(zhàn)是如何在稀疏情況下使它們高效工作。

自2015年以來,我一直在努力解決這個(gè)問題。我不斷嘗試提出新的想法,看起來都非常不錯(cuò),直到我們實(shí)際去合成邏輯。然后,我發(fā)現(xiàn)了一個(gè)問題:如果我想對(duì)兩個(gè)稀疏向量進(jìn)行點(diǎn)積運(yùn)算,并在最后一刻篩選出非零元素并將它們送入MAC單元,這會(huì)產(chǎn)生大量的閃爍。這是因?yàn)?a href="http://www.www27dydycom.cn/tags/多路復(fù)用器/" target="_blank">多路復(fù)用器在實(shí)時(shí)嘗試判斷哪些數(shù)字是0。它會(huì)不斷選擇這個(gè)數(shù)字,然后說:“不,這個(gè)數(shù)字在這里是非零的,但在另一邊它是0,所以讓我們把向量移到下一個(gè)位置?!弊詈?,為了每個(gè)計(jì)算,它們會(huì)切換數(shù)學(xué)單元5次,這極大地消耗了我們的能源。

3d8f336e-d391-11ee-a297-92fbcf53809c.png

因此,我們一直在尋找消除閃爍的方法,因?yàn)檫@成為了許多稀疏運(yùn)算的瓶頸。在Ampere和Hopper中,我們都找到了一個(gè)有效的方法,我們稱之為“結(jié)構(gòu)化稀疏性”。原來,稀疏性之所以難以處理,是因?yàn)樗遣灰?guī)則的。當(dāng)數(shù)據(jù)不規(guī)則時(shí),我們需要花費(fèi)大量精力去整理它們,使它們到達(dá)正確的位置。

我們的解決方案是避免不規(guī)則性。我們強(qiáng)制使稀疏性具有某種規(guī)律模式。具體的方法是,和所有與稀疏性相關(guān)的工作一樣,我們密集地訓(xùn)練網(wǎng)絡(luò)。即使對(duì)于所有的稀疏性,大部分的訓(xùn)練也是在稠密的情況下進(jìn)行的推理。但是,在訓(xùn)練完網(wǎng)絡(luò)之后,我們會(huì)找到最低的權(quán)重并將它們刪除。但在這里,我們會(huì)以結(jié)構(gòu)化的方式進(jìn)行刪除,即我們堅(jiān)持要求每四個(gè)中最多只有兩個(gè)是非零的。如果你做不到這一點(diǎn),那么你可能只能進(jìn)行密集計(jì)算。但是,如果你能剔除四分之二的權(quán)重,這通常是可以做到的,特別是當(dāng)處理MLP時(shí),你可以剔除10個(gè)中的9個(gè)。那么,剔除四分之二應(yīng)該就很容易了。

我們將這些權(quán)重刪除,然后使用掩碼重新訓(xùn)練網(wǎng)絡(luò),使其它部分在某種程度上補(bǔ)償消失的部分。接著,我們通過僅存儲(chǔ)非零權(quán)重和一些元數(shù)據(jù)來壓縮模型,這些元數(shù)據(jù)告訴我們哪些權(quán)重被保留了。由于元數(shù)據(jù)是靜態(tài)的,不會(huì)頻繁變動(dòng),我們將其輸入多路復(fù)用器,用于選擇輸入激活。具體來說,如果我們有八個(gè)輸入激活,而元數(shù)據(jù)告訴我們其中四個(gè)是非零的,我們就選擇這四個(gè)并將其饋送到乘法器中。這樣,我們得到了一種規(guī)則性很強(qiáng)的計(jì)算方式,效率幾乎翻倍。目前,我們正在研究如何將這種方法擴(kuò)展到激活函數(shù)上,以及如何結(jié)合兩種稀疏模式,同時(shí)保持計(jì)算的可預(yù)測(cè)性。

3d9b9410-d391-11ee-a297-92fbcf53809c.png

接下來,我簡(jiǎn)要談?wù)劶铀倨骱图铀倨髋cGPU之間的關(guān)系。

3da13bf4-d391-11ee-a297-92fbcf53809c.png

我們?cè)贜VIDIA開發(fā)了一系列加速器,其中EIE是與斯坦福大學(xué)合作完成的,而Joe Lemar則在NVIDIA與麻省理工學(xué)院合作完成了另一項(xiàng)工作。我們還開發(fā)了用于稀疏卷積神經(jīng)網(wǎng)絡(luò)的SCNN加速器,以及多芯片模塊等。

3da8ab28-d391-11ee-a297-92fbcf53809c.png

這些加速器之所以能獲得出色的性能,主要有五種原因。

首先,它們采用了特殊的數(shù)據(jù)類型和操作符。這與我們從GPU中借鑒的經(jīng)驗(yàn)有關(guān)。我們針對(duì)數(shù)據(jù)類型進(jìn)行了專門化設(shè)計(jì)。以Hopper為例,它采用了FP8數(shù)據(jù)類型,并使用QMMA專門處理FP8的8x8矩陣乘法。通過這種方式,我們基本上用一個(gè)周期完成了原本需要數(shù)十或數(shù)百個(gè)周期才能完成的工作。因此,QMMA和IMMA都能在單個(gè)指令周期內(nèi)完成1024次操作。

其次,這些加速器具備大規(guī)模的并行性。我們追求的是1000倍的性能提升,因此希望大量的計(jì)算單元能夠并行工作。在構(gòu)建加速器時(shí),優(yōu)化存儲(chǔ)器是非常重要的。主存儲(chǔ)器訪問成本高昂,如果頻繁地從主存儲(chǔ)器中讀取數(shù)據(jù),性能將會(huì)受到限制。由于深度學(xué)習(xí)涉及多個(gè)層次的讀取,我們可以通過使用小的暫存區(qū)來實(shí)現(xiàn)良好的數(shù)據(jù)重用。

當(dāng)我們?yōu)樯镄畔W(xué)設(shè)計(jì)了一個(gè)加速器,并在Hopper中實(shí)現(xiàn)了動(dòng)態(tài)規(guī)劃指令時(shí),我們首先考慮了生物信息學(xué)算法——Minimap,這是廣泛使用的算法。我們提出了一個(gè)問題:如果只為這個(gè)算法設(shè)計(jì)專用硬件,我們能獲得多少加速效果?答案大約是4倍。就在我們準(zhǔn)備放棄并轉(zhuǎn)向其它項(xiàng)目時(shí),我們想到,如果重新設(shè)計(jì)算法呢?這引出了算法、架構(gòu)和代碼協(xié)同設(shè)計(jì)的挑戰(zhàn)。

事實(shí)證明,生物信息學(xué)家認(rèn)為動(dòng)態(tài)規(guī)劃計(jì)算成本高昂,因此他們花費(fèi)大量時(shí)間在種子階段,試圖找到好的候選項(xiàng)以進(jìn)行對(duì)準(zhǔn)。而我們采取了不同的策略:我們使對(duì)準(zhǔn)階段變得非常高效,因?yàn)槲覀兊膶?duì)準(zhǔn)引擎比CPU上的對(duì)準(zhǔn)操作快150,000倍。而種子階段相對(duì)昂貴,因?yàn)樗枰鞔鎯?chǔ)器訪問。因此,我們顛倒了這一策略,設(shè)計(jì)了一個(gè)非常經(jīng)濟(jì)的種子階段,其中可能產(chǎn)生大量誤報(bào)輸入到對(duì)準(zhǔn)階段。但由于對(duì)準(zhǔn)速度極快,它能夠自我過濾,最終我們實(shí)現(xiàn)了大約4000倍的總體加速。

然而,關(guān)鍵在于優(yōu)化內(nèi)存訪問。你不能一直依賴主存儲(chǔ)器進(jìn)行引用并期望獲得良好的性能。此外,減少操作的平均開銷也很重要。對(duì)于簡(jiǎn)單的操作,與CPU相比,我們的加速器可以實(shí)現(xiàn)10000倍的加速。

3dc11230-d391-11ee-a297-92fbcf53809c.png

我一直在從事這方面的研究,從1985年開始的快速加速器設(shè)計(jì)。我最初是從事仿真加速器的設(shè)計(jì),之后涉及信號(hào)處理,最近則是神經(jīng)網(wǎng)絡(luò)和SAT求解器。

3dc6eca0-d391-11ee-a297-92fbcf53809c.png

我想強(qiáng)調(diào)操作開銷的重要性。這是一篇關(guān)于簡(jiǎn)單ARM亂序核的論文中的數(shù)據(jù),盡管它是相對(duì)簡(jiǎn)單的核之一。我忘記了具體是哪個(gè)型號(hào)——可能是某種A型號(hào),我以為我在這里寫下來了。然而,與我們今天擁有的更先進(jìn)的核心相比,例如Grace芯片中的Neoverse核心,這是一個(gè)非常高效的CPU。但即使如此,執(zhí)行一個(gè)CPU指令的成本仍然很高。即使那個(gè)指令是一個(gè)空操作,獲取指令、解碼、進(jìn)行分支表查找以及在寄存器文件中進(jìn)行亂序操作的成本是250皮秒焦耳。而執(zhí)行一個(gè)16位整數(shù)加法的成本是32飛秒焦耳。所以,大部分開銷都來自于指令執(zhí)行的輔助操作。因此,我認(rèn)為在設(shè)計(jì)和優(yōu)化硬件時(shí),需要密切關(guān)注這些開銷,并努力減少它們。

3dd629f4-d391-11ee-a297-92fbcf53809c.png

在乘法運(yùn)算方面,存在二次擴(kuò)展現(xiàn)象。一個(gè)32位乘法的成本并不僅僅是8位乘法的4倍,而是比8倍還要貴,實(shí)際上是貴了16倍。浮點(diǎn)數(shù)的情況稍微復(fù)雜一些,但大致相同。其中還涉及到一個(gè)特殊的歸一化階段。你會(huì)發(fā)現(xiàn),從內(nèi)存中讀取數(shù)據(jù)的成本比所有這些操作都要昂貴,甚至比32位乘法還要貴。讀取一個(gè)相對(duì)較小的8k字節(jié)內(nèi)存的成本更高。讀取內(nèi)存的距離越遠(yuǎn),情況就會(huì)變得更糟。

3deb5a18-d391-11ee-a297-92fbcf53809c.png

我喜歡使用這種數(shù)量級(jí)的方式來描述,例如,如果我讀取一個(gè)本地的8k字節(jié)內(nèi)存,每個(gè)字的成本是5皮焦耳。如果我必須穿過芯片并讀取,基本上是數(shù)百兆字節(jié)的內(nèi)存,每個(gè)字的成本是50皮焦耳,但其中的內(nèi)存部分仍然是5。你使用小內(nèi)存陣列來構(gòu)建大內(nèi)存。因此,我們基本上有一個(gè)內(nèi)存陣列大小,我們傾向于用于所有東西,因?yàn)樵谝粋€(gè)位線上,你只能有那么多位單元,在一個(gè)字線上,你只能有那么多單元。所以這是你的基本陣列大小。超過這個(gè)大小的任何東西都要使用多個(gè)陣列。所以另外的45皮焦耳是通信能量。這是將地址傳送到內(nèi)存陣列并將數(shù)據(jù)傳送回來的成本。然后,如果你離開芯片,情況就會(huì)糟糕得多。LPR,這是你能得到的最節(jié)能的DRAM——實(shí)際上與HBM相當(dāng)?,F(xiàn)在,它大約是——我在試著回憶——大約是每比特5皮焦耳。讀取32位字,這就是為什么這樣,是640皮焦耳。

3df5def2-d391-11ee-a297-92fbcf53809c.png

接下來,讓我來談?wù)勎覀冏罱囊粋€(gè)最新加速器項(xiàng)目。我們從一個(gè)程序開始,實(shí)際上,它搜索加速器的設(shè)計(jì)空間。我們基本上給它我們的目標(biāo)神經(jīng)網(wǎng)絡(luò),然后我們說,對(duì)于加速這個(gè)神經(jīng)網(wǎng)絡(luò),最好的加速器是什么?它搜索一堆參數(shù)——有多少處理單元。我們有這個(gè)向量MAC。我們有一堆向量MAC的通道。所以這是一個(gè)二維的東西,有很多向量和很多向量元素和很多通道——不同緩沖區(qū)的大小將會(huì)是多少。因此,它在搜索有限的設(shè)計(jì)空間。我們有一個(gè)有點(diǎn)風(fēng)格化的東西,但它在變化所有的參數(shù)。它實(shí)際上可以將多個(gè)級(jí)別放入我們通過的scratchpad層次結(jié)構(gòu)中。

在ICCAD的論文中,我們實(shí)現(xiàn)了大約每瓦特20萬億次的8位操作,你會(huì)意識(shí)到——這在技術(shù)上比Hopper落后一代。我認(rèn)為是在12納米工藝,而Hopper是在5納米工藝——實(shí)際上,所以它是兩代技術(shù)之后。但我們?nèi)匀蛔龅帽容^好,因?yàn)槲覀儍?yōu)化了很多東西,并且我們可以將這些應(yīng)用到Hopper上。

3dfd2086-d391-11ee-a297-92fbcf53809c.png

更進(jìn)一步的是,我們今年在JSSC上發(fā)表了一篇論文,而去年則是在VLSI電路研討會(huì)上發(fā)表了關(guān)于Magnetic BERT的研究成果。因此,我們完成了兩項(xiàng)工作。我們計(jì)劃將其應(yīng)用于LLM,因?yàn)樗蔀楫?dāng)下的熱門話題,而非ConvNets,MAGNe真正優(yōu)化了這一點(diǎn)。另一方面,我們也想應(yīng)用我們所有關(guān)于最佳裁剪和向量級(jí)別縮放的學(xué)習(xí)成果。因此,它支持向量級(jí)別的縮放。我們?cè)黾恿祟~外的兩組乘法器,用于乘以激活和權(quán)重,以及縮放因子,使其能夠在基于32個(gè)元素的向量上運(yùn)行。這使得我們能夠運(yùn)行一種特殊的量化方法,我們稱之為VS-Quant INT4,而且可以在不損失精度的情況下運(yùn)行BERT和BERT Large。因此,我們能夠通過最佳縮放實(shí)現(xiàn)4位量化的推理。

在這個(gè)圖表中,真正重要的數(shù)字——雖然我不會(huì)詳細(xì)解釋——是每特拉操作95.6瓦的能耗。因此,我們幾乎每瓦能夠達(dá)到100萬億次操作,比Hopper的效率提高了約10倍。而且這是在相同的工藝下實(shí)現(xiàn)的。順便提一下,我們?cè)贜VIDIA進(jìn)行原型制作的方式是,等待有人發(fā)送這些大型800平方毫米芯片之一,然后我們會(huì)說:“好吧,你有800平方毫米的空間。顯然,我們可以從你那里借用一個(gè)毫米的角落。”這有點(diǎn)像坐在那里向別人借你的杯子用一下。我們會(huì)問:“我可以要一個(gè)毫米的空間嗎?”他們通常都會(huì)同意。因此,我們最終在一個(gè)大型GPU上啟動(dòng)了這種實(shí)驗(yàn)之一,我相信這是Hopper交換芯片,并回來——這些是實(shí)驗(yàn)室的數(shù)據(jù)——效果非常好。我們能夠在上面運(yùn)行BERT并取得出色的結(jié)果。因此,我認(rèn)為這是我們希望在未來一些GPU中投入的原型,并顯示出我們有另一個(gè)比Hopper高10倍的因素要追求。

3e0674b0-d391-11ee-a297-92fbcf53809c.png

好的,讓我總結(jié)一下,并回答一些問題。

3e10774e-d391-11ee-a297-92fbcf53809c.png

深度學(xué)習(xí)是通過硬件實(shí)現(xiàn)的,并且受到硬件的制約。算法和數(shù)據(jù)在之前的幾年里已經(jīng)存在,它們就像是GPU的火花所需的燃料-空氣混合物。它擁有足夠的能量和馬力,在足夠大的數(shù)據(jù)集上以合理的時(shí)間訓(xùn)練出足夠大的模型。

從那時(shí)起,我們的訓(xùn)練需求增長(zhǎng)了10的8次方倍,在petaFLOP天數(shù)方面,從AlexNet的10的負(fù)2次方增長(zhǎng)到了GPT-4的10的6次方。為了應(yīng)對(duì)這一挑戰(zhàn),我們不得不提高GPU的性能。在過去的10年里,GPU性能提升了1000倍,而剩下的10的6次方倍的增長(zhǎng)則來自于時(shí)間和GPU數(shù)量的增加?,F(xiàn)在,人們使用近10萬個(gè)GPU的集群來訓(xùn)練這些大型模型,并花費(fèi)了幾個(gè)月的時(shí)間。這確實(shí)是一個(gè)巨大的投資,但人們正在獲得證明其價(jià)值的結(jié)果。

那么,我們將從哪里繼續(xù)前進(jìn)呢?我之前已經(jīng)提到了一些內(nèi)容,盡管我沒有過多地討論稀疏性,因?yàn)槲覀儗?duì)稀疏性還沒有一個(gè)明確的答案。然而,我仍然認(rèn)為,未來最大的收益將來自于找到如何比我們現(xiàn)在從稀疏性中獲得的2比1更好的方法。當(dāng)然,在數(shù)字方面還有很多工作要做。我談到了對(duì)數(shù)數(shù)字,它們?cè)诒举|(zhì)上比整數(shù)或浮點(diǎn)數(shù)更具優(yōu)勢(shì)。雖然浮點(diǎn)數(shù)很接近,但對(duì)數(shù)數(shù)字通常具有最壞情況誤差,這種誤差比FP的最壞情況誤差要小約33%,因?yàn)槊恳徊蕉冀?jīng)過了縮放。

最佳剪裁是一個(gè)巨大的收益。在選擇scale factor時(shí),需要非常謹(jǐn)慎。我不知道最小均方誤差是否真的是最佳的度量標(biāo)準(zhǔn),但它是一種容易量化和應(yīng)用的度量標(biāo)準(zhǔn),并且我們?cè)诖嘶A(chǔ)上取得了良好的結(jié)果。當(dāng)進(jìn)行縮放時(shí),需要選擇縮放的粒度。為每32或64個(gè)元素分配一個(gè)scale factor并不會(huì)帶來太大的成本。然后,可以縮放更小的數(shù)字組,使范圍更加緊湊,從而減少誤差。

接下來,我們構(gòu)建了一系列加速器來驗(yàn)證這些想法。我分享了其中的兩個(gè):MAGNe和Magnetic BERT。Magnetic BERT的表現(xiàn)非常出色。它在BERT和BERT Large上實(shí)現(xiàn)了每瓦近100萬億次的操作,而且準(zhǔn)確度幾乎可以忽略不計(jì)。這對(duì)我們來說實(shí)際上是一個(gè)驗(yàn)證場(chǎng),充分展示了向量縮放和最佳剪裁技術(shù)的優(yōu)勢(shì)。在進(jìn)行這種算法硬件協(xié)同設(shè)計(jì)時(shí),這種驗(yàn)證過程非常有益。我們正在努力探索如何——這總是需要一些時(shí)間和努力的。你設(shè)計(jì)了一個(gè)加速器,它只能完成一項(xiàng)任務(wù)?,F(xiàn)在,我面臨的問題是,如何將這個(gè)設(shè)計(jì)轉(zhuǎn)化為未來一代GPU的指令?

----- 聽眾:你提到了稀疏性,我對(duì)目前正在使用哪些技術(shù)來優(yōu)化網(wǎng)絡(luò)大小很感興趣。

Bill Dally:對(duì),這實(shí)際上是一個(gè)不同的問題。對(duì)于網(wǎng)絡(luò)大小的優(yōu)化,我們有一個(gè)團(tuán)隊(duì)專門負(fù)責(zé)進(jìn)行神經(jīng)架構(gòu)搜索。他們會(huì)在各種參數(shù)上進(jìn)行搜索,例如層數(shù)、每層的通道數(shù)、層的大小以及它們之間的連接等。他們?cè)噲D找到一個(gè)在某種優(yōu)化定義下最優(yōu)的模型。當(dāng)然,模型越大,通常準(zhǔn)確性就越高。但如果受到執(zhí)行時(shí)間或功耗的限制,他們通常會(huì)嘗試找到最小的模型以達(dá)到一定的準(zhǔn)確度。這就是他們進(jìn)行神經(jīng)架構(gòu)搜索的目的。

與此同時(shí),他們還會(huì)進(jìn)行網(wǎng)絡(luò)修剪,這是另一個(gè)軟件部分。我們實(shí)際上使用了幾種不同的技術(shù)。最簡(jiǎn)單且被廣泛使用的方法是掃描一層中的權(quán)重,并根據(jù)權(quán)重的大小進(jìn)行修剪。如果你希望達(dá)到某個(gè)層的密度,它會(huì)進(jìn)行直方圖統(tǒng)計(jì),找到那個(gè)點(diǎn),并將所有低于該點(diǎn)的權(quán)重設(shè)為0。

我們還嘗試了一種更復(fù)雜但效果更好的方法,盡管它更昂貴。這種方法試圖計(jì)算每個(gè)權(quán)重的敏感度。它不僅關(guān)注權(quán)重的值,還關(guān)注與該權(quán)重連接的其它值對(duì)輸出的影響。通過查看敏感度,它能夠找到最不敏感的權(quán)重進(jìn)行修剪。

這就是目前我們廣泛使用的兩種技術(shù)。

聽眾:我對(duì)于復(fù)雜的指令很感興趣。你提到了節(jié)省了很多能量,這包括了提取和解碼能量的節(jié)省,以及操作數(shù)加載的節(jié)省。我想知道你對(duì)這兩者之間的能量分配有什么看法,以及。..

Bill Dally:我目前沒有具體的分配數(shù)字。但我認(rèn)為,在大多數(shù)情況下,提取和解碼的能量節(jié)省可能會(huì)占據(jù)主導(dǎo)地位。不過,我需要進(jìn)一步查找和確認(rèn)這些數(shù)字。

聽眾:關(guān)于縱橫交錯(cuò)的體系結(jié)構(gòu),Google的TPU與NVIDIA之間在這方面的設(shè)計(jì)確實(shí)存在許多人工差異。

聽眾:NVIDIA沒有采用系統(tǒng)陣列來進(jìn)行矩陣運(yùn)算,是嗎?

Bill Dally: 我們進(jìn)行的是規(guī)模較小的矩陣乘法。當(dāng)我們使用FP16或BF16時(shí),我們的核心元素是一個(gè)4乘4的矩陣,而Google的TPU則傾向于進(jìn)行規(guī)模較大的矩陣乘法。我不記得具體的尺寸了,但其中一個(gè)尺寸是128乘128。我們沒有選擇這種做法的原因之一是,它會(huì)導(dǎo)致碎片化問題。如果你選擇了一個(gè)非常大的矩陣乘法作為基本元素,那么自然大小的矩陣可能并不是一個(gè)2的冪的整數(shù)倍。這可能會(huì)導(dǎo)致一些奇怪的情況。例如,如果你有一個(gè)4乘4的矩陣,你可能需要在某個(gè)地方四舍五入到3來適應(yīng)它。但如果你有一個(gè)128乘128的矩陣,你可能會(huì)最終四舍五入到127,這將會(huì)非常耗費(fèi)資源。然而,就矩陣乘法操作的效率而言,我認(rèn)為我們做得更好一些。盡管我們沒有使用系統(tǒng)陣列,但這并不重要。因?yàn)槲覀冊(cè)谶M(jìn)行矩陣乘法時(shí),幾乎所有的能量都消耗在數(shù)學(xué)單元中。實(shí)際上,只有一小部分,大約幾個(gè)百分點(diǎn),不在數(shù)學(xué)單元中。所以,采用系統(tǒng)陣列的方式并不會(huì)帶來任何好處。問題在于,向矩陣乘法輸入數(shù)據(jù)的能量成本是多少?我們可能會(huì)因?yàn)檫M(jìn)行較小的矩陣乘法而有一些額外的成本。我們從寄存器文件中為矩陣乘法器提供輸入。每次進(jìn)行4乘4的運(yùn)算時(shí),我們都會(huì)進(jìn)行一個(gè)264的寄存器提取——兩個(gè)4乘4的矩陣。然后得到結(jié)果,再進(jìn)行下一個(gè)4乘4的運(yùn)算,依此類推。我們?cè)谶M(jìn)行更大的矩陣運(yùn)算時(shí),可能會(huì)有一些額外的洗牌開銷,因?yàn)槲覀兪且暂^小的顆粒度進(jìn)行的。但即使這樣,我認(rèn)為這只是噪聲,對(duì)總體性能的影響在10%左右。而Google仍然需要——他們?nèi)匀恍枰苿?dòng)數(shù)據(jù)。他們必須將數(shù)據(jù)從任何地方移動(dòng)到系統(tǒng)陣列的輸入端。如果他們的成本低于10%,我會(huì)感到非常驚訝。他們還有控制開銷。他們有一些小微控制器來告訴它,現(xiàn)在進(jìn)行矩陣乘法運(yùn)算,這也不是零成本。

聽眾:我想快速回到你之前提到的訓(xùn)練模型部分,你提到了查看數(shù)字和權(quán)重的分布,并對(duì)這些數(shù)字進(jìn)行剪裁。我可能錯(cuò)過了一些細(xì)節(jié),但我不太確定是因?yàn)橛布母倪M(jìn)使你能進(jìn)行剪裁,還是因?yàn)檐浖蛘呦?a href="http://www.www27dydycom.cn/soft/data/30-91/" target="_blank">FPGA這樣的可編程硬件。所以,在整個(gè)技術(shù)堆棧中。..

Bill Dally: 不,這幾乎完全是軟件實(shí)現(xiàn)的。我們已經(jīng)有了可以使用的scale factor。這些scale factor讓我們能夠?qū)?shù)字縮放到適應(yīng)我們數(shù)字系統(tǒng)表示的動(dòng)態(tài)范圍。傳統(tǒng)的方法是選擇一個(gè)scale factor,以便能夠表示最大和最小的數(shù)字。通過剪裁,你只需要選擇一個(gè)更大的scale factor。基本上,你將每個(gè)數(shù)字乘以一個(gè)較大的量。然后,當(dāng)你將其轉(zhuǎn)換為較低精度時(shí),一些數(shù)字會(huì)被剪裁。我們使用飽和算術(shù),所以這些數(shù)字會(huì)被限制在最大可表示的值。這主要是一種軟件技術(shù)。唯一涉及到硬件的部分——而我們無論如何都需要它,因?yàn)槲覀冊(cè)谶M(jìn)行——如果你進(jìn)行縮放,你必須要有——在右上角的那個(gè)小乘法器,表示sw乘以sa,將兩個(gè)scale factor相乘,四舍五入,然后第二個(gè)乘法器——所以這兩個(gè)乘法器必須被添加進(jìn)去,每當(dāng)你進(jìn)行縮放時(shí)。但一旦你進(jìn)行了縮放,你可以選擇是否進(jìn)行剪裁,以及任何你想要的粒度。你只需要為額外的scale factor的表示付費(fèi),如果你以更小的粒度進(jìn)行縮放的話。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • DRAM
    +關(guān)注

    關(guān)注

    40

    文章

    2349

    瀏覽量

    185638
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124513
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122795

原文標(biāo)題:NVIDIA首席科學(xué)家Bill Dally:深度學(xué)習(xí)硬件趨勢(shì)

文章出處:【微信號(hào):算力基建,微信公眾號(hào):算力基建】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    GTC中國大會(huì):NVIDIA首席科學(xué)家介紹AI研究的最新進(jìn)展

    了性能非凡的高性能計(jì)算設(shè)備,致力于解決世界上極為苛刻的計(jì)算問題,所有這一切的基礎(chǔ)都是硬件?!?b class='flag-5'>Bill Dally說。 圖:NVIDIA首席
    的頭像 發(fā)表于 12-15 18:20 ?4241次閱讀

    NVIDIA首席科學(xué)家談3D芯片、中國崛起

    NVIDIA首席科學(xué)家Bill Dally在接受EE Times采訪時(shí)談到了3D整合電路,技術(shù)層面上中國的崛起以及美國研發(fā)投資的現(xiàn)狀。
    發(fā)表于 05-21 09:02 ?958次閱讀

    NVIDIA深度學(xué)習(xí)平臺(tái)

    為幫助數(shù)據(jù)科學(xué)家和開發(fā)人員充分利用深度學(xué)習(xí)領(lǐng)域中的機(jī)遇,NVIDIA為其深度學(xué)習(xí)軟件平臺(tái)發(fā)布了三
    發(fā)表于 08-06 15:00 ?2132次閱讀

    GPU如何引爆AI時(shí)代

    NVIDIA首席科學(xué)家Bill Dally在最新一期AI播客中與主持人Noah Kravitz分享了自己關(guān)于人工智能的想法。
    的頭像 發(fā)表于 07-04 14:31 ?3040次閱讀

    百度徐偉宣布入職地平線 擔(dān)任通用AI首席科學(xué)家

    今天凌晨,百度深度學(xué)習(xí)實(shí)驗(yàn)室(IDL)杰出科學(xué)家徐偉宣布離職百度,其還稱將加入地平線機(jī)器人(Horizon Robotics )并擔(dān)任通用AI首席
    的頭像 發(fā)表于 07-27 09:57 ?3161次閱讀

    NVIDIA首席科學(xué)家Bill Dally公布了一個(gè)開源呼吸機(jī)設(shè)計(jì)

    Dally擁有120多項(xiàng)專利。他曾在加州理工大學(xué)(Caltech)、麻省理工大學(xué)(MIT)和斯坦福大學(xué)(Stanford)任教、研究,并擔(dān)任計(jì)算機(jī)科學(xué)系主任。
    的頭像 發(fā)表于 06-02 17:15 ?3962次閱讀

    NVIDIA首席科學(xué)家Bill Dally將于GTC 中國線上大會(huì)首日發(fā)表主題演講

    全球最負(fù)盛名的計(jì)算機(jī)科學(xué)家之一、NVIDIA研究院負(fù)責(zé)人Bill Dally將于GTC 中國線上大會(huì)發(fā)表主題演講, GTC中國線上大會(huì)是近期聚焦AI、
    的頭像 發(fā)表于 12-11 15:43 ?1821次閱讀

    NVIDIA預(yù)測(cè):GPU將推動(dòng)AI性能逐步增長(zhǎng)

    12月15日,NVIDIA GTC 2020中國線上大會(huì)上,NVIDIA首席科學(xué)家Bill Dally
    的頭像 發(fā)表于 12-15 15:32 ?2318次閱讀

    NVIDIA將在中國多地設(shè)立研發(fā)實(shí)驗(yàn)室

    12月15日,NVIDIA的GTC China大會(huì)開幕,以NVIDIA首席科學(xué)家Bill Dally
    的頭像 發(fā)表于 12-16 09:43 ?2128次閱讀

    因優(yōu)秀人才多,NVIDIA有意在中國建立研究室

    12月15日,NVIDIA的GTC China大會(huì)開幕,以NVIDIA首席科學(xué)家Bill Dally
    的頭像 發(fā)表于 12-16 09:53 ?2303次閱讀

    始于硬件卻也被硬件所限的深度學(xué)習(xí)

    無疑是這類硬件的領(lǐng)軍者。 近日,在伯克利大學(xué)的電子工程與電腦科學(xué)學(xué)院研討會(huì)上,英偉達(dá)的首席科學(xué)家、研究部門高級(jí)副總裁同時(shí)兼任該校副教授的Bill
    的頭像 發(fā)表于 12-05 07:10 ?784次閱讀

    NVIDIA 首席科學(xué)家 Bill Dally 入選硅谷工程協(xié)會(huì)名人堂

    NVIDIA首席科學(xué)家 Bill Dally 入選硅谷工程協(xié)會(huì)名人堂。 他在斯坦福大學(xué)工程學(xué)院的流處理研究成果幫助推動(dòng)了 GPU 計(jì)算的
    的頭像 發(fā)表于 02-11 10:25 ?952次閱讀

    NVIDIA 首席科學(xué)家 Bill Dally 將在 Hot Chips 大會(huì)發(fā)表主題演講

    這位著名計(jì)算機(jī)科學(xué)家將分享來自 NVIDIA Research 最新研究成果,這些研究正在推動(dòng)加速計(jì)算和 AI 的進(jìn)步。 Bill Dally 是全球最知名的計(jì)算機(jī)
    的頭像 發(fā)表于 08-22 19:20 ?872次閱讀

    聚焦黃氏定律:NVIDIA 首席科學(xué)家 Bill Dally 介紹推動(dòng) GPU 性能提升的關(guān)鍵因素

    在近期舉行的處理器和系統(tǒng)工程師年度盛會(huì)? Hot Chips? 上,NVIDIA 首席科學(xué)家 Bill Dally 發(fā)表了主題演講。在演講中
    的頭像 發(fā)表于 10-12 19:55 ?1003次閱讀
    聚焦黃氏定律:<b class='flag-5'>NVIDIA</b> <b class='flag-5'>首席</b><b class='flag-5'>科學(xué)家</b> <b class='flag-5'>Bill</b> <b class='flag-5'>Dally</b> 介紹推動(dòng) GPU 性能提升的關(guān)鍵因素

    前OpenAI首席科學(xué)家創(chuàng)辦新的AI公司

    消息在業(yè)界引起了廣泛關(guān)注,因?yàn)樘K茨克維曾是OpenAI的聯(lián)合創(chuàng)始人及首席科學(xué)家,并在去年在OpenAI董事會(huì)上扮演了重要角色。
    的頭像 發(fā)表于 06-21 10:42 ?818次閱讀