Docker部署nnunetv2简洁教程

前言:感觉一些教程没必要说那么多,直接贴出重点的配置文件。如果有不懂的,可以把此文档丢给gpt,配合自己的环境一同服用。

首先,在 nnunet 路径下创建一个 Dockerfile

由于我已经完成了 nnUNet 的训练,所以不需要将相关数据全部上传到容器中,而是只保留源码。

# 使用适当的基础镜像(如 pytorch 官方镜像)
FROM pytorch/pytorch:latest

# 更新 apt-get 并安装必要的工具和库
RUN apt-get update && apt-get install -y vim \
    && apt-get install -y --no-install-recommends \
    python3-pip \
    python3-setuptools \
    build-essential \
    && apt-get clean \
    && python -m pip install --upgrade pip

# 设置工作目录
WORKDIR /workspace

# 将项目代码复制到容器中
COPY ./nnunetv2 /workspace
COPY requirements.txt /workspace

# 安装项目依赖
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install nnunetv2

# 配置 nnUNet 的环境变量
ENV nnUNet_raw="/workspace/nnUNet_raw"
ENV nnUNet_preprocessed="/workspace/nnUNet_preprocessed"
ENV nnUNet_results="/workspace/nnUNet_trained_models"

# 默认启动命令
CMD ["/bin/bash"]

构建

docker build -t nnunet_docker:0.0.1 .

需要注意的是,nnUNet 已经更新到了 v2 版本,因此环境变量名称也发生了变化。相比于旧版,v2 版本的环境变量已经不再是:

# 旧版配置
ENV nnUNet_raw_data_base="/workspace/DATASET/nnUNet_raw"
ENV nnUNet_preprocessed="/workspace/DATASET/nnUNet_preprocessed"
ENV RESULTS_FOLDER="/workspace/DATASET/nnUNet_trained_models"

以下是我所使用的 requirements.txt 文件:

torch>=2.1.2
acvl-utils<0.3,>=0.2
dynamic-network-architectures<0.4,>=0.3.1
tqdm
dicom2nifti
scipy
batchgenerators>=0.25
numpy
scikit-learn
scikit-image>=0.19.3
SimpleITK>=2.2.1
pandas
graphviz
tifffile
requests
nibabel
matplotlib
seaborn
imagecodecs
yacs
batchgeneratorsv2>=0.2
einops
flask
black
ruff
pre-commit

需要注意的是,原版的 requirements.txt 文件中包含了一个 [dev] 部分,可能会导致错误,可以直接删除这一部分。

在构建好镜像后,运行以下命令启动容器:

docker run --rm -it --gpus all \
    -v /data/xtx/nnUNet/nnUNetFrame/DATASET/nnUNet_raw:/workspace/nnUNet_raw \
    -v /data/xtx/nnUNet/nnUNetFrame/DATASET/nnUNet_preprocessed:/workspace/nnUNet_preprocessed \
    -v /data/xtx/nnUNet/nnUNetFrame/DATASET/nnUNet_trained_models:/workspace/nnUNet_trained_models \
    -p 5000:5000 \
    --ipc=host nnunet_docker:0.0.1

这里由于我使用了一个监听脚本进行部署,因此需要额外映射端口。

你可能感兴趣的:(模型部署,docker,容器,运维,pytorch,人工智能,深度学习,python)