如果你最近看過(guò)任何科技發(fā)布會(huì),你可能已經(jīng)厭倦了聽(tīng)到關(guān)于設(shè)備端AI的討論,蘋(píng)果智能、個(gè)人智能,隨時(shí)隨地的設(shè)備端AI,谷歌的AI進(jìn)展,Meta的AI內(nèi)置,以及蘋(píng)果的智能引擎、微軟的Recall,所有這些似乎都在設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型。突然之間,每家科技公司都在談?wù)揘PU或者神經(jīng)處理單元——這些機(jī)器中的芯片突然運(yùn)行了所有這些新興的AI技術(shù)。所以我們必須問(wèn),NPU到底是實(shí)打?qū)嵉膭?chuàng)新,還是像NFT、區(qū)塊鏈和元宇宙那樣的硅谷新騙局? 這是一張現(xiàn)代高端蘋(píng)果筆記本芯片M3 Max的特寫(xiě)圖,它是一個(gè)SoC,即系統(tǒng)級(jí)芯片,它包含許多不同類(lèi)型的處理器封裝在一起。 有CPU(中央處理單元),以及它的各種內(nèi)核和緩存。有GPU(圖形處理單元),還有處理顯示和I/O(輸入輸出)相關(guān)任務(wù)的專(zhuān)門(mén)部分,基本上包括USB端口、Thunderbolt端口等。最讓我們感興趣的是NPU,神經(jīng)處理單元,或者按照蘋(píng)果的說(shuō)法,神經(jīng)引擎(Neural Engine)。 從一開(kāi)始,鑒于科技公司給這些NPU的所有炒作,我本以為它們的物理尺寸會(huì)更大。即使在M3 Max中,像顯示引擎和I/O這樣無(wú)趣的部分大約占據(jù)了神經(jīng)引擎五倍的空間。有趣的是,M3和M3 Pro使用的NPU和Max的一樣大,所以隨著芯片變小,NPU相對(duì)變大。而當(dāng)我們談到像iPhone中使用的A17 Pro這種非常小的芯片時(shí),NPU的相對(duì)比例會(huì)更大。 顯然,在所有這些設(shè)備中,面積(或者行業(yè)術(shù)語(yǔ)稱(chēng)為“晶圓面積”)都是極其珍貴的。 總結(jié)一下,我們可以看到行業(yè)迄今為止做出的兩個(gè)明確決策。首先,雖然NPU的重要性在增加,但它們?nèi)匀皇俏覀冃酒械南鄬?duì)較小部分。其次,在較小的設(shè)備中,它們顯然是更高優(yōu)先級(jí)的,而在較大的設(shè)備中優(yōu)先級(jí)則較低。這種情況不僅適用于我們討論的蘋(píng)果芯片,還普遍適用于其他設(shè)備。自2017年以來(lái),NPU在智能手機(jī)中已相當(dāng)普遍,已有7年的歷史了,甚至可以在像Meta Ray-Ban眼鏡這樣的微小設(shè)備中找到,而在PC中,它們才剛剛開(kāi)始推廣。這是一種非常明顯的相關(guān)性。 要了解為什么NPU實(shí)際上很重要,我們可以看看加速器的概念。電腦本質(zhì)上是一個(gè)數(shù)學(xué)機(jī)器,它所做的就是計(jì)算。每個(gè)像素、每個(gè)聲波、每個(gè)字符的文本,最終都被你的計(jì)算機(jī)表示為一系列數(shù)字,然后對(duì)這些數(shù)字進(jìn)行計(jì)算。 在早期,所有這些計(jì)算都由CPU完成,一個(gè)通用的數(shù)學(xué)機(jī)器。CPU被設(shè)計(jì)得非常精確并且具有靈活性,因此它可以執(zhí)行計(jì)算機(jī)可能需要的任何類(lèi)型的計(jì)算,包括使用巨大的數(shù)字進(jìn)行非常復(fù)雜的邏輯運(yùn)算等。但計(jì)算機(jī)科學(xué)家很快意識(shí)到,許多計(jì)算并不需要這種程度的靈活性或精確性。 以圖形處理為例,在4K顯示器上,約有800萬(wàn)個(gè)像素,你希望每秒刷新至少60次。這意味著每秒大約有5億次更新。計(jì)算每個(gè)像素的數(shù)學(xué)運(yùn)算非常簡(jiǎn)單,但每秒做5億次這樣的計(jì)算是一個(gè)相當(dāng)大的挑戰(zhàn)。而這種數(shù)學(xué)運(yùn)算正是GPU(圖形處理單元)擅長(zhǎng)的任務(wù),最好的GPU目前擁有超過(guò)1萬(wàn)個(gè)計(jì)算單元。這些計(jì)算單元比CPU的大核心要簡(jiǎn)單得多,但它們?cè)O(shè)計(jì)成并行運(yùn)行,因此可以非常快速地進(jìn)行大量的小計(jì)算。 除了GPU之外,還有許多其他加速器,例如視頻編碼器和解碼器,或嵌入到每部手機(jī)中的圖像信號(hào)處理器,用于處理使相機(jī)工作所需的計(jì)算等。這個(gè)想法非常簡(jiǎn)單,如果一個(gè)計(jì)算必須一遍又一遍地重復(fù)執(zhí)行,可能為它專(zhuān)門(mén)設(shè)計(jì)一個(gè)新的芯片來(lái)專(zhuān)門(mén)處理這種計(jì)算,比讓CPU來(lái)完成這項(xiàng)任務(wù)更高效。 這就引出了我們今天討論的最新加速器——NPU(神經(jīng)處理單元),它是為運(yùn)行神經(jīng)網(wǎng)絡(luò)所需的數(shù)學(xué)運(yùn)算而構(gòu)建的加速器。多年來(lái),神經(jīng)網(wǎng)絡(luò)一直被廣泛用于移動(dòng)設(shè)備上,來(lái)驅(qū)動(dòng)從鍵盤(pán)的自動(dòng)完成,到檢測(cè)圖像中哪些部分是背景以在人像模式下模糊它們的功能,還包括面部識(shí)別以及更快速、更準(zhǔn)確的語(yǔ)音識(shí)別,或者將傳感器讀數(shù)轉(zhuǎn)化為有用的信息,比如步數(shù)、心率或碰撞檢測(cè)等。 例如,蘋(píng)果的首席執(zhí)行官蒂姆·庫(kù)克聲稱(chēng),iPhone上已經(jīng)運(yùn)行了大約200個(gè)不同的模型。需要明確的是,大多數(shù)這些其實(shí)早在當(dāng)前的生成式AI熱潮之前就已經(jīng)存在了。雖然許多營(yíng)銷(xiāo)部門(mén)現(xiàn)在希望你相信神經(jīng)網(wǎng)絡(luò)有某種魔力,但好消息是,它們其實(shí)就是數(shù)學(xué)運(yùn)算,這也可能是壞消息,因?yàn)槲覀儸F(xiàn)在不得不一起做一點(diǎn)數(shù)學(xué)運(yùn)算了。我保證盡量保持簡(jiǎn)單,我甚至專(zhuān)門(mén)為大家做了一個(gè)小神經(jīng)網(wǎng)絡(luò)。 這是最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò):Marton的圖像識(shí)別機(jī)。這個(gè)網(wǎng)絡(luò)的目的是,你可以輸入一個(gè)由四個(gè)黑白像素組成的圖像, 然后網(wǎng)絡(luò)會(huì)告訴你這個(gè)圖像是否有一條對(duì)角線(xiàn),要么是從這一側(cè)到那一側(cè),要么是從另一側(cè)到這一側(cè)。就是這么簡(jiǎn)單,它是一個(gè)圖像識(shí)別模型的最原始版本。 模型由所謂的“神經(jīng)元”組成,實(shí)際上它們只是存儲(chǔ)一個(gè)數(shù)字的內(nèi)存單元。這些神經(jīng)元排列成層,然后這些層之間有特定的數(shù)字,稱(chēng)為“權(quán)重”,它們決定連接強(qiáng)度。 在4x4圖像中,我們?yōu)槊總€(gè)像素分配一個(gè)值,白色像素為1,黑色像素為0。 這樣,我們可以用四個(gè)數(shù)字表示任何圖像。然后我們將這四個(gè)數(shù)字輸入到模型的第一層,也就是輸入層。我們現(xiàn)在已經(jīng)將圖像作為輸入提供給模型。 輸出層有兩個(gè)神經(jīng)元。我設(shè)定了第一個(gè)神經(jīng)元的值為1時(shí)(第二個(gè)為0),表示圖像被識(shí)別為具有像這樣的對(duì)角線(xiàn): 如果第二個(gè)神經(jīng)元的值為1(第一個(gè)為0),則表示對(duì)角線(xiàn)是這樣的: 如果顯示的是其他值,則表示沒(méi)有檢測(cè)到對(duì)角線(xiàn): 因此,兩個(gè)輸出神經(jīng)元被配置為告訴我們對(duì)角線(xiàn)是朝這個(gè)方向還是那個(gè)方向,從而實(shí)現(xiàn)圖像識(shí)別。 計(jì)算過(guò)程如下:從第一層獲取第一個(gè)值,將其乘以一個(gè)權(quán)重,然后將其加到第二層的第一個(gè)神經(jīng)元上。然后對(duì)網(wǎng)絡(luò)中的每個(gè)神經(jīng)元和連接進(jìn)行相同的乘法和加法運(yùn)算,最終得到一個(gè)結(jié)果。我們的簡(jiǎn)單網(wǎng)絡(luò)準(zhǔn)確地顯示出這條對(duì)角線(xiàn)為1。如果將另一條對(duì)角線(xiàn)作為輸入,系統(tǒng)會(huì)在第二個(gè)神經(jīng)元上正確顯示為1;如果選擇其他像素組合,輸出會(huì)與1不同。因此,這個(gè)網(wǎng)絡(luò)能正確識(shí)別圖像。 這背后的原因是權(quán)重設(shè)置得當(dāng)。由于這個(gè)網(wǎng)絡(luò)非常簡(jiǎn)單,我可以手動(dòng)選擇這些權(quán)重來(lái)得到我想要的連接,抑制我不想要的連接。基本上,這就是神經(jīng)網(wǎng)絡(luò)背后的基本數(shù)學(xué)原理。 當(dāng)然,真實(shí)的神經(jīng)網(wǎng)絡(luò)比這個(gè)要復(fù)雜得多,可能會(huì)有數(shù)十億個(gè)神經(jīng)元,這些神經(jīng)元會(huì)排列成多層,稱(chēng)為“隱藏層”,以實(shí)現(xiàn)更復(fù)雜的邏輯。所有這些模型的特征被稱(chēng)為“參數(shù)”,復(fù)雜的模型可能有超過(guò)一萬(wàn)億個(gè)參數(shù)。確定這些網(wǎng)絡(luò)的所有細(xì)節(jié)是通過(guò)一個(gè)稱(chēng)為“訓(xùn)練”的過(guò)程完成的。一旦我們訓(xùn)練好了一個(gè)模型,我們就可以開(kāi)始使用它,甚至可以在我們自己的設(shè)備上運(yùn)行它。 這就引出了NPU的作用。因?yàn)槟悻F(xiàn)在已經(jīng)知道了這些計(jì)算背后的基本數(shù)學(xué)原理,所以你也知道NPU的實(shí)際需求是什么。你已經(jīng)看到的這種計(jì)算稱(chēng)為“乘累加”運(yùn)算,因?yàn)槟阆葘蓚€(gè)數(shù)字相乘,然后加到一個(gè)節(jié)點(diǎn)上,然后你再將兩個(gè)數(shù)字相乘并加到同一個(gè)節(jié)點(diǎn)上,依此類(lèi)推。你進(jìn)行乘法,然后累加,基本上就是這樣。在現(xiàn)實(shí)世界中,你可能還會(huì)加入其他內(nèi)容,比如偏置和激活函數(shù),但這里不會(huì)解釋這些。此外,你還會(huì)將這些計(jì)算結(jié)構(gòu)化為矩陣乘法,但乘累加運(yùn)算是這里的基礎(chǔ)。 這個(gè)任務(wù)有一些非常明顯的特征。
總結(jié)一下,NPU需要針對(duì)四個(gè)方面進(jìn)行優(yōu)化:它們需要能夠并行執(zhí)行大量不同的計(jì)算(因此需要很多小型核心),需要大量的內(nèi)存,豐富的緩存,并且要使用低精度。如果你覺(jué)得這聽(tīng)起來(lái)很像我們剛剛說(shuō)過(guò)的關(guān)于GPU的內(nèi)容,那你是對(duì)的。這也是為什么GPU經(jīng)常被用于運(yùn)行AI任務(wù)。自2017年以來(lái),許多GPU甚至內(nèi)置了專(zhuān)用的AI硬件,Nvidia(英偉達(dá))稱(chēng)之為“Tensor Cores”。比如,Nvidia 4090顯卡有高達(dá)512個(gè)Tensor Cores,專(zhuān)門(mén)用于A(yíng)I處理,旁邊還有其他專(zhuān)注于圖形處理的核心。而如今,即便是集成在英特爾Lunar Lake芯片中的GPU也有很多AI硬件。 事實(shí)上,在Lunar Lake芯片中,GPU的AI性能峰值甚至高于大肆宣傳的NPU。而在純AI性能方面,Nvidia 4090顯卡遠(yuǎn)遠(yuǎn)超過(guò)了任何現(xiàn)有的NPU,差距不是一點(diǎn)點(diǎn)。因此,簡(jiǎn)單來(lái)說(shuō),當(dāng)我們需要神經(jīng)網(wǎng)絡(luò)的極致性能時(shí),GPU已經(jīng)是主要的AI芯片,它有專(zhuān)門(mén)的硬件和軟件來(lái)運(yùn)行神經(jīng)網(wǎng)絡(luò),開(kāi)發(fā)者通常也主要針對(duì)GPU優(yōu)化這些工作負(fù)載,比如視頻編輯任務(wù)。 另一方面,NPU則更多關(guān)注于能效,而不是極致性能。微軟稱(chēng),Snapdragon X Elite芯片上的NPU即使在滿(mǎn)負(fù)荷狀態(tài)下也只消耗不到5瓦的功率,它是一款低功耗芯片,設(shè)計(jì)用于在后臺(tái)持續(xù)運(yùn)行,而不用啟動(dòng)主CPU或GPU。這也解釋了為什么NPU首先在移動(dòng)設(shè)備上流行起來(lái)。在PC上,我們過(guò)去通常優(yōu)化的是性能,而移動(dòng)用戶(hù)則必須優(yōu)先考慮能效,尤其是在他們運(yùn)行諸如碰撞檢測(cè)、心率監(jiān)控等需要持續(xù)在后臺(tái)運(yùn)行的任務(wù)時(shí)。 因此,對(duì)于電腦制造商來(lái)說(shuō),現(xiàn)在的問(wèn)題是:哪些神經(jīng)網(wǎng)絡(luò)任務(wù)可以高效地在后臺(tái)運(yùn)行,并且確實(shí)可以從NPU中受益? 諸如圖像生成或在本地運(yùn)行聊天機(jī)器人等任務(wù)經(jīng)常被演示,但我認(rèn)為這其實(shí)有點(diǎn)搞笑,因?yàn)镚PU可能也能同樣好地運(yùn)行這些任務(wù),而我猜這些只是因?yàn)樗鼈兪瞧胀ㄏM(fèi)者能夠理解的少數(shù)幾個(gè)功能。更具吸引力的是實(shí)時(shí)字幕生成和音頻翻譯,或者例如Windows Studio Effects(可以在視頻通話(huà)中實(shí)時(shí)模糊背景、隔離語(yǔ)音、取消回聲等功能)。你可能會(huì)用這些功能幾個(gè)小時(shí),而且是在電池供電的情況下運(yùn)行,所以用NPU來(lái)處理這些任務(wù)是完全合理的。 雖然這很好,但我認(rèn)為我們還沒(méi)有在這類(lèi)任務(wù)中看到真正的“殺手級(jí)應(yīng)用”。相反,最具吸引力的NPU使用場(chǎng)景無(wú)疑是微軟的Recall系統(tǒng)。 Recall是一個(gè)可以每幾秒鐘截圖一次的系統(tǒng),它在每一幀上運(yùn)行圖像識(shí)別和光學(xué)字符識(shí)別(OCR)軟件,并創(chuàng)建一個(gè)可搜索的數(shù)據(jù)庫(kù),所有這些都是在后臺(tái)安靜地進(jìn)行,而不會(huì)對(duì)電池造成毀滅性影響。這正是NPU最適合的任務(wù),從計(jì)算角度看,這完全是NPU的“甜蜜點(diǎn)”。這是一個(gè)相當(dāng)復(fù)雜的數(shù)學(xué)問(wèn)題,但它應(yīng)當(dāng)在后臺(tái)安靜地運(yùn)行,基本上是無(wú)聲無(wú)息地持續(xù)進(jìn)行,而用戶(hù)甚至不會(huì)注意到它的存在。 現(xiàn)在的問(wèn)題當(dāng)然是,人們是否最終會(huì)接受這樣一個(gè)看似“侵入性”的系統(tǒng),或者開(kāi)發(fā)者是否會(huì)設(shè)計(jì)出其他同樣適合NPU的工具。目前我認(rèn)為這兩個(gè)問(wèn)題的答案都還不太明確,因此我也認(rèn)為NPU的價(jià)值還不十分明顯。 |
|
來(lái)自: 老胡說(shuō)科學(xué) > 《待分類(lèi)》