精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

小馬智行車載傳感器數據處理系統的發展歷程

NVIDIA英偉達 ? 來源:NVIDIA英偉達 ? 作者:NVIDIA英偉達 ? 2022-05-30 15:01 ? 次閱讀

就像人類用眼睛看東西一樣,自動駕駛汽車使用傳感器收集信息。這些傳感器收集了大量數據,因此需要高效率的車載數據處理,以便車輛對道路情況做出快速反應。這種能力對自動駕駛汽車的安全以及虛擬駕駛員的智能化水平至關重要。

由于需要冗余和多樣化的傳感器和計算系統,因此處理流水線的設計和優化存在一定的難度。本文將介紹小馬智行(Pony.ai)車載傳感器數據處理流水線的發展歷程。

小馬智行的傳感器配置包含多個攝像頭、激光雷達和雷達。上游模塊負責同步傳感器,將數據封裝成消息并發送到下游模塊,后者根據這些數據消息完成物體分割、分類和檢測等。

每種類型的傳感器數據可能被多個模塊使用,并且用戶的算法可能是傳統的或基于神經網絡的。

ead63648-ddbc-11ec-ba43-dac502259ad0.png

小馬智行自動駕駛傳感系統功能

乘員安全是第一要務,因此整個流水線必須以最高效率運行。而傳感器數據處理系統對安全的影響主要體現在兩個方面。

第一,自動駕駛系統處理傳感器數據的速度是安全的決定性因素之一。如果感知和定位算法收到的傳感器數據出現數百毫秒的延遲,那么車輛就無法及時做出決策。

第二,整個硬件/軟件系統必須是可靠的,才能實現長期保障。消費者絕不會愿意購買或乘坐在制造幾個月后就出現問題的自動駕駛汽車,這一點在量產階段至關重要。

高效處理傳感器數據

考慮到傳感器、 GPU 架構和 GPU 內存,需要采取較為全面的方法應對傳感器處理流水線中的瓶頸。

從傳感器到 GPU

在小馬智行成立之初,傳感器配置由現成組件構成。小馬智行使用基于 USB以太網的攝像頭,并將其直接連接到車載電腦上, CPU 負責從 USB /以太網接口讀取數據。

eb200ade-ddbc-11ec-ba43-dac502259ad0.png

從攝像頭到 CPU 再到 GPU 的流水線功能

雖然這種方法有效,但在設計上存在一個基本問題。USB 和以太網攝像頭接口(GigE-camera)會消耗 CPU。隨著越來越多高分辨率攝像頭的加入, CPU 很快就會不堪重負,無法執行所有輸入輸出(I/O)操作。這種設計很難在保持足夠低的延遲的情況下進行擴展。

為了解決這個問題,小馬智行為攝像頭和激光雷達增加了基于 FPGA 的傳感器網關。

eb82799e-ddbc-11ec-ba43-dac502259ad0.png

擔任傳感器網關的 FPGA (傳感器部分使用攝像頭示范)

FPGA 通過處理攝像頭觸發和同步邏輯來實現更好的傳感器融合。當攝像頭數據包準備就緒時,就會觸發 DMA 傳輸,通過 PCIe 總線將數據從 FPGA 復制到主存儲器。DMA 引擎在 FPGA 上執行此操作,不會占用 CPU。它不僅解放了 CPU 的 I/O 資源,而且還減少了數據傳輸延遲,使傳感器的配置更具有可擴展性。

由于許多在 GPU 上運行的神經網絡模型都需要使用攝像頭數據,在通過 DMA 將數據從 FPGA 傳輸到 CPU 之后,仍須將其復制到 GPU 內存。因此在某處需要進行 CUDA HostToDevice內存拷貝, FHD 分辨率的圖像每幀的用時需要約 1.5ms。

但小馬智行想進一步減少延遲。理想情況下,應直接將攝像頭數據傳輸到 GPU 內存,而不需要通過 CPU。

