對(duì)AI模型進(jìn)行壓縮激活工作,減小對(duì)內(nèi)存的消耗
今天的 AI 模型有數(shù)十億或數(shù)萬(wàn)億個(gè)參數(shù),即輸入和權(quán)重。所以我們需要巨大的內(nèi)存來(lái)激活。這當(dāng)然會(huì)對(duì)芯片設(shè)計(jì)產(chǎn)生巨大影響,因?yàn)榧せ畲鎯?chǔ)器經(jīng)常支配平面布局。我們可以嘗試使用量化、稀疏性、權(quán)重共享等概念來(lái)減少所需的內(nèi)存。但它們只能走這么遠(yuǎn),尤其是在模型龐大且持續(xù)增長(zhǎng)的情況下。要是有辦法壓縮激活就好了!好吧,Perceive 的 CEO Steve Teig 想出了一個(gè)辦法。
所以很多人都在談?wù)搲嚎s重量。人們甚至談到了壓縮激活,你知道,用 8 位激活而不是更大的激活來(lái)運(yùn)行它。但有趣的是,當(dāng)代網(wǎng)絡(luò)的激活足跡通常比它們?cè)趦?nèi)存中的權(quán)重足跡大得多。因此,對(duì)于量化和稀疏性以及人們?cè)跈?quán)重上所做的所有努力,這很棒。在某些方面,更大的問(wèn)題被忽略了,那就是激活支配了網(wǎng)絡(luò)的內(nèi)存占用,它既占用空間又占用能量和時(shí)間,因?yàn)槟惚仨毸奶幰苿?dòng)激活。
所以當(dāng)我看到這個(gè)問(wèn)題時(shí),我首先意識(shí)到,如果你能做到的話,激活壓縮將是一件好事。其次,應(yīng)用人們用于激活權(quán)重的一些微不足道的技術(shù)總比沒(méi)有好,但不會(huì)讓你走得太遠(yuǎn)。所以,是的,如果你能以較低的精度逃脫,你應(yīng)該使用較低的精度,實(shí)踐中激活的稀疏性并不是很好,因?yàn)橄∈栊允侨绱穗S機(jī),如此不可預(yù)測(cè),以至于很難建設(shè)性地利用這種缺乏結(jié)構(gòu)。
但更進(jìn)一步,人們對(duì)重量所做的壓縮類(lèi)型,你會(huì)得到 2 倍或 4 倍。那么,您將如何獲得可能需要的 20 倍或 50 倍來(lái)擺脫激活通常需要的千兆字節(jié)?因此,這促使我們想出更有創(chuàng)意、更開(kāi)箱即用的方法來(lái)解決這個(gè)問(wèn)題。事實(shí)證明,數(shù)量級(jí)的壓縮是可能的。所以這就是談話的內(nèi)容。
如果你要做圖像處理,為了具體、超分辨率或圖像降噪或類(lèi)似的東西,你真的不必看在圖片的總另一端的像素處,對(duì)圖片這一端的降噪部分進(jìn)行降噪。因此,您實(shí)際上不必將整個(gè)圖像處理為平面。如果你這樣做了,它將占用大量的激活內(nèi)存。
但是,如果您有足夠的計(jì)算量來(lái)足夠快地完成工作,您實(shí)際上可以將圖像分段并按順序執(zhí)行,這是一件半顯而易見(jiàn)的事情,這可能會(huì)增加您的計(jì)算時(shí)間,也許是因?yàn)槟鷽](méi)有這樣做一切并行。但是您現(xiàn)在已經(jīng)減少了激活足跡。
所以人們可以概括這個(gè)想法并說(shuō),好吧,關(guān)于神經(jīng)網(wǎng)絡(luò)的最酷的事情之一就是在編譯時(shí),當(dāng)你拿到神經(jīng)網(wǎng)絡(luò)時(shí),你完全了解所有的計(jì)算依賴(lài)關(guān)系。大家都知道,神經(jīng)網(wǎng)絡(luò)用氣泡表示神經(jīng)元,箭頭表示數(shù)據(jù)移動(dòng)。好吧,這些箭頭告訴您您的計(jì)算是否取決于我的數(shù)據(jù)。如果是這樣,您必須等我完成后才能開(kāi)始。如果沒(méi)有,我們可以并行進(jìn)行。
好吧,我完全了解情況。你不需要在我之后立即進(jìn)行。只需要你跟在我后面。所以我有難以置信的靈活性,只是在空間中移動(dòng)計(jì)算的難以置信的靈活性,它們?cè)谖锢聿⑿性O(shè)備上進(jìn)行,并且及時(shí),因?yàn)橹灰蕾?lài)關(guān)系按順序發(fā)生,我就可以開(kāi)始了。我仍然可以得到正確的答案。嗯,在空間和時(shí)間上、在時(shí)空中重新安排計(jì)算塊的靈活性是巨大的。而且我可以在空間和時(shí)間上打包計(jì)算,以一種非常靈活的方式在吞吐量和激活內(nèi)存之間進(jìn)行權(quán)衡。
所以舉個(gè)簡(jiǎn)單的例子,為了直覺(jué),讓我們假設(shè)我們正在對(duì)圖像進(jìn)行降噪,圖像有 8 兆像素。好吧,如果我分成 100,000 個(gè)像素塊,(我選擇它是為了讓我可以在腦海中進(jìn)行數(shù)學(xué)計(jì)算),我剛剛完成了 1/80 的工作,所以我剛剛將激活足跡壓縮了大約 80折疊。現(xiàn)在,我可能已經(jīng)減慢了計(jì)算速度。但是今天的硬件真的很快。如果我以每秒 30 幀的速度運(yùn)行來(lái)完成工作,我有整整 1/30 秒的時(shí)間。但這表明即使是 80 倍壓縮對(duì)我來(lái)說(shuō)也很容易獲得。
我們生活在一個(gè)有趣的世界,計(jì)算幾乎是免費(fèi)的,而內(nèi)存也幾乎不是免費(fèi)的。內(nèi)存占據(jù)了我們大部分的芯片,如果你必須把內(nèi)存從芯片上取下來(lái),它幾乎占據(jù)了所有的能量。在我們的例子中,我們?cè)谛酒献鏊惺虑椋幢闳绱?。因此,讓我們利用我們擁有這些快得離譜的晶體管以及其中的大量晶體管來(lái)節(jié)省內(nèi)存這一寶貴資源的事實(shí)。
所以合理的做法是,當(dāng)你有比你想要的更多的激活內(nèi)存時(shí),壓縮它,將它的壓縮版本存儲(chǔ)在架子上,然后根據(jù)需要解壓它。而且您幾乎總是可以不只是有損壓縮,而是殘酷的有損壓縮,因?yàn)槟嬲枰男┰紨?shù)據(jù)以供下游計(jì)算使用?它需要一些東西,或一些東西,但不是一切。所以我的建議是我們可以制作簡(jiǎn)單的小工具,我稱(chēng)之為 X 網(wǎng)絡(luò)。它看起來(lái)像一個(gè) x,因?yàn)槟阌幸粋€(gè)看起來(lái)像沙漏的上半部分的壓縮器和一個(gè)看起來(lái)像沙漏的下半部分的減壓器,可以這么說(shuō)。因此,您可以通過(guò)狹窄的瓶頸擠壓數(shù)據(jù),然后根據(jù)需要對(duì)其進(jìn)行擴(kuò)展。您可以在構(gòu)建大量激活數(shù)據(jù)時(shí)將其壓縮部分并放入。你可以在消費(fèi)者所在的地方安裝減壓器。在這兩者之間,你現(xiàn)在已經(jīng)壓縮了你的足跡。
在這里,我們的實(shí)踐經(jīng)驗(yàn)也是,您可以獲得令人難以置信的壓縮量,并且不會(huì)放棄任何準(zhǔn)確性,在大多數(shù)實(shí)際網(wǎng)絡(luò)中,您需要它保留的實(shí)際數(shù)據(jù)量非常小。所以在這里,我們?cè)俅握務(wù)摰氖强赡艿囊粋€(gè)或兩個(gè)數(shù)量級(jí),而不是您可能從降低精度等瑣碎事情中獲得的 2 或 4 倍。
大多數(shù)從事神經(jīng)網(wǎng)絡(luò)工作的人還沒(méi)有真正內(nèi)化的關(guān)于計(jì)算的令人驚訝的事情之一是信息論中稱(chēng)為數(shù)據(jù)處理的東西。不等式。并且在這個(gè)討論中沒(méi)有過(guò)多的技術(shù)和數(shù)學(xué),雖然我會(huì)在談話中談?wù)撍?,基本上說(shuō)的是,計(jì)算本身不能添加信息。因此,如果您獲取數(shù)據(jù)體并通過(guò)一些計(jì)算將其傳遞,則計(jì)算是可逆的,在這種情況下,您可以重建輸入并保留信息,或者不是,在這種情況下,您已經(jīng)丟失本質(zhì)上不可重構(gòu)的信息。但是沒(méi)有新的信息來(lái)源。
所以這就是說(shuō),你不可能需要比你輸入網(wǎng)絡(luò)更多的激活。通常你需要的比這要多得多、少得多。但這是一個(gè)上限。所以這表明我們擁有巨大激活的唯一原因是因?yàn)樗梢苑浅7奖愕匾砸环N便于下游計(jì)算的方式表示事物。但是,大型激活并不是必然的。事實(shí)上,相反的情況是可以證明的:原則上你永遠(yuǎn)不需要大的激活。因此,這是引入技術(shù)以利用這一機(jī)會(huì)的強(qiáng)大動(dòng)力。
神經(jīng)網(wǎng)絡(luò)世界很有趣,尤其是現(xiàn)在。神經(jīng)網(wǎng)絡(luò)每年都在變得越來(lái)越大。人們雙手叉腰說(shuō),好吧,我什至沒(méi)有壓縮我的網(wǎng)絡(luò);我可以把它平放。而且我認(rèn)為當(dāng)你說(shuō)這樣的話時(shí)你應(yīng)該感到尷尬。事實(shí)是,如果我們正確地進(jìn)行壓縮,我們的網(wǎng)絡(luò)可能是一百萬(wàn)倍——我并沒(méi)有夸大其詞,而是說(shuō)一百萬(wàn)——可能比它們小一百萬(wàn)倍。沒(méi)有人能做到這一點(diǎn)。我的團(tuán)隊(duì),我們看到了 100 的因數(shù)。所以我們要去參加比賽了。但我們感到尷尬的是,我們將剩下的 10,000 個(gè)雞蛋留在了桌子上。但每個(gè)人都應(yīng)該認(rèn)識(shí)到,我們的網(wǎng)絡(luò)比計(jì)算所說(shuō)的要大得多。(轉(zhuǎn)自21ic.com)