pytorch & docker & jupyter

昨天开始学习使用dockers,为了用上服务器上的GPU,但是很麻烦,麻烦在哪里呢:

非常不方便修改和查看代码,每次需要本地修改了传到服务器上,再拷贝到容器里!超级麻烦。

所以,需要新建一个容器,一步到位:共享与服务器的文件目录,本地通过jupyter可以修改代码。

这个关键点就在于docker run!

sudo docker run -it -d -p 8888:8888 --ipc=host --name pytorch1.3 -v /home/xx/:/workspace pytorch/pytorch:1.3-cuda10.1-cudnn7-devel /bin/bash

如果要使用GPU,主机环境是nvidia驱动加cuda,就需要将docker run换成nvidia-docker run,这样新启动的容器就有驱动了。

参数解析:    

    -it:终端交互式操作 

    -d:后台运行容器,并返回容器id

    -p:指定端口映射

    8888:8888:前一个8888是主机(这里是服务器)端口,后一个是容器端口

    --ipc=host:让容器共享主机ipc命名空间

    --name pytorch1.3:给这个容器命名为pytorch1.3

    -v /home/xx/:/workspace:共享目录,/home.xx/是主机文件目录,/workspace是容器文件目录

    pytorch/pytorch:是镜像名称

    1.3-cuda10.1-cudnn7-devel是镜像版本

    /bin/bash:终端交互

docker exec -u 0 -it ContainerName /bin/bash: 以root身份进入容器

如需升级pytorch:  pip install --upgrade torch==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/

接着就是pip自己需要的包了,pip intsall jupyter -i 国内源

有时候国内源一个不稳定会出现网络错误,可以换着来!

国内源:

https://pypi.tuna.tsinghua.edu.cn/simple/ # 清华大学

https://mirrors.aliyun.com/pypi/simple/ # 阿里云

https://pypi.douban.com/simple/ # 豆瓣

https://pypi.mirrors.ustc.edu.cn/simple/ # 中国科学技术大学

https://pypi.hustunique.com/ # 华中科技大学

安装vim

apt-get install vim

如果出错:E: Unable to locate package vim

那么:

cp /etc/apt/sources.list /etc/apt/sources.list.bak 先备份原来的文件,再执行:

echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list

echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

上面这些换源操作因为源的公钥问题已经作废,直接更新apt-get就行。

apt-get update 更新源

再执行apt-get install vim。

配置jupyter notebook可远程访问

(1)jupyter-notebook --generate-config


(2)设置jupyter的密码:jupyter-notebook password


(3)去复制生成的sha1码:vim /root/.jupyter/jupyter_notebook_config.json

linux vim编辑命令:

    ins键:是进入编辑模式;

    Esc键是进入命令模式,此时输入:q是直接退出,:wq是写完保存退出

    这里复制密码只需要在命令模式下选中ctrl+c就行,然后:q退出

(4)在jupyter_notebook_config.py 文件填入配置:vim /root/.jupyter/jupyter_notebook_config.py

    进入编辑模式,填写下面信息

    # 允许通过任意绑定服务器的ip访问

    c.NotebookApp.ip = '*'

    # 用于访问的端口

    c.NotebookApp.port = 8888 

    #注意,这里的8888是与上面启动的容器开放端口一致

    # 不自动打开浏览器

    c.NotebookApp.open_browser = False

    # 设置登录密码

    c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxx' # 上面复制的sha1码

    进入命令模式,:wq退出

(5)容器内启动jupyter:jupyter notebook --allow-root

如果想让jupyter在窗口关闭后在后台运行:nohup jupyter notebook --allow-root > jupyter.log 2>&1 &,日志会写到.log中。

(6)本地浏览器启动远程docker 的jupyter:http://服务器Ip:8888,这里的8888是与上面启动的服务器开放端口一致。

就可以输入自己设置的密码,就可以进入jupyter啦!


将.ipynb 文件转成.py

执行jupyter nbconvert --to script xxx.ipynb


可以直接编辑容器里面的代码真的太好了!

你可能感兴趣的:(pytorch & docker & jupyter)