ebba8eb0-ddbc-11ec-ba43-dac502259ad0.png

攝像頭/FPGA/CPU/GPU流水線功能塊圖,使用 RDMA 在 FPGA 和 GPU 之間進行通信

GPU Direct RDMA 使小馬智行能夠通過 PCIe BAR (定義 PCIe 地址空間線性窗口的基地址寄存器)預分配 CUDA 內存供 PCIe peers 訪問。

它還為第三方設備驅動程序提供了一系列內核空間 API 以獲得 GPU 內存物理地址。這些 API 方便了第三方設備的 DMA 引擎直接向 GPU 內存發送和讀取數據,就像是在向主內存發送和讀取數據一樣。

GPU Direct RDMA 通過消除 CPU 到 GPU 的復制來減少延遲,并在 PCIe Gen3 x8 下實現約 6 GB/s 的最高帶寬(理論極限值為 8 GB/s)。

跨 GPU 擴展

由于計算工作負載的增加,小馬智行需要不止一個 GPU。隨著越來越多的 GPU 加入到系統中,GPU之間的通信也可能成為瓶頸。經中轉緩沖區通過 CPU 會增加 CPU 成本,并限制整體帶寬。

ec067e9c-ddbc-11ec-ba43-dac502259ad0.png

通過 PCIe 交換機進行 GPU-GPU 通信

小馬智行添加了 PCIe 開關提供最好的對等傳輸性能。在測量中,對等通信可以達到 PCIe 速度上限,提高了跨多個 GPU 的擴展性。

將計算轉移到專用硬件

小馬智行還將以前在 CUDA 核上運行的任務轉移到專用硬件上,以加速傳感器數據處理。

例如,當把 FHD 攝像頭圖像編碼成 JPEG 字符串時, NvJPEG 庫在 RTX5000 GPU 的單個 CPU 線程上需要約 4 毫秒。NvJPEG 可能會消耗 CPU 和 GPU 資源,這是因為它的一些階段(比如 Huffman 編碼)可能完全是在 CPU 上運行的。

ec3ce7ac-ddbc-11ec-ba43-dac502259ad0.png

使用 GPU 上的 NvJPEG 庫進行 JPEG 編碼的數據流功能塊圖

小馬智行在車輛上采用了 NVIDIA 視頻編解碼器,以減輕 CPU 和 GPU ( CUDA 部分)進行圖像編碼和解碼的負擔。此編解碼器在 GPU 的專用部分使用編碼器。它屬于 GPU 的一部分,但不會與用于運行內核和深度學習模型的其他 CUDA 資源相沖突。

小馬智行也一直在使用 NVIDIA GPU 上的專用硬件視頻編碼器將圖像壓縮格式從 JPEG 遷移到 HEVC(H.265)。這實現了編碼速度的提高,并為其他任務釋放了 CPU 和 GPU 資源。

在不影響 CUDA 性能的情況下,在 GPU 上對 FHD 圖像進行完全編碼需要 3 毫秒。該性能在純 I 幀模式下測量,可確保各幀之間質量和壓縮偽影的一致性。

ecc1b0cc-ddbc-11ec-ba43-dac502259ad0.png

避免消耗 CUDA 核或 CPU 的 HEVC 編碼數據流功能塊圖

NVIDIA 視頻編解碼器在 GPU 芯片的專用分區中使用編碼器,不會消耗 CUDA 核或 CPU。NVENC 支持 H264/H265。將 FHD 圖像編碼為 HEVC 需要約 3ms,因此可以釋放 GPU 和 CPU 去處理其他任務。小馬智行使用純 I 幀模式,確保每幀都有相同的質量和相同類型的偽影。

GPU 上的數據流

另一個關鍵是將攝像頭幀作為信息發送到下游模塊的效率。

小馬智行使用谷歌的 ProtoBuf 來定義消息。以CameraFrame信息為例,攝像頭規格和屬性是該消息中的基本數據類型。由于 ProtoBuf 的限制,真正的有效載荷——攝像頭數據必須被定義為主系統內存中的字節。

