使用Clara Deploy SDK创建、管理和部署AI增强的临床工作流程

技术部
2006 0 2019-04-30
医疗成像行业正在经历由两种技术趋势驱动的巨大转变:人工智能和软件定义的解决方案正在重新定义医学成像工作流程。

人工智能,特别是深度学习,在放射学中展示了疾病检测,定位和分类的巨大潜力。它已经表明,通过优先考虑最严重或时间敏感的病例,它可以通过提高效率和有效性来提高人类寿命。这些效率为医院系统节省了时间和金钱,将宝贵的资源集中用于挽救生命。

医学成像领域的深度学习研究正在蓬勃发展,然而,今天的大部分研究都是孤立地进行的,并且数据集有限。这导致过度简化和不可扩展的模型,其仅对于某些人口统计和一组成像设备具有高精度。与此同时,由于缺乏技术专长、资源和深度学习所需的庞大数据量,较小的医院缺乏为当地人口提供更高质量医疗服务的机会。

即使在创建有效的深度学习算法时,将这些智能算法部署到临床工作流程中的集成和可扩展性的挑战似乎也令人生畏。

Clara平台通过降低在临床工作流程中采用AI的标准来应对这些挑战。 Clara Train SDK提供传输学习和AI辅助注释功能,实现更快的数据注释和从源域到目标域的神经网络适应。一旦有质量保证的神经网络可用,本文中介绍的Clara Deploy SDK提供了开发能够集成到现有医院基础架构中的应用程序工作流所需的框架和工具。


Clara Deploy SDK提供了一个行业标准的,基于容器的开发和部署框架,用于构建AI加速的医学成像工作流程。 SDK使用Kubernetes,为开发人员和数据科学家提供定义基于多阶段容器的管道的能力。如图1所示,这种模块化架构允许开发人员使用开箱即用的平台产品进行最少的自定义,或者使用自带的算法创建新的工作流程。

核心能力

数据摄取——包括一个集装箱化的DICOM适配器接口,用于与医院PACS和其他成像系统通信(接收和传输数据)
管道管理器和核心服务——为基于TensorRT的推理和呈现的图像流提供基于容器的编排、资源管理和服务。
示例部署工作流——包括使用带有用户定义数据的示例工作流或使用用户定义的ai算法修改的示例工作流定义和配置基于容器的工作流的功能。
可视化功能——支持监视进度和查看最终结果的功能


图2.本文的范围未包括医院基础设施的详细信息

该图显示了Clara Deploy框架的不同部分如何结合在一起,为数据科学家和开发人员提供端到端功能,以构建与医院生态系统和规模集成的应用程序。

Clara DICOM适配器容器
DICOM适配器是Clara Deploy的映像数据接口。它为Clara Deploy与其他医疗设备和软件之间的互操作性实现了必要的DICOM服务,允许它使用标准DICOM协议接收和发送DICOM对象。

-DICOM适配器提供从PACS或其他成像系统接收DICOM数据的功能
-通过Clara Core容器将DICOM数据放入适合AI工作流触发器的有效负载中。这需要设置正确的DICOM和工作流配置文件。
-最后,在适当的时候将结果发送回PACS或其他成像系统

Clara Deploy SDK提供配置文件,通过指定DICOM配置和工作流参数来简化DICOM适配器部署。这些抽象的配置文件对于定义Clara Deploy工作流程至关重要。它们包括与DICOM研究所附加的管道管理器通信所需的参数,包括特定参考或用户定义的工作流程。 Clara Deploy包含的工具可将用户定义的工作流配置转换为Kubernetes Helm所需的必要格式。

管道管理和核心服务
Clara Deploy SDK将以下服务定义为核心服务:

-Clara Core容器——管理工作流并上下移动工作流所需的必要容器。用户定义的AI容器和工作流中的所有容器通过Clara工作流驱动程序访问核心的功能,如下所述。
-Clara工作流程驱动程序(WFD)——这是一个包含在工作流阶段工作进程中的库,是工作流程编排的基础。通过Workflow Driver Client API抽象与该模块的通信,如下所述。 Workflow Driver将研究代码迁移到多阶段生产开发环境中。
-工作流驱动程序客户端API——为作为工作流程一部分所需的容器提供集成。 API向Clara Core和容器之间传递信号,在工作流程中将工作从容器传递到容器。 API还支持“发布研究”,后者又调用TensorRT推理服务器。
-NVIDIA TensorRT推理服务器——高性能深度学习推理的平台。 Clara Deploy利用TensorRT推理服务器(TRTIS)作为核心服务,确保在定义的工作流程中优化推理。
-Clara Render Server(RS)——提供医疗数据的可视化。 Render Server支持不同的渲染算法和平台,允许开发人员创建自己的渲染器并将其插入渲染服务器。 Render Server的输入包括3D体数据或2D图像数据以及决定如何渲染数据的参数。 Render Server的输出可以是编码视频流或单个图像,从而实现远程客户端上的输出流。

