亚洲网站免费_国产一区二区三区在线看麻豆 _国产精品毛片一区二区三区 _麻豆精品网站

如何用算法給自動駕駛運算平臺加速?

自動駕駛和機器人對數據的處理都要求很強的實時性,因此需要強大的計算能力。而有很多與計算機視覺、深度學習相關的功能,數據量極大,如果采用純CPU的系統架構,運行時間會很長,達不到期望的處理速度和實時性要求。本文將結合我們在機器人算法加速上的實踐經驗和對自動駕駛運算平臺的了解進行分享。
 
作者:王文輝【天津最早從事AI算法及創新工作的骨干之一、目前為AI 算法FPGA加速工程師】
 
一、機器人算法加速實踐
 
機器人的核心控制單板屬于嵌入式設備,要求功耗低、面積小,用傳統的CPU+GPU的方案無法滿足要求。因此我們采用了FPGA SOC+HLS的方案,對計算機視覺和深度學習相關的算法進行加速。不僅利用了FPGA的高并發性能,也利用了HLS的高效開發效率,具體包含下述四個方面:
 
1.高度集成的SOC方案
 
為了解決單板的體積和功耗問題,選擇xilinx的SOC芯片作為處理主芯片,該芯片包含一片高性能FPGA,相比傳統的CPU+FPGA方案,SOC方案有如下優點:
 
i.功耗
 
如果采用傳統的CPU(4W)+FPGA(15W)分體式解決方案,整體功耗接近20W。SOC方案按照FPGA資源利用率為80%來計算,典型功耗在10W左右,遠低于CPU+FPGA的方案,這對很多采用電池供電的嵌入式設備來說,待機時間大大延長了。
 
ii.BOM面積
 
高集成的方案大大節省了單板的PCB面積,進而縮小了整機的體積。
 
2.HLS快速開發
 
CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理,這些都使得CPU的內部結構異常復雜,所以,用CPU進行流程控制和調度時很高效,但如果程序中需要進行大量的復雜計算,CPU則顯得力不從心。
 
現在的深度學習和機器視覺領域,恰恰是包含大量的數學運算,因此需要采用其它擁有大量計算單元的器件進行硬件加速處理,常用的有DSP、GPU和FPGA,主流的架構是主控制流程在CPU上運行,DSP、GPU和FPGA做數據運算。
 
由于FPGA內部有大量的DSP和可編程模塊,因此是效率最高的選擇,但它的開發語言(Verilog和VHDL)相對底層,且和DSP、GPU、CPU代碼無法兼容,所以開發群體相對小眾,編程效率較低,開發周期長。如下圖:
 
鑒于此,HLS開發方式應運而生,HLS即高層次描述(High Level Synthesis),之后綜合成可用的網表文件的技術。這里的“高”指采用C/C++進行編程,而不是傳統的Verilog和VHDL語言。Vivado工具將C程序轉換成Verilog代碼后,進行綜合、優化、布局布線等操作。開發流程圖如下:
 
應用了HLS開發方式后,開發周期大大縮短,如下圖:
 
3.高效的驗證環境
 
在FPGA開發過程中,仿真驗證階段占用了70%左右的時間,其中包括了反復編寫和優化激勵、結果驗證的過程。使用HLS開發后,這部分工作量會大大縮短,加快開發進度。
 
Vivado開發包括一個Co-Sim的過程,整個過程包括如下幾個步驟,最終完成RTL代碼的仿真。
 
Co-Sim根據C語言的testbench建立一個RTL代碼和C語言的testbench之間的通信方式,來傳輸仿真激勵數據。
 
Co-Sim根據C語言的testbench來生成仿真激勵。
 
Co-Sim啟動仿真,將激勵灌入并行處理后的RTL代碼,并且驗證輸出是否正確。
 
整個驗證過程,Co-Sim工具將開發人員從繁雜的編寫RTL激勵和結果驗證中解放出來,只需將精力放在如何在C語言層面編寫激勵即可,因此大大提高了開發效率。
 
4.HLS的優化
 
整個開發過程中,如何寫出適合HLS高效綜合的C語言代碼,貫穿整個HLS開發主線,也是難點所在。主要的優化方式有如下幾點,供大家參考:
 
i. 吞吐量優化
 
數據吞吐量定義為單位時間內模塊處理數據的數量,是衡量加速算法的一個重要指標,FPGA內改進數據吞吐量的方法有Pipeline和Dataflow兩種。
 
下圖A是沒有進行Pipeline處理的代碼,只有當RD、CMP和WR整個處理過程完成后,才會進行下一組數據的處理,即處理一組數據需要3個時鐘周期。圖B是進行Pipeline優化后的代碼,每個時鐘周期都有數據輸入并被處理,所以吞吐量是圖A的3倍。
 
