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

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

3天內(nèi)不再提示

NADP加Triton搭建穩(wěn)定高效的推理平臺

星星科技指導員 ? 來源:NVIDIA ? 作者:郭城 ? 2022-10-12 09:32 ? 次閱讀

業(yè)務背景

蔚來自動駕駛研發(fā)平臺(NADP)是著力服務于自動駕駛核心業(yè)務方向的研發(fā)平臺。平臺化的推理能力作為常規(guī)機器學習平臺的重要組成部分,也是NADP所重點建設和支持的能力之一。 NADP所支持的推理業(yè)務,整體上有以下幾個特性:

10%的業(yè)務產(chǎn)生90%的流量(優(yōu)化重點業(yè)務收益大);

追求引擎層的高性能;

要求在算法框架,量化加速維度盡可能強的擴展性,為算法業(yè)務的框架選型,與后續(xù)可能的加速方案都提供盡可能的兼容;

多個模型有業(yè)務關聯(lián),希望能夠滿足多個模型之間串行/或者并行的調(diào)度。

經(jīng)過我們從眾多方案的對比和篩選,NVIDIA Triton 能夠在上述每一個方面都能滿足我們的需求。比如,Triton 支持多個模型或模塊進行DAG式的編排。 其云原生友好的部署方式,能夠很輕的做到多GPU、多節(jié)點的擴展。從生產(chǎn)級別實踐的穩(wěn)定性角度來看,即便是一個優(yōu)秀的開源方案,作為平臺級的核心組件,也是需要長時間,高強度的驗證,才能放心的推廣到最核心業(yè)務上。經(jīng)過半年的使用,Triton證明了自己,在保證強大功能的前提下,也提供了很好的穩(wěn)定性。另外,NVIDIA有著優(yōu)秀的生態(tài)建設與社區(qū)支持 ,提供了優(yōu)質(zhì)的Triton社區(qū)內(nèi)容和文檔共享,保障了NADP的核心推理業(yè)務遷移到Triton方案上,并平穩(wěn)運行至今。

poYBAGNGGS-ARhLyAACjT3LiCaQ366.jpg

引入Triton之后的推理平臺架構(gòu)

pYYBAGNGGS-ARRlQAACOCvqTxP4782.jpg

Triton 在設計之初,就融入了云原生的設計思路,為后面逐步圍繞 Triton 搭建完整的云原生平臺性推理解決方案提供了相當大的便利。

作為NADP推理平臺的核心組件,Triton 與 NADP 的各個組件形成了一套完整的推理一站式解決方案。接下來,將集中在以下4個方面具體敘述Triton 如何在NADP推理平臺中提供助力:

集成效率

高性能

易用性

高可用

一、集成效率

Triton + 模型倉庫 + Argo

Triton 與自建模型倉庫深度結(jié)合,配合 workflow 方案 Argo, 完成全自動化的生產(chǎn),量化,準入,云端部署,壓測,上線的CICD流程。

具體來講:

模型上傳模型倉庫自動觸發(fā)配置好的workflow;

創(chuàng)建與部署環(huán)境硬件環(huán)境一致容器,自動量化加速;

得益于Triton生態(tài)中提供的perf analyzer, 可以像使用jMeter 一樣方便的按照模型的Input Tensor Shape 自動生成請求與指定的負載。其壓測出的服務化之后模型的最大吞吐,很接近真實部署場景。

Triton + Jupyter

在Triton鏡像中集成了Jupyter 組件之后,提供開箱即用的開發(fā)調(diào)試環(huán)境,在遇到復雜問題需要進行線上debug 或者再線下復現(xiàn)問題時, Jupyter 能夠提供一個方便的開發(fā)環(huán)境供用戶進行調(diào)試。

二、高性能

Triton + Istio