ed2874c4-ddbc-11ec-ba43-dac502259ad0.png

CameraFrame 消息示例

以下代碼示例中的消息是一個原型。由于 protobuf 的限制, data 這一成員必須在主內存中。

message CameraFrame {
optional string device_name = 1;
optional int32 width = 2;
optional int32 height = 3;
optional int32 pixel_format = 4;
optional bytes data = 5;
};

小馬智行使用發布-訂閱模式,通過模塊間的零拷貝消息傳遞來共享信息。CameraFrame 信息的許多用戶模塊使用攝像頭數據進行深度學習推理。

在最初的設計中,當此類模塊收到信息時,它不得不調用 CUDA 的HostToDevice拷貝,在推理前將攝像頭數據傳輸到 GPU 上。

ed7f8016-ddbc-11ec-ba43-dac502259ad0.png

發布-訂閱模型功能:攝像頭模塊向多個用戶模塊發送 CameraFrame 信息。每個用戶模塊需要進行 CPU 到 GPU 的內存拷貝。

每個模塊都必須進行 CUDAHostToDevice拷貝,這項工作既多余又消耗資源。雖然零拷貝消息傳遞框架在 CPU 上運行良好,但它需要進行大量 CPU-GPU 數據拷貝。

ede41d78-ddbc-11ec-ba43-dac502259ad0.png

支持 GPU 的零拷貝發布-訂閱信息傳遞

小馬智行通過 protobuf 的插件 API 將新的數據類型——GpuData字段添加到 protobuf 代碼生成器中,從而解決了這個問題。如同 CPU 內存bytes字段,GpuData支持標準resize操作。但它的物理數據存儲在 GPU 上。

當用戶模塊收到消息時,他們可以檢索能夠直接使用的 GPU 數據指針。因此,小馬智行在整個流水線上實現了完全的零拷貝。

改進 GPU 內存分配

當我們調用GpuDataproto 的resize操作時,它會調用 CUDA 中的cudaMalloc參數。當GpuDataproto 信息被銷毀時,它會調用cudaFree

這兩個 API 操作的成本并不低,因為它們必須修改 GPU 的內存映射。每次調用可能需要約 0.1ms。

由于該 proto 消息被廣泛使用,而攝像頭在不停地產生數據,所以小馬智行應該優化 GPU proto 消息的分配與釋放(alloc/free)成本。

小馬智行采用了固定片段大小的 GPU 內存池來解決這個問題。這個想法很簡單:維護一個預先分配的 GPU 內存池,內存池的每個片段大小匹配攝像頭數據幀的大小。每次alloc時,就從堆棧中取出一片 GPU 內存。每次free時,該 GPU 內存片段就會返回到池中。通過重新使用 GPU 內存,alloc/free時間接近于零。

ee2f7b42-ddbc-11ec-ba43-dac502259ad0.png

僅支持固定分配大小的 GPU 內存池

如果想支持不同分辨率的攝像頭該怎么辦?使用這種固定大小的內存池,就必須始終分配盡量多的大小,或者初始化插槽大小不同的多個內存池。這兩種情況都會降低效率。

CUDA 11.2 的新功能解決了這個問題。它正式支持cudaMemPool,該內存池可以被預先分配并在之后用于cudaMallocfree。與之前的方法相比,這種方法適用于任何分配大小,以極小性能代價極大地提高了靈活性(每次分配約 2us)。

ee82a5a6-ddbc-11ec-ba43-dac502259ad0.png

支持動態分配大小的 GPU 內存池

在這兩種方法中,當內存池溢出時,resize的調用會退回到傳統的cudaMallocfree

YUV 顏色空間中更干凈的數據流

通過上述所有的硬件設計和系統軟件架構優化,小馬智行實現了高效的數據流。下一步是優化數據格式本身。

