基于 Snowflake 的 MONAI 分布式医学影像处理 | 技术实践

点击查看原文>

2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!

概述

医学图像配准是医学人工智能领域的一项核心任务,旨在实现不同时间点或不同呼吸相位采集的计算机断层扫描(CT)图像之间的空间对齐。本指南将演示如何在支持 GPU 加速的 Snowflake Container Services 平台上,利用 MONAI(Medical Open Network for AI)构建一个可用于生产环境的分布式训练与推理流程。

通过本指南,您将完成一个完整的医学图像配准系统的构建,具体包括以下内容:

• 从公共数据集下载并处理肺部 CT 扫描图像;

• 基于 Ray 分布式计算框架训练 LocalNet 深度学习模型;

• 将训练完成的模型注册至 Snowflake 模型注册表;

• 在多个 GPU 上执行分布式推理。

内容架构

• 基于 NIfTI 格式的医学影像数据摄入流水线;

• 基于 Ray 和 MONAI 框架的分布式训练系统;

• 利用 Snowflake 模型注册表实现的模型管理及版本控制工作流;

• 支持并行处理的分布式推理流水线;

• 包含影像配准质量评估指标的结果数据表。

学习目标

• 掌握在配备 GPU 计算池的 Snowflake 容器运行时环境中使用笔记本的方法;

• 学习如何将 MONAI 医学影像分析框架与 Snowflake 平台进行集成;

• 理解如何利用 Ray 进行分布式深度学习任务的高效调度与执行;

• 掌握通过 Snowflake 模型注册表进行机器学习模型全生命周期管理的方法;

• 学习在 Snowflake 内部阶段存取医学影像数据的技术方法。

准备要求

• 熟悉 Python 编程语言,掌握深度学习基本概念;

• 具备医学影像相关知识者优先(非必需);

• 拥有支持容器运行时及 GPU 计算池的 Snowflake 账户;