Dataflow是另外一種在函數之間進行并行優化的方式。下圖是沒有進行Dataflow并行計算優化的模塊,函數間依次處理一組數據,所有處理流程結束后,input接口才會允許進行下一組數據。
 
采用Dataflow方式后如下圖,會在函數間增加Channel,這是一個用于緩存中間數據的buffer,當一級function處理完數據后將其存入緩存,function可以繼續處理下一組數據,而不用等待所有流程處理完畢后再繼續工作。
 
Pipeline和Dataflow都是增加并行處理的有效手段。
 
ii. Latency優化
 
Latency是處理一組數據的時間,這是體現算法實時性的重要指標。HLS可以通過設置編譯選項來設置一個函數的Latency,優化函數處理時間。另外,還可以通過合并loop來優化Latency,因為每個C語言的loop都會被綜合成一個或多個狀態機,而多個狀態機級聯的時候一定會增加額外的處理延遲。我們可以使用merge指令來合并多個狀態機,優化整體處理Latency。
 
iii. 面積優化
 
在FPGA上實現一個算法,除了速度和吞吐量,算法占用的資源也是重要的考量指標。一個占用資源過多的算法是不可行的,或者說是代價昂貴的,可以通過優化數據的bit位寬來優化占用的資源。
 
在C語言中通常我們只會使用char/int/float等固定長度的數據類型,而在FPGA中,由于高度可編程,我們可以隨意定義自己想要使用的數據類型的寬度,例如我們可以根據需要,使用12/11/10bit位寬的整型數據,這樣大大減少了資源使用數量。
 
當C語言中有很多小的Array時會消耗大量FPGA中的RAM資源,HLS支持RAM合并的功能,即將很多小的Array合并放入一個RAM塊中,減少RAM消耗的數量。
 
二、效益和收益
 
HLS是一個橋接硬件和軟件開發領域的工具,給FPGA開發提供了很多好處,主要有:
 
由于可以在更高抽象語言的基礎上進行開發,極大的提高了硬件開發人員的生產力。
 
降低了FPGA開發門檻,使軟件開發人員可以快速的介入FPGA開發。
 
以下面四個算法加速為例,從開發速度和工作量上來看HLS帶來的收益。
 
1.開發時間大大縮短
 
開發時間是體現效率、快速推出版本的一個重要指標,通過使用HLS開發方式,會使整個團隊在視覺圖像處理算法和CNN上很大提升。
 
下表是兩種開發方式下的人力對比,其中RTL開發方式沒有實際做,是根據算法的復雜度進行預估的。從對比來看,HLS開發效率至少是RTL的3倍。
 
2. 代碼行數減少
 
代碼行數是體現工作量,尤其是后期維護工作量的一個重要指標。HLS后期維護的是C語言代碼,無論從代碼量還是可讀性來說,都遠遠優于Verilog。
 
下表是兩種開發方式下的代碼行數對比,其中RTL方式沒有實際編碼,但是從以前的開發經驗和算法復雜度來看,每個算法至少是50000行以上的代碼規模,與HLS方式相比相差了不止一個數量級。
 
HLS開發方式下,代碼的維護變得相當簡單,且對于初學者來說,理解整個算法的流程框架也更容易,但比較難的點是理解編譯選項的含義和開發方式。
 
在算法實現上,HLS是一個高效的工具,但由于C語言還是要變成可綜合的Verilog,所以C語言的寫法還是要遵循特定的可綜合的規則。
 
三、自動駕駛運算平臺
 
自動駕駛所需的運算能力體現在車端和云端兩個方面:
 
1.車端
 
車端運算平臺一般放在汽車后備箱,主要負責通過傳感器數據感知周圍的環境,用高精度地圖實時定位,并按照算法模型做出駕駛決策。
 
2.云端
 
云端則需要一臺數據處理能力超強的數據中心,所有與云端連接的車輛都會將自己的行駛數據上傳到這里。云端利用這些數據,通過深度/增強學習訓練決策和感知的算法模型。經過訓練優化的算法模型在經過穩定性驗證后將會被重新更新到各個車輛終端中,這是未來自動駕駛所使用的自我優化體系。
 
車端對于安全性和實時性要求很高,需要對周圍環境迅速做出決策;云端數據量龐大,所有這些都對運算能力提出了很高的要求。
 
目前車端和云端運算平臺采用較多的處理器是GPU,GPU有數量眾多的計算單元,可以并行運行同時處理很多相對簡單但具有大量數據的任務。
 