小馬智行的系統曾經在 RGB 顏色空間中處理攝像頭數據。但攝像頭的圖像信號處理(ISP)輸出是在 YUV 顏色空間,在 GPU 上進行 YUV 到 RGB 的轉換需要約 0.3ms。此外,一些感知組件不需要顏色信息。向它們提供 RGB 顏色像素是一種浪費。

ef0182fe-ddbc-11ec-ba43-dac502259ad0.png

使用 YUV 格式避免顏色空間轉換

鑒于這些原因,小馬智行從 RGB 攝像頭格式遷移到 YUV 格式。由于人類視覺對色度信息不如對亮度信息那么敏感,因此小馬智行選擇使用 YUV420 像素格式。

通過采用 YUV420 像素格式,小馬智行減少了一半的 GPU 內存消耗。這也使小馬智行能夠只將 Y 通道發送到不需要色度信息的感知組件。與 RGB 相比,這減少了三分之二的 GPU 內存消耗。

在 GPU 上處理激光雷達數據

除了攝像頭數據,小馬智行還在 GPU 上處理激光雷達數據,而且這些數據更加稀疏。不同類型的激光雷達增加了這項處理工作的難度。在處理激光雷達數據時,小馬智行采取了一些優化措施。

  • 由于激光雷達掃描數據包含大量物理信息,小馬智行使用對 GPU 友好的數組結構代替結構數組來描述點云,使 GPU 的內存訪問模式變得更加凝聚而不是分散。

  • 當必須在 CPU 和 GPU 之間交換時,將數據保存在鎖定內存中以加速傳輸。

  • NVIDIA CUB 庫在小馬智行的的處理流水線中被廣泛使用,尤其是 Scan/Select 操作。

ef3563d0-ddbc-11ec-ba43-dac502259ad0.png

從激光雷達傳感器到 GPU 上點云處理的流水線功能

通過所有這些優化,小馬智行在關鍵路徑上將整個流水線的延遲減少了約 4ms。

總時間線

憑借所有這些優化,小馬智行可以使用內部的時間線可視化工具查看系統追蹤。

ef9b8c96-ddbc-11ec-ba43-dac502259ad0.png

從傳感器數據到深度學習推理的總時間線

總時間線顯示了小馬智行目前對 GPU 的總體依賴程度。盡管這兩個 GPU 在 80% 的時間內被使用,但 GPU0 和 GPU1 的工作負載并不平衡。GPU 0 在整個感知模塊迭代過程中被大量使用,而 GPU1 在迭代的中間階段有更多的空閑時間。

未來小馬智行將專注于進一步提高 GPU 的效率。

生產就緒

在開發初期,小馬智行通過 FPGA 輕松試驗在基于硬件的傳感器數據處理方面的想法。隨著傳感器數據處理單元變得越來越成熟,小馬智行開始研究如何使用系統級芯片(SoC)提供緊湊、可靠的生產級傳感器數據處理器

經發現,車規級 NVIDIA DRIVE Orin 系統級芯片完全滿足小馬智行的要求。它符合 ASIL 認證,因此非常適合在量產車輛上運行。

從 FPGA 遷移到 NVIDIA DRIVE Orin

在開發初期,小馬智行通過 FPGA 輕松試驗在基于硬件的傳感器數據處理方面的想法。

隨著傳感器數據處理單元變得越來越成熟,小馬智行開始研究如何使用系統級芯片(SoC)提供緊湊、可靠的生產級傳感器數據處理器。

小馬智行發現,車規級 NVIDIA DRIVE Orin 系統級芯片完全滿足要求。它符合 ASIL 認證,因此非常適合在量產車輛上運行。

小馬智行將使用 NVIDIA DRIVE Orin 來處理所有傳感器信號處理、同步、數據包收集以及攝像頭幀編碼。小馬智行估計這種設計與其他架構優化結合后,將節省約 70% 的總硬件成本。

