LoginSignup
3
0

More than 1 year has passed since last update.

mmdetectionのdockerを作ってみる

Posted at

概要

  1. なぜmmdetectionで用意されているDockerfileを使わないのか
  2. 環境構築
  3. Dockerfileを書いて,buildする

なぜmmdetectionで用意されているDockerfileを使わないのか

主に2つ理由がある.
1つ目はDockerfileに書かれているPytorchやcuda,mmcvのバージョンが低いことだ.これは当該箇所を修正すれば良い.しかし,pytorchやcuda,mmcvのバージョンが新しくなったことで生じる問題に対して,対応をしなければならないのが面倒くさくなってしまった.また,TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"など最新のGPUを使っていたらTORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX"のように書き換えなければならない.これなら1から書いてもいいのではないかと思ってしまった.
2つ目はmmcvをpipからではなくsourceからインストールしたかったからだ.これは何かの理由でmmcv側でエラーを吐いたときに対応しやすいと考えたからだ.mmcvのコードに問題があれば,sourceを書き直せば良いので,問題の解決を図ることができる.

環境構築

Dockerの公式ページを見てDockerをインストールする.
nvidia-dockerを使用してGPU環境構築を参考にしてdockerでgpuを使えるように準備する.
NVIDIA Container Toolkit (NVIDIA Docker) は何をしてくれるかを参考にして,default runtimenvidiaにする.これはdocker buildするときにnvccを使う必要があるためである.

Dockerfileを書いて,buildする

以下にDockerfileを記述する.
必要であればこれを書き換えればよい.
mmcvのgithubmmdetectionのgithubを参考にした.
なお,これはmmcv=1.7.1,mmdetection=2.28.2の環境である.

ARG PYTORCH="1.13.1"
ARG CUDA="11.6"
ARG CUDNN="8"

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

#setup environment
ENV FORCE_CUDA="1" TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX" PATH="/usr/local/cuda/bin:$PATH" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" MMCV_WITH_OPS="1"
RUN apt update && apt install -y git libgl1 libglib2.0-0 ffmpeg libturbojpeg libsm6 libxext6 ninja-build libxrender-dev && apt clean && rm -rf /var/lib/apt/lists/*

#install mmcv
RUN git clone https://github.com/open-mmlab/mmcv.git -b v1.7.1 /mmcv
WORKDIR /mmcv
RUN pip install --no-cache-dir -e .[all] -v


#install mmdetection
RUN git clone https://github.com/open-mmlab/mmdetection.git -b v2.28.2 /mmdetection
WORKDIR /mmdetection
RUN pip install --no-cache-dir -e . -v

# if you need, you write the below code
RUN pip install --no-cache-dir albumentations
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0