加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 硬件的硬核知識(shí)點(diǎn)
    • 然后是緩存
    • 邊緣設(shè)備的人工智能/機(jī)器學(xué)習(xí)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

剖析 | 在CPU原生推理引擎上,如何執(zhí)行AI數(shù)學(xué)運(yùn)算

2021/09/08
597
閱讀需 22 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

最近,很多芯片公司-其中比較重要的包括英特爾和 IBM,還有一眾 Arm 芯片廠商和 AMD——推出了具有原生人工智能 (AI) 及其相關(guān)機(jī)器學(xué)習(xí) (ML) 計(jì)算能力的新型 CPU 設(shè)計(jì)。 之前,我們?cè)?jīng)廣泛介紹了對(duì)專(zhuān)門(mén)設(shè)計(jì)用于支持機(jī)器學(xué)習(xí)算法的數(shù)學(xué)引擎的需求,特別是用于推理工作負(fù)載和某些特定類(lèi)型的訓(xùn)練的數(shù)學(xué)引擎。

為了只討論其中一些相關(guān)的問(wèn)題,大家可以考慮一下IBM即將推出的“Cirrus”P(pán)ower10 處理器,該處理器將搭載在幾天后推出的 Big Blue 的高端 NUMA 機(jī)器上,具有旨在加速機(jī)器學(xué)習(xí)的新矩陣數(shù)學(xué)引擎,或者想一想IBM明年推出的“Telum”z16大型機(jī)處理器,它在最近的Hot Chips大會(huì)上亮相,有一個(gè)專(zhuān)用的供CPU核心共享的混合精度矩陣數(shù)學(xué)內(nèi)核引擎。同時(shí),英特爾正在將其高級(jí)矩陣擴(kuò)展 (AMX)引擎 添加到其未來(lái)的“Sapphire Rapids”至強(qiáng) SP 處理器中,這款處理器本來(lái)現(xiàn)在應(yīng)該已經(jīng)上市了,但是因?yàn)橹T多原因已被推遲到明年年初。 此外,Arm 公司打造了未來(lái)的 Arm 核心設(shè)計(jì),即“Zeus”V1 核心和“Perseus”N2 核心,它們將擁有更廣泛的矢量引擎,支持通常用于機(jī)器學(xué)習(xí)推理的混合精度數(shù)學(xué)計(jì)算。來(lái)自 AMD 的“米蘭”Epyc 7003 處理器中的矢量引擎也具有類(lèi)似的計(jì)算能力。

所有這些芯片都旨在保證在 CPU 上執(zhí)行推理,在很多情況下,由于數(shù)據(jù)安全性、數(shù)據(jù)合規(guī)性和應(yīng)用程序延遲等原因,推理必須在 CPU 上進(jìn)行。

我們之前已經(jīng)討論過(guò)了硬件,但我們還沒(méi)有真正深入探討所有這些數(shù)學(xué)引擎功能對(duì)于那些試圖弄清楚如何將機(jī)器學(xué)習(xí)融入到其應(yīng)用程序中的人的真正意義。所以,我們現(xiàn)在要嘗試一下對(duì)這些數(shù)字引擎進(jìn)行解讀,它意味著你將怎樣編程,以使得神經(jīng)網(wǎng)絡(luò)可以利用這些芯片廠商提供的計(jì)算引擎并滿(mǎn)足一定的性能。如果你能做到這一點(diǎn),那么你將留下比較深刻的印象。事實(shí)證明,鑒于我們今天對(duì) AI 的了解,他們的解決方案比添加諸如 DO_AI 之類(lèi)的指令更加優(yōu)雅和方便。

因此,為了在討論處理器架構(gòu)之前讓所有人都處在同一個(gè)認(rèn)知水平線上,讓我們從代表小型神經(jīng)網(wǎng)絡(luò)的常見(jiàn)圖片開(kāi)始。

