推理芯片的性能建立在优化的存储子系统设计上
推理芯片的性能建立在優(yōu)化的存儲(chǔ)子系統(tǒng)設(shè)計(jì)上
Inference chip performance builds on optimized memory subsystem design
好的推斷芯片可以很快地移動(dòng)數(shù)據(jù)。
去年公布的新推斷芯片公司的數(shù)量足以讓頭暈?zāi)垦!S捎谟羞@么多芯片,而且不缺乏任何質(zhì)量基準(zhǔn),業(yè)界常常忘記了一個(gè)極其關(guān)鍵的部分:內(nèi)存子系統(tǒng)。事實(shí)是,除非有一個(gè)好的內(nèi)存子系統(tǒng),否則不可能有一個(gè)好的推理芯片。因此,如果一家推斷芯片公司只討論TOPS而很少討論SRAM、DRAM和內(nèi)存子系統(tǒng),那么可能沒(méi)有很好的解決方案。
這都是關(guān)于數(shù)據(jù)吞吐量的
好的推斷芯片被設(shè)計(jì)成這樣,可以很快地移動(dòng)數(shù)據(jù),這意味著必須非常快速地處理這些數(shù)據(jù),并且非常快地將數(shù)據(jù)移入和移出內(nèi)存。如果看看使用ResNet-50和YOLOv3的模型,會(huì)發(fā)現(xiàn)不僅在計(jì)算方面,而且在如何使用內(nèi)存方面都有顯著的不同。
對(duì)于使用ResNet-50的每個(gè)圖像,需要20億個(gè)乘法累加(mac),但是對(duì)于YOLOv3,需要超過(guò)2000億個(gè)mac。那是一百倍的增長(zhǎng)。這部分是因?yàn)閅OLOv3的權(quán)重更大(6200萬(wàn)個(gè)權(quán)重,而ResNet-50的權(quán)重約為2300萬(wàn)個(gè))。然而,最大的區(qū)別在于典型基準(zhǔn)中的圖像大小。ResNet-50使用224×224,這是沒(méi)有人實(shí)際使用的尺寸,而YOLOv3使用的是200萬(wàn)像素。因此,YOLOv3上的計(jì)算負(fù)載要大得多。
使用上面的示例,可以看到有兩個(gè)不同的工作負(fù)載,其中一個(gè)需要100倍以上。顯而易見(jiàn)的問(wèn)題是:這是否意味著YOLOv3的運(yùn)行速度慢了100倍?唯一可以回答這個(gè)問(wèn)題的方法是查看內(nèi)存子系統(tǒng),因?yàn)閷⒏嬖V任何給定芯片上的實(shí)際吞吐量。
內(nèi)存子系統(tǒng)
有了推斷芯片,不僅僅是在創(chuàng)造一個(gè)芯片,正在創(chuàng)造一個(gè)系統(tǒng)。芯片有引擎,也就是mac,但是如果沒(méi)有正確的燃料供給系統(tǒng)(內(nèi)存和互連),引擎就會(huì)熄火。
如果看看在一個(gè)推斷芯片中發(fā)生了什么,數(shù)據(jù)就會(huì)進(jìn)來(lái),然后必須以一定的速率提供新的圖像,比如每秒30幀。圖像進(jìn)入芯片,輸出的是某種結(jié)果。圖像大小不同,但大多數(shù)應(yīng)用程序需要處理百萬(wàn)像素的圖像以獲得足夠的精度。
芯片內(nèi)部的情況是,用一個(gè)神經(jīng)網(wǎng)絡(luò)模型來(lái)處理圖像,所以在每一層的末尾都有代碼、權(quán)重和中間激活。所有這些都需要存儲(chǔ)在某個(gè)地方,讀寫(xiě)到推理芯片的計(jì)算單元中。
應(yīng)用
推理的應(yīng)用是眾多的,如自主駕駛等邊緣應(yīng)用代表了最大的機(jī)會(huì)之一。未來(lái),每輛汽車(chē)都將有多個(gè)推理引擎,以便實(shí)時(shí)檢測(cè)和避免行人、公共汽車(chē)和汽車(chē)。這使得處理像YOLOv3這樣的大尺寸圖像非常重要。當(dāng)想到用自己的眼睛看一幅圖像時(shí),這是常識(shí)。如果有人給看一個(gè)小圖像,會(huì)錯(cuò)過(guò)細(xì)節(jié)并誤解圖像。在自動(dòng)駕駛汽車(chē)和監(jiān)控?cái)z像頭的情況下,小細(xì)節(jié)絕對(duì)至關(guān)重要。
自主駕駛代表了AI加速器在邊緣的最大機(jī)會(huì)之一。
邊緣和云端的區(qū)別在于,在邊緣,需要發(fā)送即時(shí)響應(yīng),而在云端,通常擁有大量數(shù)據(jù),并且有時(shí)間處理這些數(shù)據(jù)。例如,如果在車(chē)?yán)?#xff0c;需要知道人在哪里,這樣就有機(jī)會(huì)避開(kāi)。然而,這在數(shù)據(jù)中心是不同的,那里有照片標(biāo)記等應(yīng)用程序,可以在夜間運(yùn)行大批量。這在邊緣應(yīng)用程序中不起作用,在這種應(yīng)用程序中,一切都必須快速且延遲短,這也意味著批處理大小=1。
所以從本質(zhì)上講,正在重新構(gòu)建芯片,以在短時(shí)間內(nèi)(低延遲)交付結(jié)果,以便及時(shí)做出正確的響應(yīng)。需要立即處理數(shù)據(jù)并立即返回結(jié)果,這意味著內(nèi)存是這方面的一個(gè)絕對(duì)關(guān)鍵的部分。
如果看看ResNet-50,有很多芯片在批處理大小=10或100時(shí)性能非常高,但是當(dāng)進(jìn)入批處理大小=1時(shí),性能就會(huì)下降。在一些芯片中,這種下降率高達(dá)75%。這意味著,無(wú)論從mac機(jī)獲得的高批處理率的利用率是批處理=1時(shí)的四分之一。因此,如果批處理=1,這在邊緣非常關(guān)鍵,一些芯片的計(jì)算mac中可用周期的利用率低于25%。
架構(gòu)的轉(zhuǎn)變
在過(guò)去的日子里,處理器的內(nèi)存體系結(jié)構(gòu)現(xiàn)在仍然在數(shù)據(jù)中心進(jìn)行大量的推斷,有DRAM和多級(jí)緩存,這些都被輸入到一個(gè)處理器中。內(nèi)存是集中的單一統(tǒng)一內(nèi)存。有了推理芯片,內(nèi)存趨于分散。一種更快地處理數(shù)據(jù)的方法是將mac分成塊,然后使用本地化的SRAM分發(fā)這些塊。這是Flex Logix和Intel等公司使用的一種方法,代表了一種在未來(lái)將占主導(dǎo)地位的方法。原因是內(nèi)存靠近mac會(huì)導(dǎo)致訪問(wèn)時(shí)間更短,而mac的分布式則會(huì)導(dǎo)致更多的并行性。
通用處理器和推理加速器內(nèi)存子系統(tǒng)設(shè)計(jì)的差異。推理加速器傾向于以本地化SRAM的形式擁有分布式內(nèi)存。
邊緣應(yīng)用的另一個(gè)關(guān)鍵要求是滿足成本和電源預(yù)算。與用于訓(xùn)練的芯片占用整個(gè)晶圓不同,用于汽車(chē)和監(jiān)控?cái)z像頭等應(yīng)用的芯片有相關(guān)的美元預(yù)算和功率限制。通常,可用的SRAM數(shù)量不足以在不破壞這些預(yù)算的情況下將所有的權(quán)重、代碼和中間激活存儲(chǔ)在芯片上。這些芯片正在處理大量的數(shù)據(jù),并且定期處理這些數(shù)據(jù),邊緣的大部分應(yīng)用程序始終處于運(yùn)行狀態(tài)。由于所有芯片都會(huì)發(fā)熱,所以處理量將與不斷增加的熱量有關(guān)。從同樣數(shù)量的硅和功率中獲得更高吞吐量的架構(gòu)將是贏家,因?yàn)榭梢砸愿偷墓暮透偷某杀窘桓陡嗟慕Y(jié)果。
優(yōu)化功率和成本
公司可以采取一些捷徑來(lái)權(quán)衡探測(cè)物體的精確性。然而,這并不是客戶想要的方式。客戶希望運(yùn)行一個(gè)模型,并在一定的功率范圍內(nèi)獲得高精度的目標(biāo)檢測(cè)和識(shí)別。這樣做的關(guān)鍵在于內(nèi)存子系統(tǒng)。
如果看看ResNet-50或YOLOv3,需要存儲(chǔ)重量。YOLOv3中的權(quán)重約為23MB,而ResNet-50中的權(quán)重約為62MB。僅僅在芯片上存儲(chǔ)這些重量就可以使芯片接近100平方毫米,這對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō)并不經(jīng)濟(jì)。這意味著海量?jī)?nèi)存需要脫離芯片,這意味著DRAM。
另外,經(jīng)常被問(wèn)到DRAM的類型是否重要。答案是這很重要。高帶寬存儲(chǔ)器(HBM)非常昂貴,不適用于成本受限的邊緣應(yīng)用。LPDDR4是一種更好的內(nèi)存,因?yàn)椴捎脤捒偩€配置,可以從單個(gè)DRAM中提供更多帶寬。DRAM也是非常熱敏感的,這可能是一個(gè)問(wèn)題,在汽車(chē)和監(jiān)控?cái)z像機(jī)在室外運(yùn)行。因此,對(duì)于成本和熱量問(wèn)題,最好盡量減少DRAM的使用。
如何設(shè)計(jì)最佳推理芯片
最好的推斷芯片將是那些由設(shè)計(jì)師設(shè)計(jì)的芯片,會(huì)考慮客戶將要做什么類型的處理,負(fù)載和應(yīng)用將是什么,以及將在哪里使用。歸根結(jié)底,客戶希望獲得最高的吞吐量,這意味著需要較高的MAC利用率。獲得高M(jìn)AC利用率的方法是將高帶寬饋入MAC,但是希望用最少的SRAM和最少的DRAM來(lái)實(shí)現(xiàn)這一點(diǎn)。
芯片設(shè)計(jì)人員需要對(duì)客戶期望運(yùn)行的應(yīng)用程序進(jìn)行建模,并仔細(xì)觀察其權(quán)重、代碼大小和激活情況。現(xiàn)在有很多建模工具可以讓芯片設(shè)計(jì)者改變mac、SRAM和DRAM的數(shù)量,這使得設(shè)計(jì)者能夠在決定如何提供最便宜的芯片和最高的吞吐量時(shí)進(jìn)行一系列的權(quán)衡。
許多mac的設(shè)計(jì)者也可以用更高的頻率來(lái)組織。例如,比特乘法和累加比16位乘法和累加快。在這種情況下,唯一的折衷是精確度會(huì)降低一點(diǎn),每美元和每瓦特提供更高的吞吐量。
那么ResNet-50和YOLOv3在內(nèi)存使用上有什么不同呢?雖然重量相差2倍,但最大的區(qū)別在于激活。ResNet-50的每一層都會(huì)產(chǎn)生激活,ResNet-50的最大激活大小是1兆字節(jié),有些層甚至比這個(gè)還要小。在YOLOv3中,最大層的最大激活量是64兆字節(jié),因此必須存儲(chǔ)這64兆字節(jié),以便為下一層做好準(zhǔn)備。當(dāng)看到片上或DRAM的容量需求時(shí),YOLOv3的激活實(shí)際上驅(qū)動(dòng)了比重量更多的存儲(chǔ)需求,這與ResNet-50非常不同。事實(shí)上,客戶需要警惕的訣竅是,一些公司設(shè)計(jì)芯片,這樣就可以在船上存儲(chǔ)ResNet-50的重量,知道激活很小,這可以使性能“看起來(lái)”非常好。然而,在實(shí)際應(yīng)用中,這種芯片的性能會(huì)急劇下降。
SRAM與DRAM的權(quán)衡
DRAM芯片要花錢(qián),而更貴的是與DRAM芯片的連接。公司傾向于關(guān)注模具尺寸,但芯片封裝尺寸是決定成本的一個(gè)重要因素,有時(shí)可能比模具更昂貴。每次添加DRAM時(shí),至少會(huì)添加100個(gè)球。今天的一些芯片有8個(gè)DRAM連接到上,這樣就可以把推到1000個(gè)球包中,這是非常昂貴的。雖然公司意識(shí)到不能將所有的SRAM都安裝在板上,但也意識(shí)到無(wú)法通過(guò)擁有太多的DRAM來(lái)解決成本問(wèn)題。真正需要的是盡可能少的DRAM和盡可能少的SRAM。要做到這一點(diǎn),芯片設(shè)計(jì)者需要研究激活。如果看看64MB的激活數(shù),只有一個(gè)。大多數(shù)激活的大小都比較小,所以如果把8兆字節(jié)的SRAM放在芯片上,大多數(shù)中間激活都會(huì)存儲(chǔ)在芯片上,只需要使用DRAM來(lái)處理最大的激活。
這是推斷芯片的最佳位置,也是芯片設(shè)計(jì)者在設(shè)計(jì)中應(yīng)該努力追求的目標(biāo)。而且,如果是客戶,需要開(kāi)始詢問(wèn)有關(guān)芯片內(nèi)存子系統(tǒng)的問(wèn)題,因?yàn)檫@是決定芯片在實(shí)際應(yīng)用中的性能的一個(gè)重要因素。
總結(jié)
以上是生活随笔為你收集整理的推理芯片的性能建立在优化的存储子系统设计上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 嵌入式开发在过去20年中是如何演变的
- 下一篇: 面向汽车应用的硬件推理芯片