自動(dòng)駕駛汽車必須能夠快速準(zhǔn)確地檢測(cè)物體,以確保其駕駛員和道路上其他駕駛員的安全。由于自動(dòng)駕駛( AD )和視覺(jué)檢查用例中對(duì)實(shí)時(shí)處理的需求,具有預(yù)處理和后處理邏輯的多個(gè) AI 模型 組合在流水線中,并用于 機(jī)器學(xué)習(xí)( ML )推理。
流水線的每一步都需要加速,以確保低延遲工作流。延遲是獲取推理響應(yīng)所需的時(shí)間。更快地處理 AD 數(shù)據(jù)將能夠更有效地分析和使用信息,創(chuàng)造更安全的駕駛環(huán)境。任何一個(gè)方面的延遲都會(huì)降低整個(gè)管道的速度。
為了實(shí)現(xiàn)低延遲推理工作流,電動(dòng)汽車制造商 NIO 將 NVIDIA Triton 推理服務(wù)器集成到其 AD 推理管道中。 NVIDIA Triton 推理服務(wù)器是一個(gè)開源的多幀推理服務(wù)軟件。
這篇文章解釋了 NIO 如何在 GPU 上使用 NVIDIA Triton 協(xié)調(diào)其圖像預(yù)處理、后處理和 AI 模型的管道。它還展示了 NIO 如何減少網(wǎng)絡(luò)傳輸,以成功加快 AD 用例的 AI 推理工作流。
用于實(shí)時(shí)響應(yīng)的更快 AI 推理
NIO 設(shè)計(jì)、開發(fā)、聯(lián)合制造和銷售高級(jí)智能電動(dòng)汽車,推動(dòng)自動(dòng)駕駛、數(shù)字技術(shù)、電動(dòng)動(dòng)力系統(tǒng)和電池等新一代技術(shù)的創(chuàng)新。 NIO 自動(dòng)駕駛開發(fā)平臺(tái)( NADP )是一個(gè)致力于 NIO 核心自動(dòng)駕駛服務(wù)的研發(fā)平臺(tái)。
NIO 選擇 NVIDIA Triton Inference Server 是因?yàn)閹讉€(gè)關(guān)鍵的技術(shù)和操作原因,包括:
NVIDIA Triton 支持基于 DAG 的多種模型編排,以及預(yù)處理或后處理模塊
NVIDIA Triton 的云原生部署實(shí)現(xiàn)了多 GPU 、多節(jié)點(diǎn)的輕量級(jí)擴(kuò)展
高質(zhì)量的文檔和學(xué)習(xí)資源有助于輕松遷移到 NVIDIA Triton
NVIDIA Triton 的穩(wěn)定性和強(qiáng)大功能是 AD 用例所必需的
NIO 的自動(dòng)駕駛 AI 推理工作流
數(shù)百個(gè)人工智能模型用于從自動(dòng)駕駛汽車中挖掘數(shù)據(jù)。在自動(dòng)駕駛這樣的用例中,推理工作流由多個(gè) AI 模型組成,其中預(yù)處理和后處理邏輯在流水線中拼接在一起。
NIO 將管道的預(yù)處理和后處理從運(yùn)行在 CPU 上的客戶端移動(dòng)到運(yùn)行在 GPU 上的 NVIDIA Triton 。 NVIDIA Triton 的業(yè)務(wù)邏輯腳本( BLS )功能用于協(xié)調(diào)管道,以優(yōu)化 AD 使用。
通過(guò)將預(yù)處理從 CPU 移動(dòng)到 GPU 并利用高效的管道編排, NIO 在一些核心管道中實(shí)現(xiàn)了 6 倍的延遲減少,將總吞吐量提高了 5 倍。
工作流管道之前和之后如圖 1 所示。
圖 1. NVIDIA Triton 推理服務(wù)器推出之前(左)和之后(右) NIO AI 推理工作流的比較
NVIDIA Triton 的模型管道編排優(yōu)勢(shì)
本節(jié)探討了 NIO 通過(guò)集成 NVIDIA Triton 實(shí)現(xiàn)的每一項(xiàng)好處。
GPU 加速預(yù)處理
NVIDIA Triton 使用 nvJPEG 和 NVIDIA DALI 在 GPU 上加速了解碼、調(diào)整大小和換位等預(yù)處理任務(wù)。這顯著減輕了客戶端 CPU 的計(jì)算工作量,并減少了預(yù)處理延遲。
升級(jí)模型而無(wú)需修改客戶端應(yīng)用程序
通過(guò)將模型的預(yù)處理和后處理移至 NVIDIA Triton ,每次升級(jí)模型時(shí),客戶端不需要任何修改。這實(shí)質(zhì)上加快了模型的推出,幫助其更快地達(dá)到生產(chǎn)。
使用單個(gè) GPU 節(jié)點(diǎn)減少網(wǎng)絡(luò)數(shù)據(jù)傳輸開銷
統(tǒng)一的預(yù)處理使輸入的多個(gè)副本能夠與多個(gè)后端識(shí)別模型共享。該過(guò)程在服務(wù)器端使用 GPU 共享內(nèi)存,無(wú)需數(shù)據(jù)傳輸開銷。
圖 2 顯示了該管道可以使用 NVIDIA Triton 業(yè)務(wù)邏輯腳本功能連接多達(dá)九個(gè)模型。
圖 2. NVIDIA Triton 業(yè)務(wù)邏輯腳本的模型管道編排
對(duì)于 2K 分辨率的輸入圖像,每幀的大小為 1920 x 1080 x 3 x 8 = 47 Mb 。假設(shè)全幀速率為 60 fps ,每秒輸入的數(shù)據(jù)量為 1920 x 1080 x 3 x 8 x 60 = 2847 Mb 。在前一個(gè)工作流中,每個(gè)圖像通過(guò)網(wǎng)絡(luò)依次發(fā)送給九個(gè)模型。每秒傳輸?shù)臄?shù)據(jù)為 1920 x 1080 x 3 x 8 x 60 x 9 = 25 Gb = 3 Gb 。
在新的工作流程中,九個(gè)模型與 NVIDIA Triton 業(yè)務(wù)邏輯腳本配合。這意味著模型可以訪問(wèn) GPU 共享存儲(chǔ)器中的圖像,并且圖像不必通過(guò)網(wǎng)絡(luò)發(fā)送。假設(shè) PCIe 帶寬為 160 Gb =每秒 20 Gb ,理論上,如果通過(guò) PCIe 傳輸數(shù)據(jù),每秒生成的數(shù)據(jù)可以節(jié)省 150 毫秒的數(shù)據(jù)傳輸時(shí)間。
假設(shè)可用帶寬為 16 Gb =每秒 2 Gb ,理論上,如果數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸,每秒生成的數(shù)據(jù)可以節(jié)省 1500 毫秒的數(shù)據(jù)傳輸時(shí)間。所有這些都會(huì)加快工作流程。
使用圖像壓縮節(jié)省網(wǎng)絡(luò)傳輸
為了進(jìn)行準(zhǔn)確的模型預(yù)測(cè),輸入圖像必須為 1920 x 1080 x 3 x 8 字節(jié),并且必須通過(guò)網(wǎng)絡(luò)傳輸。在引入服務(wù)器端預(yù)處理之后,可以在允許的精度損失范圍內(nèi)將原始圖像更改為壓縮的三通道 720 像素圖像( 1280 x 720 x 3 )。
因此,只需幾百 KB 即可傳輸壓縮圖像的字節(jié),并在服務(wù)器上以最小的精度損失將大小調(diào)整為 1920 x 1080 x 3 x 8 字節(jié)。這導(dǎo)致了額外的網(wǎng)絡(luò)傳輸節(jié)省,加快了工作流程。
NADP 推理平臺(tái)中的易集成性
NIO 目前基于 NVIDIA Triton 的推理平臺(tái)是其自動(dòng)駕駛開發(fā)平臺(tái)( NADP )的關(guān)鍵組件,用于其自動(dòng)駕駛解決方案。
由于 NIO 平臺(tái)構(gòu)建在 Kubernetes ( K8s )上, NVIDIA Triton 必須與 Kubernete 良好集成。工作流程的組件圍繞 NVIDIA Triton 實(shí)現(xiàn)為 K8s CRD (本地和自定義)。
圖 3.NIO 在 Kubernetes 中的機(jī)器學(xué)習(xí)工作流
持續(xù)集成/持續(xù)交付( CI / CD )
Argo 是 Kubernetes 中用于協(xié)調(diào)工作流的引擎。它有助于開發(fā)、量化、訪問(wèn)、云部署、壓力測(cè)試和發(fā)布中涉及的所有組件的 CI / CD 。 NVIDIA Triton 通過(guò)在加載模型時(shí)觸發(fā)工作流中的下一步來(lái)幫助 CI / CD 。
此外, NVIDIA Triton Docker 容器的使用有助于在開發(fā)、測(cè)試和部署環(huán)境中實(shí)現(xiàn)一致的功能。
將 Jupyter 環(huán)境無(wú)縫集成到 NVIDIA Triton 圖像中。 Jupyter 為需要在線調(diào)試或離線復(fù)制的復(fù)雜問(wèn)題提供了一個(gè)方便的開發(fā)環(huán)境。
易用 Istio 部署
NVIDIA Triton 本機(jī)支持與應(yīng)用程序通信的 gRPC 協(xié)議。然而,由于 Kubernetes 本地服務(wù)無(wú)法為 gRPC 提供有效的請(qǐng)求級(jí)負(fù)載平衡, NVIDIA Triton 與 Istio 服務(wù)網(wǎng)格集成。 Istio 用于對(duì) NVIDIA Triton 推理服務(wù)器的流量進(jìn)行負(fù)載平衡,并通過(guò) NVIDIA Triton 的活躍度/就緒性探針監(jiān)測(cè)服務(wù)的運(yùn)行狀況。
阿波羅配置管理易于使用
阿波羅配置中心用于基于模型名稱的服務(wù)發(fā)現(xiàn)。用戶可以訪問(wèn)模型,而不知道模型部署的特定域名。結(jié)合 NVIDIA Triton 模型存儲(chǔ)庫(kù),用戶可以直接觸發(fā)模型的部署。
普羅米修斯和格拉法納的指標(biāo)
NVIDIA Triton 基于模型維度提供了一整套模型服務(wù)指標(biāo)。例如, NVIDIA Triton 可以區(qū)分推理請(qǐng)求排隊(duì)時(shí)間和 GPU 計(jì)算時(shí)間,從而實(shí)現(xiàn)在線模型服務(wù)性能的細(xì)粒度診斷和分析,而無(wú)需進(jìn)入調(diào)試模式。
由于 NVIDIA Triton 支持云原生主流 Prometheus / Grafana ,用戶可以輕松配置每個(gè)維度的儀表板和警報(bào),為高服務(wù)可用性提供指標(biāo)支持。
關(guān)鍵要點(diǎn)
NIO 的優(yōu)化工作流程集成了 NVIDIA Triton 推理服務(wù)器,使一些核心管道的延遲減少了 6 倍。這將總吞吐量提高了 5 倍。
通過(guò)使用 NVIDIA Triton 管道編排功能將預(yù)處理邏輯移至 GPU , NIO 實(shí)現(xiàn)了:
更快的圖像處理
釋放 CPU 容量
減少網(wǎng)絡(luò)傳輸開銷
更高的推理吞吐量
NIO 使用 NVIDIA Triton 推理服務(wù)器實(shí)現(xiàn)了 AI 推理工作流加速。 NVIDIA Triton 也很容易集成到基于 Kubernetes 的強(qiáng)大可擴(kuò)展解決方案中。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4986瀏覽量
103066 -
AI
+關(guān)注
關(guān)注
87文章
30896瀏覽量
269108 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
784文章
13812瀏覽量
166461
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論