這張圖代表了我們今天認(rèn)為大腦中的神經(jīng)元正在做什么的最佳模型。我想,大家應(yīng)該都知道我們大腦的神經(jīng)元使用模擬電化學(xué)在神經(jīng)元之間進(jìn)行消息傳遞,在人工神經(jīng)網(wǎng)絡(luò)這里,我們談?wù)摰南⑹菙?shù)字、鏈接和概率——這也是今天的計(jì)算機(jī)能夠處理的東西。左邊的輸入是數(shù)字,右邊的輸出也是數(shù)字,上面的每個(gè)節(jié)點(diǎn)代表一組數(shù)字,甚至它們之間的這些鏈接也是數(shù)字形式的鏈接。神經(jīng)網(wǎng)絡(luò)的秘訣就在于在左側(cè)引入大量的、遠(yuǎn)遠(yuǎn)超過(guò)此處所能顯示的數(shù)量的數(shù)字,通過(guò)中間這個(gè)藍(lán)色的過(guò)濾器運(yùn)行它,然后在右側(cè)篩選出有意義的數(shù)字。?

請(qǐng)?jiān)试S我強(qiáng)調(diào)一點(diǎn),這張圖片只是對(duì) AI 模型中經(jīng)常發(fā)生的事情的一個(gè)非常微小的表示。正如您稍后將在另一個(gè)相對(duì)簡(jiǎn)單的例子中所看到的那樣,你可以把這個(gè)圖片想象成可能高很多倍,具有更多的節(jié)點(diǎn),因此也有更多的鏈接 - 支持多兆字節(jié)甚至數(shù)百千兆字節(jié)的數(shù)據(jù)結(jié)構(gòu)在今天的神經(jīng)網(wǎng)絡(luò)里并不鮮見(jiàn)。整個(gè)事情都需要編程——不,實(shí)際上是在內(nèi)部訓(xùn)練——用其他數(shù)字來(lái)從合理的輸入中產(chǎn)生合理的輸出。為什么我在這里提到這個(gè)?因?yàn)楝F(xiàn)在的性能!這一切都可以完成,而且今天做得很好,現(xiàn)在沒(méi)有專(zhuān)門(mén)的硬件,但是對(duì)這個(gè)網(wǎng)絡(luò)的訓(xùn)練時(shí)間可能需要......好吧,太長(zhǎng)了,我們都希望它更快?,F(xiàn)在夠快嗎?嗯,當(dāng)然算不上快,也許再等上個(gè) 10 到 20 年,等到人工智能的下一場(chǎng)革命發(fā)生時(shí)才能實(shí)現(xiàn)真正的‘快’。?

所以,計(jì)算速度和數(shù)量與網(wǎng)絡(luò)尺寸密切相關(guān)。讓我們從一個(gè)故事開(kāi)始,以引出一個(gè)相對(duì)簡(jiǎn)單的例子吧。我的女兒(已經(jīng)成年)借了我在明尼蘇達(dá)掛牌的皮卡車(chē)在愛(ài)荷華州拉了一輛拖車(chē),后來(lái)她在那里超速行駛,結(jié)果被拍下了卡車(chē)的照片。我們?cè)诿髂崽K達(dá)州收到了一張自動(dòng)傳票,要我繳納罰款,并附上了一張照片。我對(duì)這件事很生氣,但同時(shí)也很好奇。從那個(gè) JPEG 圖片到把我給找出來(lái),中間經(jīng)歷了一個(gè)什么樣的過(guò)程?我認(rèn)為這里面就涉及到了人工智能。?

所以,讓我們從在明尼蘇達(dá)掛的這個(gè)車(chē)牌開(kāi)始。這個(gè)車(chē)牌可讀性和分辨率都很高(512 個(gè)水平像素),可能大于相機(jī)的能力,但也可能比神經(jīng)網(wǎng)絡(luò)的輸入所需的要大得多。不過(guò),這里的重點(diǎn)是要注意,一旦在照片中找到車(chē)牌,就必須根據(jù)這些像素確定狀態(tài)并找出大約 6-8 個(gè)字符的文本。?

以這個(gè)尺寸的 1/8 ,測(cè)速相機(jī)可能會(huì)拍下這樣的小圖像:

當(dāng)你真正看到它時(shí),我們會(huì)發(fā)現(xiàn)是下面這個(gè)畫(huà)面:
?

人工智能應(yīng)用程序可能能夠整理出許可證號(hào)碼——畢竟你顯然也可以猜出號(hào)碼來(lái)——但也許不知道來(lái)自哪個(gè)州。因此,讓我們將分辨率提高一倍,并轉(zhuǎn)到尺寸的 1/4(128 個(gè)水平像素),如下所示:

然后如果再放大一下:
?

也許還有一些不太合理的東西,但讓我們選擇這個(gè)尺寸吧。根據(jù)文件的詳細(xì)信息,該圖像的大小為128x65像素。我們也假設(shè)某種形式的灰度,假設(shè)每像素一個(gè)字節(jié)??傊?,我們可以調(diào)用8192個(gè)字節(jié)來(lái)表示所有這些像素。如果愛(ài)荷華州不關(guān)心明尼蘇達(dá)州的土地上是不是有1萬(wàn)個(gè)湖泊,那它還會(huì)稍微小一點(diǎn)。愛(ài)荷華州的人工智能模型需要將代表像素的8192個(gè)字節(jié)轉(zhuǎn)換為文本字符——其中最多8個(gè)——以及一個(gè)州ID,以便隨后在愛(ài)荷華州政府可訪問(wèn)的明尼華州數(shù)據(jù)庫(kù)中進(jìn)行查找。這8192字節(jié),即上圖中每個(gè)黃色垂直輸入節(jié)點(diǎn)中的一個(gè)字節(jié),是您輸入到愛(ài)荷華州神經(jīng)網(wǎng)絡(luò)中的參數(shù)集。

回顧上面的圖,您會(huì)注意到每個(gè)(黃色)輸入字節(jié),經(jīng)過(guò)一些數(shù)學(xué)運(yùn)算,將被傳遞到下一個(gè)(最左邊的藍(lán)色)層的每個(gè)節(jié)點(diǎn)。這種運(yùn)算正是增強(qiáng)型硬件的用武之地,但我需要建立一個(gè)足夠的基礎(chǔ)來(lái)了解增強(qiáng)硬件為何會(huì)造成一些不同,可能有些啰嗦了,但是請(qǐng)各位看官多多包涵。

接下來(lái),這個(gè)神經(jīng)網(wǎng)絡(luò)最初還只是一大堆空的藍(lán)色節(jié)點(diǎn)。對(duì)于模型,首先知道它是“一個(gè)車(chē)牌,但是具體的車(chē)牌號(hào)是什么?”它需要接受訓(xùn)練才能識(shí)別出任何一個(gè)車(chē)牌出來(lái)。請(qǐng)記住,黃色節(jié)點(diǎn)的輸入值會(huì)隨著車(chē)牌而變化,并且有數(shù)百萬(wàn)個(gè)不同的值。愛(ài)荷華州預(yù)計(jì),對(duì)于所有這些車(chē)牌中的很大一部分,來(lái)自大約 49 個(gè)州,該網(wǎng)絡(luò)能夠在右側(cè)輸出最多 8 個(gè)字符以及州 ID。很明顯,一個(gè)空的神經(jīng)網(wǎng)絡(luò)啥也干不了。需要把網(wǎng)絡(luò)準(zhǔn)備好——經(jīng)過(guò)訓(xùn)練——通過(guò)反復(fù)向網(wǎng)絡(luò)展示數(shù)十萬(wàn)個(gè)車(chē)牌來(lái)進(jìn)行訓(xùn)練,每次根據(jù)輸出對(duì)網(wǎng)絡(luò)內(nèi)部進(jìn)行細(xì)微調(diào)整。當(dāng)然,我不會(huì)在這里帶你了解如何調(diào)整這個(gè)網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)的科學(xué)知識(shí),你現(xiàn)在可以只是將它想象成一個(gè)很多次的迭代過(guò)程,隨著調(diào)整模型內(nèi)部結(jié)構(gòu)的過(guò)程的繼續(xù),成功率將不斷提高。簡(jiǎn)而言之,機(jī)器需要學(xué)習(xí)(如在機(jī)器學(xué)習(xí)中)如何解釋任何汽車(chē)牌照,并將灰度像素轉(zhuǎn)換為字符。

再一次,我又越來(lái)越接近硬件了。