参考AI工作流程

Clara Deploy SDK包含示例工作流程,开发人员可以利用这些工作流程及其本地DICOM数据,或使用这些工作流程作为示例来定义新的工作流程。

DICOM阅读—— DICOM Reader将DICOM文件转换为工作流其余部分所需的特定文件类型。 Clara Reference工作流程使用MHD文件。 Clara Reference Workflow附带的DICOM Read容器将DICOM系列转换为单个MHD文件。 DICOM文件通过Series Instance UID标头与DICOM系列相关联。
AI参考容器——该容器提供腹部CT上多器官分割的示例实施方式。它需要TensorRT推理服务器,并且是一个示例,用于展示数据科学家/开发人员如何使用此AI功能以及其特定于域的DICOM数据,或者使用此工作流程作为示例来定义具有自带AI容器的新工作流程。在开发新工作流程时需要使相关容器与工作流驱动程序兼容并相应地更新配置文件。
DICOM写—— Dicom Writer容器是工作流中的最后一个容器。它从先前的容器中读取MHD文件并输出DICOM文件。为每个MHD文件创建一个或多个DICOM文件。
默认工作流程——我们在此版本中提供了一组默认工作流程。 clara-reference-workflows / README.md中提供了默认工作流的详细信息

可视化功能
仪表板容器—— NVIDIA Clara Deploy支持通过基于Web的仪表板查看系统状态,使管理员可以轻松查看系统的运行情况。 Clara还支持通过相同的基于Web的界面将特定类型的研究数据呈现为3D可视化。 虽然工作流作业无法直接访问可视化服务,但他们可以将研究数据发布到提供的渲染服务器。

在CLARA Deploy Framework中定义和创建工作流
让我们看一下定义和创建示例工作流的示例演练。

命令行工具

Clara Deploy SDK包含一个命令行工具clara-wf []。 开发人员可以使用此工具定义工作流,为新容器或现有容器创建/更新舵图,以及在本地测试工作流。

./clara-wf [command] [arguments...]

Command List
  list_stages     | list   | ls
  create_stage    | create | cs  [stage name]
  delete_stage    | delete | ds  [stage name]
  publish_chart   | publish      [workflow id] [workflow name] [output folder path]
  test_workflow   | test         [workflow id] [job id]
    default args: 613e3fce-0d96-495a-a760-f43e68deefd8 00000000-0000-0000-0000-000000000000
  install_trtis
  uninstall_trtis
  set_ngc_api_key | setkey


工作流程定义
工作流程ID——工作流ID是手动创建的,并使用dicom-server配置文件进行配置。
名称—— 用户定义的工作流名称 此名称用于dicom-server配置。
阶段—— 工作流程中使用的容器。 “阶段”下的容器序列定义了工作流中容器的使用顺序。
waitlocks——每个阶段对其他阶段的依赖性。 锁定文件根据阶段名称自动生成。
ioFolders—— 输入工作流程中的每个阶段。 最后一个条目是工作流程最后阶段的输出。 最后一个条目的结果将发送到DICOM目的地。
ARGS—— 此工作流支持的命令行参数,并在容器的helm图表中定义。 参数及其值用双引号编写,并在运行时被选中执行。

创建容器Helm图
现在让我们看看如何创建用户定义容器的Helm图表。

确保使用clara驱动程序回调更新容器
导航到clara-reference-workflows文件夹
执行:./ clara-wf cs [container-name]
例如./clara-wf cs ai-vnet
执行步骤3将在clara-reference-workflow / charts / clara-workflow / values.yaml文件中生成[container-name]特定字段
打开clara-reference-workflow / charts / clara-workflow / values.yaml
在“stages:”部分下找到容器特定字段。 验证键值对与用户容器定义的相同,否则手动更新。
容器特定参数可以通过工作流定义传递

示例容器helm 图

