본문 바로가기
딥러닝 어쩌구/Challenge 기록

챌린지 docker 제출을 위한 셋업 과정 - mmsegmentation

by 포숑은 맛있어 2021. 9. 7.
반응형

[도커 제출을 위한 mmsegmentation 셋업]

 

 

고려사항

  1. 제출 이미지 크기
    그냥 쓰던 도커 올릴수도 있겠지만, 아무래도 코딩하다보면 잡다하게 들어가있는게 많다.
    기본이미지에 필요한 것만 얹는 식으로 빌드하기로 한다.
  2. mmsegmentation 버전 및 호환되는 mmcv 버전
    mmcv 버전이 안맞으면 mmsegmentation이 동작 안한다. 새로 업뎃된 코드를 사용하려고 git pull을 했다면 기존 mmcv가 동작하지 않을 수 있다.
    -> mmcv의 업데이트가 필요
  3. mmcv 버전에 따른 dependency
    예를 들면 mmcv 1.3.1 사용할땐 torch 1.5 (정확X) 사용했는데, 이 torch 버전에서는 더이상 mmcv latest를 가져오려고 해도 업뎃이 안된다.
    여기서 cuda, torch, cudnn dependency에 대한건 깃허브에 표 정리가 되어있으니 참고.

 

DockerFile 작성

지금 시점을 기준으로, mmsegmentation 공식에 올라와있는 DockerFile을 사용하면 torch 버전문제 때문에 최신 mmcv를 사용할 수 없었고, 이는 현 버전 mmsegmentation에 동작을 안함.

 

‘pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel’에 해당하는 도커 이미지가 없을 경우, 베이스 이미지를 새로 받아야하기 때문에 상당한 시간이 소요된다.

 

현재 버전 기준으로 mmcv 1.3.7 이상이 필요하기 때문에 torch 1.6이 아닌 1.7로 올려줬고, mmcv-full로 1.3.9 버전을 설치하도록 설정해줬다.

 

아래와같이 작성한다. 업뎃되면 또 바꿔야할지도.

 

ARG PYTORCH="1.7.0"

ARG CUDA="11.0"

ARG CUDNN="8"





FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel



ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"

ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"

ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"



RUN apt-get update && apt-get install -y git ffmpeg ninja-build libgl1-mesa-glx libglib2.0-0 libsm6 libxrender-dev libxext6 \

&& apt-get clean \

&& rm -rf /var/lib/apt/lists/*



# Install mmsegmentation

RUN conda clean --all



RUN pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html

#RUN pip install mmcv-full==latest+torch1.6.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html

RUN git clone https://github.com/open-mmlab/mmsegmentation.git /mmsegmentation

WORKDIR /mmsegmentation

RUN pip install -r requirements.txt

RUN pip install --no-cache-dir -e .



도커 이미지 생성

testing이라는 이름

 

$sudo docker build -f ./dockerFile --rm -t testing .

 

 

이후 과정

pth 파일 옮기고, 내 코드 복사 후 빌드.

다시 docker commit 해줬음

 

 

 

대충 이렇게 이미지 만드니까 (여전히 크지만) 용량도 줄었고 형식에 맞게 동작하는걸 확인했다. 굿.

 

 


key 만드는거

https://ngc.nvidia.com/setup/api-key

반응형

댓글