在下圖中,我從上面的神經(jīng)網(wǎng)絡(luò)圖中獲取了輸入層,并展示了這些輸入經(jīng)過(guò)一級(jí)數(shù)學(xué)處理后的下一層輸出,這里只有下一層的兩個(gè)節(jié)點(diǎn)——一個(gè)綠色,一個(gè)藍(lán)色。同樣,請(qǐng)記住,在下一個(gè)(以及下一個(gè)和再下一個(gè))層級(jí)中有許多垂直節(jié)點(diǎn)。您會(huì)注意到那里顯示了一個(gè)函數(shù)。該函數(shù)采用每個(gè)單獨(dú)的輸入值 (Ii),將其乘以相關(guān)的加權(quán)值 (Wi),然后將所有這些乘積值相加。添加一個(gè)偏置值,用作網(wǎng)絡(luò)下一級(jí)的輸入,函數(shù)的最后一步執(zhí)行一種縮放。換句話(huà)說(shuō),給定綠色節(jié)點(diǎn),它將所有黃色輸入節(jié)點(diǎn)表示的值作為輸入,將每個(gè)值乘以相關(guān)的綠色權(quán)重值 (Wi),然后將所有這些乘積相加。經(jīng)過(guò)偏置和其他功能調(diào)整后,這成為綠色節(jié)點(diǎn)的輸出。因此,再次將其與我在下面再次展示的整體圖表進(jìn)行比較,以得到一個(gè)更大的圖景。然后是對(duì)每個(gè)后續(xù)節(jié)點(diǎn)重復(fù)執(zhí)行,隨著提供更多輸入而幾乎無(wú)限重復(fù)下去,這個(gè)過(guò)程會(huì)導(dǎo)致這些權(quán)重值發(fā)生變化,最終導(dǎo)致輸出成功的可能性很高。

記住這些乘法和后續(xù)的加法。我們這里給出的車(chē)牌過(guò)濾器只是一個(gè)相對(duì)較小的例子。在這個(gè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練部分,隨著每個(gè)權(quán)重值的調(diào)整,我們一遍又一遍地進(jìn)行訓(xùn)練。 (調(diào)整權(quán)重值的過(guò)程本身很有趣,但與相關(guān)的硬件增強(qiáng)并不真正相關(guān)。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是改變這些權(quán)重的過(guò)程,直到整體輸出與您期望的一致。)這些操作的頻率是性能的關(guān)鍵決定因素。如果您希望神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度更快,則需要整個(gè)算法的整體加速。

我相信,英特爾的工程師們會(huì)很感激我展示他們的架構(gòu)并為之點(diǎn)贊,但如果可以的話(huà),我將在接下來(lái)的幾段中重點(diǎn)介紹 IBM 的 Power10 工程師為增強(qiáng)硬件所做的工作。

為了對(duì)他們所做的事情有一個(gè)初步的了解,也許可以從關(guān)注這些藍(lán)色節(jié)點(diǎn)中的任何一個(gè)開(kāi)始。您會(huì)看到該類(lèi)型神經(jīng)網(wǎng)絡(luò)的輸入是一組 8192 個(gè)黃色節(jié)點(diǎn)的灰度值。 (請(qǐng)記住,我們現(xiàn)在正在討論上面的那個(gè)車(chē)牌。)然后另一個(gè)算法的輸入是一組 8192 個(gè)加權(quán)值((Wi))—一與前面的每個(gè)節(jié)點(diǎn)相關(guān)聯(lián)。讓我們把它想象成兩個(gè)字節(jié)型數(shù)據(jù)的數(shù)組——一個(gè)是灰度字節(jié),另一個(gè)是加權(quán)字節(jié)。

這時(shí)候,可能有的程序員會(huì)說(shuō)了,不,你說(shuō)的太簡(jiǎn)單了,我會(huì)將黃色節(jié)點(diǎn)本身定義為一個(gè)數(shù)組或一些對(duì)象列表。是的,你可能會(huì)這么做,但我們?cè)谶@里談?wù)摰氖?a class="article-link" target="_blank" href="/tag/%E8%BD%AF%E4%BB%B6/">軟件/硬件接口,所以還是忽略這些無(wú)關(guān)的細(xì)節(jié)吧。你想讓它更快一些嗎?然后,您以硬件希望看到的方式將數(shù)據(jù)提供給硬件,即輸入?yún)?shù)數(shù)組和權(quán)重?cái)?shù)組。所以,請(qǐng)暫時(shí)給我個(gè)面子,就假定這里用的就是字節(jié)數(shù)組吧。

