當(dāng)前位置: 首頁(yè) > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > 人工智能
發(fā)布日期:2022-10-09 點(diǎn)擊率:43
用模擬電路在存儲(chǔ)器中進(jìn)行神經(jīng)網(wǎng)絡(luò)處理將有助于節(jié)能。
機(jī)器學(xué)習(xí)和人工智能(AI)已經(jīng)深入到日常生活和工作中,我們可能已經(jīng)忘記與機(jī)器的交互曾經(jīng)是什么樣子。以前,我們通過(guò)數(shù)字鍵盤(pán)、電子表格或編程語(yǔ)言求得的都是精確的定量答案,比如“10的平方根是多少?”“按照這種利率,未來(lái)五年我的收益是多少?”等。 但在過(guò)去的10年里,我們已經(jīng)習(xí)慣了機(jī)器回答那些只向他人提出過(guò)的模糊定性問(wèn)題,比如“我會(huì)喜歡這部電影嗎?”“今天的交通狀況如何?”“這筆交易是否存在欺詐?”等。 深度神經(jīng)網(wǎng)絡(luò)(DNN)實(shí)現(xiàn)了這些新功能。深度神經(jīng)網(wǎng)絡(luò)是一種通過(guò)正確答案訓(xùn)練并學(xué)習(xí)如何對(duì)類(lèi)似的新問(wèn)題做出響應(yīng)的系統(tǒng),根據(jù)國(guó)際數(shù)據(jù)公司(IDC)的統(tǒng)計(jì)數(shù)據(jù),深度神經(jīng)網(wǎng)絡(luò)是推動(dòng)全球人工智能硬件、軟件和服務(wù)市場(chǎng)快速增長(zhǎng)的主要力量,去年該市場(chǎng)的估值為3275億美元,預(yù)計(jì)到2024年將超過(guò)5000億美元。 首先推動(dòng)這場(chǎng)革命的是卷積神經(jīng)網(wǎng)絡(luò),它提供了非凡的圖像識(shí)別能力。在過(guò)去10年里,用于自然語(yǔ)言處理、語(yǔ)音識(shí)別、強(qiáng)化學(xué)習(xí)和推薦系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)新模型實(shí)現(xiàn)了許多其他的商業(yè)應(yīng)用。 但不僅是應(yīng)用數(shù)量在增長(zhǎng),網(wǎng)絡(luò)規(guī)模和所需的數(shù)據(jù)也在增長(zhǎng)。深度神經(jīng)網(wǎng)絡(luò)具有內(nèi)在可擴(kuò)展性——隨著它們變大,訓(xùn)練數(shù)據(jù)增多,它們提供的答案也更加可靠。但這樣做是有代價(jià)的。2010年至2018年間,訓(xùn)練最佳深度神經(jīng)網(wǎng)絡(luò)模型所需的計(jì)算增長(zhǎng)了10億倍,這意味著能耗大幅增加。雖然每次對(duì)已受過(guò)訓(xùn)練的深度神經(jīng)網(wǎng)絡(luò)模型使用新數(shù)據(jù)(稱(chēng)為“推理”)比訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型本身所需要的計(jì)算量少得多,消耗的能量也少很多,但這種推理計(jì)算的數(shù)量非常大而且在不斷增加。人工智能如果要繼續(xù)改變?nèi)藗兊纳睿捅仨毺岣咝省?我們認(rèn)為,可能需要從數(shù)字計(jì)算轉(zhuǎn)變到模擬計(jì)算。利用非易失性存儲(chǔ)設(shè)備和電氣工程的兩個(gè)基本物理定律,使用簡(jiǎn)單的電路就可以實(shí)現(xiàn)深度學(xué)習(xí)最基本的計(jì)算,而且只需要千萬(wàn)億分之一焦耳的能量。在這項(xiàng)技術(shù)能夠應(yīng)用于復(fù)雜的人工智能之前,還有大量的工程工作要做,但我們已經(jīng)取得了很大的進(jìn)步,并規(guī)劃出了一條前進(jìn)的道路。
對(duì)大多數(shù)計(jì)算機(jī)來(lái)說(shuō),在外部存儲(chǔ)器和計(jì)算資源(如CPU和GPU)之間移動(dòng)大量數(shù)據(jù)耗費(fèi)的時(shí)間成本和能源成本最高。這就是被稱(chēng)為“馮?諾依曼瓶頸”的存儲(chǔ)與邏輯分離的經(jīng)典計(jì)算機(jī)結(jié)構(gòu)。要大大減少深度學(xué)習(xí)所需要的能量,有一種方法是避免移動(dòng)數(shù)據(jù),即在存儲(chǔ)數(shù)據(jù)的地方進(jìn)行計(jì)算。
深度神經(jīng)網(wǎng)絡(luò)由多層人工神經(jīng)元組成。每一層神經(jīng)元根據(jù)神經(jīng)元的“激活值”和連接下一層神經(jīng)元的突觸“權(quán)值”這兩個(gè)值驅(qū)動(dòng)下一層神經(jīng)元的輸出。 大多數(shù)深度神經(jīng)網(wǎng)絡(luò)計(jì)算由向量矩陣乘法(VMM)運(yùn)算組成,即向量(一維數(shù)字?jǐn)?shù)組)與二維數(shù)組相乘。在電路級(jí),這些運(yùn)算為乘積累加運(yùn)算(MAC)。對(duì)于每個(gè)下游神經(jīng)元,所有上游激活值必須與相應(yīng)的權(quán)值相乘,然后將這些乘積相加。 大多數(shù)有用的神經(jīng)網(wǎng)絡(luò)太大,無(wú)法存放在處理器內(nèi)存中,計(jì)算每一層網(wǎng)絡(luò)時(shí),都必須從外部存儲(chǔ)器導(dǎo)入權(quán)值,每一次計(jì)算都要受到馮?諾依曼瓶頸的束縛。這使得數(shù)字計(jì)算硬件更支持更少?gòu)拇鎯?chǔ)器中移動(dòng)權(quán)值并能積極重復(fù)使用這些權(quán)值的深度神經(jīng)網(wǎng)絡(luò)。
2014年,我們?cè)贗BM研究實(shí)驗(yàn)室提出了一種全新的深度神經(jīng)網(wǎng)絡(luò)硬件節(jié)能方式。我們和其他研究人員一直在研究非易失性存儲(chǔ)器(NVM)設(shè)備的交錯(cuò)陣列。交錯(cuò)陣列是一種將器件(例如存儲(chǔ)單元)構(gòu)建在兩組正交水平導(dǎo)體(即所謂的“位線”和“字線”)之間的垂直空間的結(jié)構(gòu)。我們意識(shí)到,只要稍作修改,我們的存儲(chǔ)系統(tǒng)將非常適合深度神經(jīng)網(wǎng)絡(luò)計(jì)算,尤其是那些現(xiàn)有權(quán)值重復(fù)使用效果不佳的計(jì)算。我們將這一機(jī)遇稱(chēng)為“模擬人工智能”,其他從事類(lèi)似工作的研究人員也將其稱(chēng)為“存儲(chǔ)計(jì)算一體化”(processing-in-memory)或“存內(nèi)計(jì)算”(compute-in-memory)等。
非易失性存儲(chǔ)器有幾種不同的類(lèi)型,每種類(lèi)型的數(shù)據(jù)存儲(chǔ)方式不盡相同,但都通過(guò)測(cè)量設(shè)備的電阻(或者電阻倒數(shù),即電導(dǎo))從這些設(shè)備中讀出數(shù)據(jù)。磁阻式隨機(jī)存取存儲(chǔ)器(MRAM)使用的是電子自旋,而閃存使用的是陷阱電荷。電阻式隨機(jī)存取存儲(chǔ)器(RRAM)設(shè)備通過(guò)在微小的金屬-絕緣體-金屬器件內(nèi)產(chǎn)生并隨后中斷導(dǎo)電細(xì)絲來(lái)存儲(chǔ)數(shù)據(jù)。相變存儲(chǔ)器(PCM)利用熱量在高導(dǎo)電晶相和低導(dǎo)電非晶相之間引發(fā)快速可逆的轉(zhuǎn)換。 閃存、電阻式隨機(jī)存取存儲(chǔ)器和相變存儲(chǔ)器能夠提供傳統(tǒng)數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)所需的低電阻和高電阻狀態(tài),以及模擬人工智能所需的中間電阻。但在高性能邏輯中,只有隨機(jī)存取存儲(chǔ)器和相變存儲(chǔ)器能夠放置在硅晶體管上方布線的交錯(cuò)陣列中,將存儲(chǔ)和邏輯之間的距離縮到最短。 我們將這些非易失性存儲(chǔ)器存儲(chǔ)單元組織在一個(gè)二維陣列中,稱(chēng)為“瓦片”(tile)。瓦片上有控制非易失性存儲(chǔ)器設(shè)備讀寫(xiě)的晶體管或其他器件。對(duì)于存儲(chǔ)應(yīng)用而言,讀數(shù)電壓尋址到一行(字線),會(huì)產(chǎn)生與非易失性存儲(chǔ)器電導(dǎo)成正比的電流,在陣列邊緣的列(位線)上可檢測(cè)到這些電流,從而讀出存儲(chǔ)的數(shù)據(jù)。 為了讓這樣一個(gè)瓦片成為深度神經(jīng)網(wǎng)絡(luò)的一部分,每一行都需要用一個(gè)電壓持續(xù)驅(qū)動(dòng)一段時(shí)間,形成一個(gè)上游神經(jīng)元激活值的編碼。每一行的每個(gè)非易失性存儲(chǔ)器設(shè)備則用其電導(dǎo)系數(shù)形成一個(gè)突觸權(quán)值編碼。通過(guò)歐姆定律(在這種情況下表示為“電流等于電壓乘以電導(dǎo)”),產(chǎn)生的讀電流就是勵(lì)磁和權(quán)值的有效乘積。然后,根據(jù)基爾霍夫電流定律將每個(gè)位線上的各個(gè)電流相加。這些電流產(chǎn)生的電荷隨時(shí)間積聚在電容器上,產(chǎn)生乘積累加運(yùn)算結(jié)果。
這些相同的模擬存內(nèi)求和方法也可以使用閃存甚至是靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)單元來(lái)執(zhí)行。靜態(tài)隨機(jī)存儲(chǔ)器單元可以存儲(chǔ)多個(gè)數(shù)字位,但不能存儲(chǔ)模擬電導(dǎo)值。雖然我們不能將歐姆定律用于乘法那一步,但是我們可以使用一種方法獲取這些存儲(chǔ)設(shè)備的一位或兩位的動(dòng)態(tài)范圍。然而,這種方法對(duì)噪聲非常敏感,因此我們?cè)贗BM一直堅(jiān)持研究基于相變存儲(chǔ)器和電阻式隨機(jī)存取存儲(chǔ)器的模擬人工智能。
與電導(dǎo)不同,深度神經(jīng)網(wǎng)絡(luò)權(quán)值和激活值可以為正,也可以為負(fù)。為了實(shí)現(xiàn)有正負(fù)之分的權(quán)值,我們使用了兩條電流路徑,一條向電容器添加電荷,另一條減去電荷。為了實(shí)現(xiàn)有正負(fù)之分的勵(lì)磁,我們?cè)试S每行設(shè)備根據(jù)需要轉(zhuǎn)換其連接路徑。 每列每執(zhí)行一次乘積累加運(yùn)算,瓦片會(huì)并行執(zhí)行整個(gè)向量矩陣乘法。對(duì)于一個(gè)具有1024×1024權(quán)值的瓦片,意味著一次執(zhí)行100萬(wàn)次乘積累加運(yùn)算。 在我們?cè)O(shè)計(jì)出來(lái)的系統(tǒng)中,我們預(yù)計(jì)所有這些計(jì)算只需32納秒。由于每個(gè)乘積累加運(yùn)算執(zhí)行的計(jì)算相當(dāng)于兩次數(shù)字運(yùn)算(一次乘法和一次加法),因此每32納秒執(zhí)行100萬(wàn)次模擬乘積累加運(yùn)算代表著每秒65萬(wàn)億次運(yùn)算。 我們已制作出能夠完成這一壯舉的瓦片,每次運(yùn)算僅用36毫微微焦耳能量(相當(dāng)于每焦耳28萬(wàn)億次運(yùn)算)。而我們最新的瓦片設(shè)計(jì)將這一數(shù)字降到了10毫微微焦耳以下,其效率是商用硬件的100倍,比最新定制的數(shù)字加速器系統(tǒng)級(jí)能效高10倍,那些加速器為了能效甚至要犧牲精度。 對(duì)我們來(lái)說(shuō),提高每個(gè)瓦片的能效非常重要,因?yàn)橐粋€(gè)完整的系統(tǒng)也會(huì)在其他任務(wù)上消耗能量,比如移動(dòng)激活值和支持數(shù)字電路。
要使這種模擬人工智能方法真正取得成功,還有許多重要挑戰(zhàn)需要克服。首先,根據(jù)定義,深度神經(jīng)網(wǎng)絡(luò)具有多層結(jié)構(gòu)。要實(shí)現(xiàn)多層級(jí)聯(lián),我們必須通過(guò)人工神經(jīng)元的激活作用(一種非線性函數(shù))處理向量矩陣乘法瓦片的輸出,并將其傳遞給下一個(gè)瓦片。非線性有可能通過(guò)模擬電路執(zhí)行,并且以下一層所需的持續(xù)時(shí)間形式傳達(dá)結(jié)果,但除了向量矩陣乘法的簡(jiǎn)單級(jí)聯(lián)之外,大多數(shù)網(wǎng)絡(luò)還需要其他運(yùn)算。這意味著我們需要高效的模數(shù)轉(zhuǎn)換(ADC),以及和瓦片之間進(jìn)行適量的并行數(shù)字計(jì)算。新穎、高效的數(shù)模轉(zhuǎn)換有助于避免這些電路對(duì)整體效率產(chǎn)生過(guò)多影響。最近,我們推出了一種基于相變存儲(chǔ)器的高性能瓦片,使用了一種新型模數(shù)轉(zhuǎn)換方法,可以幫助瓦片實(shí)現(xiàn)每瓦10萬(wàn)億次以上的運(yùn)算。
第二個(gè)挑戰(zhàn)與非易失性存儲(chǔ)器設(shè)備的特性有關(guān),且更棘手。即使用相當(dāng)?shù)途鹊臄?shù)字描述它們的權(quán)值,數(shù)字深度神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性也已經(jīng)得到了證明。CPU經(jīng)常使用的32位浮點(diǎn)數(shù)對(duì)深度神經(jīng)網(wǎng)絡(luò)是不必要的。使用8位浮點(diǎn)數(shù)甚至4位整數(shù),深度神經(jīng)網(wǎng)絡(luò)通常也能工作得很好,能耗也很低。這為模擬計(jì)算帶來(lái)了希望,只要我們能夠保持類(lèi)似的精度即可。
鑒于電導(dǎo)精度的重要性,需要將表示模擬神經(jīng)網(wǎng)絡(luò)中的權(quán)值的電導(dǎo)值慢慢地、仔細(xì)地寫(xiě)入非易失性存儲(chǔ)設(shè)備。與傳統(tǒng)存儲(chǔ)器(如靜態(tài)隨機(jī)存取存儲(chǔ)器和電阻式隨機(jī)存取存儲(chǔ)器)相比,相變存儲(chǔ)器和電阻式隨機(jī)存取存儲(chǔ)器的編程速度較慢,幾個(gè)編程周期后會(huì)出現(xiàn)磨損。幸運(yùn)的是,推理不需要經(jīng)常重新編程權(quán)值。因此,模擬人工智能可以使用耗時(shí)的寫(xiě)驗(yàn)證技術(shù)來(lái)提高相變存儲(chǔ)器和電阻式隨機(jī)存取存儲(chǔ)器的編程精度,且不必?fù)?dān)心設(shè)備磨損。 這種提升是非常必要的,因?yàn)榉且资源鎯?chǔ)器具有內(nèi)在的編程噪聲。電阻式隨機(jī)存取存儲(chǔ)器的導(dǎo)電性取決于幾個(gè)原子形成細(xì)絲的運(yùn)動(dòng);相變存儲(chǔ)器的導(dǎo)電性取決于多晶材料中晶粒的隨機(jī)形成。這兩種隨機(jī)性給數(shù)值的寫(xiě)入、驗(yàn)證和讀取帶來(lái)了挑戰(zhàn)。此外,在大多數(shù)非易失性存儲(chǔ)器中,電導(dǎo)會(huì)隨溫度和時(shí)間而變化。除此之外,還有相變存儲(chǔ)器中的非晶相結(jié)構(gòu)漂移、電阻式隨機(jī)存取存儲(chǔ)器中的細(xì)絲松弛或閃存單元中捕獲的電荷泄漏等影響。
有幾種方式可以巧妙地解決這個(gè)問(wèn)題。使用兩個(gè)電導(dǎo)對(duì)可以顯著改善權(quán)值編程問(wèn)題。其中,一對(duì)用于保存大部分信號(hào),而另一對(duì)用于糾正主對(duì)上的編程錯(cuò)誤。由于噪聲在多個(gè)設(shè)備間平均,所以噪聲降低了。
我們最近對(duì)基于多相變存儲(chǔ)器的芯片測(cè)試了這種方法,每個(gè)權(quán)值使用一個(gè)和兩個(gè)電導(dǎo)對(duì)。我們用這種方法在多個(gè)深度神經(jīng)網(wǎng)絡(luò)上證明了其具有卓越的準(zhǔn)確性,甚至包括通常對(duì)權(quán)值編程錯(cuò)誤很敏感的循環(huán)神經(jīng)網(wǎng)絡(luò)。 不同的技術(shù)可以幫助改善讀數(shù)噪聲和漂移效應(yīng)。但由于漂移是可預(yù)測(cè)的,也許最簡(jiǎn)單的方法是在讀數(shù)過(guò)程中用與時(shí)間相關(guān)的增益來(lái)放大信號(hào),這能夠抵消大部分誤差。另一種方法是開(kāi)發(fā)同一技術(shù),訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)適應(yīng)低精度數(shù)字推理。這些方法可調(diào)整神經(jīng)網(wǎng)絡(luò)模型以匹配底層硬件的噪聲局限。 正如我們提到的,網(wǎng)絡(luò)正變得很龐大。在數(shù)字系統(tǒng)中,如果網(wǎng)絡(luò)與加速器不適配,你可以從外部存儲(chǔ)芯片給每層深度神經(jīng)網(wǎng)絡(luò)導(dǎo)入權(quán)值。但是非易失性存儲(chǔ)器的寫(xiě)入限制使得這一機(jī)制變得很糟糕。不過(guò),可將多個(gè)模擬人工智能芯片組合在一起,將部分網(wǎng)絡(luò)的中間結(jié)果從一塊芯片傳遞到下一塊芯片。這種機(jī)制會(huì)帶來(lái)一些額外的通信延遲和能耗,但其代價(jià)遠(yuǎn)遠(yuǎn)小于本身移動(dòng)權(quán)值。
到目前為止,我們只討論了推理,即將新數(shù)據(jù)作用于已經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)。但是,模擬人工智能還有幫助訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的其他機(jī)會(huì)。
深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練使用的是反向傳播算法。它結(jié)合了成熟的正向推理運(yùn)算和另外兩個(gè)重要步驟——誤差反向傳播和權(quán)值更新。誤差反向傳播就像反向運(yùn)行推理一樣,由網(wǎng)絡(luò)的最后一層到第一層;權(quán)值更新將運(yùn)行原始正向推理的信息與這些反向傳播誤差結(jié)合起來(lái),調(diào)整網(wǎng)絡(luò)權(quán)值,使模型更加準(zhǔn)確。 反向傳播步驟可以在瓦片上進(jìn)行,但與推理的方式相反——按列施加電壓,按行積累電流。更新權(quán)值則是用正向推理的原始激活數(shù)據(jù)驅(qū)動(dòng)行,同時(shí)使用反向傳播期間產(chǎn)生的誤差信號(hào)驅(qū)動(dòng)列。 訓(xùn)練涉及必須消除的眾多微小權(quán)值增減,但實(shí)現(xiàn)起來(lái)很困難,原因有兩個(gè)。首先回想一下,非易失性存儲(chǔ)器會(huì)因編程太多而產(chǎn)生損耗。其次,相同的電壓脈沖以相反極性施加給非易失性存儲(chǔ)器,存儲(chǔ)單元的電導(dǎo)變化量可能不同;它的反應(yīng)是不對(duì)稱(chēng)的。但是,對(duì)稱(chēng)特性對(duì)于反向傳播產(chǎn)生精確網(wǎng)絡(luò)而言至關(guān)重要。由于訓(xùn)練所需的電導(dǎo)變化幅度接近非易失性存儲(chǔ)器材料的固有隨機(jī)水平,這將變得更具挑戰(zhàn)性。 有幾種辦法可以幫助解決這方面的問(wèn)題。例如,有許多方法可累積多個(gè)訓(xùn)練案例的權(quán)值更新,然后在訓(xùn)練期間定期將這些更新傳輸給非易失性存儲(chǔ)設(shè)備。我們?cè)贗BM開(kāi)發(fā)了一種叫做“Tiki-Taka”的新算法,通過(guò)這種技術(shù),成功使用高度不對(duì)稱(chēng)的電阻式隨機(jī)存儲(chǔ)設(shè)備對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。最后,我們正在開(kāi)發(fā)一種名為“電化學(xué)隨機(jī)存取存儲(chǔ)器”(ECRAM)的設(shè)備,它可以提供不僅對(duì)稱(chēng)而且高度線性和漸進(jìn)的電導(dǎo)更新。
模擬人工智能能否成功將取決于能否同時(shí)實(shí)現(xiàn)高密度、高吞吐量、低延遲和高能效。密度取決于非易失性存儲(chǔ)器集成到芯片晶體管上方布線的緊密程度。瓦片級(jí)別的能源效率將受到模數(shù)轉(zhuǎn)換電路的限制。
但是,即使這些因素得到改善,越來(lái)越多的瓦片連接在一起,阿姆達(dá)爾定律(關(guān)于并行計(jì)算局限性的論點(diǎn))也將對(duì)系統(tǒng)能效優(yōu)化提出新的挑戰(zhàn)。先前不是特別重要的內(nèi)容,如瓦片之間所需的數(shù)據(jù)通信和剩余的數(shù)字計(jì)算,將產(chǎn)生越來(lái)越高的能耗預(yù)算,導(dǎo)致瓦片本身的峰值能源效率與整個(gè)模擬人工智能系統(tǒng)的持續(xù)能源效率產(chǎn)生差距。當(dāng)然,無(wú)論模擬還是數(shù)字人工智能,每一個(gè)人工智能加速器最終都將面臨這個(gè)問(wèn)題。
前進(jìn)的道路必然與數(shù)字人工智能加速器不同。數(shù)字的方法可降低精度,直到準(zhǔn)確性衰降。但是,模擬人工智能必須首先提高內(nèi)部模擬模塊的信噪比(SNR),直到足以證明其與數(shù)字系統(tǒng)的準(zhǔn)確性相當(dāng)。信噪比提高以后,可改進(jìn)提高密度和能源效率。
這些令人振奮的問(wèn)題都需要解決,而解決這些問(wèn)題需要材料科學(xué)家、設(shè)備專(zhuān)家、電路設(shè)計(jì)師、系統(tǒng)架構(gòu)師和深度神經(jīng)網(wǎng)絡(luò)專(zhuān)家的共同努力。人們對(duì)更節(jié)能的人工智能加速器有強(qiáng)烈且持續(xù)的需求,同時(shí)又沒(méi)有其他有吸引力的替代方式來(lái)滿足這一需求。考慮到各種各樣的潛在存儲(chǔ)設(shè)備和實(shí)現(xiàn)途徑,某種程度的模擬計(jì)算很可能會(huì)進(jìn)入未來(lái)的人工智能加速器。
審核編輯 :李倩
下一篇: PLC、DCS、FCS三大控