2016年NVIDIA推出的專門針對自動駕駛的 Drive PX2平臺在車端應用比較廣泛,Drive PX2中使用了兩個Tegra Parker,以及多個Pascal架構的GPU,每秒能夠執行24萬億次操作。Drive PX2配合云端數據中心的NVIDIA Tesla GPU,可在更短的時間內創建和更新適用于自動駕駛汽車的精細地圖,過去要花幾周時間才能完成的過程現在幾乎可以實時完成。
 
下圖為NVIDIA的端到端完整自動駕駛計算平臺:
如何用算法給自動駕駛運算平臺加速?-DVBCN
Drive PX2已經搭載在 Tesla 的量產車型 Model S 以及 Model X 上,大部分已公布的使用 NVIDIA 方案的測試車基本上都搭載的 Drive PX2,如奧迪、沃爾沃和 ZF 等。
 
百度的自動駕駛Apollo車端為了實現高性能穩定的計算,采用的是工業級PC作為運算單元,配置6th-Gen Intel Core i7/i5 LGA1151 CPU 和NVIDIA GeForce GTX1050* GPU。
 
雖然GPU的應用比較廣泛,但它在深度學習方面也存在著一些局限性,如下:
 
由于FPGA的計算構架可以全定制,功耗低,其并行處理資源可擴展性和靈活性較好,所以它在很大程度上克服了GPU的弱點。現在FPGA被越來越多的公司關注,其可編程特性可以滿足專有計算構架的需求,微軟、Intel等公司都在大量部署基于FPGA的系統。
 
FPGA在ADAS(高級駕駛輔助系統)方面的出貨量也在迅速增加,去年的出貨量應該不會低于3Mu。
 
【地平線】
 
2017年初,地平線公司發布了基于FPGA-BPU的ADAS系統,預計其成本和功耗都將比現有GPU低一個數量級。從xilinx工程師那了解到,地平線采用的FPGA芯片,和前面介紹的機器人算法加速實踐選擇的是同一款,據說該系統已被比亞迪自動駕駛汽車采用。
 
【寶馬&Intel】
 
去年,寶馬集團攜手Intel共同研發全自動駕駛解決方案,全新發布的Intel GO無人駕駛解決方案提供世界級處理器和FPGA技術,以最高效的方式平衡了性能和功耗,同時滿足汽車行業對散熱和安全性的苛刻要求。
 
車端:
 
Intel GO為關鍵功能提供了可拓展的開發和計算平臺,包括傳感器聚合、駕駛策略、環境建模、路徑規劃和決策。
 
云端:
 
Intel GO提供廣泛的技術,包括處理器、FPGA、固態硬盤和Nervana人工智能平臺等,為無人駕駛行業所需的機器學習和深度學習提供了強大的訓練和模擬基礎設施。
 
當然FPGA做深度學習或其它算法加速也有一些問題,比如產品本身迭代比較慢,成本較高等。
 
四、結語
 
回顧過去自動駕駛所使用的計算平臺,可以看到由最開始使用CPU,到后來的GPU,到現在GPU和FPGA的組合使用。機器人領域對處理器的選擇也基本是這個路線,相信未來算法和芯片會協同進化,更好的支撐人工智能各領域的發展。
 
相關文章
首屆“馬欄山杯”國際音視頻算法優化大賽頒獎盛典暨高峰論壇圓滿落幕
首屆“馬欄山杯”國際音視頻算法優化大賽…
北京2020年將新建5G基站1.3萬個
北京2020年將新建5G基站1.3萬個
大唐移動、安徽聯通、安凱客車簽署戰略合作協議
大唐移動、安徽聯通、安凱客車簽署戰略…
德國車企將投入近600億歐元研發電動車及自動駕駛
德國車企將投入近600億歐元研發電動車及…
北京移動開通數十個5G基站服務自動駕駛等項目
北京移動開通數十個5G基站服務自動駕駛…
黑莓向車聯網自動駕駛轉型 車聯網業務銷收增23%
黑莓向車聯網自動駕駛轉型 車聯網業務銷…
我還沒有學會寫個人說明!
主站蜘蛛池模板: 上虞市| 绥中县| 万全县| 石阡县| 进贤县| 平陆县| 车险| 定襄县| 资源县| 靖远县| 西吉县| 江达县| 广南县| 东丽区| 阿城市| 陇南市| 永宁县| 永宁县| 资源县| 格尔木市| 瑞昌市| 大英县| 芷江| 马关县| 西峡县| 伊金霍洛旗| 溧阳市| 菏泽市| 个旧市| 凌海市| 竹溪县| 武强县| 涪陵区| 仁化县| 双峰县| 无极县| 三门县| 张家港市| 大名县| 明光市| 西盟|