91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

如何實(shí)現(xiàn)高效的部署醫(yī)療影像推理

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 作者:NVIDIA英偉達(dá)企業(yè)解 ? 2022-04-09 08:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

什么是 MONAI

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

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

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

  • 為研究人員提供創(chuàng)建和評估深度學(xué)習(xí)模型的優(yōu)化和標(biāo)準(zhǔn)化的方法。

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

什么是 NVIDIA Triton 推理服務(wù)器

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

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

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

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

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

如何實(shí)現(xiàn)高效的部署醫(yī)療影像推理

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

使用 Triton 的 Python backend,我們可以非常容易的將整個流程串聯(lián)起來,即:按照 Triton Python backend 要求的模型結(jié)構(gòu)構(gòu)建前后處理的 Python 代碼,并在其中調(diào)用 3DUnet 的推理。以下是我們例子中的代碼片段。完整的代碼及復(fù)現(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ù)作為輸入,經(jīng)過整個推理流程,將得到分割后的脾臟區(qū)域以及其輪廓。

如何實(shí)現(xiàn)高效的部署醫(yī)療影像推理

性能測試

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

HTTP vs. gRPC vs. shared memory

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

如何實(shí)現(xiàn)高效的部署醫(yī)療影像推理

Pre/Post-processing on GPU vs. CPU

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

如何實(shí)現(xiàn)高效的部署醫(yī)療影像推理

想要了解更多 Triton 和 MONAI 的特性與使用方法,請關(guān)注以下鏈接。同時,Triton 和 MONAI 均已在 Github 開源,歡迎開發(fā)者踴躍參與開源社區(qū)建設(shè)。

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