efd23df4-ddbc-11ec-ba43-dac502259ad0.png

使用 NVIDIA DRIVE Orin 系統級芯片作為新的傳感器網關

通過與 NVIDIA 合作,小馬智行確保 Orin-CPU-GPU 組件之間的所有通信均通過 PCIe 總線進行,并通過 NvStreams 支持 DMA。

  • 對于計算密集型深度學習工作, NVIDIA Orin 系統級芯片使用 NvStream 將傳感器數據傳輸到獨立的 GPU 上進行處理。

  • 對于非 GPU 工作, NVIDIA Orin 系統級芯片使用 NvStream 將數據傳輸到主機 CPU 進行處理。

Orin 提供每秒 254 萬億次計算性能,可以處理與目前 L4 級自動駕駛汽車計算平臺上所使用的 RTX5000 獨立 GPU 類似的工作負載。但它需要通過多項優化,才能充分釋放 NVIDIA DRIVE Orin 系統級芯片的潛力,例如:

  • 結構性稀疏網絡

  • DLA(深度學習加速器)核

  • 跨多個 NVIDIA DRIVE Orin 系統級芯片的擴展

結論

小馬智行傳感器數據處理流水線的發展歷程顯示了小馬智行采用系統化方法來實現高效率的數據處理流水線和更高的系統可靠性,這有助于實現更高的安全目標。這種方法背后的簡單理念是:

  • 使數據流簡單而流暢。數據應該以最小化轉化開銷的格式被直接傳輸到它將被使用的地方。

  • 專用硬件用于計算密集型任務,通用計算資源用于其他任務。

這種方法無法僅靠軟件或硬件來實現,而是依靠在軟件和硬件協同設計方面的共同努力。這對于滿足快速增長的計算需求與生產期望至關重要。

原文標題:加速小馬智行自動駕駛汽車傳感器數據處理流水線

文章出處:【微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4949

    瀏覽量

    102826
  • 自動駕駛
    +關注

    關注

    783

    文章

    13694

    瀏覽量

    166166
  • 車載傳感器
    +關注

    關注

    0

    文章

    44

    瀏覽量

    4347
  • 小馬智行
    +關注

    關注

    0

    文章

    101

    瀏覽量

    3677

原文標題:加速小馬智行自動駕駛汽車傳感器數據處理流水線