當前NADP服務的業(yè)務場景,服務流量大,主要傳輸cv場景視頻文件+高分辨率圖片,必須使用高性能rpc協(xié)議進行加速,而且推理服務引擎必須對現(xiàn)有的L4 Load Balancer 和服務發(fā)現(xiàn)方案有比較好的支持性。

而Triton 原生支持gRPC的方案進行訪問,并且能夠很方便的部署為k8s容器。但因為k8s原生service 不能夠很好的對gRPC進行請求級別的負載均衡(僅支持長連接的負載均衡),故在引入了isito 之后,Triton就能夠在傳輸協(xié)議上滿足我們的需求。

具體來講:

集群內(nèi)容器直接訪問只需要一次跨物理機網(wǎng)絡轉(zhuǎn)發(fā);

完美復用k8s 的readiness 狀態(tài),通過和Triton 節(jié)點的liveness/readniess探針進行服務的健康監(jiān)控;

后續(xù)結(jié)合模型倉庫/配置中心提供用戶更友好的服務發(fā)現(xiàn)方式:基于域名的服務發(fā)現(xiàn)方案切換為基于模型的服務發(fā)現(xiàn)方案。

三、易用性

Triton + Apollo配置中心

使用Apollo 配置中心,可以極大程度提供更多的便利性。將基于域名的服務發(fā)現(xiàn)提升為基于模型名的服務發(fā)現(xiàn)。用戶將不需要了解模型所部署的具體的域名即可訪問模型。結(jié)合模型倉庫,用戶可以直接觸發(fā)模型的部署。

具體來講:

用戶在模型倉庫操作上線之后,將會將模型的真實域名寫入配置中心;

用戶使用NADP提供的客戶端可以從配置中心獲取到服務的真實域名,并直接訪問服務;

作為下一步規(guī)劃,當前的方案正在逐步遷移到基于開源的model mesh方案的版本上。

四、高可用

Triton + k8s CRD

pYYBAGNGGTKAElNkAAAwmzR461o676.jpg

圍繞Triton 我們搭建了服務我們NIO的推理場景的K8s CRD。它是以下幾個K8s原生CRD或其他自研CRD的組合。而這每一個組件都在一定程度上保障了服務的高可用。

自動擴縮容規(guī)則(HPA Rule):進行基于流量的自動擴縮容,在服務流量上升時自動擴容;

Istio service: 可靠的side car 機制,保障gRPC流量的服務發(fā)現(xiàn)和負載均衡;

Ingress: 多實例部署,動態(tài)擴容的Ingress 節(jié)點,保障跨集群流量的訪問;

k8s deploy: 在一個推理實例內(nèi)管理至少3個Triton Pod,消除了服務的單點問題,并且通過Triton server加載多個模型的功能,實現(xiàn)多模型混布共享GPU算力,而且消除單點的同時不引入額外的GPU資源浪費;

Service Monitor: 用于prometheus 指標的收集,隨時監(jiān)控服務狀態(tài),上報異常信息;

Service Heartbeat Probe:集成了Triton Perf Analyzer的Pod。 Triton 生態(tài)中的Perf Analyzer 工具能夠根據(jù)部署的模型meta信息生成真實請求并部署為主動請求探針,在沒有流量的時候監(jiān)控服務的健康狀態(tài)并主動重啟異常實例,同時上報異常信息。

Triton + Promethus/Grafana

Triton 提供了一套完整的,基于模型維度的模型服務指標。打點幾乎包括了整個服務端推理鏈路的每個關鍵節(jié)點,甚至能夠區(qū)分執(zhí)行推理的排隊時間和計算時間,使得能夠在不需要進入debug 模式的情況下進行細致的線上模型服務性能診斷和分析。另外,因為指標的格式支持了云原生主流的Promethus/Grafana, 用戶能夠非常方便的配置看板和各維度的報警, 為服務的高可用提供指標支持。

模型的級別時延監(jiān)控

poYBAGNGGTOAHYmNAADP6AhkaK0693.jpg

模型的級別的qps監(jiān)控

