NVIDIA Clara 简介

一个为优化医疗保健和生命科学的开发应用框架

NVIDIA Clara是一个医学领域AI应用框架,用于人工智能成像、基因组学以及智能传感器的开发和部署。它包括全栈GPU加速库、SDK和相关应用程序,供开发人员、数据科学家和研究人员创建实时、安全和可扩展的解决方案。
2018年,NVIDIA首次发布了用于医疗行业的计算引擎NVIDIA Clara,助力医疗行业发展,提供给客户更方便更易上手的医疗AI开发与部署工具,就算是不熟悉程序的医疗从业人员,也可以快速训练出自己的AI模型并部署到工作场景中。
Clara的命名是以纪念北美红十字会的创办人Clara Barton。

Clara for medical image

作为开发人员主要关注Clara for medical image部分,此部分中包含Clara Train SDK,Clare Deploy SDK和Clara AGX SDK三个SDK,关系如下图所示:
在这里插入图片描述

  1. Clara Train ,是一个基于TensorFlow的开发框架,包含Data preparation、Training、Model output三个部分。在预处理的部分包含AIAA(AI-Assisted Annotation)AI辅助标记工具以及数据类型的转换工具。Training的部分包含NGC(NVIDIA GPU CLOUD)上提供的pretrained models,单GPU和多GPU的训练,AutoML以及联邦学习;
  2. Clara Deploy 提供了一个行业标准的,基于容器的开发和部署框架,用于构建AI加速的医学成像工作流程。 SDK使用Kubernetes,为开发人员和数据科学家提供定义基于多阶段容器的管道的能力。这种模块化架构允许开发人员使用开箱即用的平台产品进行最少的自定义,或者使用自带的算法创建新的工作流程。可使用Clara Deploy SDK创建、管理和部署AI增强的临床工作流程;
  3. Clara AGX SDK 还没看是什么功能;

1 Clara Train SDK的安装

环境要求

1.1 Nvidia-docker

