MONAI安装全指南:从PyTorch到CUDA的医学影像AI环境搭建

发布时间:2026/10/4 11:41:52
MONAI安装全指南:从PyTorch到CUDA的医学影像AI环境搭建 1. 为什么医学影像AI入门首选MONAI医学影像AI这几年热度一直很高CT、MRI、病理切片这些数据和自然图像不一样天然就是三维甚至四维的通道数、空间分辨率、体素间距、方向信息每一个都和常规的计算机视觉任务有差别。MONAIMedical Open Network for AI就是专门为这个场景打造的开源框架基于PyTorch构建由伦敦国王学院、NIH等机构牵头发起目前已经是医学影像领域事实上的基础工具之一。我在实际项目里最大的感受是它把医学影像处理中那些高频、重复、容易写错的底层环节全部封装好了。比如加载NIfTI格式的医学影像用普通PyTorch写要自己处理affine矩阵、处理方向朝向、处理重采样稍不注意体素间距就乱了MONAI提供了一个LoadImage接口配合Compose链式处理几行代码就能搞定一个标准的训练管线。再比如它内置了残差UNet、Swin UNETR、UNETR等大量预定义网络结构做分割、分类、配准、检测都有对应的模型不用从零搭网络。这篇文章就是给准备上手MONAI的朋友准备的安装全流程指南。我会从环境规划讲到具体命令再讲到验证、排错最后补充MONAI生态里其他组件的安装方式。内容覆盖从Windows到Linux从纯CPU到多卡GPU的常见场景。如果你是医学影像相关的研究生、算法工程师或者只是对3D医学数据处理感兴趣的开发者跟着这篇文章走大概率能避开我在安装阶段踩过的所有坑。先说一句MONAI虽然叫框架但实际上不是一个单体软件而是分成MONAI Core核心库、MONAI Label交互式标注、MONAI Deploy部署工具链等多个部分。当前这篇聚焦最核心的MONAI Core安装这也是绝大多数模型训练和数据处理场景要用到的部分。2. 开始安装前必须想清楚的几件事2.1 MONAI与PyTorch、Python、CUDA的版本匹配关系Monai不是一个独立的深度学习引擎它只是PyTorch的上层封装所以你的PyTorch版本直接决定了MONAI能不能跑、跑得顺不顺。先看官方给出的依赖关系MONAI支持Python 3.9到3.12PyTorch 1.9到2.6的多数版本但这只是一个非常宽泛的区间实际安装时我建议遵循PyTorch版本优先的原则。原因很简单MONAI本身对CUDA没有直接依赖它是通过PyTorch来调用GPU的。只要PyTorch能用CUDAMONAI就能用CUDA。反过来如果PyTorch装的是CPU版那MONAI跑得再欢也不会用GPU。所以在安装顺序上永远是先确定PyTorch版本再装MONAI。下面是我测试过的稳定组合可以直接参考组合Python版本PyTorch版本CUDA版本适用场景组合A3.102.1.2CUDA 11.8最稳推荐新手组合B3.112.2.2CUDA 12.1兼顾新特性组合C3.122.4.0CUDA 12.4尝鲜需要较新驱动组合D3.91.13.1CUDA 11.7老项目兼容这四组我都实际跑过MONAI的2D/3D分割训练任务。组合A的兼容性最好MONAI里几乎所有功能都不会报错组合B适合想同时用PyTorch 2.x新特性的用户组合C要注意NVIDIA驱动得比较新否则会提示CUDA版本不匹配组合D适合历史项目。怎么确认自己的NVIDIA驱动支持哪个CUDA版本在终端里执行nvidia-smi右上角有个CUDA Version字样那表示你的驱动最高支持到这个CUDA版本。比如显示CUDA Version: 12.1那你可以放心安装CUDA 12.1或更低的版本对应的PyTorch千万别装比它更高的。2.2 选择pip安装还是conda安装MONAI官方给了两种安装方式pip install monai和conda install -c conda-forge monai。我自己实际用过两种结论是推荐pip理由有三点。第一MONAI的PyPI包更新非常及时新的预训练模型或新功能合入后基本一两天内就能通过pip升级而conda-forge渠道的包有时会滞后几个版本。第二pip安装MONAI时能自动解析PyTorch的版本依赖虽然这个依赖判断不够智能但至少不会装出完全跑不起来的组合。第三pip装出来的虚拟环境和conda装的在系统层面的隔离性没有本质区别。那conda还有没有存在价值有。我依然建议用conda管理Python环境本身也就是说用conda创建干净的Python环境然后在环境里用pip安装PyTorch和MONAI。这种混合方案既享受了conda管理Python版本和虚拟环境的便利又拿到了pip安装包的最新版本资源是我个人最推荐的做法。当然如果你坚持全程conda可以考虑用conda先装好PyTorch和Python依赖再用pip装MONAI这样能把版本冲突的概率降到最低。2.3 确定自己的组件边界你只需要Core还是全套在动手之前想清楚你需要的是MONAI的哪个部分。MONAI Core是基础库做数据处理、网络构建、训练和评估都在这里面MONAI Label是一个标注工具前端它需要配合3D Slicer使用MONAI Deploy是专门做模型部署的工具链把训练好的模型打包成可以独立运行的应用。如果只是跑模型训练和实验只装MONAI Core就够了装Label和Deploy会引入额外的依赖比如Label会要求安装某些针对交互式标注的网络层Deploy会要求安装它自己的App SDK。这些都会增加安装失败的排查难度。对于第一次上手的朋友我的建议就一句话先只装MONAI Core把训练流程跑通再按需补装其他组件。3. 环境准备与安装全流程详解3.1 创建干净的conda虚拟环境安装Miniconda还是Anaconda都可以但我个人推荐Miniconda因为Anaconda自带的两百多个预装包对MONAI的安装没有实际帮助反而会因为numpy版本、matplotlib版本等被conda来回折腾。Miniconda轻量需要的包可以自己按需装。到Miniconda官网下载对应系统的安装包Windows下选Miniconda3 Windows 64-bit的exeLinux下选Miniconda3-latest-Linux-x86_64.sh。安装过程一路默认就行。装好之后打开终端Windows下是Anaconda Prompt或PowerShell先更新conda本身conda update -n base -c defaults conda然后创建MONAI的专属环境我建议环境的Python版本直接定位到3.10这是MONAI官方支持最稳的版本区间conda create -n monai python3.10 -y conda activate monai激活之后检查一下Python版本python --version输出Python 3.10.x就对了。这里有一个很小的细节你在终端输入python注意看路径里的环境名如果显示的是(monai)前缀说明已经在虚拟环境里了。后续所有安装操作都必须在(monai)环境激活的状态下进行否则会装到base环境里后面import时定位不到版本。3.2 安装PyTorchGPU版还是CPU版PyTorch是MONAI的地基版本和CUDA的匹配问题都在这一环节解决。先判断自己的机器有没有NVIDIA GPUnvidia-smi如果提示NVIDIA-SMI has failed because GPU is not detected说明没有可用GPU安装CPU版即可。如果有GPU看右上角支持的CUDA版本。以CUDA 11.8为例定义的安装命令是pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118如果驱动支持的CUDA版本是12.1换用pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121CPU版直接pip install torch torchvision装完后在Python环境里验证import torch print(torch.__version__) print(torch.cuda.is_available())如果你能看到True说明PyTorch已经能用GPU了。这一步通过了MONAI才能调得动GPU。很多MONAI安装教程跳过了这步直接装MONAI等到跑训练时才发现用的是CPU训练速度差几十倍回过头来重新装PyTorch浪费时间又容易把环境搞乱。还有一点容易忽略不要用conda默认源装PyTorchconda默认源里的PyTorch经常是CPU版或旧版编译参数也比较保守。直接用上面PyTorch官方指定的index-url是最稳妥的。3.3 通过pip正式安装MONAIPyTorch配置好后MONAI的安装就很简单了pip install monai这个命令会安装MONAI Core的最新稳定版同时自动带上它依赖的numpy、torch、torchvision、Pillow、tqdm、fire、nibabel等基础库。因为前面已经有PyTorchpip检查依赖时不会重复下载。等进度条跑完确认一下pip show monai能看到版本号和安装路径。当前时间点最新稳定版是1.4.x如果你处于Python 3.10环境这个版本没有任何运行障碍。想指定版本也可以pip install monai1.4.0不过没有特殊情况的话直接用最新版就行MONAI的API向后兼容做得不错不需要刻意锁版本。3.4 补充安装医学影像处理和训练辅助库MONAI Core虽然集成了大量数据处理能力但有几个在真实项目中常用的库默认不会装需要手动补上。itk做医学影像格式转换和读取时很常用MONAI里如果要用到某些特殊格式会调用它。SimpleITK我强烈建议装很多预训练模型教程和MONAI官方示例中会用到它读写医学图像。matplotlib可视化切片和训练曲线用的虽然MONAI自己不强制但看结果时几乎离不开。tensorboard训练过程中的损失曲线和指标可视化MONAI的TensorBoardStatsHandler需要它。jupyter跑官方Notebook教程必备。一次装齐pip install itk SimpleITK matplotlib tensorboard jupyter有些MONAI示例会用到dicom2nifti、tqdm、scikit-learn等这些按需安装即可不强求一次性装齐。3.5 完整安装总览一条命令清单快速复现环境为了省去重复劳动我把整个流程整理成一份可以直接复制的命令清单。以下命令假设你已装好Miniconda并处于base环境# 创建环境 conda create -n monai python3.10 -y conda activate monai # 安装GPU版PyTorchCUDA 11.8示例 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 安装MONAI核心库 pip install monai # 辅助库 pip install itk SimpleITK matplotlib tensorboard jupyter这份清单在Linux和Windows的conda环境里都能直接跑。macOS用户如果没有NVIDIA GPUPyTorch直接用CPU版即可MONAI大部分CPU推理和训练功能仍然可用只是3D网络的训练速度会明显慢一些。4. 安装完成后的标准验证流程4.1 用import和版本号确认安装正确安装完先别急着跑训练做一套标准的健康检查。打开Python交互环境import monai print(monai.__version__)能打印出版本号说明MONAI核心库本身没装错。接着检查MONAI引用的PyTorch是否正常import torch print(torch.__version__) print(torch.cuda.is_available())这两条和前面验证PyTorch的一致但是放在这里再次确认是有意义的。因为MONAI在import时可能会触发一些底层的PyTorch操作如果PyTorch本身有问题这一步就会直接暴露。我遇到过这样的情况PyTorch安装时没报错torch.cuda.is_available()也返回True但import MONAI后却提示某个CUDA算子找不到。原因往往在于PyTorch的CUDA运行时版本和当前系统层的NVIDIA驱动不完全兼容。这种情况比较麻烦建议直接用MONAI的诊断命令检查from monai.config import print_config print_config()这条命令会输出一份完整的诊断报告包括MONAI版本、Python版本、PyTorch版本、是否启用CUDA、NVIDIA驱动版本、可用的GPU数量等关键信息。看到CUDA available为True基本可以确定环境健康。4.2 用MONAI自带的数据集和网络做一次冒烟测试版本和CUDA都检查通过后最后一步冒烟测试加载一个MONAI内置的数据样例跑一遍前向传播确保训练管线没有隐藏问题。我通常用下面的脚本import torch import monai from monai.transforms import LoadImage, EnsureChannelFirst, ScaleIntensity from monai.networks.nets import UNet # 创建一个随机医学图像模拟输入 x torch.randn(1, 1, 64, 64, 64) # 定义3D UNet model UNet( spatial_dims3, in_channels1, out_channels2, channels(16, 32, 64), strides(2, 2), ) # CPU或GPU device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device) x x.to(device) output model(x) print(输出尺寸:, output.shape)如果能看到输出尺寸: torch.Size([1, 2, 64, 64, 64])说明MONAI的模型定义、数据形状处理、设备分配都正常。这个测试比import更加严格因为它真正执行了一次前向计算能排查出诸如CUDA内存分配、浮点精度、数据布局等问题。4.3 查看MONAI提供了哪些内置功能安装完毕后可以快速了解一下MONAI的模块体系方便后续查阅。执行import monai print(dir(monai))输出里会看到networks、transforms、data、losses、metrics、engines等模块名。其中monai.transforms数据预处理和增强工具是最高频使用的模块。monai.networks预定义网络结构包括UNet、UNETR、SwinUNETR、DynUNet等。monai.engines训练和评估的封装引擎基于PyTorch Ignite也可以不用它而自己写训练循环。monai.losses医学影像场景常用损失函数如DiceLoss、DiceCELoss、FocalLoss等。monai.metricsDice指标、表面距离等评估工具。如果你懒得全部记住一个print_config()加一个dir(monai)就能帮你快速掌握这个库的边界。5. 安装阶段最容易踩的坑与排查链路5.1 坑一conda和pip混装导致monai无法import这个问题我几乎每次帮同事排查环境时都会遇到。症状是明明pip show monai显示已安装但在Python里import monai却提示ModuleNotFoundError。排查链路是这样的先在终端里执行which python和which pip看看两者是否指向同一个解释器。如果分别指向不同路径比如which python指向conda环境的/opt/miniconda3/envs/monai/bin/python但which pip指向系统的/usr/local/bin/pip那就说明pip命令用的是全局环境装到了系统目录里而python解释器用的是conda环境。解决方法是明确用python的-m参数调起pip。python -m pip install monai这样能保证包一定装到当前python解释器对应的环境中。养成这个习惯之后后续装什么包都能省去很多烦恼。5.2 坑二PyTorch的CUDA版本与系统驱动不匹配这个坑的典型表现是PyTorch装好后torch.cuda.is_available()返回True但真正跑MONAI训练时程序刚开始就崩掉或者提示CUDA error: no kernel image is available for execution on the device。这通常是因为PyTorch的CUDA编译版本高于驱动支持的CUDA版本。前面说过用nvidia-smi查看驱动支持的CUDA版本号假设显示12.1却用--index-url https://download.pytorch.org/whl/cu124装了CUDA 12.4的PyTorch就会出现这个错误。解决办法也很直接pip uninstall torch torchvision后换成驱动支持范围内版本的PyTorch。如果驱动版本过低也可以考虑更新NVIDIA驱动但我更建议先压低PyTorch的CUDA版本毕竟升级驱动有时候会遇到系统兼容性问题风险更大。5.3 坑三国内环境下载缓慢或超时MONAI本身很小但PyTorch、itk这些依赖包体积动辄几百MB国内直连下载确实容易慢。这个问题的常规解法是pip镜像和conda镜像我实测下来稳定好用。pip配置镜像pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这样配置后后续所有的pip安装都会走清华镜像下载速度能提升几十倍。需要注意配置镜像后再安装PyTorch时如果还加--index-url参数指向PyTorch官方地址会覆盖全局镜像设置装PyTorch时可以直接用镜像源安装但这样拿到的PyTorch版本大概率是CPU版。想装GPU版时按官方命令走就行下载速度慢一点就耐心等或者用支持续传的下载工具先下好whl文件再本地安装。conda镜像同理在用户目录生成.condarc文件并写入channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud5.4 坑四Linux服务器上缺libGL.so.1这个问题在Ubuntu服务器上尤其常见。症状安装完MONAI后import时直接报错提示找不到libGL.so.1。根因是MONAI在import时默认加载图像处理相关的底层库这些库依赖OpenGL运行时。而很多云服务器为了精简没装图形库。解决办法sudo apt update sudo apt install libgl1还有一部分提示缺少libgomp.so.1的情况安装libgomp1即可。这类问题本质上不属于Python包依赖而是操作系统动态库缺失所以用pip和conda都解决不了记住系统的包管理器才是处理工具。5.5 坑五Windows下PowerShell执行策略与报错Windows上如果直接用PowerShell运行conda activate monai可能会遇到conda: The term conda is not recognized或执行策略限制。前者一般是Anaconda安装时没勾选自动添加环境变量后者是Windows的安全策略限制。前者在安装Anaconda时选上Add Anaconda3 to my PATH environment variable或者手动把Anaconda的Scripts目录加到PATH。后者是权限问题以管理员身份打开PowerShell执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned然后按Y确认。这一行命令能解决大部分Windows下conda命令无法执行的问题。5.6 踩坑总结环境检查清单把你排查时的顺序总结成一份清单每次环境出问题按这个顺序过一遍which python与which pip是否对应同一个环境。python -c import torch; print(torch.cuda.is_available())是否能输出True。python -c from monai.config import print_config; print_config()是否报告CUDA可用。nvidia-smi显示的CUDA版本是否不低于PyTorch的CUDA编译版本。是否缺少libGL等系统级动态库。是否在正确的虚拟环境中执行了安装命令。这套链路排查完90%以上的安装问题都能定位到根因。6. 进阶MONAI生态的延伸安装6.1 一次装全MONAI Core的全部扩展特性如果你不想在跑某个功能时频繁补装依赖可以直接安装MONAI的完整扩展也可以规避这个坑。MONAI的某些可选功能在基础安装中默认不启用比如monai[all]的安装方式会带上所有可选依赖pip install monai[all]这会额外安装用于图像重采样的scipy用于3D可视化交互的ipython、ipywidgets以及一些数据格式支持库。体积不小但好处是一劳永逸后续跑官方教程时不会被各种ImportError打断。如果你更希望保持环境精简可以先跳过这个选项遇到缺库时按错误提示逐个安装。6.2 安装MONAI Label并联动3D SlicerMONAI Label是用于交互式医学影像标注的框架和3D Slicer配合使用。安装命令很简单pip install monai-label启动服务后在3D Slicer中安装MONAI Label插件就能连接本地或远程的标注服务。这套流程尤其适合做肺结节、肝脏、脑肿瘤等器官分割标注的场景医生或标注员可以在3D Slicer界面里画几笔AI模型就自动生成预分割结果然后人工修正。从安装到跑通前后端大概一小时内能完成。6.3 安装MONAI Deploy工具链如果你的目标是把训练好的模型打包成临床可用的推理应用需要装MONAI Deploypip install monai-deploy它会拉取对应的App SDK和运行时允许你把MONAI训练出的模型封装成支持医学图像输入输出的可执行程序。这个流程比标准PyTorch的TorchScript部署多了一层医学影像格式处理能力比如DICOM文件的接收和解析。6.4 用Docker镜像快速体验MONAI如果你不想在本机折腾环境或者需要复现别人的实验结果NVIDIA GPU Cloud上就有打包好的MONAI镜像MONAI官方也提供了发布在NVIDIA NGC的容器镜像。先安装好Docker和NVIDIA Container Toolkit然后直接docker pull nvcr.io/nvidia/pytorch:24.01-py3MONAI完全兼容NVIDIA PyTorch容器进入容器后pip install monai就可以用了。这种方式对Linux服务器做多机、多人共同开发特别友好避免每个人的本地环境不一致导致复现困难。需要提醒的是Docker镜像通常体积很大下载耗时较长而且拉取镜像时的网络问题和前面说的下载问题是一致的建议提前把容器镜像源配好。7. 版本升级与日常维护建议MONAI的迭代速度很快几乎每个月都会发布新版本有时是为了修bug有时是加新功能或新预训练模型。两个原则建议从一开始就遵守。第一不要轻易在跑了一半的项目中升级MONAI版本。即使MONAI承诺API向后兼容但版本跨度太大时个别接口的默认行为可能已经变化到时排查起问题来非常费时间。我自己的项目习惯是项目启动时记录环境版本用pip freeze requirements.txt导出依赖清单确保环境可以重建。第二需要升级时先看官方Release Notes。重点看Breaking Changes部分确认自己的代码是否用了被改动的接口。升级命令仍然是pip install -U monai升级完成后重新跑一遍前文中的冒烟测试脚本用最小的成本确认新版本没有破坏现有功能。另外如果长时间不用的环境出现了import monai报错首先怀疑的是Python或PyTorch版本被其他操作悄悄改了。用conda list对比一下环境里关键包的版本一般能快速定位问题。根据我个人经验MONAI的安装其实没有想象中复杂但环境匹配、版本管理、系统依赖这三类问题几乎能覆盖掉安装阶段90%的报错。把这篇文章里的清单和方法存好你后续使用MONAI的绝大部分时间都会花在真正的业务代码上而不是折腾环境。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询