文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Microchip PolarFire? FPGA以太網傳感器橋與NVIDIA Holoscan傳感器處理平臺兼容的人工智能(AI)驅動的傳感器處理系統

    Microchip Technology推出了PolarFire? FPGA以太網傳感器橋,以幫助開發人員創建與NVIDIA Holoscan傳感器處理平臺兼容的人工智能(AI)驅動的傳感器
    的頭像 發表于 11-19 09:29 ?377次閱讀

    霍爾傳感器發展歷史與技術革新

    霍爾傳感器,作為現代電子設備中不可或缺的組件,其發展歷程見證了科技的不斷進步與創新。霍爾傳感器基于霍爾效應,這一磁電效應的發現,不僅推動了傳感器
    的頭像 發表于 11-14 16:30 ?153次閱讀

    FPGA在數據處理中的應用實例

    FPGA(現場可編程門陣列)在數據處理領域有著廣泛的應用,其高度的靈活性和并行處理能力使其成為許多高性能數據處理系統的核心組件。以下是一些FPGA在數據處理中的應用實例: 一、通信協議
    的頭像 發表于 10-25 09:21 ?193次閱讀

    如何構建一個基于Imap4郵件通信協議與放射性物質監測數據處理系統

    如何構建一個基于Imap4郵件通信協議與放射性物質監測數據處理系統 構建一個綜合性的數據處理和存儲系統,該系統將集成郵件監控、數據解析、文件
    的頭像 發表于 09-10 18:14 ?202次閱讀

    車載傳感器網絡是什么意思啊

    車載傳感器網絡(Vehicle Sensor Networks,VSN)是指在車輛上部署的傳感器網絡,用于收集車輛運行狀態、環境信息、交通狀況等數據,并通過無線通信技術將這些
    的頭像 發表于 09-07 09:32 ?338次閱讀

    車載傳感器主要有哪些傳感器

    主要的車載傳感器類型及描述: 速度傳感器 : 作用 :測量車輛的行駛速度。 類型 :包括車輪速度傳感器、GPS速度傳感器等。 應用 :用于A
    的頭像 發表于 09-07 09:30 ?462次閱讀

    信號采集與處理系統通常由哪些模塊組成

    處理系統的基礎,它負責產生或接收需要處理的信號。信號源可以是傳感器、模擬信號發生、數字信號發生等。信號源模塊的設計需要考慮信號的類型、
    的頭像 發表于 07-15 14:12 ?1112次閱讀

    XV4001系列陀螺儀傳感器廣泛用于車載導航系統

    隨著汽車電子化趨勢的加速,越來越多的汽車配備一系列先進的車載導航系統,這些導航系統功能的實現都依賴于精確的傳感器數據(位置、車速、轉向角度
    發表于 05-24 15:55 ?0次下載

    振弦采集儀在巖土工程監測中的數據處理與結果展示

    的穩定性。 振弦采集儀在巖土工程監測中的數據處理與結果展示 振弦采集儀通過安裝在土體中的振弦傳感器,可以對土體的振動信號進行實時采集。采集到的振動信號經過傳感器的放大和濾波處理,得到較
    的頭像 發表于 05-14 16:41 ?264次閱讀
    振弦采集儀在巖土工程監測中的<b class='flag-5'>數據處理</b>與結果展示

    土壤墑情監測站系統是一種集成了多種監測設備和數據處理技術的系統

    中的應用。 技術原理方面,土壤墑情監測站系統采用了先進的傳感器技術和數據處理算法。傳感器被布設在不同位置的土壤中,可以監測土壤的水分含量、溫度等指標,并將
    的頭像 發表于 04-07 15:31 ?295次閱讀

    工業物聯網如何選擇數據采集網關

    在工業物聯網(IIoT)時代,數據采集網關扮演著至關重要的角色。作為連接傳感器數據處理系統的橋梁,數據采集網關負責實時、準確地采集和傳輸傳感器
    的頭像 發表于 04-03 14:21 ?492次閱讀
    工業物聯網如何選擇<b class='flag-5'>數據</b>采集網關

    數據到決策:車載中控系統在空中交通指揮車中的應用探索

    數據到決策的順暢轉化。 一、實時數據采集與處理 在空中交通指揮中,實時、準確的數據是做出正確決策的基礎。訊維車載中控
    的頭像 發表于 03-06 16:07 ?310次閱讀

    上位機組成部分及工作原理圖

    上位機通常是指上層的控制系統或者數據處理系統,是對下位機進行監控、控制和數據處理的設備。
    的頭像 發表于 03-05 16:33 ?3471次閱讀
    上位機組成部分及工作原理圖

    虹科方案 | 車內智慧大腦:基于車載網絡捕獲的全景數據處理

    隨著汽車電子技術的不斷發展車載網絡已經成為汽車智能化和互聯互通的關鍵組成部分。然而隨著汽車系統的復雜性增加,CAN的帶寬和數據處理能力已不足以滿足快速增長的
    的頭像 發表于 12-25 11:34 ?446次閱讀
    虹科方案 | 車內智慧大腦:基于<b class='flag-5'>車載</b>網絡捕獲的全景<b class='flag-5'>數據處理</b>

    集成化信息化信號采集處理系統有哪些

    信息化信號采集處理系統的基本概念、組成、應用和發展趨勢進行詳細闡述。 基本概念 集成化信息化信號采集處理系統是一種基于計算機技術、通信技術、傳感器技術等多種技術的綜合應用
    的頭像 發表于 12-14 11:19 ?998次閱讀