nvidia-docker比普通docker多了访问GPU的能力,暂不支持Windows。安装教程很多,这里我用了离线包安装,下载地址:https://download.docker.com/linux/ubuntu/dists/.
选择xenial→选择pool→选择edge(目前docker19.03版本还不属于stable版本),选择amd64(一般都是这个,具体参照:https://www.debian.org/ports/index.zh-tw.html),下载containerd.io,docker-ce-cil,docker-ce,因为有依赖关系,按顺序安装,顺序错了会提示你。(dpkg -i 即可)
如果你安装了旧版的docker,需要先卸载:参考官网:https://docs.docker.com/install/linux/docker-ce/ubuntu/
测试:

sudo docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

出现
在这里插入图片描述成功。

1.2 拉取Clara train sdk镜像

docker pull pengbol/clara-train-sdk-original

此为docker hub上镜像2.0版本,最新官方已经发布3.0版本,但是需要科学上网才行,需要注册NGC账户,参考教程:在个人电脑上搭建 Nvidia GPU Cloud(NGC) 环境,保存获得的API KEY,然后docker上登录nvcr.io账户,然后下载官网版本:

    $ docker login nvcr.io
     
    Username: $oauthtoken
    Password: <Your Key>
	docker pull export dockerImage=nvcr.io/nvidia/clara-train-sdk:v3.0

下载完成后提示了/var/lib/docker 空间满的警告,然后移动docker到了大的盘里面,参考教程https://www.jianshu.com/p/cc2b1513fd62

1.3 Running the container

export dockerImage=pengbol/clara-train-sdk-original
docker run -it --rm --shm-size=1G --ulimit memlock=-1 --ulimit stack=67108864 --ipc=host --net=host --mount type=bind,source=/your/dataset/location,target=/workspace/data $dockerImage /bin/bash

或者

export dockerImage=holgerroth/clara-train-sdk:covid-fl_2020-07-10
docker run --shm-size=1G --ulimit memlock=-1 --ulimit stack=67108864 -it --rm -v /home/<username>/clara-experiments:/workspace/clara-experiments $dockerImage /bin/bash

-v或-mount的区别可以自行百度,我用的-v。若挂载到docker主机上不存在的目录-v会创建此目录,-mount不会,我用的是-v,样本和下载好的mmar包都放在了dataset文件夹内,从而挂载到容器中。
电脑有GPU则只需要在命令–rm后面加–gpus=1或者–gpus all表示所有GPU。
此时可以访问NGC模型库,查看可用模型使用命令:ngc registry model list nvidia/med/*
选择一个模型进行下载:

MODEL_NAME=clara_mri_seg_brain_tumors_br16_full_amp
VERSION=1

ngc registry model download-version nvidia/med/$MODEL_NAME:$VERSION --dest /var/tmp

Downloaded 49.74 MB in 4s, Download speed: 12.4 MB/s
----------------------------------------------------
Transfer id: clara_mri_seg_brain_tumors_br16_full_amp_v1 Download status: Completed.
Downloaded local path: /var/tmp/clara_mri_seg_brain_tumors_br16_full_amp_v1
Total files downloaded: 22
Total downloaded size: 49.74 MB
Started at: 2020-01-13 19:01:06.519897
Completed at: 2020-01-13 19:01:10.526815
Duration taken: 4s

外网速度奇慢,代码块来自官方文档,但是不知道为什么下载完成之后再次打开模型又丢了,然后选择了直接用NGC网站上面下载模型:
在这里插入图片描述

其他说明也可参考官网文档
上述步骤参考文档2.0。
以及Nvidia Clara-Train-SDK配置过程
到此sdk的安装就完成了。

2 利用clara训练模型

2.1 数据准备

在此用图像分割任务做例子,所有图像都必须为NIfTI格式,图像与掩码的维度必须相同。
数据可以放在任意位置,但是在datalist.json文件中必须包含所有数据的相对路径,例如文件结构如下:
在这里插入图片描述
datalist.json中例子如下:
在这里插入图片描述
如果图像的多通道分别保存到了单独的图片,那么datalist.json可以这么写:
在这里插入图片描述
如果dicom或者分辨率是不同向性的,那么就需要转换为各向同性NIfTI格式,使用如下命令:

nvmidl-dataconvert -d your/data/directory -r 1 -s .dcm -e .nii.gz -o your/output/directory

If the data format is DICOM or the resolution is not isotropic, one can use the provided data converter tool to convert the data to isotropic NIfTI format. Furthermore, many pre-trained models were trained on 1x1x1mm resolution images, and to use those pre-trained models as a starting point, convert the data to 1x1x1mm NIfTI format (Notice: If the dataset is already in NIfTI format, but not with 1x1x1 mm spacing, the data conversion is still required for the dataset.).

The nvmidl-dataconvertcommand converts all dicom volumes in your/data/directory to NIfTI format and optionally re-samples them to the provided resolution. If the images to be converted are segmentation labels, the-lflag needs to be added so the resampler will use nearest neighbor interpolator (otherwise linear interpolator is used).

OptionDescription
-dInput directory with subdirectories containing dicom images.
-rOutput image resolution. If not provided, dicom resolution will be preserved. If only a single value is provided, target resolution will be isotrophic (e.g. -r 1 for 1x1x1mm resolution).
-sInput file format, can be .dcm, .nii, .nii.gz, .mha, .mhd.
-eOutput file format, can be .nii, .nii.gz, .mha, .mhd.
-oOutput directory.
-f(Optional) Force overwriting exsisting files if output directory already exists.
-l(Optional) Flag indicating that the data is LABEL/SEGMENTATION masks and the nearest neighbor interpolation is used for re-sampling.

这段我也不是太理解,怕翻译有误解,直接贴上原文。应该就是保证dicom都有同向性的分辨率以及每个像素对应大小都是1x1x1毫米的。

2.2 模型准备

NGC上面有许多个预训练好的模型,例如安装时候下载的clara_mri_seg_brain_tumors_br16_t1c2tc_no_amp模型,下载完成后是一个Medical Model Archive文件,简称MMAR,此文件定义了一个标准结构,用于组织在模型开发生命周期中生成的所有工件。
文件结构如下:
在这里插入图片描述
下载好的MMAR包中的config文件夹下面有datalist例子,文件名类似seg_brats18_datalist_t1c.json,可以参考。
然后修改各种json文件,.sh文件配置好之后调用、commands下的train.sh开始训练,有GPU的使用train_2gpu.sh开始训练,带finetune的表示从上次训练完成的ckpt文件中继续训练,训练完成输出的模型为ckpt文件。具体说明参考MMAR官网文档

2 AI-Assisted Annotation的安装

AIAA是一个智能辅助标记服务器,可以使用MITK或者3D Slicer选择此服务器,以MITK为例,先载入图像->设置label的名字->选择3D tools-> Nidia segmentation。
AIAA的安装步骤如下,使用如下命令进入AIAA容器:

export NVIDIA_RUNTIME="--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0"
export OPTIONS="--shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864"
export SOURCE_DIR=<source dir to store>
export MOUNT_DIR=/aiaa-experiments
export LOCAL_PORT=<the port you want to use>
export REMOTE_PORT=80
export DOCKER_IMAGE="nvcr.io/clara-train-sdk:<version here>"

docker run $NVIDIA_RUNTIME  $OPTIONS -it --rm \
       --ipc=host \
       -p $LOCAL_PORT:$REMOTE_PORT \
       -v $SOURCE_DIR:$MOUNT_DIR \
       $DOCKER_IMAGE \
       /bin/bash

再启动服务:

# Run with workspace (AIAA Server will be running at: http://127.0.0.1/)
start_aas.sh --workspace /aiaa-experiments/aiaa-1

# Run AIAA to run TF Inference engine
start_aas.sh --workspace /aiaa-experiments/aiaa-1 --engine AIAA

# Run AIAA to run TRTIS Inference engine (TRTIS will be started at 8001 on localhost)
start_aas.sh --workspace /aiaa-experiments/aiaa-1 --engine TRTIS

# Run AIAA to connect to remote TRTIS Inference engine (Debug only; Some options may not work)
start_aas.sh --workspace /aiaa-experiments/aiaa-1 --engine TRTIS --trtis_ip 10.20.11.34 --trtis_model_path /shared/trtis_models

启动完成后通过上面设置的端口访问http://127.0.0.1:88/(我设置的外部端口是88)成功进入AIAA服务界面:
在这里插入图片描述
然后拉取NGC上已经预训练的模型到AIAA服务上面,有多个方法,下面介绍两个:
方法1:通过可视化界面交互的方式获取, http://127.0.0.1:88/docs/填写相关信息;
方法2:新开一个命令窗口,通过命令将NGC上的预训练模型上传:

curl -X PUT "http://127.0.0.1:[port]/admin/model/clara_ct_seg_spleen_amp" \
     -H "accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"path":"nvidia/med/clara_ct_seg_spleen_amp","version":"1"}'

或者先下载在上传:

ngc registry model download-version nvidia/med/clara_ct_seg_spleen_amp:1

curl -X PUT "http://127.0.0.1:[port]/admin/model/clara_ct_seg_spleen_amp" \
     -F "config=@clara_ct_seg_spleen_amp_v1/config/config_aiaa.json;type=application/json" \
     -F "data=@clara_ct_seg_spleen_amp_v1/models/model.trt.pb"

ps:@后跟本机绝对路径。
方法3:通过本地模型的MMAR包上传,命令如下:

# loading segmentation spleen model
curl -X PUT "http://127.0.0.1/admin/model/clara_ct_seg_spleen_amp" \
     -F "data=@clara_ct_seg_spleen_amp.with_models.tgz"

需要先进入模型所在文件夹。
我使用方法2先下载然后在上传成功了,在线的速度都奇慢还会崩。上传成功后打开http://0.0.0.0:88/v1/models就可以查看上传的模型了,我设置的端口是88根据自己相应的修改。
在这里插入图片描述

3 clara deploy sdk

需要科学上网,未完待续~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值