觀看 NVIDIA 創始人兼首席執行官 Jensen Huang’s GTC keynote address11 月 9 日和重播時播放。 收聽廣播healthcare special address by Kimberly Powell,NVIDIA 醫療保健副總裁, 11 月 9 日太平洋時間上午 10 : 30 。訂閱NVIDIA 醫療新聞.
NVIDIA Clara Holoscan 是醫療設備的人工智能計算平臺,它結合了用于低延遲傳感器和網絡連接的硬件系統、用于數據處理和人工智能的優化庫,以及用于運行從嵌入式到邊緣到云的流媒體、成像和其他應用程序的核心微服務。

NVIDIA Clara Holoscan 將智能儀器與數據中心無縫連接,支持軟件定義醫療設備的信號處理、 AI 推理和可視化工作流。用例涵蓋放射學、微創手術、機器人手術、患者監控等領域。它是一個完全加速的框架,用于開發實時多模式應用程序,使用優化的微服務容器、無代碼設計工具和示例應用程序。
NVIDIA Clara Holoscan 是一種可擴展的體系結構,在數據中心或云中從嵌入式設備和NVIDIA-Certified edge servers擴展到NVIDIA DGX systems。該平臺使您能夠根據需要在醫療設備中添加盡可能多或盡可能少的計算和輸入/輸出功能,并與延遲、成本、空間、電源和帶寬的需求相平衡。
放射治療
NVIDIA Clara 全息掃描的一個重要應用案例是放射治療,在放射治療中,需要進行圖像處理來分割被治療的器官和腫瘤。此外,單獨分割相鄰器官有助于識別腫瘤及其體積。它還使醫生能夠創建一個詳細和準確的 3D 地圖,可以繪制出輻射束通過其他器官的最佳軌跡,并且影響最小。
通過 3D 模型,放射治療系統甚至可以實時調整患者解剖結構的變化。手動進行多器官分割非常耗時,但使用人工智能可以大大加快分割速度。圖 2 顯示了使用 NVIDIA Clara Holoscan 的 3D 多器官分割應用程序的部署架構。

