远程服务器基于docker容器的深度学习环境配置(支持GPU)

Posted 贝塔的trashcan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程服务器基于docker容器的深度学习环境配置(支持GPU)相关的知识,希望对你有一定的参考价值。

在高高兴兴搞了一个云服务器决定开始学习深度学习的时候,决定自己配一个环境。在历尽千辛万苦之后,参考了众多从零的深度学习搭建方法,最终还是失败了。于是乎,我决定直接用deepo的docker镜像来帮助我快速搭建一个深度学习环境并进行jupyter的服务配置,这里我是用mobaxterm连接的云服务器。

话不多说,进入正文

一、docker的安装

docker 的安装和基本操作,参考官方文档 docker install ,按流程复制粘贴即可。

如果最后运行 docker -v ,输出了 docker 的版本就说明你已经成功地安装了小鲸鱼(docker)了!

(例如version 20.10.12, build 20.10.12-0ubuntu2~18.04.1)

或者 运行 docker run hello-world,能输出结果,也说明成功安装了。当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载,默认标签是latest。

二、NVIDIA-docker的安装

原本的docker不支持使用GPU,所以NVIDIA单独做了一个docker,来让docker镜像可以使用NVIDIA的gpu。这里也推荐大家跟着教程一步步走下来就可以了,nvidia-docker quickstart

运行 nvidia-smi 命令,能输出正确信息代表驱动安装成功,如下。

 ps:右上角的CUDA Version不代表已经安装cuda,而是能支持的cuda的最高版本。

  三、深度学习环境的配置

这里使用镜像是deepo

可以直接通过命令:

docker pull ufoym/deepo (docker run --runtime=nvidia --rm ufoym/deepo nvidia-smi)

就可以把各种框架都下载下来。但是这样太大了,耗时太长,大家可以按需选择。

此外它还提供了jupyter notebook版的镜像:

docker pull ufoym/deepo:all-jupyter-py36-cu100

大家可以按需选择自己需要的版本ufoym/deepo - Docker Image | Docker Hub

安装好之后,通过docker images -a命令,可以查看已经下载好的镜像。

 这里我们看到ufoym/deepo镜像已经成功下载

四、进入容器配置jupyter

1. 在服务器创建文件夹来放自己数据和代码

cd /root/Documents  (其中root是用户名)
mkdir workspace

 2.进入容器

之前已经下载了深度学习jupyter notebook镜像(ufoym/deepo:all-py36-jupyter-cu100)不同版本可以根据实际情况更改

启动容器:

nvidia-docker run -it -p 7777:8888 --ipc=host -v /root/workspace:/workspace --gpus all --shm-size 8G --name dl  ufoym/deepo:all-py36-jupyter-cu100
  • -it:为直接进入交互式 ;
  • -p 7777:8888:是把主机的7777端口映射到容器的8888端口;
  • -ipc=host:可以让容器与主机共享内存 ;
  • --name xxxxx:给容器起一个名字便于后续操作
  • -v /root/workspace:/workspace:指示docker挂载目录,这样可以在容器环境内部进行访问。如果您有数据集或代码文件,将它们设置为可在特定目录上使用,并通过此选项进行挂载。可以将主机上的 /root/workspace 地址挂载到容器里,并命名为/workspace,这样这个文件夹的内容可以在容器和主机之间共享,即在主机里上传到/root/workspace,容器里的/workspace就可以同步看到
  • --shm-size 8G :默认分配很小的内参,在训练模型时不够用,可以通过参数设置
  • --gpus all:把所有的GPU加入到docker环境中的

 这样我们就可以成功的进入容器当中,这时用ls命令,应该可以看到一个新的文件workspace就产生了!此时我们已经成功一大半了(手动狗头)

3.配置jupyter notebook

①生成jupyter的配置文件

jupyter notebook --generate-config  #运行完会得到配置文件的地址

/root/.jupyter/jupyter_notebook_config.py        是生成的路径


②设置密码

现在terminal输入ipython

然后依次输入

from notebook.auth import passwd
passwd()

再输入密码即可,密码是看不见的,没有变化无需疑惑

 复制得到的密钥(out[2]的输出),后面修改配置文件的时候会用到

 ③修改配置文件

用vim编辑代码段

vim /root/.jupyter/jupyter_notebook_config.py

 在最后插入如下内容:

c.NotebookApp.allow_remote_access = True
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:49fd342fa081:b4267cdc24b271573301a7f8c84cc9927dcc3b30'        #这里换成刚刚生成的内容
c.NotebookApp.port = 8888   #记得服务器开放相应端口

 修改完成后保存退出

④启动jupyter

#允许root启动
jupyter notebook --allow-root

看到如下内容就是成功启动了!!!

 五、远程登录jupyter

用win+R打开运行cmd

#把服务器的7777映射到本地的7777
ssh -L:7777:localhost:7777 用户名@服务器ip

 然后输入服务器密码,成功连接云服务器。

本地机器上,在浏览器中输入: http://服务器IP地址:7777,即可打开jupyter.

最后输入jupyter密码即可成功登录!

以上是关于远程服务器基于docker容器的深度学习环境配置(支持GPU)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu+docker+pycharm环境深度学习远程炼丹使用教程

基于容器的AI系统开发——百度PaddlePaddle解析

pycharm如何远程连接服务器上的docker容器

pycharm如何远程连接服务器上的docker容器

需要使用远程 API 运行同一镜像的多个容器,同一 docker 服务器中的相同配置

基于docker搭建conda深度学习环境(支持GPU加速)