硬件的硬核知識(shí)點(diǎn)

好的,作為一個(gè)起點(diǎn),我們有了大量的數(shù)據(jù),我們將針對(duì)這些數(shù)據(jù)一遍又一遍地重復(fù)執(zhí)行相同的操作。然后,為了訓(xùn)練我們的模型,我們將一次又一次地調(diào)整數(shù)據(jù)。當(dāng)然,您希望快速完成整個(gè)枯燥得該死的事情——比沒(méi)有增強(qiáng)硬件的情況要快得多。不知何故,我們還需要將所有這些數(shù)據(jù)從 DRAM 中提取到處理器中,然后將其呈現(xiàn)給內(nèi)核中的一個(gè)小功能塊,以對(duì)其進(jìn)行實(shí)際的數(shù)學(xué)運(yùn)算。

你們中的一些人可能已經(jīng)想到了我在暗示的內(nèi)容:向量處理器的明顯用途。是的。因此,對(duì)于那些不熟悉矢量處理器概念的人,請(qǐng)堅(jiān)持住,這是您要了解的第一個(gè)硬核知識(shí)點(diǎn)。

您知道,處理器內(nèi)核里有乘法器和加法器,以及采用幾個(gè)數(shù)據(jù)操作數(shù)并將它們進(jìn)行互相傳遞的指令集。您最好把它想象成在同一時(shí)刻執(zhí)行一次乘法和一次加法。(當(dāng)然實(shí)際情況并不完全是這樣,但對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),這樣理解已經(jīng)足夠了。)每一次執(zhí)行都需要時(shí)間——當(dāng)無(wú)限重復(fù)時(shí),時(shí)間就會(huì)累積起來(lái)。因此,考慮到數(shù)據(jù)就在靠近硬件算術(shù)單元的地方,一次完成一次乘加運(yùn)算,您怎么樣才能使其運(yùn)行得更快呢?如果對(duì)現(xiàn)在就在硬件中且可用的數(shù)據(jù)一遍又一遍地進(jìn)行相同的操作,您可以同時(shí)通過(guò)多個(gè)算術(shù)單元傳遞多個(gè)可用數(shù)據(jù),然后所有這些結(jié)果都在執(zhí)行下一次運(yùn)算的同時(shí)并行保存在硬件寄存器中。向量處理單元,一次不是處理一個(gè)數(shù)據(jù),而是一次并行處理多個(gè)數(shù)據(jù)-處理器內(nèi)核中已經(jīng)準(zhǔn)備好的一組數(shù)據(jù)。人工智能領(lǐng)域的新進(jìn)展就是新的硬件可以一次執(zhí)行多次乘法和加法。

我在上一段中提到了寄存器,這是一種能夠?qū)⑵鋽?shù)據(jù)直接(以皮秒為單位)饋送到向量硬件的存儲(chǔ)形式。所以,另一個(gè)硬核知識(shí)點(diǎn)旨在讓你了解正在發(fā)生的事情。我們?cè)诨谲?chē)牌的那個(gè)小例子中一直在討論字節(jié)數(shù)組,其實(shí)我們也可以談?wù)摯笮?16 位或 32 位的單位以及這些整數(shù)和浮點(diǎn)數(shù)。 (更具體地說(shuō),在 IBM 的 Power10 中,每個(gè)內(nèi)核有 8 個(gè)向量單元來(lái)執(zhí)行這些操作,并且如果需要該級(jí)別的吞吐量,則每個(gè)內(nèi)核都支持 FP32、FP16 和 Bfloat16 操作,還有四個(gè)支持 INT4、INT8 和 INT16 操作。 ) 要將這些數(shù)據(jù)并行地輸入向量化乘加單元——在這個(gè)例子中是連續(xù)字節(jié)——,數(shù)據(jù)是在同一時(shí)刻從各個(gè)寄存器并行讀取的。您將在下面看到這一點(diǎn)。好吧,這就是硬件發(fā)揮作用的地方。但關(guān)鍵是將緩存/DRAM 中的多個(gè)字節(jié)加載到這些寄存器中,所有這些都作為單個(gè)操作。硬件可以并行執(zhí)行操作,它只需要軟件來(lái)確保操作數(shù)(連續(xù)字節(jié))也并行呈現(xiàn)給硬件寄存器。也有與向量單元相關(guān)的加載/存儲(chǔ)指令。請(qǐng)注意,最后一個(gè)是人工智能模型中保存的數(shù)據(jù)結(jié)構(gòu)的函數(shù)。