文章出處:【微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    14

    文章

    5594

    瀏覽量

    109781
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    5194

    瀏覽量

    135503
  • 醫(yī)療
    +關(guān)注

    關(guān)注

    8

    文章

    2000

    瀏覽量

    61623

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

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    騰龍MP3010M-EV與CM2001S:重塑醫(yī)療影像的精準(zhǔn)與高效

    的嚴(yán)苛需求。騰龍MP3010M-EV迷你變焦模組與CM2001S SDI編碼控制板的組合,憑借“小身材、大視界”的設(shè)計(jì)理念與高效傳輸能力,正在醫(yī)療影像領(lǐng)域掀起一場技術(shù)革新。
    的頭像 發(fā)表于 01-20 17:50 ?1733次閱讀

    Termux手機(jī)攝像頭采集圖像/視頻流 部署 YOLO 模型推理

    Termux手機(jī)攝像頭采集圖像/視頻流 部署 YOLO 模型推理
    的頭像 發(fā)表于 12-14 07:26 ?2859次閱讀

    超清視界,智聯(lián)未來:索尼FCB-EV9500L與CM2002V重塑醫(yī)療影像新范式

    在精準(zhǔn)醫(yī)療理念日益深化的今天,影像技術(shù)的精度與傳輸效率直接決定診療質(zhì)量的上限。索尼FCB-EV9500L高清攝像模組與CM2002V編碼板構(gòu)建的"超高清采集+高效傳輸"解決方案,憑借硬件協(xié)同的核心
    的頭像 發(fā)表于 12-02 11:56 ?359次閱讀

    如何在NVIDIA Jetson AGX Thor上通過Docker高效部署vLLM推理服務(wù)

    繼系統(tǒng)安裝與環(huán)境配置后,本期我們將繼續(xù)帶大家深入 NVIDIA Jetson AGX Thor 的開發(fā)教程之旅,了解如何在 Jetson AGX Thor 上,通過 Docker 高效部署 vLLM 推理服務(wù)。
    的頭像 發(fā)表于 11-13 14:08 ?4121次閱讀
    如何在NVIDIA Jetson AGX Thor上通過Docker<b class='flag-5'>高效</b><b class='flag-5'>部署</b>vLLM<b class='flag-5'>推理</b>服務(wù)

    4K影像賦能精準(zhǔn)醫(yī)療:索尼FCB-CS8230與SDI編碼板的協(xié)同創(chuàng)新之路

    醫(yī)療技術(shù)向精準(zhǔn)化、智能化邁進(jìn)的今天,影像系統(tǒng)已成為疾病診斷、手術(shù)治療與醫(yī)學(xué)教研的核心支撐。清晰的微觀成像、實(shí)時的信號傳輸、穩(wěn)定的環(huán)境適配,關(guān)系到診療決策的準(zhǔn)確性與醫(yī)療操作的安全性。索尼4K模組
    的頭像 發(fā)表于 10-28 14:29 ?369次閱讀

    NVIDIA TensorRT LLM 1.0推理框架正式上線

    TensorRT LLM 作為 NVIDIA 為大規(guī)模 LLM 推理打造的推理框架,核心目標(biāo)是突破 NVIDIA 平臺上的推理性能瓶頸。為實(shí)現(xiàn)這一目標(biāo),其構(gòu)建了多維度的核心
    的頭像 發(fā)表于 10-21 11:04 ?1182次閱讀

    微型導(dǎo)軌在醫(yī)療影像設(shè)備的精準(zhǔn)導(dǎo)航

    醫(yī)療與生物科技領(lǐng)域,微型導(dǎo)軌以毫米級精度和超強(qiáng)穩(wěn)定性,成為高端設(shè)備的“隱形引擎”。從影像診斷到基因測序,它正以精密運(yùn)動重塑醫(yī)療技術(shù)邊界。
    的頭像 發(fā)表于 08-13 17:56 ?618次閱讀
    微型導(dǎo)軌在<b class='flag-5'>醫(yī)療</b><b class='flag-5'>影像</b>設(shè)備的精準(zhǔn)導(dǎo)航

    基于米爾瑞芯微RK3576開發(fā)板部署運(yùn)行TinyMaix:超輕量級推理框架

    本文將介紹基于米爾電子MYD-LR3576開發(fā)平臺部署超輕量級推理框架方案:TinyMaix 摘自優(yōu)秀創(chuàng)作者-短笛君 TinyMaix 是面向單片機(jī)的超輕量級的神經(jīng)網(wǎng)絡(luò)推理庫,即 TinyML
    發(fā)表于 07-25 16:35

    讓老舊醫(yī)療設(shè)備“聽懂”新語言:CAN轉(zhuǎn)EtherCAT的醫(yī)療行業(yè)應(yīng)用

    訊通信技術(shù)CAN轉(zhuǎn)EtherCAT網(wǎng)關(guān)的價值,不僅在于解決協(xié)議壁壘,更在于為醫(yī)療設(shè)備的模塊化設(shè)計(jì)和跨平臺集成提供可能。通過硬件級協(xié)議轉(zhuǎn)換,工程師可兼顧傳統(tǒng)設(shè)備的可靠性與新型網(wǎng)絡(luò)的高效性,為影像設(shè)備
    發(fā)表于 07-18 15:27

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

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

    Say Hi to ERNIE!Imagination GPU率先完成文心大模型的端側(cè)部署

    ImaginationTechnologies宣布率先完成百度文心大模型(ERNIE4.5開源版)在其GPU硬件上的端側(cè)部署。適配完成后,開發(fā)者可在搭載ImaginationGPU的設(shè)備上實(shí)現(xiàn)高效
    的頭像 發(fā)表于 07-01 08:17 ?985次閱讀
    Say Hi to ERNIE!Imagination GPU率先完成文心大模型的端側(cè)<b class='flag-5'>部署</b>

    從內(nèi)窺鏡到閱片中心:AI一體機(jī)如何重塑醫(yī)療影像全鏈路

    MSC-2401是一款專為醫(yī)療影像領(lǐng)域打造的AI電腦一體機(jī)。定位于醫(yī)療影像設(shè)備的核心配套單元,它嚴(yán)格遵循醫(yī)療行業(yè)標(biāo)準(zhǔn),聚焦高性能計(jì)算與精準(zhǔn)顯
    的頭像 發(fā)表于 06-04 15:51 ?1841次閱讀
    從內(nèi)窺鏡到閱片中心:AI一體機(jī)如何重塑<b class='flag-5'>醫(yī)療</b><b class='flag-5'>影像</b>全鏈路

    如何利用RAKsmart服務(wù)器實(shí)現(xiàn)高效多站點(diǎn)部署方案

    利用RAKsmart服務(wù)器實(shí)現(xiàn)高效多站點(diǎn)部署方案,需結(jié)合其網(wǎng)絡(luò)優(yōu)勢、彈性資源管理和合理的架構(gòu)設(shè)計(jì)。以下是分步實(shí)施方案,涵蓋網(wǎng)絡(luò)優(yōu)化、資源分配、數(shù)據(jù)管理及監(jiān)控等核心環(huán)節(jié),主機(jī)推薦小編為您整理發(fā)布如何利用RAKsmart服務(wù)器
    的頭像 發(fā)表于 05-19 10:38 ?541次閱讀

    研華科技攜手萬東醫(yī)療推進(jìn)醫(yī)療影像數(shù)智升級

    研華科技受邀出席萬東醫(yī)療在CMEF醫(yī)療展上舉辦的“超能矩陣戰(zhàn)略簽約儀式”,聯(lián)合發(fā)布“全球首個面向磁共振設(shè)備的全鏈路AI智算平臺”,攜手推進(jìn)醫(yī)療影像數(shù)智升級。
    的頭像 發(fā)表于 04-10 11:45 ?1576次閱讀

    中科億海微SoM模組——AI圖像推理解決方案

    精準(zhǔn)、高效的圖像分析支持。極大提高了醫(yī)療影像、自動駕駛、智能安防、農(nóng)業(yè)智能、無人機(jī)、人形機(jī)器人、物流管理等領(lǐng)域圖像處理的效率和質(zhì)量。本文介紹的中科億海微基于FPGA
    的頭像 發(fā)表于 03-27 13:48 ?846次閱讀
    中科億海微SoM模組——AI圖像<b class='flag-5'>推理</b>解決方案