以下部分介紹如何基于UNETR構建和部署一個基于 transformer 的三維分割模型的三維多器官分割應用程序。
MONAI 部署 UNETR 應用程序
UNEt transformer ( UNETR )模型體系結構的新穎之處在于基于 transformer 的編碼器可以學習輸入體積的序列表示,并有效地捕獲全局多尺度信息。 transformer 編碼器通過不同分辨率的跳過連接直接連接到解碼器,以計算最終的語義分段輸出。
在Multi-Atlas Labeling Beyond the Cranial Vault (BTCV) dataset上測試了 UNETR 模型的有效性,該模型由 30 名受試者組成,受試者進行腹部計算機斷層掃描( CT ),其中 13 個器官在范德比爾特大學醫學中心臨床放射科醫生的監督下由譯員注釋。將多器官分割問題描述為一個單通道輸入的 13 類分割任務。
我們使用 MONAI Deploy App SDK 在NVIDIA Clara AGX developer kit上構建和部署 UNETR 模型,該模型結合了高效的 Jetson AGX Xavier 嵌入式 Arm SoC 、強大的 NVIDIA RTX 6000 GPU 和 ConnectX-6 SmartNIC 的 100 GbE 連接。
開發者工具包提供了一個易于使用的平臺,用于開發軟件定義、支持人工智能的實時醫療設備。 MONAI Deploy App SDK 提供了一個框架和相關工具,用于設計、驗證和分析用于醫療保健應用程序的 AI 推理管道的性能。
以下重點介紹了構建和部署 UNETR 應用程序的步驟:
- 設置您的環境并安裝MONAI Deploy App SDK package。
- 創建UNETR model specific segmentation operator。
- 通過添加 MONAI App Deploy SDK DICOM 域特定運算符創建應用程序類,并將其與 UNETR 運算符連接。
- Package the UNETR app
有關更多信息,請參閱以下參考資料:
- 有關 MONAI 部署示例應用程序和 MONAI 部署應用程序 SDK 體系結構,請參閱Getting Started。
- 有關使用 MONAI 部署應用程序 SDK 構建和部署應用程序的信息,請參閱Developing with SDK。
- 有關構建分段應用程序的示例,請參見Creating a Segmentation App。
使用 NVIDIA Clara 呈現服務進行可視化
為了可視化 MONAI 部署應用程序的分割輸出,我們使用英偉達 Clara 渲染服務器應用程序容器,可以從 NGC 下載。
渲染服務由三個容器組成:渲染服務器、數據集服務和儀表板。
渲染服務器容器
渲染服務器容器處理數據集的實時流和渲染。
使用以下命令拉動渲染服務器容器:
docker pull nvcr.io/nvidia/clara/renderserver_ng:0.8.1-2108.1
使用以下命令運行渲染服務器容器:
nvidia-docker run -it --rm -d \--name renderserver \--network claranet \-p 2050:2050 \-v `pwd`/input:/app/datasets \nvcr.io/nvidia/clara-renderserver:linux-x86-0.8.1
數據集服務容器
數據集服務容器處理數據集。它目前只支持 MHD 、 RAW 、 JSON 和元文件。
使用以下命令拉入數據集服務容器:
docker pull nvcr.io/nvidia/clara/clara-datasetservice:0.8.1-2108.1
每個數據集所需的文件位于文件夾/datasets
下,由 UNETR 應用程序生成。以下是生成的文件列表:
config.meta config_render.json img0066.nii.gz img0066.output.mhd img0066.output.raw
- config . meta– 定義數據集應使用的基本信息和配置。
- config _ render . json– 定義加載時數據集與渲染服務器一起使用的默認渲染設置(燈光、攝影機、傳遞函數等)。
- img0066 . gz– 從 DICOM 轉換的原始圖像。
- img0066 . output . mhd-MHD 格式的遮罩圖像。這個未經加工的文件包含實際像素。
使用以下命令啟動數據集服務容器:
export ARGS_SERVICE_RSDS_PORT=50055 # Port number of Dataset Service export ARGS_SERVICE_RSNG_IP=xxx.xxx.xxx.xxx # IP address of Render Service export ARGS_SERVICE_RSNG_PORT=2050 # Port number of Render Service export ARGS_SERVICE_RSUI_IP=xxx.xxx.xxx.xxx # IP address of Dashboard export ARGS_SERVICE_RSUI_PORT=8080 # Port number of Dashboard docker run -it --rm -d \-v `pwd`:/app/datasets \-p ${ARGS_SERVICE_RSDS_PORT:-50055}:50055 \-e SERVICE_RSNG_IP=${ARGS_SERVICE_RSNG_IP:-renderserver} \-e SERVICE_RSNG_PORT=${ARGS_SERVICE_RSNG_PORT:-2050} \-e SERVICE_RSUI_IP=${ARGS_SERVICE_RSUI_IP:-dashboard} \-e SERVICE_RSUI_PORT=${ARGS_SERVICE_RSUI_PORT:-8080} \--name clara-datasetservice \nvcr.io/clara/clara-datasetservice:0.8.1 _RSNG_IP=xxx.xxx.xxx.xxx # IP address of Render Service
儀表板容器
儀表板容器是一個 web 應用程序和 API 服務器。這些組件是用 JavaScript 編寫的,使用 React 和 Node . js ,并支持用 Angular 編寫的遺留 WebUI 的向后兼容性。
使用以下命令拉動儀表板容器:
docker pull nvcr.io/nvidia/clara/clara-dashboard:0.8.1-2108.1
使用以下命令啟動儀表板容器:
docker run -it --rm -d
-p ${ARGS_SERVICE_RSUI_PORT:-8080}:8080
-e SERVICE_RSDS_IP=${ARGS_SERVICE_RSDS_IP:-datasetservice}
-e SERVICE_RSDS_PORT=${ARGS_SERVICE_RSDS_PORT:-50055}
-e SERVICE_RSNG_IP=${ARGS_SERVICE_RSNG_IP:-renderserver}
-e SERVICE_RSNG_PORT=${ARGS_SERVICE_RSNG_PORT:-2050}
-e NODE_ENV=${ARGS_NODE_ENV:-standalone}
--name clara-dashboard
nvcr.io/clara/clara-dashboard:
要啟動實時交互流,請從 Render Service 應用程序菜單中的 dataset 列表中選擇一項(圖 3 )。