pYYBAGNGGTSASIxBAAE7-ay86Ik038.jpg

服務業(yè)務場景:數(shù)據(jù)挖掘

目前,NADP數(shù)據(jù)挖掘業(yè)務下的相關模型預測服務已經(jīng)全部遷移至Triton Inference Server,為上百個模型提供了高吞吐預測能力。同時在某些任務基礎上,通過自實現(xiàn)前處理算子、前后處理服務化、BLS串聯(lián)模型等手段,將一些模型任務合并起來,極大的提升了處理效率。

服務端模型前處理

通過將服務的前后處理從客戶端移動到服務端,不僅能夠在網(wǎng)絡傳輸上節(jié)省大量的時間,而且GPU服務端(Triton)可以用Nvjpeg進行GPU解碼,并在GPU上做resize、transpose等處理。能夠大幅加速前處理,明顯減輕client端CPU計算壓力。

業(yè)務流程

poYBAGNGGTWAYXv2AACB6hMcOl8673.jpg

poYBAGNGGTWAen2tAACO5dVYJgo111.jpg

收益

傳壓縮圖片,而非input tensor, 只需要幾百KB就能將一張2K原圖bytes傳輸過去, 以當前onemodel 2k 輸入圖片為例,模型輸入必須為1920*1080*3*8 byte 大小,而且必須走網(wǎng)絡,而在加入服務端后處理之后,在精度損失允許的范圍內(nèi),可以將原圖改為傳壓縮過的三通道720P jpg圖片(1280*720*3),在服務端在resize 成1920*1080*3*8 byte, 節(jié)約大量帶寬;

服務端前處理完成后將GPU顯存指針直接送入模型預測,還能省去Host2Device的拷貝;

服務端可以封裝模型的后處理,使得每次模型升級的時候,client端不用感知到服務后處理的變化,從而不需要修改處理邏輯代碼;

使用nvJpeg,DALI等使用GPU算力的組件來進行前后處理,加速整體的數(shù)據(jù)處理速度。

多模型DAG式編排

一個統(tǒng)一的前處理模型,一份輸入復制多份到多個后端識別模型,該流程在服務端單GPU節(jié)點內(nèi)完成,不需要走網(wǎng)絡,在Triton + bls/ ensemble 的支持下,甚至可以節(jié)約H2D, D2H 拷貝;

統(tǒng)一的后處理模型,動機與上述類似。

業(yè)務流程

pYYBAGNGGTaAfQvLAABP-2BezZo621.jpg

收益

當業(yè)務邏輯強制使用多模型DAG式編排多個模型之后,每次產(chǎn)生模型的輸入/輸出都可以疊加服務端前后處理改造的收益,當前部署的triton 服務最多使用BLS串聯(lián)了9個模型;

對于2k 分辨率的輸入來講,每幀圖片的大小為1920 * 1080 * 3 * 8 = 47Mb, 假設全幀率為60fps, 則每秒輸入數(shù)據(jù)量為1920 * 1080 * 3 * 8 * 60 = 2847 Mb。 如果使用bls 串聯(lián)了9個模型,則每秒需要產(chǎn)生的數(shù)據(jù)傳輸量為 1920 * 1080 * 3 * 8 * 60 * 9 = 25 Gb = 3GB;

如果使用PCIe傳輸,假設PCIe帶寬 為160Gb = 20GB每秒, 則理論上每秒產(chǎn)生的數(shù)據(jù)可以節(jié)約150ms在數(shù)據(jù)傳輸上;

如果使用網(wǎng)絡傳輸,假設可用帶寬為16Gb=2Gb每秒,則理論上每秒產(chǎn)生的數(shù)據(jù)可以節(jié)約1500ms在數(shù)據(jù)傳輸上。

總結(jié)和展望

