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

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

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

3天內不再提示

使用NVIDIA TensorRT和NVIDIA Triton優化和提供模型

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-10-10 14:25 ? 次閱讀

假設您已經使用 PyTorch 、 TensorFlow 或您選擇的框架訓練了您的模型,并對其準確性感到滿意,并且正在考慮將其部署為服務。有兩個重要的目標需要考慮:最大化模型性能和構建將其部署為服務所需的基礎設施。這篇文章討論了這兩個目標。

通過在三個堆棧級別上加速模型,可以從模型中擠出更好的性能:

硬件加速

軟件加速

算法網絡加速。

NVIDIA GPU深度學習從業者在硬件加速方面的首選,其優點在業界得到廣泛討論。

關于 GPU 軟件加速的討論通常圍繞庫,如 cuDNN 、 NCCL 、 TensorRT 和其他 CUDA-X 庫。

算法或網絡加速 圍繞量化和知識提取等技術的使用,這些技術本質上是對網絡本身進行修改,其應用高度依賴于您的模型。

這種加速需求主要是由業務問題驅動的,如降低成本或通過減少延遲來改善最終用戶體驗,以及戰術考慮因素,如在計算資源較少的邊緣設備上部署模型。

服務深度學習模型

在模型加速后,下一步是構建一個服務服務來部署您的模型,這會帶來一系列獨特的挑戰。這是一個非詳盡列表:

該服務能否在不同的硬件平臺上工作?

它會處理我必須同時部署的其他模型嗎?

服務是否可靠?

如何減少延遲?

使用不同的框架和技術堆棧訓練模型;我該如何應對?

如何縮放?

這些都是有效的問題,解決每一個問題都是一個挑戰。

pYYBAGNDuuqAVceWAADqD1qzO14050.png

圖 1 。使用 TensorRT 和 NVIDIA Triton ?聲波風廓線儀優化和部署 DL 模型

解決方案概述

本文討論了使用 NVIDIA TensorRT 及其 PyTorch 和 TensorFlow 的框架集成、 NVIDIA Triton 推理服務器和 NVIDIA GPU 來加速和部署模型。

NVIDIA TensorRT 公司

NVIDIA TensorRT 是一個用于高性能深度學習推理的 SDK 。它包括深度學習推理優化器和運行時,為深度學習推理應用程序提供低延遲和高吞吐量。

通過其與 PyTorch 和 TensorFlow 的框架集成,只需一行代碼就可以將推理速度提高 6 倍。

NVIDIA Triton 推理服務器

NVIDIA Triton 推理服務器是一種開源的推理服務軟件,提供單一的標準化推理平臺。它可以支持在數據中心、云、嵌入式設備或虛擬化環境中的任何 GPU 或基于 CPU 的基礎設施上對來自多個框架的模型進行推理。

有關更多信息,請參閱以下視頻:

介紹用于高性能深度學習推理的 NVIDIA TensorRT

NVIDIA Torch TensorRT 入門

TensorFlow TensorRT 入門

Triton 簡化推理的五大原因

工作流概述

在深入細節之前,下面是總體工作流程。接下來,請參閱以下參考資料

TensorRT

Torch-TensorRT

Tensorflow-TensorRT

圖 1 顯示了您必須完成的步驟。

poYBAGNDuuuAUevcAAGU6D844Uo794.png

圖 2 :使用 TensorRT 優化模型并使用 NVIDIA Triton ?聲波風廓線儀的總體工作流程

在你開始跟隨之前,準備好你訓練過的模型。

第 1 步: 優化模型。您可以使用 TensorRT 或其框架集成來實現這一點。如果選擇 TensorRT ,則可以使用 trtexec 命令行界面。對于與 TensorFlow 或 Pytorch 的框架集成,可以使用單行 API

第 2 步: 構建模型存儲庫。啟動 NVIDIA Triton 推理服務器需要一個模型存儲庫。該存儲庫包含要提供服務的模型、指定詳細信息的配置文件以及任何必需的元數據。

第 3 步: 啟動服務器。

第 4 步: 最后,我們提供了簡單而健壯的 HTTP 和 gRPC API ,您可以使用它們來查詢服務器!

在本文中,使用 NGC 中的 Docker 容器。您可能需要創建一個帳戶并獲得 API key 來訪問這些容器。現在,這里是細節!

使用 TensorRT 加速模型

TensorRT 通過圖優化和量化加速模型。您可以通過以下任何方式獲得這些好處:

trtexec CLI 工具