要上載渲染設置中的更改,請選擇數據集名稱旁邊的更新圖標。首次加載數據集時,該圖標處于非活動狀態,但在對渲染設置進行任何后續更改(例如,更改視圖位置、攝影機設置或傳遞函數設置)后,該圖標將啟用。更新時,數據集渲染設置將上載到數據集服務數據庫。

向 NVIDIA Clara 渲染服務器添加語音命令
您可以使用語音命令和文本查詢與英偉達 Clara 渲染服務器進行交互。通過集成 Riva 語音服務器和零快照對話管理器服務器來實現這一點,該服務器可以通過 HTTP 上的 REST API 調用為客戶端提供服務。有關更多信息,請參閱NVIDIA Riva Speech Skills。
安裝三個容器(儀表板、渲染服務器和數據集服務)后,必須在啟用自動語音識別( ASR )和文本到語音( TTS )服務的情況下訪問 Riva 服務器。 Zero shot Dialog Manager 服務器應該在邊緣服務器上運行(圖 2 )。
您可以為實時流交互添加不同的語音命令,如“放大/縮小”和“向左/向右平移”或更復雜的語音命令,如“移除肋骨”
將 Zero-shot Dialog Manager 服務器與 NVIDIA Clara 儀表板集成
要將零炮對話管理器與 NVIDIA Clara 集成,請執行以下步驟:
- 添加用戶界面字段以從用戶處獲取文本命令。
- 在儀表板中添加代碼,以使用用戶文本向 Zero shot Dialog Manager 服務器發送 HTTP GET 請求。 Zero shot GET 請求必須采用以下格式:
http://<Zero Shot Server IP>:<PORT>/<Project Name>/process_query?query=<user entered text>
- 在儀表板中添加代碼以處理來自 Zero shot 服務器的響應。
- 確定特定意圖(例如:“放大/縮小”)后,儀表板必須實現請求儀表板后端執行相應操作的方法。儀表板通過調用適當的 gRPC API 到達渲染服務器和數據集服務。
Riva ASR 和 TTS 服務與英偉達 Clara 儀表板的集成
要通過 Riva 添加可用的 ASR 服務,請執行以下步驟:
- 向儀表板用戶界面添加代碼以請求麥克風訪問。
- 參考 Riva ASR 示例,實現用戶音頻輸入到儀表板后端的流媒體功能。您可以使用Web Audio API和 Socket . IO 。
- 修改儀表板后端,以便當您從用戶界面收到請求時,對 Riva 服務器進行適當的調用并返回響應。這主要涉及導入 Riva proto 文件。有關更多信息,請參閱 gRPC 和協議緩沖區。
儀表板用戶界面從儀表板后端接收到轉錄的響應后,將其轉發到 Zero-shot Dialog Manager 服務器,該服務器返回相應的響應。儀表板執行適當的步驟,并使用 Zero shot Dialog manager 響應調用 Riva TTS ,以便用戶界面獲得可作為響應播放的音頻。
類似地,將 Riva TTS 服務與英偉達 Clara 儀表板集成如下步驟:
- 在用戶界面中實現一種方式,以播放從 Riva TTS 接收到的音頻。
- 向儀表板用戶界面添加代碼,以將零炮響應文本發送到儀表板后端。
- 將所有 gRPC 客戶端邏輯添加到儀表板后端,以便它可以連接到 Riva TTS 服務器。成功后,將語音響應發送回儀表板用戶界面進行播放。
圖 5 依次顯示了 NVIDIA Clara 儀表板和 Riva 以及 Zero-shot 對話框管理器之間的 API 調用。

