女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

3天內不再提示

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

NVIDIA英偉達 ? 來源:NVIDIA英偉達 ? 作者:NVIDIA英偉達 ? 2022-04-10 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一個完整的醫(yī)療影像推理流程一般包含數(shù)據(jù)的前處理、AI 推理以及數(shù)據(jù)后處理這幾部分。通常情況下,我們可以通過 TensorRT, TensorFlow 或者 PyTorch 這些框架來實現(xiàn) GPU 加速的 AI 推理部分,然而數(shù)據(jù)前后處理部分往往是放在 CPU 上執(zhí)行的。對于一些比較大的數(shù)據(jù),比如 CT 或者 MR 這種 3D 圖像,CPU 上的數(shù)據(jù)前后處理會成為整個推理流程的瓶頸,導致推理的時延變長,GPU 使用效率不高。醫(yī)療影像推理的另一個需要考慮的問題是如何實現(xiàn)高效的部署。我們往往需要部署多個醫(yī)療影像 AI 應用,那么如何去調度多個模型,如何并發(fā)處理多個請求,并充分利用 GPU 資源成為挑戰(zhàn)。

什么是 MONAI

MONAI 是一個專門針對醫(yī)療圖像的深度學習開源框架。MONAI 致力于:

  • 發(fā)展一個學術界、工業(yè)界和臨床研究人員共同合作的社區(qū);

  • 為醫(yī)療圖像創(chuàng)建最先進的端到端工作流;

  • 為研究人員提供創(chuàng)建和評估深度學習模型的優(yōu)化和標準化的方法。

MONAI 中包含一系列的 transforms 對醫(yī)療圖像數(shù)據(jù)進行前后處理。在 MONAI 0.7 中,我們在 transforms 中引入基于 PyTorch Tensor 的計算,許多 transforms 既支持 NumPy array,也支持 PyTorch Tensor 作為輸入類型和計算后端。當以 PyTorch Tensor 作為輸入數(shù)據(jù)時,我們可以使用 GPU 來加速數(shù)據(jù)前后處理的計算。

什么是 NVIDIA Triton 推理服務器

Triton 推理服務器是一個開源的 AI 模型部署軟件,可以簡化深度學習推理的大規(guī)模部署。它能夠對多種框架(TensorFlow、TensorRT、PyTorch、ONNX Runtime 或自定義框架),在任何基于 GPU 或 CPU 的環(huán)境上(云、數(shù)據(jù)中心、邊緣)大規(guī)模部署經過訓練的 AI 模型。Triton 可提供高吞吐量推理,以實現(xiàn) GPU 使用率的最大化。

在較新的版本中,Triton 增加了 Python backend 這一新特性,Python backend 的目標是讓使用者可以更加容易的部署 Python 寫的模型,無需再去編寫任何 C++ 代碼。在一些場景下,我們的推理流程中可能會出現(xiàn)循環(huán)、條件判斷、依賴于運行時數(shù)據(jù)的控制流和其他自定義邏輯與模型混合執(zhí)行。使用 Triton Python backend,開發(fā)人員可以更加容易地在自己的推理流程中實現(xiàn)這些控制流,并且在 Python 模型中調用 Triton 部署的其他模型。

使用 MONAI 和 Triton 高效搭建和部署 GPU 加速的醫(yī)療影像推理流程

在本文介紹的例子中,我們將使用 MONAI 中 GPU 加速的數(shù)據(jù)處理以及 Triton 的 Python backend 來構建一個 GPU 加速的醫(yī)療影像推理流程。通過這個例子,讀者可以了解到,在 GPU 上進行數(shù)據(jù)處理所帶來的性能增益,以及如何使用 Triton 進行高效的推理部署。

整個推理流程如下圖所示,包含數(shù)據(jù)預處理,AI 模型推理,和數(shù)據(jù)后處理三部分。

4e1ff448-b7af-11ec-aa7f-dac502259ad0.png

通過 EnsureType 這個 transform,我們將輸入數(shù)據(jù)轉換成 PyTorch Tensor 并放到 GPU 上,這樣之后的數(shù)據(jù)預處理操作都會在 GPU 上進行。我們使用 Triton 的 Torch backend 來作為 3DUnet 的推理后端,輸出的結果為 GPU 上的 Torch Tensor,并作為后處理模塊的輸入,在 GPU 上進行后處理計算。

使用 Triton 的 Python backend,我們可以非常容易的將整個流程串聯(lián)起來,即:按照 Triton Python backend 要求的模型結構構建前后處理的 Python 代碼,并在其中調用 3DUnet 的推理。以下是我們例子中的代碼片段。完整的代碼及復現(xiàn)步驟請見 Github:

https://github.com/Project-MONAI/tutorials/tree/master/full_gpu_inference_pipeline

class TritonPythonModel:      """     Your Python model must use the same class name. Every Python model     that is created must have "TritonPythonModel" as the class name.     """        def initialize(self, args):          """         `initialize` is called only once when the model is being loaded.         Implementing `initialize` function is optional. This function allows         the model to intialize any state associated with this model.         """          self.inference_device_id = args.get("model_instance_device_id", "0")          infer_transforms = []          infer_transforms.append(EnsureType(device=torch.device(f"cuda:{self.inference_device_id}")))          infer_transforms.append(AddChannel())          infer_transforms.append(ScaleIntensityRange(a_min=-57, a_max=164, b_min=0.0, b_max=1.0, clip=True))          infer_transforms.append(CropForeground())          infer_transforms.append(Resize(spatial_size=(224, 224, 224)))          self.pre_transforms = Compose(infer_transforms)        def execute(self, requests):          """         `execute` must be implemented in every Python model. `execute`         function receives a list of pb_utils.InferenceRequest as the only         argument. This function is called when an inference is requested         for this model. Depending on the batching configuration (e.g. Dynamic         Batching) used, `requests` may contain multiple requests. Every         Python model, must create one pb_utils.InferenceResponse for every         pb_utils.InferenceRequest in `requests`. If there is an error, you can         set the error argument when creating a pb_utils.InferenceResponse.         """          responses = []            for request in requests:              # get the input by name (as configured in config.pbtxt)              input_triton_tensor = pb_utils.get_input_tensor_by_name(request, "INPUT0")              # convert the triton tensor to torch tensor              input_torch_tensor = from_dlpack(input_triton_tensor.to_dlpack())              transform_output = self.pre_transforms(input_torch_tensor[0])              transform_output_batched = transform_output.unsqueeze(0)              # convert the torch tensor to triton tensor              transform_tensor = pb_utils.Tensor.from_dlpack("INPUT__0", to_dlpack(transform_output_batched))              # send inference request to 3DUnet served by Triton. The name of the model is "segmentation_3d"              inference_request = pb_utils.InferenceRequest(                  model_name="3dunet", requested_output_names=["OUTPUT__0"], inputs=[transform_tensor]              )                infer_response = inference_request.exec()              output1 = pb_utils.get_output_tensor_by_name(infer_response, "OUTPUT__0")              # convert the triton tensor to torch tensor              output_tensor = from_dlpack(output1.to_dlpack())                # do the post process              argmax = AsDiscrete(argmax=True)(output_tensor[0])              largest = KeepLargestConnectedComponent(applied_labels=1)(argmax)              contour = LabelToContour()(largest)              out_tensor_0 = pb_utils.Tensor.from_dlpack("MASK", to_dlpack(largest.unsqueeze(0)))              out_tensor_1 = pb_utils.Tensor.from_dlpack("CONTOUR", to_dlpack(contour.unsqueeze(0)))              inference_response = pb_utils.InferenceResponse(output_tensors=[out_tensor_0, out_tensor_1])              responses.append(inference_response)          return responses        def finalize(self):          """         `finalize` is called only once when the model is being unloaded.         Implementing `finalize` function is optional. This function allows         the model to perform any necessary clean ups before exit.         """  pass

以 MSD Spleen 3D 數(shù)據(jù)作為輸入,經過整個推理流程,將得到分割后的脾臟區(qū)域以及其輪廓。

4e38a68c-b7af-11ec-aa7f-dac502259ad0.png

性能測試

