基于 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:创建数据库对象
在 Snowsight 中,点击左侧导航栏的"项目",然后选择"工作区",或直接点击此处跳转
点击"+ 新增"以创建新的工作区
点击"SQL 文件"以创建新的 SQL 文件
从 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() 的存储过程,用于:
从 GitHub 仓库下载所有笔记本文件
将其上传至 NOTEBOOK_STG 暂存区
使用正确的计算池和仓库创建笔记本
为每本笔记本配置外部访问集成
步骤 3:验证笔记本
设置脚本完成后,在 Snowsight 中依次导航至“项目” → “笔记本”。您应能看到三个已创建的笔记本:
• SF_CLINICAL_01_INGEST_DATA;
• SF_CLINICAL_02_MODEL_TRAINING;
• SF_CLINICAL_03_MODEL_INFERENCE。
运行数据导入笔记本
步骤 1:打开笔记本
1. 在 Snowsight 中,导航至"项目"→"笔记本",或点击此处直接进入
在 SF_CLINICAL_DB.UTILS 模式下找到 SF_CLINICAL_01_INGEST_DATA 笔记本
点击打开该笔记本
步骤 2:启动容器运行时
点击右上角的"启动"按钮
等待容器运行时完成初始化(首次运行可能需要 2-3 分钟)
此时您应能看到笔记本的内核已变为活动状态
步骤 3:安装依赖包并重启内核
运行 install_dependencies 代码单元(!pip install monai)以安装 MONAI 库
系统将显示"可能需要重启内核"的消息,并附带"显示操作步骤"按钮——请点击该按钮
页面顶部("活动"按钮旁)将展开一个下拉菜单
点击"重启内核"以加载新安装的软件包
步骤 4:运行剩余单元格
内核重启后:
点击笔记本顶部的 Run All (全部运行),执行所有单元格
将运行以下剩余单元格:
• 初始化会话:连接至 Snowflake 并设置查询标签;
• 下载数据:从 Zenodo 下载配对肺 CT 扫描数据(约 266MB);
• 上传至存储阶段:将 NIfTI 格式文件上传至 Snowflake 存储阶段。
预期输出
成功执行后,您应看到:
• 已上传 20 例配对肺 CT 扫描病例;
• 文件已归类存储于 lungMasksExp、lungMasksInsp、scansExp、scansInsp 文件夹中;
• 所有文件均采用 Snowflake 服务器端加密保存。
Step 5: Exit and Proceed to Next Notebook
点击左上角的 ← 返回箭头
在"结束会话?"对话框中,点击 End session(结束会话)
请继续下一个笔记本(02_模型训练)
运行模型训练笔记本
步骤 1:打开训练笔记本
1. 导航至"项目"→"笔记本"
在 SF_CLINICAL_DB.UTILS 模式下打开 SF_CLINICAL_02_MODEL_TRAINING 笔记本
点击"启动"按钮初始化容器运行环境
步骤 2:安装依赖包并重启内核
运行 install_ml_packages 代码单元(!pip install snowflake-ml-python --upgrade nibabel monai)
出现"可能需要重启内核"提示信息,并显示"显示操作步骤"按钮,请点击该按钮
顶部("激活"按钮旁)弹出下拉菜单
点击"重启内核"以加载新安装的软件包
步骤 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:退出并进入下一个笔记本
点击左上角的←返回箭头
在“结束会话?”对话框中,点击“结束会话(End session)”
继续进入下一个笔记本(03_模型推理)
运行模型推理笔记本
步骤 1:打开推理笔记本
1. 导航至“项目”→“笔记本”
打开 SF_CLINICAL_DB.UTILS 模式中的 SF_CLINICAL_03_MODEL_INFERENCE 笔记本
点击“启动”以初始化容器运行时
步骤 2:安装依赖包并重启内核
运行 install_ml_packages 代码单元(!pip install snowflake-ml-python --upgrade)
出现"可能需要重启内核"提示信息,并显示"显示操作步骤"按钮,请点击该按钮
顶部(“激活”按钮旁)弹出下拉菜单
点击"重启内核"以加载新安装的软件包
步骤 3:运行剩余代码单元格
内核重启完成后:
点击笔记本顶部的“全部运行(Run all)”按钮,执行所有代码单元格
步骤 4:查看推理结果
本笔记本将:
1. 加载模型:从模型注册表获取训练完成的模型
2. 执行批量推理:采用 run_batch() 应用程序接口实现分布式图形处理器并行处理
3. 处理影像数据:对所有测试病例进行并行图像配准操作
4. 保存结果:将配准后的影像写入存储阶段,并将评估指标存入数据表
笔记本将自动呈现结果,并将数据保存至 SF_CLINICAL_DB 数据库的 RESULTS 架构下的 SF_CLINICAL_INFERENCE_RESULTS 结果表中。
清理
要移除本指南创建的所有资源,请按以下步骤操作:
在 Snowsight 中停止所有正在运行的笔记本。
在 Snowsight 中手动删除笔记本(项目 → 笔记本 → 选择 → 删除)。
打开您的 setup.sql 工作区(即您在设置期间使用的工作区)。
滚动到底部的“拆卸脚本”部分。
取消注释 DROP 语句。
运行拆卸命令。
拆卸脚本将移除本指南创建的所有计算池、集成、数据库对象、仓库和角色。
结论与资源
恭喜您!您已成功使用 Snowflake 上的 MONAI 构建了一个分布式医学图像配准流程。
学习要点
• 如何配置支持 GPU 计算池的 Snowflake 容器运行时;
• 如何使用 MONAI 执行医学图像处理任务;
• 如何利用 Ray 进行分布式训练和推理;
• 如何使用 Snowflake 模型注册表管理机器学习模型;
• 如何在 Snowflake 内部阶段中存储和处理医学图像。
相关资源
博客:
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