hi-ml
微软研究院开源的医疗AI深度学习工具箱,一键将本地Python脚本扩展至Azure ML云端集群
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软研究院开源的医疗AI深度学习工具箱,一键将本地Python脚本扩展至Azure ML云端集群
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Microsoft Health Intelligence 项目标识
2021年夏天,微软研究院的一支团队遇到了一个经典困境:一位医学影像研究员写了一个 Python 脚本,在本地处理 100 张 CT 扫描图像,效果很好。但当他需要处理 PANDA 数据集(全球最大前列腺癌组织病理学数据集,11000+ 全视野数字切片) 时,本地工作站算力告急——单次运行需要数天,更别说调参迭代了。
他的需求非常具体:把本地脚本无缝扩展到云端GPU集群,数据从 Blob Storage 读取,结果写回 Blob Storage,整个过程不需要重写业务逻辑。Azure Machine Learning(Azure ML)正好满足这个需求,但原生的 SDK 调用门槛不低。
微软研究院 Health Intelligence 团队因此开发了 HI-ML(Health Intelligence Machine Learning)工具箱,它的核心目标只有一个:让医学影像 + 深度学习研究者,能用最少的代码改动,把本地 Python 脚本一键部署到 Azure ML 云端集群。
该项目由微软研究院联合医学团队开发,2021年7月开源,MIT 许可证,目前维护活跃(最新提交 2025年10月),GitHub 星标 308 个,提交贡献者以微软内部研究人员为主。
HI-ML 工具箱不是一个单一的 Python 包,而是由 三个核心组件 组成的模块化体系:
这是整个工具箱的「入口」。对于任何现有 Python 脚本,只需添加一行代码:
from health_azure import submit_to_azure_if_needed
if __name__ == '__main__':
run_info = submit_to_azure_if_needed(
compute_cluster_name="preprocess-ds12",
input_datasets=["images123"],
output_datasets=["images123_resized"],
default_datastore="my_datastore"
)
运行脚本时加一个 --azureml 参数,脚本就自动从本地执行变为 Azure ML 云端任务。submit_to_azure_if_needed 函数会判断当前是否在 Azure ML 环境中:如果在本地运行,路径指向本地文件夹;如果在云端,路径自动映射到 Blob Storage。整个过程对业务逻辑完全透明。
依赖包:azure-ai-ml、azureml-core、azureml-dataset-runtime[fuse]、azureml-train-core、mlflow>=2、tensorboard、pandas。
提供可复用的深度学习组件,涵盖:
health_ml/data/):病理学图像、医学影像的专用 PyTorch DataLoaderhealth_ml/networks/):包含 Transformer、CNN 等常用模块,支持多分支网络health_ml/losses/):医学影像专用损失(多实例学习、不平衡样本处理等)health_ml/runner.py、health_ml/training_runner.py):封装 PyTorch Lightning,提供标准化的训练循环health_ml/deep_learning_config.py):基于 Hydra/YACS 的实验配置管理依赖包:pytorch-lightning>=1.6、lightning-bolts==0.4.0、timm==0.6.12、torchmetrics、monai-weekly(医学影像专用 PyTorch 扩展)、SimpleITK、pydicom、pandas、numpy。
这是工具箱中 AI 浓度最高 的部分,专门针对 全视野数字切片(WSI, Whole Slide Image) 的处理。核心模型包括:
运行示例(提交到 Azure ML):
conda activate HimlHisto
python ../hi-ml/src/health_ml/runner.py \
--model health_cpath.TcgaCrckImageNetMIL \
--cluster=training-nd24
处理多模态健康数据,支持图像 + 文本的联合建模。核心论文:
提供零样本图像分类(文本提示驱动)和预训练模型,模型权重托管在 Hugging Face。
区别于其他医学影像工具箱(如 MONAI、nnU-Net),HI-ML 最大的差异化在于 Azure ML 深度集成。它不只是「能在云上跑」,而是从数据加载、实验配置到训练监控,提供了一整套与 Azure ML 原生功能打通的抽象层。
对于已经使用 Azure 云服务的医疗机构和企业(这在北美和欧洲医疗行业非常普遍),HI-ML 大幅降低了深度学习的运维门槛。
项目使用 create_and_lock_environment.sh 脚本,通过 conda-lock 或手工 freeze 的方式,生成完全锁定版本的 environment.yml,确保不同实验之间的依赖一致性。这对医学影像研究至关重要——同一数据集上的不同模型版本,若依赖不一致,结果可能完全不同。
所有训练流程基于 PyTorch Lightning,代码简洁且高度可复用。LightningContainer 抽象让添加新模型只需继承 + 配置,无需重写训练循环。
测试分为三类:无标记(仅 CPU)、@pytest.mark.gpu(CPU+GPU)、仅 GPU(需手动 skipif),确保测试套件在无 GPU 环境下也能通过,同时 GPU 测试不会遗漏。
适用人群:
不适用场景:
安装方式:
pip install hi-mlpip install hi-ml-azurecd hi-ml-cpath && make env && conda activate HimlHistopip install hi-ml-multimodal平台锁定:Azure ML 深度绑定是双刃剑——降低了 Azure 用户的使用门槛,但也让非 Azure 用户几乎无法使用核心功能。
文档门槛:项目文档较为技术化,需要有一定的 Azure ML 和 PyTorch 基础才能顺畅上手。
与 MONAI 的重叠:hi-ml-cpath 的病理学模型与 MONAI 存在功能重叠,但 HI-ML 侧重于端到端工作流和 Azure 集成,而非通用医学影像框架。
HI-ML 代表了微软「医疗AI民主化」战略的代码侧实现——将研究院的前沿成果(ECCV/CVPR 论文中的多模态模型)快速转化为可复用的工具包,降低医疗AI的落地门槛。
随着 Hugging Face 上多模态模型的普及,以及 Azure 在医疗行业的持续深耕(Azure Health AI 服务),HI-ML 作为「微软医疗AI工具链」的核心组件,预计会继续得到更新和维护。对于在 Azure 生态中工作的医学影像 AI 研究者,这是不错的效率工具选择。