我們在 RTX 8000 上對整個推理流程進行了性能測試,以了解 Triton 及 MONAI 不同特性對性能的影響。

HTTP vs. gRPC vs. shared memory

目前 Triton 支持 HTTP, gRPC 和共享內存等方式進行數(shù)據(jù)通信。由于三維醫(yī)學圖像通常很大,通信帶來的開銷不容忽視。對于許多常見的醫(yī)學圖像人工智能應用,客戶端與服務器位于同一臺機器上,因此使用共享內存是減少發(fā)送/接收開銷的一種可行方法。在測試中,我們比較了客戶端和服務器之間使用不同通信方式對性能的影響。所有過程(前/后處理和AI推理)都在 GPU 上。我們可以得出結論,當數(shù)據(jù)傳輸量很大時,使用共享內存將大大減少延遲。

4e4ef464-b7af-11ec-aa7f-dac502259ad0.png

Pre/Post-processing on GPU vs. CPU

接著我們測試了分別在 GPU 和 CPU 進行前后數(shù)據(jù)處理時,整個推理流程的速度。可以看到,當使用 GPU 進行數(shù)據(jù)處理時,可以實現(xiàn) 12 倍的加速。

4e5fe38c-b7af-11ec-aa7f-dac502259ad0.png


原文標題:使用 MONAI 和 Triton 高效構建和部署 GPU 加速的醫(yī)療影像推理流程

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

審核編輯:彭菁

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

    關注

    28

    文章

    4937

    瀏覽量

    131121
  • AI
    AI
    +關注

    關注

    88

    文章

    34990

    瀏覽量

    278651
  • Triton
    +關注

    關注

    0

    文章

    28

    瀏覽量

    7160