Python / C ++ API

Torch- TensorRT (與 PyTorch 集成)

TensorFlow- TensorRT (與 TensorFlow 集成)

poYBAGNDuuuATayeAAFcLIJiBhw280.png

圖 3 。使用 TensorRT 或其框架集成優化模型

雖然 TensorRT 在本機上支持圖形優化的更大定制,但框架集成為生態系統的新開發人員提供了易用性。由于選擇用戶可能采用的路由取決于其網絡的特定需求,我們希望列出所有選項。有關更多信息,請參閱 使用 NVIDIA TensorRT 加速深度學習推理(更新) 。

對于 TensorRT ,有幾種方法可以構建 TensorRT 引擎。對于本文,請使用 trtexec CLI 工具。如果您想要一個腳本來導出一個預訓練的模型,請使用 export_resnet_to_onnx.py 示例。

docker run -it --gpus all -v /path/to/this/folder:/trt_optimize nvcr.io/nvidia/tensorrt:-py3 trtexec --onnx=resnet50.onnx \ --saveEngine=resnet50.engine \ --explicitBatch \ --useCudaGraph

要使用 FP16 ,請在命令中添加--fp16。在繼續下一步之前,您必須知道網絡輸入層和輸出層的名稱,這是定義 NVIDIA Triton 模型存儲庫配置時所必需的。一種簡單的方法是使用polygraphy,它與 TensorRT 容器一起打包。

polygraphy inspect model resnet50.engine --mode=basic

ForTorch TensorRT ,拉動NVIDIA PyTorch 容器,安裝了 TensorRT 和火炬 TensorRT 。要繼續,請使用sample。有關更多示例,請訪問Torch-TensorRTGitHub repo 。

#  is the yy:mm for the publishing tag for NVIDIA's Pytorch # container; eg. 21.12 docker run -it --gpus all -v /path/to/this/folder:/resnet50_eg nvcr.io/nvidia/pytorch:-py3 python torch_trt_resnet50.py

為了擴展細節,您基本上使用 Torch- TensorRT 用 TensorRT 編譯 PyTorch 模型。在幕后,您的模型被轉換為 TorchScript 模塊,然后對 TensorRT 支持的操作進行優化。有關更多信息,請參閱PyTorch – TensorRT 文件.

model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet50', pretrained=True).eval().to("cuda") # Compile with Torch TensorRT;
trt_model = torch_tensorrt.compile(model, inputs= [torch_tensorrt.Input((1, 3, 224, 224))], enabled_precisions= { torch_tensorrt.dtype.float32} # Runs with FP32; can use FP16
) # Save the model
torch.jit.save(trt_model, "model.pt")

對于 TensorFlow TensorRT ,過程基本相同。首先,拉動NVIDIA TensorFlow Container,它與 TensorRT 和 TensorFlow TensorRT 一起提供。我們以short scripttf_trt_resnet50.py為例。有關更多示例,請參閱TensorFlow TensorRTgithub 回購。

#  is the yy:mm for the publishing tag for the NVIDIA Tensorflow
# container; eg. 21.12 docker run -it --gpus all -v /path/to/this/folder:/resnet50_eg nvcr.io/nvidia/tensorflow:-tf2-py3 python tf_trt_resnet50.py

同樣,您基本上是使用 TensorFlow- TensorRT 用 TensorRT 編譯 TensorFlow 模型。在幕后,您的模型被分割成包含 TensorRT 支持的操作的子圖,然后進行優化。有關更多信息,請參閱張量流 – TensorRT 文檔.

# Load model
model = ResNet50(weights='imagenet')
model.save('resnet50_saved_model') # Optimize with tftrt converter = trt.TrtGraphConverterV2(input_saved_model_dir='resnet50_saved_model')
converter.convert() # Save the model
converter.save(output_saved_model_dir='resnet50_saved_model_TFTRT_FP32')

現在,您已經使用 TensorRT 優化了模型,可以繼續下一步,設置 NVIDIA Triton ?聲波風廓線儀。

設置 NVIDIA Triton 推理服務器

NVIDIA Triton 推理服務器用于簡化生產環境中大規模部署模型或模型集合。為了實現易用性和靈活性,使用 NVIDIA Triton 圍繞著構建一個模型存儲庫,其中包含模型、用于部署這些模型的配置文件以及其他必要的元數據。

看看最簡單的例子。圖 4 有四個關鍵點。config.pbtxt文件( a )是前面提到的配置文件,其中包含模型的配置信息。

