本文將詳細(xì)介紹FPGA芯片。
微信搜索關(guān)注《Java學(xué)研大本營》文章來源:http://www.zghlxwxcb.cn/news/detail-758323.html
CPU為一般計(jì)算提供了一套通用的計(jì)算指令,要修改或優(yōu)化應(yīng)用程序,我們更改代碼,但硬件是固定的。然而,這種通用化是以硬件的復(fù)雜性為代價(jià)的。如果沒有復(fù)雜的硬件優(yōu)化,如投機(jī)執(zhí)行,它就會(huì)損害性能。但是,這些優(yōu)化會(huì)增加芯片面積和功耗。
通用性以復(fù)雜性為代價(jià)提供了靈活性,為了增加深度學(xué)習(xí)(DL)中的并發(fā)性,一些芯片設(shè)計(jì)者將芯片功能限制在一套垂直的指令中,并使用ASIC(特定應(yīng)用集成電路)設(shè)計(jì)實(shí)現(xiàn)。這是Google TPU使用的方法。但是,如果設(shè)計(jì)要求不斷變化,則開發(fā)ASIC是昂貴且不可能的。
FPGA在通用處理器(如CPU)和ASIC之間提供了一種中間方法,設(shè)計(jì)人員可以為自己的硬件設(shè)計(jì)編程FPGA芯片,可以通過FPGA重新編程輕松地進(jìn)行更改或增強(qiáng)。對(duì)于那些不熟悉FPGA的人來說,讓我們先來了解一下技術(shù)概況。
1 什么是FPGA?
對(duì)于半導(dǎo)體行業(yè)來說,幾十年來有一個(gè)中間解決方案,允許可配置的硬件設(shè)計(jì)(通用組件與定制ASIC設(shè)計(jì))。這就是FPGA(現(xiàn)場可編程門陣列)。它被稱為 "現(xiàn)場可編程的",因?yàn)槲覀兛梢暂p松地為不同的硬件設(shè)計(jì)重新編程芯片。我們可以視為FPGA包含像樂高一樣的積木。通過以不同的方式將樂高積木組合起來(編程),我們創(chuàng)造出不同的玩具(硬件設(shè)計(jì))。讓我們看一個(gè)DL的例子來解釋人工智能中的高級(jí)應(yīng)用。
許多DL模型,如上面的全連接深度神經(jīng)網(wǎng)絡(luò)(DNN),可以視為計(jì)算圖。節(jié)點(diǎn)表示計(jì)算,邊表示數(shù)據(jù)流。為了對(duì)這個(gè)圖進(jìn)行建模,我們的ASIC設(shè)計(jì)應(yīng)該由模擬這些節(jié)點(diǎn)中的計(jì)算的計(jì)算節(jié)點(diǎn)(塊)組成,然后我們將數(shù)據(jù)流從一個(gè)節(jié)點(diǎn)鏈接到另一個(gè)節(jié)點(diǎn)。
FPGA是基于可配置邏輯塊(CLB)矩陣通過可編程互連連接的半導(dǎo)體器件。CLB是高度可配置的,可以創(chuàng)建不同的邏輯。通過可編程互連,我們可以為這些CLB創(chuàng)建復(fù)雜的數(shù)據(jù)路徑。
2 CLB
下面的圖是Intel Stratix 10中邏輯陣列塊(LAB)中自適應(yīng)邏輯模塊(ALM)的高級(jí)塊圖(LAB - 即可配置邏輯塊CLB):
CLB使用可配置的查找表(LUT)(在上面的左邊)來實(shí)現(xiàn)邏輯函數(shù)f(a, b, c, ...),我們可以配置LUT來模仿任何邏輯函數(shù)。
在CLB內(nèi)部,LUT通常后面跟著帶有輸出寄存器的加法器(輸出存儲(chǔ)其先前值,直到應(yīng)用新時(shí)鐘)。
為了說明,這是來自Xilinx 7系列FPGA的另一個(gè)CLB示例。在右側(cè)圖中,輸入端有兩個(gè)模塊,每個(gè)模塊都有四個(gè)輸入和一個(gè)邏輯值輸出。然后,進(jìn)一步的組合邏輯被應(yīng)用于創(chuàng)建支持多于四個(gè)輸入和多個(gè)輸出的邏輯函數(shù)。
3 DL中的FPGA
為了進(jìn)一步增強(qiáng)功能,可以將其他塊(如存儲(chǔ)器塊、乘法器、嵌入式處理器和DSP塊)添加到FPGA中。這些塊可以通過下面的垂直和水平線進(jìn)行分段和連接。
這里是英特爾Stratix 10可變精度DSP塊。對(duì)于DNN,它將使用這些DSP塊優(yōu)化其許多算術(shù)函數(shù)。
DSP塊也可以配置來支持多個(gè)功能。
4 FPGA的賣點(diǎn)
根據(jù)不同的供應(yīng)商和產(chǎn)品線,F(xiàn)PGA還可以提供許多其他模塊。
FPGA可能包含數(shù)百萬個(gè)邏輯元素、數(shù)千個(gè)存儲(chǔ)塊和數(shù)千個(gè)DSP塊。這些存儲(chǔ)塊可以提供大于50TB/s的片上SRAM帶寬。
這些塊可以分組、分段,并通過可編程的連接進(jìn)行連接。這些塊和互連是高度可配置的,以創(chuàng)建高度定制化設(shè)計(jì)的并行性和計(jì)算能力。高速存儲(chǔ)塊也可以分組成不同的大小,并為特定節(jié)點(diǎn)和特性集提供特定大小/緩存需求。
此外,F(xiàn)PGA被設(shè)計(jì)為能夠快速接收和傳輸信號(hào)。高速收發(fā)器(帶有許多I/O塊)的重點(diǎn)是處理視覺和音頻流數(shù)據(jù)的另一個(gè)賣點(diǎn)。使用新的FPGA位流文件,PGA可以在20毫秒范圍內(nèi)重新編程(取決于FPGA型號(hào))。產(chǎn)品升級(jí)不再局限于軟件升級(jí)。硬件設(shè)計(jì)升級(jí)可以通過新的位流文件完成。這種定制設(shè)計(jì)通常消耗更少的功率,在英特爾視覺加速器設(shè)計(jì)中,使用Arria 10 FPGA的功耗通常為38~42W,而Nvidia V100 GPU的功耗范圍為250W(這僅用于說明,,因?yàn)閮烧叩脑O(shè)備非常不同)。使用定制硬件還可以縮短系統(tǒng)延遲,這可能就是為什么英特爾將他們的FPGA用于AI推理的原因。
5 可編程互連
這些FPGA塊可以通過垂直和水平線連接在一起。
但是,這是通過我們可以預(yù)編程的高度可配置的可編程交換矩陣(PSM)完成的。
這是FPGA芯片一小段可能互連的放大視圖:
這是另一個(gè)演示塊如何連接的例子:
6 帶有Arria 10 FPGA的英特爾視覺加速器設(shè)計(jì)(用于AI推理)
帶有Arria 10 FPGA的英特爾視覺加速器可以連接到視頻服務(wù)器或NVR(網(wǎng)絡(luò)視頻錄像機(jī)),支持超過20個(gè)通道的視頻輸入,用于分析、處理或其他AI應(yīng)用,包括面部識(shí)別和檢測。
例如,我們可以使用加速器來分析原始視頻流,以便能從許多視頻源中進(jìn)行人員檢測和跟蹤(在Amazon Go等商店中有潛在用途)。
這里是另一個(gè)使用Arria 10 FPGA的FPGA加速卡(可編程加速卡)的設(shè)計(jì):
這些加速卡可以執(zhí)行許多AI功能。OpenVINO(稍后討論)發(fā)布了許多AI模型,執(zhí)行以下功能:
如果您感興趣,這是加速卡和Arria 10的高級(jí)規(guī)格說明:
幾十年來,F(xiàn)PGA都是用高級(jí)設(shè)計(jì)語言(HDL)編程的。它講的是寄存器、時(shí)鐘等的語言......
通過供應(yīng)商提供的工具,HDL的源代碼被轉(zhuǎn)化為電路。然后應(yīng)用放置和路由算法將它們映射到塊中,通過最小化延遲的互連進(jìn)行映射。這個(gè)編譯過程需要幾個(gè)小時(shí)或幾天才能完成。完成后,將創(chuàng)建一個(gè)位流文件。該文件將用于編程(配置)FPGA。
但是,這不是我們在Intel FPGA上設(shè)計(jì)或部署DNN模型的方式。使用工具包執(zhí)行軟件部署,而不是重新編程FPGA。FPGA應(yīng)該已經(jīng)被編程了。
7 OpenVINO
OpenVINO(Open Visual Inference and Neural network Optimization)為Intel設(shè)備(CPU、集成GPU、FPGA等)提供工具包和庫,涵蓋以下領(lǐng)域:
它可以用來部署一個(gè)DL模型,使用FPGA分析視頻流。
OpenVINO發(fā)行版包含:
-
優(yōu)化和部署ML模型的深度學(xué)習(xí)開發(fā)工具箱(DLDT)
-
用于DL的FPGA深度學(xué)習(xí)加速器(DLA)和比特流
-
用于OpenCV、OpenVX、OpenCL和Intel Media SDK的工具、庫和加速器
-
適用于Intel設(shè)備的插件
-
為DLDT提供預(yù)訓(xùn)練模型的模型庫
DL工程師在諸如TensorFlow、PyTorch等軟件平臺(tái)上設(shè)計(jì)和訓(xùn)練模型。最終,我們將訓(xùn)練好的模型保存在文件中(TensorFlow中的.pb文件)。
然后,我們使用OpenVINO中的深度學(xué)習(xí)部署工具包(DLDT)來部署DL模型。DLDT包含兩個(gè)主要組件:
-
模型優(yōu)化器
-
推理引擎
具體而言,DLDT讀取模型文件,執(zhí)行優(yōu)化,并將其部署在Intel設(shè)備上。為了擁有所有Intel設(shè)備的單一平臺(tái)解決方案,它從流行的DL平臺(tái)(如TensorFlow)讀取訓(xùn)練好的模型文件,應(yīng)用與設(shè)備無關(guān)的優(yōu)化,并將模型轉(zhuǎn)換為與設(shè)備無關(guān)的中間表示(IR)。
以下兩個(gè)部分是可選的,用于演示一些計(jì)算圖優(yōu)化。
8 線性操作融合(高級(jí)主題-可選)
許多CNN模型,包括ResNet和Inception,都包含批量歸一化和比例偏移層(比例然后偏移輸入),可以看作是加法和乘法的序列。這些序列可以合并為單個(gè)乘法和加法操作,即×、+、×、+、×、+→×、+。然后,如果存在下一個(gè)卷積層或完全連接層,則可以將其與之融合。
推薦書單
《微機(jī)原理與接口技術(shù)——基本原理、實(shí)用技術(shù)和基于FPGA的SOC技術(shù)》
《微機(jī)原理與接口技術(shù)--基本原理實(shí)用技術(shù)和基于FPGA的SOC技術(shù)(高等院校電子信息科學(xué)與工程規(guī)劃教材)》系統(tǒng)地講解了微型計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)、工作原理、接口技術(shù)及其應(yīng)用,特別是將這些內(nèi)容與現(xiàn)代EDA技術(shù)、FPGA開發(fā)技術(shù)和SOC片上系統(tǒng)技術(shù)有機(jī)地融合起來,全方位強(qiáng)化和拓展了這一傳統(tǒng)教學(xué)領(lǐng)域中的知識(shí)與技能傳授的深度與廣度。本書的基本內(nèi)容包括80x86微處理器結(jié)構(gòu)、指令系統(tǒng)、匯編語言程序設(shè)計(jì)、存儲(chǔ)器系統(tǒng)、總線技術(shù)、中斷技術(shù)、定時(shí)/計(jì)數(shù)接口技術(shù)和DMA技術(shù)、并行接口技術(shù)、串行接口技術(shù)、模擬接口技術(shù)和其他實(shí)用的接口技術(shù),以及與這些內(nèi)容相對(duì)應(yīng)的基于超大規(guī)模F=PGA的SOC技術(shù)。 本書可作為高等院校電子工程、通信、工業(yè)自動(dòng)化、計(jì)算機(jī)等專業(yè)的本科生或研究生教材,也可用作相關(guān)專業(yè)技術(shù)人員的參考書。
《微機(jī)原理與接口技術(shù)——基本原理、實(shí)用技術(shù)和基于FPGA的SOC技術(shù)》【摘要 書評(píng) 試讀】- 京東圖書京東JD.COM圖書頻道為您提供《微機(jī)原理與接口技術(shù)——基本原理、實(shí)用技術(shù)和基于FPGA的SOC技術(shù)》在線選購,本書作者:,出版社:清華大學(xué)出版社。買圖書,到京東。網(wǎng)購圖書,享受最低優(yōu)惠折扣!https://item.jd.com/10067827338575.html
精彩回顧
9個(gè)步驟,手把手教你在Windows上安裝Hadoop
一文講清RabbitMQ、Apache Kafka、ActiveMQ
一文講清數(shù)據(jù)集市、數(shù)據(jù)湖、數(shù)據(jù)網(wǎng)格、數(shù)據(jù)編織
分布式計(jì)算哪家強(qiáng):Spark、Dask、Ray大比拼
使用FPGA制作低延時(shí)高性能的深度學(xué)習(xí)處理器
微信搜索關(guān)注《Java學(xué)研大本營》
訪問【IT今日熱榜】,發(fā)現(xiàn)每日技術(shù)熱點(diǎn)文章來源地址http://www.zghlxwxcb.cn/news/detail-758323.html
到了這里,關(guān)于詳解FPGA —— 下一代AI算力芯片(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!