我試圖在下面表示它,最上面的這張圖表示數(shù)組形式的字節(jié)(并且有連續(xù)的字節(jié)無(wú)限期地繼續(xù)出現(xiàn))。它是您在此處看到的字節(jié) — X[0][0] 到 X[3][3],它們?cè)趩蝹€(gè)操作中加載到單個(gè)寄存器中(在 Power 架構(gòu)中稱(chēng)為 VSR)。

至于下面這個(gè)圖的其余部分,再次回到硬件的向量運(yùn)算,單個(gè)指令獲取 VSR(X) 中的所有數(shù)據(jù),并使用 VSR(Y) 中的所有數(shù)據(jù)進(jìn)行乘加運(yùn)算,將結(jié)果放入一組稱(chēng)為累加器 (ACC) 的四個(gè)寄存器中。由于細(xì)節(jié)太多,盡管它是作為單個(gè)操作完成的,但您可以將 VSR(X) 中的紅色參數(shù)與 VSR(Y) 中的所有紅色參數(shù)相乘,橙色與所有橙色相乘,接著是綠色與綠色、藍(lán)色和藍(lán)色,然后在整個(gè) VSR(X) 中使用相同的配色方案向右重復(fù)?;旧鲜峭瑫r(shí)在圖中找到的多個(gè)藍(lán)色節(jié)點(diǎn),這些全在一個(gè)操作中進(jìn)行。繼續(xù)向下遍歷先前的數(shù)組只是意味著并行循環(huán)加載數(shù)組的后續(xù)部分,并執(zhí)行在先前累積的結(jié)果中折疊的另一條指令。一次執(zhí)行一整套(這里是 16 個(gè)項(xiàng)目)的操作循環(huán)。所有這些都從緩存并行高效地饋送,并將結(jié)果高效地返回到緩存。

令人印象深刻的優(yōu)雅補(bǔ)充。但是,需要對(duì)數(shù)據(jù)的組織和硬件之間的關(guān)系有所了解才能充分利用它。

然后是緩存

我將在這里分析的并不算是對(duì)人工智能/機(jī)器學(xué)習(xí)領(lǐng)域的真正補(bǔ)充,因?yàn)榫彺媸窃试S將駐留在 DRAM 中的數(shù)據(jù)結(jié)構(gòu)饋送進(jìn)入處理器芯片上每個(gè)內(nèi)核的微小硬件中執(zhí)行計(jì)算的先決條件——緩存可以幫助高效并行地做這件事。您會(huì)看到,內(nèi)核實(shí)際上從未接觸過(guò) DRAM。是的,他們沒(méi)有直接接觸DRAM,它們中間隔著緩存!內(nèi)核訪問(wèn)它們的緩存(順便說(shuō)一句,每個(gè)內(nèi)核都有多兆字節(jié)緩存,擁有多個(gè)內(nèi)核的芯片的緩存則更多),緩存由 DRAM 內(nèi)存內(nèi)容中的連續(xù)字節(jié)塊組成。一旦進(jìn)入緩存,如果這些塊在相對(duì)不久的將來(lái)被重用,我們就不會(huì)受到 DRAM 訪問(wèn)延遲的影響。

內(nèi)核從這些緩存行(那些內(nèi)存塊)中讀取數(shù)據(jù),以字節(jié)為單位或一直到以 16 個(gè)字節(jié)為單位(就是您在上面看到的128 位),而內(nèi)核中那些大得多的功能快則直接訪問(wèn) DRAM 。由于訪問(wèn) DRAM 比訪問(wèn)緩存需要更多的時(shí)間,因此,保持性能的關(guān)鍵是最大限度地減少 DRAM 訪問(wèn)(也稱(chēng)為緩存填充)的次數(shù)。這樣做的訣竅是確保那些被訪問(wèn)的塊中只包含所需要的塊。所以,再次回到那些字節(jié)數(shù)組,你希望硬件式的訪問(wèn),比如說(shuō)將這些數(shù)組中以 128 字節(jié)為單位存到它的緩存中,然后幾乎立即流式傳輸?shù)较乱粋€(gè)128字節(jié),直到完成所有讀取,這之中幾乎沒(méi)有真正的延遲。硬件希望將這些數(shù)組(而不是其他任何東西)流式傳輸?shù)狡渚彺嬷?。然后,從這些緩存的塊中,一次快速并行加載寄存器 16 個(gè)字節(jié)。