NIO 基于 NVIDIA Triton搭建的推理服務平臺,在數(shù)據(jù)挖掘業(yè)務場景下,通過上文詳細介紹的 “服務器端模型前處理”和“多模型DAG式編排”,GPU資源平均節(jié)省24%;在部分核心pipeline上,吞吐能力提升為原來的 5倍,整體時延降低為原來的 1/6。

另外,NIO 當前已經(jīng)實現(xiàn)了輸入為原始視頻而非抽幀后圖片的預研版本工作流上線,但只承載了小部分流量。 而主要流量還是使用jpg壓縮圖片作為輸入的版本。當前只是使用本地腳本完成了數(shù)據(jù)加載和模型推理,后續(xù)會逐步地將當前流程遷移到Triton的模型編排能力上。

關于作者

郭城是NIO自動駕駛研發(fā)平臺(NADP)的高級工程師,負責為NIO自動駕駛搭建可靠高效的推理平臺和深度學習模型CICD工具鏈。在加入NIO之前,他在小米技術(shù)委員會參與了小米集團機器學習平臺的搭建。他個人對ML-ops、以及所有其他深度學習工程相關的主題感興趣。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4816

    瀏覽量

    102636
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4632

    瀏覽量

    128448
  • 自動駕駛
    +關注

    關注

    782

    文章

    13532

    瀏覽量

    165742