• 可访问Snowflake注册页面(https://signup.snowflake.com)免费创建账户。

架构概述

解决方案架构

该 MONAI 医学影像处理方案包含三个运行于 Snowflake 容器运行时并采用 GPU 加速的笔记本:

1. 数据摄入(01_ingest_data.ipynb)

• 下载来自公开数据集的配对肺部 CT 扫描数据;

• 将 NIfTI 格式文件上传至加密的 Snowflake 内部阶段。

2. 模型训练(02_model_training.ipynb)

• 初始化 Ray 集群以实现分布式计算;

• 训练 LocalNet 配准模型;

• 将检查点文件保存至 Snowflake 内部阶段;

• 在 Snowflake 模型注册表中完成模型注册。

3. 模型推理(03_model_inference.ipynb)

• 从模型注册表加载训练好的模型;

• 跨 GPU 执行分布式推理任务;

• 将配准后的图像及相关指标保存至 Snowflake。

关键技术

设置 Snowflake 环境

在此步骤中,您将创建 MONAI 解决方案所需的所有 Snowflake 对象。该设置脚本会自动从 GitHub 下载并配置所有笔记本!

步骤 1:创建数据库对象

  1. 在 Snowsight 中,点击左侧导航栏的"项目",然后选择"工作区",或直接点击此处跳转

  2. 点击"+ 新增"以创建新的工作区

  3. 点击"SQL 文件"以创建新的 SQL 文件

  4. 从 setup.sql 复制设置脚本,并粘贴到您的 SQL 文件中

步骤 2:运行设置脚本

运行完整设置脚本,以自动创建以下内容:

角色:SF_CLINICAL_DATA_SCIENTIST,并授予相应权限;

仓库:SF_CLINICAL_WH(小型);

数据库:SF_CLINICAL_DB,包含 UTILS 和 RESULTS 模式;

暂存区:NOTEBOOK_STG、SF_CLINICAL_MEDICAL_IMAGES_STG、RESULTS_STG;

网络规则及外部访问集成:用于 pip 安装及 GitHub 访问;

GPU 计算池:SF_CLINICAL_GPU_ML_M_POOL(采用 GPU_NV_M 实例);

笔记本:从 GitHub 自动下载并配置全部 3 本笔记本。

该脚本将创建一个名为 LOAD_NOTEBOOKS_FROM_GITHUB() 的存储过程,用于:

  1. 从 GitHub 仓库下载所有笔记本文件

  2. 将其上传至 NOTEBOOK_STG 暂存区

  3. 使用正确的计算池和仓库创建笔记本

  4. 为每本笔记本配置外部访问集成

步骤 3:验证笔记本

设置脚本完成后,在 Snowsight 中依次导航至“项目” → “笔记本”。您应能看到三个已创建的笔记本:

• SF_CLINICAL_01_INGEST_DATA;

• SF_CLINICAL_02_MODEL_TRAINING;

• SF_CLINICAL_03_MODEL_INFERENCE。

运行数据导入笔记本

步骤 1:打开笔记本

1. 在 Snowsight 中,导航至"项目"→"笔记本",或点击此处直接进入

  1. 在 SF_CLINICAL_DB.UTILS 模式下找到 SF_CLINICAL_01_INGEST_DATA 笔记本

  2. 点击打开该笔记本

步骤 2:启动容器运行时

  1. 点击右上角的"启动"按钮

  2. 等待容器运行时完成初始化(首次运行可能需要 2-3 分钟)

  3. 此时您应能看到笔记本的内核已变为活动状态

步骤 3:安装依赖包并重启内核

  1. 运行 install_dependencies 代码单元(!pip install monai)以安装 MONAI 库

  2. 系统将显示"可能需要重启内核"的消息,并附带"显示操作步骤"按钮——请点击该按钮

  3. 页面顶部("活动"按钮旁)将展开一个下拉菜单

  4. 点击"重启内核"以加载新安装的软件包

步骤 4:运行剩余单元格

内核重启后:

  1. 点击笔记本顶部的 Run All (全部运行),执行所有单元格

将运行以下剩余单元格:

初始化会话:连接至 Snowflake 并设置查询标签;

下载数据:从 Zenodo 下载配对肺 CT 扫描数据(约 266MB);

上传至存储阶段:将 NIfTI 格式文件上传至 Snowflake 存储阶段。

预期输出

成功执行后,您应看到:

• 已上传 20 例配对肺 CT 扫描病例;

• 文件已归类存储于 lungMasksExp、lungMasksInsp、scansExp、scansInsp 文件夹中;

• 所有文件均采用 Snowflake 服务器端加密保存。

Step 5: Exit and Proceed to Next Notebook

  1. 点击左上角的 ← 返回箭头

  2. 在"结束会话?"对话框中,点击 End session(结束会话)

  3. 请继续下一个笔记本(02_模型训练)

运行模型训练笔记本

步骤 1:打开训练笔记本

1. 导航至"项目"→"笔记本"

  1. 在 SF_CLINICAL_DB.UTILS 模式下打开 SF_CLINICAL_02_MODEL_TRAINING 笔记本

  2. 点击"启动"按钮初始化容器运行环境

步骤 2:安装依赖包并重启内核

  1. 运行 install_ml_packages 代码单元(!pip install snowflake-ml-python --upgrade nibabel monai)

  2. 出现"可能需要重启内核"提示信息,并显示"显示操作步骤"按钮,请点击该按钮

  3. 顶部("激活"按钮旁)弹出下拉菜单

  4. 点击"重启内核"以加载新安装的软件包

步骤 3:运行剩余单元格

内核重启完成后:

1. 点击笔记本顶部的 Run all(全部运行),执行所有单元格

步骤 4:理解训练流程

笔记本将执行以下关键步骤:

1. ML 任务配置:设置用于 GPU 训练的 Snowflake ML 任务

2. 数据加载:从存储阶段读取配对的 CT 扫描路径

3. 模型定义:构建 LocalNet 配准网络

4. 训练循环:采用互信息损失与弯曲能量损失联合训练

5. 模型注册:将最佳模型保存至 Snowflake 模型注册表

步骤 5:监测训练进度

训练循环将显示以下内容:

• 当前迭代轮次(Epoch)与总损失值(Total Loss);

• 相似性损失(衡量图像配准质量);

• 正则化损失(衡量形变平滑程度);

• 验证集 Dice 系数(衡量分割区域重叠度)。

此外,本笔记本还提供交互式 CT 扫描可视化功能,方便用户查看训练数据。

步骤 6:验证模型注册

训练完成后,系统会自动将模型注册至 Snowflake 模型注册表。此时可在输出结果中查看名为 LUNG_CT_REGISTRATION 的模型及其版本号 v1。

步骤 7:退出并进入下一个笔记本

  1. 点击左上角的←返回箭头

  2. 在“结束会话?”对话框中,点击“结束会话(End session)”

  3. 继续进入下一个笔记本(03_模型推理)

运行模型推理笔记本

步骤 1:打开推理笔记本

1. 导航至“项目”→“笔记本”

  1. 打开 SF_CLINICAL_DB.UTILS 模式中的 SF_CLINICAL_03_MODEL_INFERENCE 笔记本

  2. 点击“启动”以初始化容器运行时

步骤 2:安装依赖包并重启内核

  1. 运行 install_ml_packages 代码单元(!pip install snowflake-ml-python --upgrade)

  2. 出现"可能需要重启内核"提示信息,并显示"显示操作步骤"按钮,请点击该按钮

  3. 顶部(“激活”按钮旁)弹出下拉菜单

  4. 点击"重启内核"以加载新安装的软件包

步骤 3:运行剩余代码单元格

内核重启完成后:

  1. 点击笔记本顶部的“全部运行(Run all)”按钮,执行所有代码单元格

步骤 4:查看推理结果

本笔记本将:

1. 加载模型:从模型注册表获取训练完成的模型

2. 执行批量推理:采用 run_batch() 应用程序接口实现分布式图形处理器并行处理

3. 处理影像数据:对所有测试病例进行并行图像配准操作

4. 保存结果:将配准后的影像写入存储阶段,并将评估指标存入数据表

笔记本将自动呈现结果,并将数据保存至 SF_CLINICAL_DB 数据库的 RESULTS 架构下的 SF_CLINICAL_INFERENCE_RESULTS 结果表中。

清理

要移除本指南创建的所有资源,请按以下步骤操作:

  1. 在 Snowsight 中停止所有正在运行的笔记本。

  2. 在 Snowsight 中手动删除笔记本(项目 → 笔记本 → 选择 → 删除)。

  3. 打开您的 setup.sql 工作区(即您在设置期间使用的工作区)。

  4. 滚动到底部的“拆卸脚本”部分。

  5. 取消注释 DROP 语句。

  6. 运行拆卸命令。

拆卸脚本将移除本指南创建的所有计算池、集成、数据库对象、仓库和角色。

结论与资源

恭喜您!您已成功使用 Snowflake 上的 MONAI 构建了一个分布式医学图像配准流程。

学习要点

• 如何配置支持 GPU 计算池的 Snowflake 容器运行时;

• 如何使用 MONAI 执行医学图像处理任务;

• 如何利用 Ray 进行分布式训练和推理;

• 如何使用 Snowflake 模型注册表管理机器学习模型;

• 如何在 Snowflake 内部阶段中存储和处理医学图像。

相关资源

博客:

Medium:基于MONAI的分布式医学图像处理

Snowflake 文档:

• 容器运行时上的笔记本;

模型注册表

MONAI 资源:

• MONAI 文档;

MONAI GitHub

MONAI教程

Ray 文档:

• Ray Train。

原文地址:https://www.snowflake.com/en/developers/guides/distributed-medical-image-processing-with-monai/

点击链接立即报名注册:Ascent - Snowflake Platform Training - China更多 Snowflake 精彩活动请关注专区


本文来源:InfoQ