在高高兴兴搞了一个云服务器决定开始学习深度学习的时候,决定自己配一个环境。在历尽千辛万苦之后,参考了众多从零的深度学习搭建方法,最终还是失败了。于是乎,我决定直接用deepo的docker镜像来帮助我快速搭建一个深度学习环境并进行jupyter的服务配置,这里我是用mobaxterm连接的云服务器。
(后续:其实我的环境是配好了的,但是启动服务器的时候没做端口映射,当时还不会,现在发现环境配置的很nice,如果大家有需要可以在评论区dd我)
话不多说,进入正文
一、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密码即可成功登录!