在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    4986

    瀏覽量

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

    關(guān)注

    28

    文章

    4740

    瀏覽量

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

    關(guān)注

    8

    文章

    1823

    瀏覽量

    58762

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    醫(yī)療設(shè)備影像新高度:深入解析FCB-CR8530索尼4K模組

    醫(yī)療技術(shù)的飛速發(fā)展下,影像設(shè)備作為醫(yī)生診斷病情、制定治療方案的重要依據(jù),其性能的提升顯得尤為重要。索尼推出的FCB-CR8530 4K模組,以其卓越的畫質(zhì)、靈活的變焦能力和智能化的應(yīng)用,為醫(yī)療設(shè)備
    的頭像 發(fā)表于 11-25 17:21 ?185次閱讀

    高效大模型的推理綜述

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

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

    相關(guān)介紹文章,所以筆者在實(shí)現(xiàn)YOLOv6 ONNX 在LabVIEW中的部署推理后,決定和各位讀者分享一下如何使用LabVIEW實(shí)現(xiàn)YOLOv6的目標(biāo)檢測。
    的頭像 發(fā)表于 11-06 16:07 ?277次閱讀
    YOLOv6在LabVIEW中的<b class='flag-5'>推理</b><b class='flag-5'>部署</b>(含源碼)

    凱茉銳電子 SDI編碼板與SONY模組:高效集成的影像處理新紀(jì)元

    在快速發(fā)展的影像傳輸與處理領(lǐng)域,SDI(Serial Digital Interface)編碼板與SONY模組作為兩大核心技術(shù),正引領(lǐng)著行業(yè)向更高效、更清晰的影像處理新時代邁進(jìn)。
    的頭像 發(fā)表于 11-05 15:24 ?211次閱讀

    使用OpenVINO Model Server在哪吒開發(fā)板上部署模型

    OpenVINO Model Server(OVMS)是一個高性能的模型部署系統(tǒng),使用C++實(shí)現(xiàn),并在Intel架構(gòu)上的部署進(jìn)行了優(yōu)化,使用OpenVINO 進(jìn)行推理
    的頭像 發(fā)表于 11-01 14:19 ?287次閱讀
    使用OpenVINO Model Server在哪吒開發(fā)板上<b class='flag-5'>部署</b>模型

    英特爾?至強(qiáng)?可擴(kuò)展處理器助力智慧醫(yī)療的數(shù)字化轉(zhuǎn)型

    醫(yī)療機(jī)構(gòu)實(shí)現(xiàn)數(shù)據(jù)的收集、分析和輔助決策,從而提升醫(yī)療服務(wù)質(zhì)量與效率。 ? 這一處理器內(nèi)置的AI加速器顯著提升了AI推理性能,特別是在處理多個AI工作負(fù)載時,性能提升可高達(dá)30%。這一點(diǎn)
    發(fā)表于 09-29 11:13 ?6089次閱讀
    英特爾?至強(qiáng)?可擴(kuò)展處理器助力智慧<b class='flag-5'>醫(yī)療</b>的數(shù)字化轉(zhuǎn)型

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案
    的頭像 發(fā)表于 09-14 09:53 ?315次閱讀
    基于分布式存儲系統(tǒng)<b class='flag-5'>醫(yī)療</b><b class='flag-5'>影像</b>數(shù)據(jù)存儲解決方案

    高清醫(yī)療影像解決方案:索尼FCB-EW9500H模組引領(lǐng)醫(yī)療進(jìn)步

    醫(yī)療領(lǐng)域,高清影像的獲取與分析對于疾病的早期診斷、精準(zhǔn)治療及術(shù)后評估至關(guān)重要。隨著科技的飛速發(fā)展,高清醫(yī)療影像解決方案正逐步成為提升醫(yī)療
    的頭像 發(fā)表于 09-03 10:07 ?255次閱讀

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲解決方案

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲解決方案
    的頭像 發(fā)表于 08-23 10:13 ?327次閱讀
    <b class='flag-5'>醫(yī)療</b>PACS<b class='flag-5'>影像</b>數(shù)據(jù)的極速分布式塊存儲解決方案

    國產(chǎn)可編程純硅振蕩器在醫(yī)療超聲影像中的應(yīng)用

    國產(chǎn)可編程純硅振蕩器在醫(yī)療超聲影像中的應(yīng)用
    的頭像 發(fā)表于 05-14 10:00 ?518次閱讀
    國產(chǎn)可編程純硅振蕩器在<b class='flag-5'>醫(yī)療</b>超聲<b class='flag-5'>影像</b>中的應(yīng)用

    簡單兩步使用OpenVINO?搞定Qwen2的量化與部署任務(wù)

    英特爾 OpenVINO? 工具套件是一款開源 AI 推理優(yōu)化部署的工具套件,可幫助開發(fā)人員和企業(yè)加速生成式人工智能 (AIGC)、大語言模型、計(jì)算機(jī)視覺和自然語言處理等 AI 工作負(fù)載,簡化深度學(xué)習(xí)推理的開發(fā)和
    的頭像 發(fā)表于 04-26 09:39 ?1677次閱讀
    簡單兩步使用OpenVINO?搞定Qwen2的量化與<b class='flag-5'>部署</b>任務(wù)

    戴爾科技數(shù)據(jù)存儲方案助力麗水市中心醫(yī)院醫(yī)療存儲影像系統(tǒng)升級

    隨著醫(yī)療影像設(shè)備的普及和技術(shù)的進(jìn)步,醫(yī)院每天都會產(chǎn)生大量的影像數(shù)據(jù),這些數(shù)據(jù)不僅數(shù)量龐大,而且需要長期的存儲和管理。
    的頭像 發(fā)表于 04-08 16:10 ?1229次閱讀

    人工智能在影像升級中的關(guān)鍵作用

    GPU和深度學(xué)習(xí)的結(jié)合對于使人工智能更快、更高效地升級也至關(guān)重要。GPU可以同時處理大量數(shù)據(jù),從而實(shí)現(xiàn)更快的訓(xùn)練和推理
    發(fā)表于 03-11 18:15 ?221次閱讀

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8的模型部署推理演示

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署在Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?1635次閱讀
    基于OpenCV DNN<b class='flag-5'>實(shí)現(xiàn)</b>YOLOv8的模型<b class='flag-5'>部署</b>與<b class='flag-5'>推理</b>演示
    主站蜘蛛池模板: 久操视频免费看| 亚洲一区二区三区免费观看| 亚洲欧洲一区二区三区在线观看| 成人黄色网址| 很黄很暴力 很污秽的小说| 日本三级a| 久久鲁视频| 成人欧美精品一区二区不卡| 亚洲永久免费视频| 思思久久好好热精品国产| 在线观看一区二区三区四区| 直接在线观看的三级网址| 明星三级国产免费播放| 国产精品美女视频| 天天干天天摸| 97久久天天综合色天天综合色hd| 午夜国产福利在线| 4438x成人网全国最大| 色www视频永久免费| 激情六月网| 五月天婷婷伊人| 亚洲男人a天堂在线2184| 日韩免费毛片视频| 波多野结衣在线网址| 欧美777| h网站在线观看| 色噜噜狠狠色综合久| 成人羞羞视频国产| 1024你懂的国产日韩欧美| 国产精品色婷婷在线观看| 日本黄色录像视频| 色之综合天天综合色天天棕色| 欧美18在线| 日本bt| 黄色免费在线网址| 午夜男人网| 国产美女视频一区二区二三区| 在线看黄网站| 天天色色网| 丁香婷婷在线视频| 永久黄网站色视频免费观看99|