圖 4 。設置 NVIDIA Triton 工作流

此配置文件中有幾個要點需要注意:

Name: 此字段定義模型的名稱,并且在模型存儲庫中必須是唯一的。

Platform: ( c )此字段用于定義模型的類型:是 TensorRT 引擎、 PyTorch 模型還是其他模型。

輸入和輸出: ( d )這些字段是必需的,因為 NVIDIA Triton 需要關于模型的元數據。本質上,它需要網絡輸入和輸出層的名稱以及所述輸入和輸出的形狀。對于 TorchScript ,由于沒有輸入和輸出層的名稱,請使用input__0。數據類型設置為 FP32 ,輸入格式指定為 3 、 224 、 224 的(通道、高度、寬度)。

該集合中的 TensorRT 、 Torch TensorRT 和 TensorFlow- TensorRT 工作流之間存在微小差異,其歸結為指定平臺并更改輸入和輸出層的名稱。我們為所有三個( TensorRT 、 Torch-TensorRT 或 TensorFlow-TensorRT )制作了示例配置文件。最后,添加經過訓練的模型( b )。

現在已經構建了模型存儲庫,您可以啟動服務器了。為此,您只需拉動容器并指定模型存儲庫的位置。

docker run --gpus=1 --rm -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /full/path/to/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:-py3 tritonserver --model-repository=/models

隨著服務器的啟動和運行,您最終可以構建一個客戶端來滿足推理請求!

設置 NVIDIA Triton 客戶端

管道中的最后一步是查詢 NVIDIA Triton 推理服務器。您可以通過 HTTP 或 gRPC 請求向服務器發送推斷請求。在深入細節之前,安裝所需的依賴項并下載一個示例圖像。

pip install torchvision
pip install attrdict
pip install nvidia-pyindex
pip install tritonclient[all] wget -O img1.jpg "https://bit.ly/3phN2jy"

在本文中,使用 Torchvision 將原始圖像轉換為適合 ResNet-50 模型的格式。客戶不一定需要它。我們有更全面的 image client 和為 triton-inference-server/client GitHub repo 中可用的標準用例預先制作的大量不同的客戶端。然而,對于這個解釋,我們將使用一個簡單得多的瘦客戶端來演示 API 的核心。

好的,現在您已經準備好查看 HTTP 客戶端(圖 5 )。下載客戶端腳本:

TensorRT

Torch-TensorRT

TensorFlow-TensorRT

圖 5 。客戶端工作流

構建客戶端有以下步驟。首先,在 NVIDIA Triton 推理服務器和客戶端之間建立連接。

triton_client = httpclient.InferenceServerClient(url="localhost:8000")

其次,傳遞圖像并指定模型的輸入和輸出層的名稱。這些名稱應該與您在創建模型存儲庫時構建的配置文件中定義的規范一致。

test_input = httpclient.InferInput("input__0", transformed_img.shape, datatype="FP32")
test_input.set_data_from_numpy(transformed_img, binary_data=True) test_output = httpclient.InferRequestedOutput("output__0", binary_data=True, class_count=1000)

最后,向 NVIDIA Triton 推理服務器發送推理請求。

results = triton_client.infer(model_name="resnet50", inputs=[test_input], outputs=[test_output])

這些代碼示例討論了 Torch- TensorRT 模型的細節。不同模型(在構建客戶端時)之間的唯一區別是輸入和輸出層名稱。我們用 Python 、 C ++、 Go 、 Java 和 JavaScript 構建了 NVIDIA Triton 客戶端。有關更多示例,請參閱 triton-inference-server/client GitHub repo 。

結論

這篇文章介紹了一個端到端的推理管道,您首先使用 TensorRT 、 Torch TensorRT 和 TensorFlow TensorRT 優化訓練模型,以最大限度地提高推理性能。然后,通過設置和查詢 NVIDIA Triton 推理服務器,對服務進行建模。

關于作者

Tanay Varshney 是 NVIDIA 的一名深入學習的技術營銷工程師,負責廣泛的 DL 軟件產品。他擁有紐約大學計算機科學碩士學位,專注于計算機視覺、數據可視化和城市分析的橫斷面。

Jay Rodge 是 NVIDIA 的產品營銷經理,負責深入學習和推理產品,推動產品發布和產品營銷計劃。杰伊在芝加哥伊利諾伊理工學院獲得計算機科學碩士學位,主攻計算機視覺和自然語言處理。在 NVIDIA 之前,杰伊是寶馬集團的人工智能研究實習生,為寶馬最大的制造廠使用計算機視覺解決問題。