原文標題:使用 MONAI 和 Triton 高效構建和部署 GPU 加速的醫(yī)療影像推理流程

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何在魔搭社區(qū)使用TensorRT-LLM加速優(yōu)化Qwen3系列模型推理部署

    TensorRT-LLM 作為 NVIDIA 專為 LLM 推理部署加速優(yōu)化的開源庫,可幫助開發(fā)者快速利用最新 LLM 完成應用原型驗證與產品部署
    的頭像 發(fā)表于 07-04 14:38 ?554次閱讀

    使用NVIDIA Triton和TensorRT-LLM部署TTS應用的最佳實踐

    針對基于 Diffusion 和 LLM 類別的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張 NVIDIA Ada Lovelace
    的頭像 發(fā)表于 06-12 15:37 ?534次閱讀
    使用NVIDIA <b class='flag-5'>Triton</b>和TensorRT-LLM<b class='flag-5'>部署</b>TTS應用的最佳實踐

    英偉達GTC25亮點:NVIDIA Dynamo開源庫加速并擴展AI推理模型

    Triton 推理服務器的后續(xù)產品,NVIDIA Dynamo 是一款全新的 AI 推理服務軟件,旨在為部署推理 AI 模型的 AI 工廠
    的頭像 發(fā)表于 03-20 15:03 ?618次閱讀

    使用OpenVINO?進行推理時的內存泄漏怎么解決?

    使用 OpenVINO? 進行推理時,內存會隨著時間的推移而增加,并導致程序崩潰。
    發(fā)表于 03-06 08:29

    摩爾線程宣布成功部署DeepSeek蒸餾模型推理服務

    。 據(jù)悉,DeepSeek開源模型在多語言理解與復雜推理任務中一直表現(xiàn)出卓越的性能,其V3、R1等系列模型更是備受業(yè)界關注。而此次摩爾線程所實現(xiàn)的DeepSeek蒸餾模型推理服務部署,正是基于這些優(yōu)秀模型的基礎上
    的頭像 發(fā)表于 02-06 13:49 ?782次閱讀

    Triton編譯器與GPU編程的結合應用

    Triton編譯器簡介 Triton編譯器是一種針對并行計算優(yōu)化的編譯器,它能夠自動將高級語言代碼轉換為針對特定硬件優(yōu)化的低級代碼。Triton編譯器的核心優(yōu)勢在于其能夠識別并行模式,自動進行
    的頭像 發(fā)表于 12-25 09:13 ?813次閱讀

    Triton編譯器如何提升編程效率

    開發(fā)者能夠更快地開發(fā)出更高效的軟件。 1. 代碼優(yōu)化 1.1 編譯時優(yōu)化 Triton 編譯器在編譯時進行了大量的代碼優(yōu)化。這些優(yōu)化包括但不限于: 指令選擇 :Triton 編譯器能夠
    的頭像 發(fā)表于 12-25 09:12 ?734次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計算環(huán)境中,編譯器的性能對于軟件的運行效率至關重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優(yōu)化技術,以確保生成的代碼既高效又適應不同的硬件架構。 1. 指令選擇
    的頭像 發(fā)表于 12-25 09:09 ?965次閱讀

    Triton編譯器的優(yōu)勢與劣勢分析

    Triton編譯器作為一種新興的深度學習編譯器,具有一系列顯著的優(yōu)勢,同時也存在一些潛在的劣勢。以下是對Triton編譯器優(yōu)勢與劣勢的分析: 優(yōu)勢 高效性能優(yōu)化 : Triton編譯器
    的頭像 發(fā)表于 12-25 09:07 ?1161次閱讀

    Triton編譯器在機器學習中的應用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務平臺的一部分,它負責將深度學習模型轉換為優(yōu)化的格式,以便在NVIDIA GPU上
    的頭像 發(fā)表于 12-24 18:13 ?975次閱讀

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現(xiàn)在以下幾個方面: 一、定位與目標 Triton編譯器 : 定位:專注于深度學習中最核心、最耗時的張量運算的優(yōu)化。 目標:提供一個高度抽象、靈活、高效
    的頭像 發(fā)表于 12-24 17:25 ?984次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個開源的編譯器前端,它支持多種編程語言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個可擴展和可定制的編譯器框架,允許開發(fā)者添加新的編程語言特性和優(yōu)化技術
    的頭像 發(fā)表于 12-24 17:23 ?1658次閱讀

    如何開啟Stable Diffusion WebUI模型推理部署

    如何開啟Stable Diffusion WebUI模型推理部署
    的頭像 發(fā)表于 12-11 20:13 ?540次閱讀
    如何開啟Stable Diffusion WebUI模型<b class='flag-5'>推理</b><b class='flag-5'>部署</b>

    高效大模型的推理綜述

    大模型由于其在各種任務中的出色表現(xiàn)而引起了廣泛的關注。然而,大模型推理的大量計算和內存需求對其在資源受限場景的部署提出了挑戰(zhàn)。業(yè)內一直在努力開發(fā)旨在提高大模型推理效率的技術。本文對現(xiàn)有的關于
    的頭像 發(fā)表于 11-15 11:45 ?1432次閱讀
    <b class='flag-5'>高效</b>大模型的<b class='flag-5'>推理</b>綜述

    YOLOv6在LabVIEW中的推理部署(含源碼)

    YOLOv6 是美團視覺智能部研發(fā)的一款目標檢測框架,致力于工業(yè)應用。如何使用python進行該模型的部署,官網已經介紹的很清楚了,但是對于如何在LabVIEW中實現(xiàn)該模型的部署,筆者目前還沒有看到
    的頭像 發(fā)表于 11-06 16:07 ?928次閱讀
    YOLOv6在LabVIEW中的<b class='flag-5'>推理</b><b class='flag-5'>部署</b>(含源碼)
    主站蜘蛛池模板: 土默特左旗| 鹤山市| 繁峙县| 南澳县| 留坝县| 兴义市| 全南县| 岳池县| 天台县| 惠来县| 从江县| 佳木斯市| 揭阳市| 岳池县| 阳东县| 陆良县| 吐鲁番市| 五台县| 视频| 固阳县| 洪洞县| 正蓝旗| 祁阳县| 新津县| 师宗县| 星子县| 沭阳县| 博野县| 太保市| 凤庆县| 青神县| 安化县| 定西市| 嘉禾县| 运城市| 和政县| 汕尾市| 萍乡市| 定州市| 华坪县| 杭锦后旗|