收藏 人收藏

    評論

    相關推薦

    NADP+Triton搭建穩(wěn)定高效推理平臺

    業(yè)務背景 蔚來自動駕駛研發(fā)平臺NADP)是著力服務于自動駕駛核心業(yè)務方向的研發(fā)平臺。平臺化的推理能力作為常規(guī)機器學習
    的頭像 發(fā)表于 10-18 09:24 ?1426次閱讀
    <b class='flag-5'>NADP+Triton</b><b class='flag-5'>搭建</b><b class='flag-5'>穩(wěn)定</b><b class='flag-5'>高效</b>的<b class='flag-5'>推理</b><b class='flag-5'>平臺</b>

    如何在RK3399這一 Arm64平臺搭建Tengine AI推理框架呢

    Tengine是什么呢?如何在RK3399這一 Arm64平臺搭建Tengine AI推理框架呢?
    發(fā)表于 03-04 12:31

    使用MIG和Kubernetes部署Triton推理服務器

      NVIDIA Triton 推理服務器是一款開源人工智能模型服務軟件,可簡化在生產(chǎn)中大規(guī)模部署經(jīng)過培訓的人工智能模型。對于服務器管理的任何模型,客戶端可以遠程向提供的 HTTP 或 gRPC 端點發(fā)送推斷請求。
    的頭像 發(fā)表于 04-07 09:54 ?3269次閱讀

    NVIDIA Triton推理服務器簡化人工智能推理

    GKE 的 Triton 推理服務器應用程序是一個 helm chart 部署程序,可自動安裝和配置 Triton ,以便在具有 NVIDIA GPU 節(jié)點池的 GKE 集群上使用,包括
    的頭像 發(fā)表于 04-08 16:43 ?2141次閱讀
    NVIDIA <b class='flag-5'>Triton</b><b class='flag-5'>推理</b>服務器簡化人工智能<b class='flag-5'>推理</b>

    如何使用Triton進行高效推理部署

    一個完整的醫(yī)療影像推理流程一般包含數(shù)據(jù)的前處理、AI 推理以及數(shù)據(jù)后處理這幾部分。
    的頭像 發(fā)表于 04-10 15:06 ?2894次閱讀

    使用NVIDIA Triton推理服務器簡化邊緣AI模型部署

      NVIDIA Triton 有助于在每個數(shù)據(jù)中心、云和嵌入式設備中實現(xiàn)標準化的可擴展生產(chǎn) AI 。它支持多個框架,在 GPU 和 DLA 等多個計算引擎上運行模型,處理不同類型的推理查詢。通過與 NVIDIA JetPack 的集成, NVIDIA
    的頭像 發(fā)表于 04-18 15:40 ?2661次閱讀
    使用NVIDIA <b class='flag-5'>Triton</b><b class='flag-5'>推理</b>服務器簡化邊緣AI模型部署

    NVIDIA Triton助力騰訊PCG加速在線推理

      借助NVIDIA Triton 推理框架,配合 DALI/FIL/Python 等Backend,以及 TensorRT,整體推理服務的吞吐能力最大提升 6 倍,延遲最大降低 40%。
    的頭像 發(fā)表于 05-20 15:25 ?2273次閱讀
    NVIDIA <b class='flag-5'>Triton</b>助力騰訊PCG加速在線<b class='flag-5'>推理</b>

    基于NVIDIA Triton的AI模型高效部署實踐

    NVIDIA Triton 推理服務器(以前稱為 TensorRT 推理服務器)是一款開源軟件,可簡化深度學習模型在生產(chǎn)環(huán)境中的部署。借助 Triton
    的頭像 發(fā)表于 06-28 15:49 ?1579次閱讀

    騰訊云TI平臺利用NVIDIA Triton推理服務器構(gòu)造不同AI應用場景需求

    騰訊云 TI 平臺 TI-ONE 利用 NVIDIA Triton 推理服務器構(gòu)造高性能推理服務部署平臺,使用戶能夠非常便捷地部署包括 TN
    的頭像 發(fā)表于 09-05 15:33 ?1826次閱讀

    蔚來基于NVIDIA Triton搭建推理服務平臺

    在近日舉行的 GTC 大會上,蔚來 AI 平臺負責人白宇利帶來非常有價值的分享,他首次對外透露了蔚來自研的全棧式自動駕駛系統(tǒng)(NAD)的部署和開發(fā)情況,同時也將蔚來自動駕駛研發(fā)平臺NADP)這個神秘的“Peta Factory
    的頭像 發(fā)表于 10-09 10:18 ?818次閱讀

    使用NVIDIA Triton解決人工智能推斷挑戰(zhàn)

    Triton高效的多模型推理帶來了一種新的模型編排服務。該軟件應用程序目前處于早期使用階段,有助于以資源高效的方式簡化 Kubernetes 中
    的頭像 發(fā)表于 10-11 14:24 ?1163次閱讀
    使用NVIDIA <b class='flag-5'>Triton</b>解決人工智能推斷挑戰(zhàn)

    NVIDIA Triton推理服務器的功能與架構(gòu)簡介

    前面文章介紹微軟 Teams 會議系統(tǒng)、微信軟件與騰訊 PCG 服務三個 Triton 推理服務器的成功案例,讓大家對 Triton 有初步的認知,但別誤以為這個軟件只適合在大型的服務類應用中使用,事實上
    的頭像 發(fā)表于 11-02 10:44 ?2410次閱讀

    如何最大化推理性能?Triton 社區(qū)技術(shù)交流活動與您暢聊

    、NVIDIA 的技術(shù)專家將帶來 AI Infra 、 推理引擎 相關的專題分享,包括目前各企業(yè)面臨的模型推理挑戰(zhàn)、Triton 的應用及落地的具體方案等,現(xiàn)身說法,干貨十足。此外,還有來自蔚來
    的頭像 發(fā)表于 02-15 16:10 ?356次閱讀

    如何使用NVIDIA Triton 推理服務器來運行推理管道

    使用集成模型在 NVIDIA Triton 推理服務器上為 ML 模型管道提供服務
    的頭像 發(fā)表于 07-05 16:30 ?1338次閱讀
    如何使用NVIDIA <b class='flag-5'>Triton</b> <b class='flag-5'>推理</b>服務器來運行<b class='flag-5'>推理</b>管道

    使用NVIDIA Triton推理服務器來加速AI預測

    這家云計算巨頭的計算機視覺和數(shù)據(jù)科學服務使用 NVIDIA Triton 推理服務器來加速 AI 預測。
    的頭像 發(fā)表于 02-29 14:04 ?506次閱讀