將人工智能神經(jīng)網(wǎng)絡(luò)圖駐留在內(nèi)存中,然后如您在上面看到的流程那樣處理它,感覺(jué)整個(gè)過(guò)程就像一個(gè)經(jīng)過(guò)精心調(diào)校的管弦樂(lè)隊(duì)一樣,只有樂(lè)符和數(shù)據(jù)的流動(dòng)。硬件和軟件工程師規(guī)劃的架構(gòu)亦正如樂(lè)隊(duì)一般。如果軟件的數(shù)據(jù)結(jié)構(gòu)與處理器的架構(gòu)匹配得很好,那一切都很好。但如果匹配得不好,那就好像管弦樂(lè)隊(duì)出現(xiàn)了演奏的間斷,而小提琴還始終在低音范圍內(nèi)演奏一樣。任何優(yōu)秀的貝斯手都給我留下了深刻的印象,但在這種情況下,最好是拉小提琴。

邊緣設(shè)備的人工智能/機(jī)器學(xué)習(xí)

考慮到我那個(gè)超速者被罰單的例子的處理速度可能很慢,我可以想象出來(lái),邊緣設(shè)備上的速度傳感器/相機(jī)只是將完整的(盡管受加密保護(hù)的)JPEG 傳遞到單個(gè)服務(wù)器進(jìn)行處理,而之前的那里使用的訓(xùn)練有素的 AI 模型是相對(duì)靜態(tài)的。當(dāng)然,這些邊緣處理器可能已經(jīng)接收了今天的靜態(tài)模型,邊緣設(shè)備通過(guò)該模型對(duì) JPEG 完成實(shí)際過(guò)濾。但在更普遍的人工智能/機(jī)器學(xué)習(xí)的世界中,這些模型并不總是靜態(tài)的。也不能讓所有的應(yīng)用程序都接受隱含的更長(zhǎng)的延遲。此外,邊緣處理器很可能需要在自己的本地環(huán)境中對(duì)模型進(jìn)行一些調(diào)整;它發(fā)現(xiàn)自己所處的環(huán)境可能會(huì)決定一種微妙不同且積極變化的模型。

也許在那里沒(méi)有那么多機(jī)器學(xué)習(xí)和全面訓(xùn)練,但在某些情況下需要在本地更改模型。然而,(重新)訓(xùn)練游戲與我們上面看到的并沒(méi)有什么不同,而且通常要大得多。而且,這種訓(xùn)練需要在邊緣進(jìn)行。在邊緣使用的模型是否產(chǎn)生了正確的結(jié)果,如果它以某種方式關(guān)閉,如何使其恢復(fù)到預(yù)期的范圍內(nèi)?而且,我們需要在不影響人工智能模型的正常使用的情況下動(dòng)態(tài)即時(shí)地執(zhí)行此操作,同時(shí)這個(gè)工作負(fù)荷要在邊緣設(shè)備的計(jì)算能力和功率范圍內(nèi)。我們?cè)谶@里談?wù)摰牟灰欢ㄊ歉咝阅苡?jì)算機(jī)級(jí)系統(tǒng)--它具有專(zhuān)門(mén)用于機(jī)器學(xué)習(xí)的專(zhuān)門(mén)系統(tǒng)插件的東西。 人工智能/機(jī)器學(xué)習(xí)所隱含的這種新型處理類(lèi)型正越來(lái)越多地成為我們所處游戲的一部分,而英特爾和 IBM——以及我知道的其他人——似乎已經(jīng)知道了這一點(diǎn)。

作者:Mark Funk

編譯:與非網(wǎng)
?

相關(guān)推薦

電子產(chǎn)業(yè)圖譜