本文通过安装RGMP的例子来说明如何在深度学习中利用docker。通过不同的安装方法也能更好的理解docker,nvidiadocker,docker-compose。

RGMP是发表在CVPR2018上的关于视频物体分割的方法。下载地址:seoungwugoh/RGMP

关于Docker的简单说明和安装方法:CJ1019:Unbuntu 16.04安装Docker

1,直白方式安装

1.1,下载RGMP,并存储在~/RGMP-master目录下。

1.2,下载DAVIS-2017,我直接把DAVIS放在RGMP-master目录下,因为这样在挂载到docker-container时会比较方便。

1.3,RGMP是以pytorch为基础的,因此首先要下载pytorch。这里注意要下载有cuda10版本的pytorch。启动的同时注意挂载RGMP-master目录到docker-container。其命令如下:




docker部署prometheus和grafana docker pr_docker


--rm 表示在结束container运行后,立刻删除container。不然的话还需要手动删除
-it 表示以交互方式启动
--name myRgmp 表示给启动的container一个名字,且其名字为myRgmp
-v 将本地目录挂载到docker-container中
pytorch/pytorch 为需要的镜像。
nightly-runtime-cuda10.0-cudnn7 为指定的镜像标签。

这里注意,我一开始安装的时候,因为Host的GPU的驱动版本太低,不能使用cuda10,所以运行他的代码时会报错。更新了Host的GPU驱动之后可以解决这个问题。更新方法附在最后。

这里还要注意,启动方式要么为nvidia-docker;要么为docker run --runtime=nvidia。

pytorch的镜像启动之后,进去pytorch的系统,示意图如下:


docker部署prometheus和grafana docker pr_docker安装到指定目录_02


1.4,在pytorch的系统中安装RGMP所需要的依赖

1.5,测试执行


python run.py -MO


1.6,把修改过的镜像保存到本地以备下次使用


docker部署prometheus和grafana docker pr_docker挂载本地目录_03


镜像保留在本地的命令为:docker commit conatiner_id user_specific_image_name

docker commit会把镜像保存在docker内置的目录,不可修改。可以用命令行启动,删除镜像。

2,使用dockerfile方式安装

2.1 定义dockerfile


# dockerfile
FROM pytorch/pytorch:nightly-runtime-cuda10.0-cudnn7

RUN apt-get update -y


FROM: 指定所需要的基础镜像
RUN:执行命令
COPY:复制requirements.txt到指定目录。

2.2 定义依赖


# requirements.txt
torchvision
opencv-python


2.3 定义doker-compose.yml


"2.3"

services:
    pytorch:
        build: .
        runtime: nvidia
        volumes:
            - ~/RGMP-master:/workspace
        stdin_open:


version:
services: pytorch: 表明了应用的名字是 pytorch
runtime:应用所需要的runtime
volumes:挂载本地目录到docker-container
stdin_open: true& tty: true:指明交互输入输出

2.4 启动


docker-compose run --rm pytorch


注意这里要启动的应用的名字(pytorch)要与docker-compose.yml中定义的services的名字一直。

2.5 测试执行


python run.py -MO


2.6 保存

此时会自动保存制作好的镜像到本地(镜像名为docker-compose.yml所在文件夹名+基础镜像名)。

3,更新GPU驱动


# uninstall
sudo apt-get --purge remove nvidia-*