在这里,用户通过clara-wf CLI将ai-vnet容器添加为一个阶段。 在clara-reference-workflow / charts / clara-workflow / values.yaml中为ai-vnet容器生成以下内容:

stages:
    ##BEGIN_ai-vnet##
        ai-vnet:
            image:
                repository: ai-vnet
                tag: latest
        mount:
            in:
                name: "input"
            out:
                name: "output"
        stageName: "ai-vnet"
        appDir: "/app"
        inputLock: "/app/locks/input.lock"
        inputs: "input"
        logName: "/app/logs/ai-vnet.log"
        outputs: "output"
        lockDir: "/app/locks"
        lockName: "ai-vnet.lock"
        timeout: "300"
    ##END_ai-vnet##

工作流程创建步骤。让我们假设开发人员想要使用dicom-reader容器,user-ai容器和dicom-writer容器创建工作流。工作流程的名称是用户工作流程。 dicom-reader和dicom-writer容器由Clara Deploy SDK提供; user-ai容器是用户创建的ai容器。

必须使用clara工作流驱动程序回调更新user-ai容器。默认情况下,dicom-reader和dicom-writer容器使用clara工作流驱动程序回调进行更新。有关其他详细信息,请参阅Clara Deploy SDK文档的6.2节。
确保为每个容器生成特定于容器的helm详细信息,并显示在stage:in clara-reference-workflow / charts / clara-workflow / values.yaml中。验证每个容器特定键值详细信息的正确性。
生成工作流程ID。在命令提示符下执行cat / proc / sys / kernel / random / uuid会生成一个可用于新工作流的ID。
使用新创建的工作流更新clara-reference-workflow / charts / clara-workflow / values.yaml。这是在工作流程密钥下完成的
添加工作流ID,名称(用户工作流),工作流中的阶段,每个阶段的waitLocks,每个阶段的ioFolders以及要为容器传递的任何所需参数。可选地,可以使用下面的配置细节。
创建ID为7b413e24-d018-4689-8c41-73272f6649d4的新工作流程。

1.工作流程名称是user-workflow
2.工作流使用dicom-reader,user-ai和dicom-writer容器
3.容器的排序是dicom-reader  - > user-ai  - > dicom-writer
4.工作流程从dicom-reader开始,dicom-reader输出到user-ai,user-ai输出到dicom-writer
5.user-ai容器在dicom-reader.lock文件上等待,而dicom-writer在user-ai.lock文件上等待。
6.ioFolders指定每个容器的输入文件夹。最后一个条目输入到dicom服务器以读取结果。

```bash
 7b413e24-d018-4689-8c41-73272f6649d4
 name: "user-workflow"
 stages: ["dicom-reader", "user-ai", "dicom-writer"]
 waitLocks: ["", "dicom-reader.lock", "user-ai.lock"]
 ioFolders: ["dicom-reader/input", "dicom-reader/output", "user-ai/output", "dicom-writer/output"]
 args: ["", "", ""]
 ```

注意:随机工作流ID只能用于一个工作流,对于任何其他新工作流,必须创建新ID。

-找到要在工作流中使用的dicom数据并将其发送到dicom服务器。 必须在clara-platform / files / dicom-server-config.yaml文件中配置dicom服务器。
-更新dicom配置设置。 首先,导航到clara-platform / files文件夹并打开dicom-server-config.yaml。 要么使用现有的AE-TITLE,要么在AE-title下使用AE-TITLE:key。 最后,在工作流程下包含新工作流程:密钥。 添加具有以下详细信息的新工作流:name,clara-ae-title,destination name和workflow ID。 可以使用下面的可选配置详细信息。

name: user-workflow
     clara-ae-title: CT_AI
     destination-name: DCM4CHEE
     workflow: 7b413e24-d018-4689-8c41-73272f6649d4


-在本地执行新工作流程。 首先,导航到clara-references-workflows文件夹。 然后执行./clara-wf test [workflow-ID]。 在这里的示例的情况下,这看起来像,例如:
./clara-wf test 7b413e24-d018-4689-8c41-73272f6649d4


获得Clara Deploy SDK
 Clara Deploy SDK公测已在GTC'2019发布。您可以在此处下载SDK (https://developer.nvidia.com/clara
我们希望听到您的反馈并参与最新的开发,请加入Clara Deploy SDK论坛(https://devtalk.nvidia.com/default/board/361/healthcare/)。