日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

如何使用Triton進(jìn)行高效的推理部署

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

掃碼添加小助手

加入工程師交流群

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

什么是 MONAI

MONAI 是一個(gè)專(zhuān)門(mén)針對(duì)醫(yī)療圖像的深度學(xué)習(xí)開(kāi)源框架。MONAI 致力于:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

性能測(cè)試

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

HTTP vs. gRPC vs. shared memory

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

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

Pre/Post-processing on GPU vs. CPU

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

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


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

文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

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

    關(guān)注

    28

    文章

    5283

    瀏覽量

    136105
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    41326

    瀏覽量

    302731
  • Triton
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    7353

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

文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    K8s部署vLLM推理服務(wù)詳細(xì)步驟

    vLLM在生產(chǎn)環(huán)境部署時(shí),服務(wù)暴露是關(guān)鍵環(huán)節(jié)。Kubernetes的Service和Ingress組件負(fù)責(zé)將內(nèi)部Pod流量對(duì)外暴露,合理的Service類(lèi)型選擇和負(fù)載均衡策略直接影響推理服務(wù)的可用性、響應(yīng)速度和資源利用率。
    的頭像 發(fā)表于 03-13 09:46 ?511次閱讀

    AI端側(cè)部署開(kāi)發(fā)(SC171開(kāi)發(fā)套件V2-FAS)

    AI端側(cè)部署開(kāi)發(fā)(SC171開(kāi)發(fā)套件V2-FAS) 序列 課程名稱 視頻課程時(shí)長(zhǎng) 視頻課程鏈接 課件鏈接 工程源碼 1 Fibo AI Stack模型轉(zhuǎn)化指南 27分19秒 https
    發(fā)表于 02-11 11:44

    LLM推理模型是如何推理的?

    這篇文章《(How)DoReasoningModelsReason?》對(duì)當(dāng)前大型推理模型(LRM)進(jìn)行了深刻的剖析,超越了表面的性能宣傳,直指其技術(shù)本質(zhì)和核心局限。以下是基于原文的詳細(xì)技術(shù)原理、關(guān)鍵
    的頭像 發(fā)表于 01-19 15:33 ?734次閱讀
    LLM<b class='flag-5'>推理</b>模型是如何<b class='flag-5'>推理</b>的?

    AI端側(cè)部署開(kāi)發(fā)(SC171開(kāi)發(fā)套件V3)2026版

    AI端側(cè)部署開(kāi)發(fā)(SC171開(kāi)發(fā)套件V3)2026版 序列 課程名稱 視頻課程時(shí)長(zhǎng) 視頻課程鏈接 課件鏈接 工程源碼 1 Fibo AI Stack模型轉(zhuǎn)化指南 27分19秒 https
    發(fā)表于 01-15 10:31

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

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

    使用NVIDIA Grove簡(jiǎn)化Kubernetes上的復(fù)雜AI推理

    過(guò)去幾年,AI 推理部署已經(jīng)從單一模型、單一 Pod 演變?yōu)閺?fù)雜的多組件系統(tǒng)。如今,一個(gè)模型部署可能包含多個(gè)不同的組件——預(yù)填充 (prefill)、解碼 (decode)、視覺(jué)編碼
    的頭像 發(fā)表于 11-14 10:25 ?5493次閱讀
    使用NVIDIA Grove簡(jiǎn)化Kubernetes上的復(fù)雜AI<b class='flag-5'>推理</b>

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

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

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

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

    NVIDIA Nemotron Nano 2推理模型發(fā)布

    NVIDIA 正式推出準(zhǔn)確、高效的混合 Mamba-Transformer 推理模型系列 NVIDIA Nemotron Nano 2。
    的頭像 發(fā)表于 08-27 12:45 ?2050次閱讀
    NVIDIA Nemotron Nano 2<b class='flag-5'>推理</b>模型發(fā)布

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

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

    信而泰×DeepSeek:AI推理引擎驅(qū)動(dòng)網(wǎng)絡(luò)智能診斷邁向 “自愈”時(shí)代

    學(xué)習(xí)、大規(guī)模數(shù)據(jù)分析等前沿技術(shù)。DeepSeek-R1具備卓越的邏輯推理、多模態(tài)分析(文本/圖像/語(yǔ)音)和實(shí)時(shí)交互能力,能夠高效處理代碼生成、復(fù)雜問(wèn)題求解、跨模態(tài)學(xué)習(xí)等高階任務(wù)。憑借其開(kāi)源、高效、多
    發(fā)表于 07-16 15:29

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

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

    大模型推理顯存和計(jì)算量估計(jì)方法研究

    方法。 一、引言 大模型推理是指在已知輸入數(shù)據(jù)的情況下,通過(guò)深度學(xué)習(xí)模型進(jìn)行預(yù)測(cè)或分類(lèi)的過(guò)程。然而,大模型的推理過(guò)程對(duì)顯存和計(jì)算資源的需求較高,這給實(shí)際應(yīng)用帶來(lái)了以下挑戰(zhàn): 顯存不足:大模型在
    發(fā)表于 07-03 19:43

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

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

    使用NVIDIA Triton和TensorRT-LLM部署TTS應(yīng)用的最佳實(shí)踐

    針對(duì)基于 Diffusion 和 LLM 類(lèi)別的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張 NVIDIA Ada Lovelace
    的頭像 發(fā)表于 06-12 15:37 ?2109次閱讀
    使用NVIDIA <b class='flag-5'>Triton</b>和TensorRT-LLM<b class='flag-5'>部署</b>TTS應(yīng)用的最佳實(shí)踐
    屯昌县| 芒康县| 斗六市| 台南市| 南澳县| 保山市| 丘北县| 溧阳市| 灵丘县| 临朐县| 湘潭县| 涟源市| 德江县| 博乐市| 澳门| 民乐县| 正阳县| 朔州市| 洪雅县| 佛山市| 隆尧县| 大港区| 工布江达县| 调兵山市| 新巴尔虎右旗| 祁东县| 师宗县| 寿宁县| 新巴尔虎左旗| 蓬溪县| 大丰市| 宝坻区| 固镇县| 揭西县| 南靖县| 东兴市| 洛扎县| 洞头县| 东乡族自治县| 加查县| 北川|