Nick Comly 是 NVIDIA 深度學習推理的產品經理。他致力于將 TensorRT 推理優化的功能直接應用于 PyTorch 、 TensorFlow 、 MXNet 、 ONNX 和飛漿等框架。 Nick 在斯坦福大學獲得碩士學位,專攻深度學習和優化。

審核編輯:郭婷

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

    關注

    14

    文章

    4940

    瀏覽量

    102820
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4702

    瀏覽量

    128710
  • 服務器
    +關注

    關注

    12

    文章

    9024

    瀏覽量

    85187
收藏 人收藏

    評論

    相關推薦

    在Ubuntu上使用Nvidia GPU訓練模型

    問題最近在Ubuntu上使用Nvidia GPU訓練模型的時候,沒有問題,過一會再訓練出現非常卡頓,使用nvidia-smi查看發現,顯示GPU的風扇和電源報錯:解決方案自動風扇控制在nvid
    發表于 01-03 08:24

    NVIDIA宣布其AI推理平臺的重大更新

    軟件的新功能,該軟件為所有AI模型和框架提供跨平臺推理;同時也包含對NVIDIA TensorRT的更新,該軟件優化AI
    的頭像 發表于 11-12 14:42 ?1910次閱讀

    NVIDIA Triton推理服務器幫助Teams使用認知服務優化語音識別模型

    Microsoft Teams借助AI生成的實時字幕和轉錄功能,幫助全球學生和職場人士順利進行在線會議。用于訓練的NVIDIA AI計算技術和用于推理語音識別模型NVIDIA Triton
    的頭像 發表于 01-04 17:45 ?1696次閱讀

    Microsoft使用NVIDIA Triton加速AI Transformer模型應用

    Microsoft 的目標是,通過結合使用 Azure 與 NVIDIA GPU 和 Triton 推理軟件,率先將一系列強大的 AI Transformer 模型投入生產用途。
    的頭像 發表于 04-02 13:04 ?1740次閱讀

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

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

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

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

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

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

    NVIDIA 招聘 | NVIDIA 最新熱招崗位!一起迎接未來加速計算!

    / LLM - TensorRT 工作內容: 圍繞深度學習端到端 AI 軟件全棧,包括但不限于:訓練框架、核心計算庫、推理優化工具(比如 TensorRT)、AI 編譯器、模型壓縮等
    的頭像 發表于 06-14 18:35 ?928次閱讀

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

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

    NVIDIA TensorRT與Apache Beam SDK的集成

    使用 NVIDIA TensorRT 在 Apache Beam 中簡化和加速機器學習預測
    的頭像 發表于 07-05 16:30 ?421次閱讀

    即刻報名第三屆 NVIDIA TensorRT Hackathon 生成式 AI 模型優化

    近日,由阿里云及 NVIDIA 聯合舉辦的?“NVIDIA TensorRT Hackathon 2023 生成式 AI 模型優化賽”已正式
    的頭像 發表于 07-17 19:45 ?544次閱讀
    即刻報名第三屆 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> Hackathon 生成式 AI <b class='flag-5'>模型</b><b class='flag-5'>優化</b>賽

    學習資源 | NVIDIA TensorRT 全新教程上線

    NVIDIA TensorRT ? 是一個用于高效實現已訓練好的深度學習模型推理過程的軟件開發工具包,內含推理優化器和運行環境兩部分,其目的在于讓深度學習
    的頭像 發表于 08-04 17:45 ?804次閱讀
    學習資源 | <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> 全新教程上線

    現已公開發布!歡迎使用 NVIDIA TensorRT-LLM 優化大語言模型推理

    NVIDIA 于 2023 年 10 月 19 日公開發布 TensorRT-LLM ,可在 NVIDIA GPU 上加速和優化最新的大語言模型
    的頭像 發表于 10-27 20:05 ?936次閱讀
    現已公開發布!歡迎使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b>-LLM <b class='flag-5'>優化</b>大語言<b class='flag-5'>模型</b>推理

    NVIDIA加速微軟最新的Phi-3 Mini開源語言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語言模型TensorRT-LLM
    的頭像 發表于 04-28 10:36 ?489次閱讀

    NVIDIA助力提供多樣、靈活的模型選擇

    在本案例中,Dify 以模型中立以及開源生態的優勢,為廣大 AI 創新者提供豐富的模型選擇。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和
    的頭像 發表于 09-09 09:19 ?436次閱讀