使用 NVIDIA 艦隊命令進行部署
NVIDIA 艦隊司令部為任何規模的企業帶來安全邊緣 AI 。通過云,您可以部署和管理 NGC 目錄或 NGC P Riva te 注冊表中的應用程序,通過無線方式更新系統軟件,并通過瀏覽器和互聯網連接遠程管理系統。有關更多信息,請參閱Developing Your Application for Fleet Command。
要使用英偉達命令部署 NVIDIA Clara HORSOCAN 應用程序,可以為應用程序創建一個頭盔圖。 Helm 是一個包管理器,用于在 Kubernetes 中部署容器化應用程序,這與 Debian / RPM 用于 Linux 或 Jar / War 用于基于 Java 的應用程序非常相似。
舵手世界中的一個包稱為圖表,特定目錄樹中的文件集合,用于描述一組相關模板。目錄名是沒有版本控制信息的圖表的名稱。當圖表打包為檔案,這些圖表目錄被打包到一個 TGZ 文件中,其文件名包含其版本,使用 SemVer2 版本控制格式。以下是 NVIDIA Clara 存檔名稱的示例格式:
clara-renderserver {semVer2}.tgz
可以使用以下命令創建新的舵圖:
helm create clara-renderserver
此命令創建 Clara -renderserver 圖表目錄以及圖表中使用的常用文件和目錄。具體來說,這是圖表目錄的樹形結構:
|-- Chart.yaml # A YAML file containing information about the chart |-- templates # A directory of templates that, when combined with values ,will generate valid Kubernetes manifest files. | |-- _helpers.tpl | |-- cache-volume-claim.yaml | |-- cache-volume.yaml | |-- deployment.yaml | |-- svc.yaml | |-- volume-claim.yaml | `-- volume.yaml `-- values.yaml # The default configuration values for this chart # A YAML file containing information about the chart
deployment . yaml 文件位于/ templates 目錄中,用于定義 Kubernetes 中部署對象的結構:
apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "clara-renderer.fullname" . }} labels: {{ include "clara-renderer.labels" . | indent 4 }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app.kubernetes.io/name: {{ include "clara-renderer.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} template: metadata: [metadata info] spec: {{- with .Values.images.pullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} containers: - name: ui-{{ .Chart.Name }} image: "{{ .Values.images.namespace }}/{{ .Values.images.renderui }}:{{ .Values.images.tag }}" imagePullPolicy: {{ .Values.images.pullPolicy }} env: - name: SERVICE_RSDS_IP value: "0.0.0.0" - [more env variable assignment] ports: - name: "{{ .Values.ui.portName }}" containerPort: {{ .Values.ui.port }} hostPort: {{ .Values.ui.hostPort }} protocol: TCP - name: renderer-{{ .Chart.Name }} image: "{{ .Values.images.namespace }}/{{ .Values.images.renderserver }}:{{ .Values.images.tag }}" imagePullPolicy: {{ .Values.images.pullPolicy }} ports: - name: "{{ .Values.rsng.portName }}" containerPort: {{ .Values.rsng.port }} protocol: TCP env: - name: CUDA_CACHE_PATH value: "/cache/CudaCache" - name: OPTIX_CACHE_PATH value: "/cache/OptixCache" volumeMounts: [volume mount information] - name: dataset-service-{{ .Chart.Name }} image: "{{ .Values.images.namespace }}/{{ .Values.images.datasetservice }}:{{ .Values.images.tag }}" imagePullPolicy: {{ .Values.images.pullPolicy }} env: - name: DATASET_REPO_PATH value: "/datasets" -[dataset env variable assignment]
要驗證舵圖,請運行以下命令:
helm lint clara-renderserver
接下來,打包舵圖:
helm package clara-renderserver
有關在 NGC 上發布掌舵圖的更多信息,請參閱NGC Helm Charts。
要使用 NVIDIA Fleet 命令部署,請根據您創建的頭盔圖表創建應用程序:

下一步是為應用程序添加部署:

創建部署時,應用程序將部署在 Fleet 命令中的配對邊緣站點上。要更改應用程序的配置,請使用 Helm upgrade 命令。
某些系統更新可能需要重新啟動。如果需要重新啟動, Fleet 命令堆棧會在系統運行后自動重新啟動應用程序。您的 NVIDIA Clara Holoscan 應用程序應該能夠通過系統更新或系統重新啟動進行正常恢復和持久化。
總結
有關入門的更多信息,請參閱NVIDIA Clara Holoscan產品頁。了解更多有關醫療保健中人工智能的信息,請訪問NVIDIA GTC,在線運行至 11 月 11 日。
有關更多信息,請參閱以下參考資料: