目前主流的AI晶片主要分為三類,GPU、FPGA、ASIC。 GPU、FPGA皆是前期較成熟的晶片架構,屬於通用型晶片。 ASIC屬於為AI特定場景定制的晶片。業界已經確認CPU不適用於AI計算,但在AI應用領域也是不可或缺。
##GPU與CPU的架構對比
CPU遵循的是馮諾依曼架構,其核心是儲存程式/資料、序列順序執行。因此CPU的架構中需要大量的空間去放置儲存單元(Cache)和控制單元(Control),相較之下運算單元(ALU)只佔據了很小的一部分,所以CPU在進行大規模平行運算方面受到限制,相對而言更擅長處理邏輯控制。
GPU(GraphicsProcessing Unit),即圖形處理器,是一種由大量運算單元組成的大規模平行運算架構,早先由CPU中分出來專門用於處理影像並行計算數據,專為同時處理多重並行計算任務而設計。 GPU中也包含基本的運算單元、控制單元和儲存單元,但GPU的架構與CPU有很大不同,其架構圖如下所示。
與CPU相比,CPU晶片空間的不到20%是ALU,而GPU晶片空間的80%以上是ALU。即GPU擁有更多的ALU用於資料並行處理。
GPU與CPU區別
CPU由專為順序串行處理而優化的幾個核心組成,而GPU則擁有一個由數以千計的更小、更高效的核心組成的大規模平行運算架構,這些更小的核心專為同時處理多重任務而設計。
CPU和GPU之所以大不相同,是由於其設計目標的不同,它們分別針對了兩個不同的應用場景。 CPU需要很強的通用性來處理各種不同的資料類型,同時要邏輯判斷又會引入大量的分支跳躍和中斷的處理。這些都使得CPU的內部結構異常複雜。而GPU面對的則是類型高度統一的、相互無依賴的大規模資料和不需要被打斷的純淨的計算環境。
GPU加速技術簡述
對於深度學習來說,目前硬體加速主要靠使用圖形處理單元。相較於傳統的CPU,GPU的核心運算能力要多出幾個數量級,也更容易進行平行運算。
GPU的眾核體系結構包含數千個流處理器,可將運算並行化執行,大幅縮短模型的運算時間。隨著NVIDIA、AMD等公司不斷推進其GPU的大規模平行架構支持,面向通用運算的GPU已成為加速並行應用程式的重要手段。
目前GPU已經發展到了較成熟的階段。利用GPU來訓練深度神經網絡,可以充分發揮其數以千計計算核心的高效並行運算能力,在使用海量訓練資料的場景下,所耗費的時間大幅縮短,佔用的伺服器也更少。如果針對適當的深度神經網路進行合理優化,一塊GPU卡可相當於數十甚至上百台CPU伺服器的運算能力,因此GPU已成為業界在深度學習模型訓練的首選解決方案。
當訓練的模型規模比較大時,可以透過資料並行的方法來加速模型的訓練,資料並行可以對訓練資料做切分,同時採用多個模型實例對多個分塊的數據同時進行訓練。在資料並行的實作中,由於是採用相同的模型、不同的資料進行訓練,影響模型效能的瓶頸在於多CPU或多GPU間的參數交換。根據參數更新公式,需要將所有模型計算出的梯度提交到參數伺服器並更新到對應參數上,因此資料片的分割以及與參數伺服器的頻寬可能會成為限制資料並行效率的瓶頸。
除了資料並行,還可以採用模型並行的方式來加速模型的訓練。模型並行是指將大的模型拆分成幾個分片,由若干個訓練單元分別持有,各個訓練單元相互協作共同完成大模型的訓練。
GPU加速運算
GPU加速計算是指同時利用圖形處理器 (GPU) 和CPU,並加速科學、分析、工程、消費和企業應用程式的運作速度。 GPU加速器於2007年由NVIDIA率先推出,現已在世界各地為政府實驗室、大學、公司以及中小型企業的高能源效率資料中心提供支援。 GPU能夠使從汽車、手機和平板電腦到無人機和機器人等平台的應用程式加速運作。
GPU加速運算可以提供非凡的應用程式效能,能將應用程式運算密集部分的工作負載轉移到GPU,同時仍由CPU執行其餘程式碼。從用戶的角度來看,應用程式的運行速度明顯加快。
GPU目前只是單純的平行矩陣的乘法和加法運算,對於神經網路模型的建構和資料流的傳遞還是在CPU上進行。 CPU與GPU的交互流程:取得GPU訊息,配置GPU id、載入神經元參數到GPU、GPU加速神經網路運算、接收GPU運算結果。
為什麼GPU在自動駕駛領域如此重要
自動駕駛技術中最重要的技術範疇之一是深度學習,基於深度學習架構的人工智慧如今已被廣泛應用於電腦視覺、自然語言處理、感測器融合、目標識別、自動駕駛等汽車產業的各個領域,從自動駕駛新創公司、網路公司到各大OEM廠商,都正在積極探索透過利用GPU建構神經網路來實現最終的自動駕駛。
GPU加速運算誕生後,它為企業資料提供了多核心平行運算架構,支撐了以往CPU架構無法處理的資料來源。根據對比,為了完成相同的深度學習訓練任務,使用GPU計算叢集所需的成本只是CPU計算叢集的200分之一。
GPU是自動駕駛與深度學習的關鍵
無論是讓汽車即時感知週邊即時環境,還是迅速規劃行車路線和動作,這些都需要依賴汽車大腦快速的響應,因此對計算機硬體製造商提出了巨大挑戰,自動駕駛的過程中時刻需要深度學習或者人工智能算法應對無限可能的狀況,而人工智能、深度學習與無人駕駛的蓬勃發展,帶來了GPU運算發展的黃金時代。
GPU的另一個重要參數是浮點運算能力。浮點計數是利用浮動小數點的方式使用不同長度的二進位來表示一個數字,與之對應的是定點數。在自動駕駛演算法迭代時對精度要求較高,需要浮點運算支援。
FPGA晶片定義及結構
FPGA(Field-Programmable Gate Array),即現場可程式閘陣列,它是在PAL、GAL、CPLD等可程式裝置的基礎上進一步發展的產物。它是作為專用集成電路領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。
FPGA晶片主要由6部分完成,分別為:可程式輸入輸出單元、基本可程式邏輯單元、完整的時脈管理、嵌入塊式RAM、豐富的佈線資源、內嵌的底層功能單元和內嵌專用硬體模組。目前主流的FPGA仍是基於查找表技術的,已經遠遠超出了先前版本的基本性能,並且整合了常用功能(如RAM、時脈管理和DSP)的硬核(ASIC型)模組。
FPGA工作原理
#由於FPGA需要被反覆燒寫,它實現組合邏輯的基本結構不可能像ASIC那樣透過固定的與非閘來完成,而只能採用一種易於重複配置的結構。查找表可以很好地滿足這項要求,目前主流FPGA都採用了基於SRAM工藝的查找表結構,也有一些軍品和宇航級FPGA採用Flash或者熔絲與反熔絲工藝的查找表結構。透過燒寫檔案改變查找表內容的方法來實現對FPGA的重複配置。
查找表(Look-Up-Table)簡稱LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每個LUT可以看成有4位元位址線的RAM。當使用者透過原理圖或HDL語言描述了一個邏輯電路以後,PLD/FPGA開發軟體會自動計算邏輯電路的所有可能結果,並把真值表(即結果)事先寫入RAM,這樣,每輸入一個訊號進行邏輯運算就等於輸入一個位址進行查詢表,找出位址對應的內容,然後輸出即可。
可程式輸入/輸出單元簡稱I/O單元,是晶片與外界電路的介面部分,完成不同電氣特性下對輸入/輸出訊號的驅動與匹配要求。 FPGA內的I/O按組別分類,每組都能夠獨立地支援不同的I/O標準。透過軟體的靈活配置,可適應不同的電氣標準與 I/O物理特性,可調整驅動電流的大小,可改變上、下拉電阻。目前,I/O口的頻率也越來越高,一些高階的FPGA透過DDR暫存器技術可以支援高達2Gbps的資料速率。
CLB是FPGA內的基本邏輯單元。 CLB的實際數量和特性會依元件的不同而不同,但是每個CLB都包含一個可配置開關矩陣,此矩陣由4或6個輸入、一些選型電路(多工器等)和觸發器組成。開關矩陣是高度靈活的,可以對其進行配置以便處理組合邏輯、移位暫存器或RAM。在Xilinx公司的FPGA裝置中,CLB由多個(一般為4或2)相同的Slice和附加邏輯所構成。每個CLB模組不僅可以用於實現組合邏輯、時序邏輯,還可以配置為分散式RAM和分散式ROM。
自動駕駛的「芯」殺手
#自動駕駛和高級駕駛輔助系統(ADAS)細分市場正在經歷蛻變,對計算和感測器功能提出了新的複雜需求。 FPGA擁有其他晶片解決方案無法比擬的獨特優勢,是滿足自動駕駛產業不斷發展變化的優良選擇。 FPGA是晶片領域的特殊技術,一方面能夠透過軟體工具進行重複多次配置,另一方面擁有豐富的IO介面和運算單元。因此,FPGA能夠根據應用場景的特定需求,同時處理管線並行和資料並行,天生具有運算效能高、延遲低、功耗小等優勢。
#FPGA具備高吞吐量、高能源效率以及即時處理等多項優點,非常契合自動駕駛所需的技術需求。高級輔助駕駛系統(ADAS)、車載體驗(IVE)應用的標準和要求正在快速演變,系統設計人員關注的問題主要包括出色的靈活性和更快的開發週期,同時維持更高的性能功耗比。透過可重新編程的FPGA和不斷增加的汽車級產品相結合,支援汽車設計師滿足設計要求,在不斷變化的汽車行業中始終保持領先。
「適應性更強的平台
# #對於自動駕駛晶片來說真正的價值在於計算引擎的利用率,也就是理論性能和實際性能之間的差異。 FPGA包含大量的路由鏈路以及大量的小型儲存。這些資源的組合使設計人員能夠為其運算引擎創建客製化的資料饋送網絡,以獲得更高的利用水準。可程式邏輯為客戶提供了高度的靈活性,以適應ADAS和自動駕駛等新興應用領域不斷變化的需求。利用改進的介面標準、演算法創新和新的感測器技術,都需要適應性強的平台,不僅可以支援軟體更改,還可以支援硬體更改,而這正是FPGA晶片的優勢所在。
FPGA晶片擁有可擴充性。可拓展的晶片改變了可程式邏輯的數量,大多採用引腳相容的封裝。這意味著開發人員可以建立單一ECU平台來承載低、中、高版本的ADAS功能包,並根據需要透過選擇所需的最小密度晶片來縮放成本。
#FPGA晶片允許開發人員創建獨特的差異化處理解決方案,這些解決方案可以針對特定應用或感測器進行最佳化。這對於ASSP晶片來說是無法實現的,即使是那些提供專用加速器的晶片,它們的使用方式也受到限制,而且基本上可以提供給所有競爭對手。例如Xilinx的長期客戶已經創建了只有他們可以存取的高價值IP庫,並且這些功能可以被公司的各種產品使用。從90nm節點開始,對於大批量汽車應用,Xilinx的晶片就已經極具成本效益,有超過1.6億顆Xilinx晶片在該行業獲得應用。
ASIC方案
ASIC定義與特徵
ASIC晶片可依終端功能不同分為TPU晶片、DPU晶片和NPU晶片等。其中,TPU為張量處理器,專用於機器學習。如Google於2016年5月研發針對Tensorflow平台的可程式AI加速器,其內部指令集在Tensorflow程式變更或更新演算法時可運作。 DPU即Data Processing Unit,可為資料中心等運算場景提供引擎。 NPU是神經網路處理器,在電路層模擬人類神經元和突觸,並以深度學習指令集直接處理大規模電子神經元和突觸資料。
ASIC有全客製化和半客製化兩種設計方式。全客製化依靠龐大的人力時間成本投入以完全自主的方式完成整個積體電路的設計流程,雖然比半客製化的ASIC更為靈活性能更好,但它的開發效率與半客製化相比甚為低下。
######效能提昇明顯##########
ASIC晶片非常適合人工智慧的應用情境。例如英偉達首款專為深度學習從零開始設計的晶片Tesla P100資料處理速度 是其2014年推出GPU系列的12倍。谷歌為機器學習定制的晶片TPU將硬體性能提升至相當於當前晶片按摩爾定律發展 7 年後的水平。就像CPU改變了當年龐大的電腦一樣,人工智慧ASIC晶片也將大幅改變如今AI硬體設備的面貌。如大 名鼎鼎的AlphaGo使用了約170個圖形處理器(GPU)和1200個中央處理器(CPU),這些設備需要佔用一個機房,還要配備高功率的空調,以及多名專家進行系統維護。而如果全部使用專用晶片,極大可能只需要一個普通收納盒大小的空間,且功耗也會大幅降低。
ASIC技術路線有限開放,晶片公司需要針對與駕駛相關的主流網路、模型、算符進行開發。在相同效能下,晶片的面積更小、成本更低、功耗更低。 ASIC技術路線未來的潛力會很大,選擇ASIC路線並不意味著要對不同車型開發不同的ASIC,或進行不同的驗證。因為不同車型需要實現的功能大致相同,而且晶片面對模型和算子進行有限開放,演算法快速迭代不會影響到晶片對上層功能的支援。車廠與晶片設計公司合作,進行差異化定制,或更好的選擇。因為即使是進行差異化的定制,晶片內部50%的部分也是通用的。晶片設計公司可以在原有版本的基礎上進行差異化設計,實現部分差異功能。
#FPGA是在PAL、GAL等可程式元件的基礎上進一步發展的產物。它是作為專用集成電路領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。優點:可以無限次編程,延時性比較低,同時擁有管線並行和資料並行、即時性最強、靈活性最高。缺點:開發難度高、只適合定點運算、價格比較昂貴。
圖形處理器(GPU),又稱為顯示核心、視覺處理器、顯示晶片,是專門在個人電腦、工作站、遊戲機和一些行動裝置(如平板、手機等)上做影像和圖形相關運算工作的微處理器。優點:提供了多核心並行計算的基礎結構,且核心數非 常多,可以支撐大量資料的平行計算,擁有更高的浮點運算能力。缺點:管理控制能力(最弱),耗電量(最高)。
ASIC,即專用積體電路,指應特定使用者要求和特定電子系統的需要而設計、製造的積體電路。目前用CPLD(複雜可程式化 邏輯元件)和FPGA(現場可程式邏輯陣列)來進行ASIC設計是最受歡迎的方式之一。優點:它作為集成電路技術與特定用戶的整機或系統技術緊密結合的產物,與通用集成電路相比具有體積更小、重量更輕、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。缺點:彈性不夠,成本比FPGA貴。
只算力理論的限制:TOPS算力不完全等於實際表現
隨著ADAS、自動駕駛技術的興起,以及軟體定義汽車的逐步深入,智慧汽車對於運算能力和大量資料處理能力等的需求暴增,傳統汽車的晶片「堆疊」方案已經無法滿足自動駕駛的算力需求。晶片最終是為車企的車載運算平台服務的,在 「軟體定義汽車」的情況下,解決智慧駕駛系統運算平台的支撐問題,無法只透過晶片算力堆疊來實現。
晶片是軟體的舞台,衡量晶片優劣的標準,要看晶片之上的軟體能否最大化地發揮作用,算力和軟體之間需要有效匹配。兩款相同算力的晶片比較,能讓軟體運作得更有效率的晶片才是「好晶片」。決定算力真實值最主要因素是記憶體( SRAM和 DRAM)頻寬,還有實際運作頻率(即供電電壓或溫度),以及演算法的batch尺寸。
單顆晶片算力TOPS是關鍵指標,但並非唯一,自動駕駛是一個複雜系統,需要車路雲邊協同。所以它的較量除了芯還有軟硬協同還有平台以及工具鏈等等。晶片算力的無限膨脹和硬體預埋不會是未來的趨勢,硬體也需要匹配實際。高背後是高功耗和低利用率的問題。
「介紹」工作機制
事件相機的靈感來自人眼和動物的視覺,也有人稱之為矽視網膜。生物的視覺只針 對有變化的區域才敏感,事件相機就是捕捉事件的產生或變化的產生。 、
在傳統的視覺領域,相機傳回的訊息是同步的,所謂同步,就是在某一時刻t,相機會進行曝光,把這一刻所有的像素填在一個矩陣裡回傳,產生一張照片。一張照 片上所有的像素都對應著同一時刻。至於視頻,不過是很多幀的圖片,相鄰圖片間 的時間間隔可大可小,這便是幀率(frame rate),也稱為時延(time latency)。事件相機類似人類的大腦和眼睛,跳過不相關的背景,直接感知一個場景的核心, 創建純事件而非數據。
事件相機的工作機制是,當某個像素所處位置的亮度發生變化達到一定閾值時,相機就會回傳一個上述格式的事件,其中前兩項為事件的像素座標,第三項為事件發生的時間戳,最後一項取值為極性(polarity)0、1(或-1、1),代表亮度是由低到高還是由高到低。
就這樣,在整個相機視野內,只要有一個像素值變化,就會回傳一個事件,這些所有的事件都是異步發生的(再小的時間間隔也不可能完全同時),所以事件的時間戳均不相同,由於回傳簡單,所以和傳統相機相比,它具有低時延的特性,可以捕獲很短時間間隔內的像素變化,延遲是微秒級的。
############################################################################################## #當今自動駕駛領域所運用的視覺辨識演算法,基本上都是基於卷積神經網絡,視覺演算法的運算本質上是一次次的捲積運算。這種計算並不複雜,本質上只涉及加減乘除,也就是一種乘累積加運算。但這種簡單運算在卷積神經網路中是大量存在的,這就對處理器的效能提出了很高的要求。 ############以ResNet-152為例,這是一個152層的捲積神經網絡,它處理一張224*224大小的圖像所需的計算量大約是226億次,如果這個網路要處理一個1080P的30幀的攝像頭,他所需要的算力則高達每秒33萬億次,十分龐大。 ##############################透過減少無效計算節約算力 ############################################################################################## ##自動駕駛領域99%的視覺資料在AI處理上是無用的背景。例如偵測鬼探頭,變化的區域是很小一部分,但傳統的視覺處理 仍然要處理99%的沒有出現變化的背景區域,這不僅浪費了大量的算力,也浪費了時間。也或者像在沙礫裡有顆鑽石,AI晶片和傳統相機需要辨識每一顆沙粒,篩選出鑽石,但人類只需要看一眼就能偵測到鑽石,AI晶片和傳統相機耗費的時間是人類的100倍或1000倍。 #######
除了冗餘資訊減少和幾乎沒有延遲的優點外,事件相機的優點還有由於低時延,在拍攝高速物體時,傳統相機由於會有一段曝光時間會發生模糊,而事件相機幾乎不會。此外事件相機擁有真正的高動態範圍,由於事件相機的特質,在光強較強或較弱的環境下,傳統相機均會“失明”,但像素變化仍然存在,所以事件相機仍能看清眼前的東西。
以上是一文通覽自動駕駛三大主流晶片架構的詳細內容。更多資訊請關注PHP中文網其他相關文章!