• 创建运行nnunet的docker镜像,并且使用nnunet训练自己的2D数据


    创建运行nnunet的docker镜像,并且使用nnunet训练自己的2D数据

    文档参考链接
    nnUNet被广泛的用于各种比赛,并且占据了各大比赛的排行榜。
    使用docker 运行nnUNet,有以下好处

    • docker提供了一个独立的环境,当使用公用服务器的时候或者自己在跑多组环境的对比实验时,不用担心其他环境污染自己的环境

    一、安装nvidia-docker

    1. 首先已经安装好了新的显卡驱动

    2. 安装最新的docker和nvidia-docker

      $sudo apt-get update
      $sudo apt-get install docker.io
      
      • 1
      • 2
      # 启动Docker
      systemctl start docker
      # 设置开机自启
      systemctl enable docker
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 使用docker拉取pytorch在GPU中运行的环境

      docker pull pytorch/pytorch:latest
      
      • 1
    4. 从nnUNet官网下载最新的代码
      nnUNetgithub地址

    5. 进入nnUNet代码文件夹,创建空的Dockerfile文件

    二、编辑nnUNet docker

    1. 在Dockerfile中复制如下内容
    FROM pytorch/pytorch:latest
    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 ./   /workspace
    
    RUN pip install pip -U
    RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
    RUN pip install -e .
    
    ENV nnUNet_raw_data_base="/workspace/data"
    ENV nnUNet_preprocessed="/workspace/data/nnUNet_preprocessed"
    ENV RESULTS_FOLDER="/workspace/data/RESULTS_FOLDER"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    注意:本地硬盘中存放训练数据的文件夹nnUNetData内容目录需要跟下面保持一致,如果不知道自己在做什么,不建议自己改文件加名。

    整理好的TaskXXXDemo 训练数据放入nnUNet_raw_data中

    1. 运行docker build命令
    docker build -t nnunet_docker:0.0.1 .
    
    • 1

    其中nnunet_docker:0.0.1代表名字:版本号,最后一个 "."代表是当前目录

    build完成后可以使用docker image save 保存下来用于其他平台的训练

    1. 运行镜像
    docker run --gpus all --rm -it nnunet_docker:0.0.1 /bin/bash
    
    • 1

    进入交互式终端如下

    root@02c06f65cc7e:/workspace#
    
    • 1

    首先测试一下gpu是否可以使用

    root@02c06f65cc7e:/workspace# nvidia-smi                   
    Fri Aug  5 15:37:12 2022       
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  NVIDIA GeForce ...  Off  | 00000000:21:00.0 Off |                  N/A |
    | 60%   63C    P2   249W / 350W |  18809MiB / 24265MiB |     81%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   1  NVIDIA GeForce ...  Off  | 00000000:49:00.0 Off |                  N/A |
    | 56%   61C    P2   246W / 350W |  17557MiB / 24268MiB |     72%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   2  NVIDIA GeForce ...  Off  | 00000000:4A:00.0 Off |                  N/A |
    | 67%   67C    P2   250W / 350W |  20051MiB / 24268MiB |     65%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
                                                                                   
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    nnUNet训练

    docker run --rm -it --gpus all  --ipc=host -v /home/lus/Project/datasets/nnUNet/:/workspace/data/ -v /home/lus/myProject/codes/A_project/nnUNet:/workspace/ nnunet_docker:0.0.1 /bin/bash -c "sh tmp_fold1.sh"
    
    • 1

    将自己的镜像推送到云端

    1. 可以同步到dockerhub 2. 也可以同步到阿里云镜像

    我们以阿里云为例
    首先注册一下阿里云镜像的账号
    https://cr.console.aliyun.com/cn-hangzhou/instances

    使用如下官方入门说明注册

    我们首先对我们生成的镜像使用tag进行重新命名

    docker tag [ImgID(就是镜像ID)]     registry.cn-hangzhou.aliyuncs.com/------[镜像版本号]
    
    • 1

    终端登录你的账号

    docker login --username=账号 registry.cn-hangzhou.aliyuncs.com
    
    • 1

    推送

    docker push registry.cn-hangzhou.aliyuncs.com/-----:[镜像版本号]
    
    • 1

    ERROR解决

    1. RuntimeError: MultiThreadedAugmenter.abort_event was set, something went wrong. Maybe one of your workers crashed. This is not the actual error message! Look further up your stdout to see what caused the error. Please also check whether your RAM was full
      在Docker环境下运行nnUNet可能会遇到如上报错
      我们需要在docker命令后面添加 --ipc=host

      docker run --rm -it --gpus all  --ipc=host 
      
      • 1

      官方解决方案
      在这里插入图片描述

  • 相关阅读:
    Spring的开幕式——Spring概述与设计思想
    基于javaweb的鲜花商城系统(java+jsp+javascript+bootstrap+mysql)
    力扣 -- 322. 零钱兑换(完全背包问题)
    聊聊分布式架构——序列化和反序列化
    Java多线程与线程池解析
    Kafka3.0.0版本——Leader故障处理细节原理
    【openwrt学习笔记】新patch的制作和旧patch的修改
    第十四章大数据和数据科学
    学习视觉SLAM需要会些什么?
    (蓝桥杯C/C++)—— 编程基础
  • 原文地址:https://blog.csdn.net/weixin_37707670/article/details/126167541