pytorch & docker & jupyter

昨天開始學(xué)習(xí)使用dockers,為了用上服務(wù)器上的GPU,但是很麻煩,麻煩在哪里呢:

非常不方便修改和查看代碼,每次需要本地修改了傳到服務(wù)器上,再拷貝到容器里!超級麻煩。

所以,需要新建一個容器,一步到位:共享與服務(wù)器的文件目錄,本地通過jupyter可以修改代碼。

這個關(guān)鍵點就在于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,主機(jī)環(huán)境是nvidia驅(qū)動加cuda,就需要將docker run換成nvidia-docker run,這樣新啟動的容器就有驅(qū)動了。

參數(shù)解析:? ??

? ? -it:終端交互式操作?

? ? -d:后臺運(yùn)行容器,并返回容器id

? ? -p:指定端口映射

? ? 8888:8888:前一個8888是主機(jī)(這里是服務(wù)器)端口,后一個是容器端口

? ? --ipc=host:讓容器共享主機(jī)ipc命名空間

? ? --name pytorch1.3:給這個容器命名為pytorch1.3

? ? -v /home/xx/:/workspace:共享目錄,/home.xx/是主機(jī)文件目錄,/workspace是容器文件目錄

? ? pytorch/pytorch:是鏡像名稱

? ? 1.3-cuda10.1-cudnn7-devel是鏡像版本

? ? /bin/bash:終端交互

docker?exec?-u 0 -it ContainerName /bin/bash:?以root身份進(jìn)入容器

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

接著就是pip自己需要的包了,pip intsall jupyter -i 國內(nèi)源

有時候國內(nèi)源一個不穩(wěn)定會出現(xiàn)網(wǎng)絡(luò)錯誤,可以換著來!

國內(nèi)源:

https://pypi.tuna.tsinghua.edu.cn/simple/ # 清華大學(xué)

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

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

https://pypi.mirrors.ustc.edu.cn/simple/ # 中國科學(xué)技術(shù)大學(xué)

https://pypi.hustunique.com/ # 華中科技大學(xué)

安裝vim

apt-get install vim

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

那么:

cp /etc/apt/sources.list /etc/apt/sources.list.bak 先備份原來的文件,再執(zhí)行:

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

上面這些換源操作因為源的公鑰問題已經(jīng)作廢,直接更新apt-get就行。

apt-get update 更新源

再執(zhí)行apt-get install vim。

配置jupyter notebook可遠(yuǎn)程訪問

(1)jupyter-notebook --generate-config


(2)設(shè)置jupyter的密碼:jupyter-notebook password


(3)去復(fù)制生成的sha1碼:vim /root/.jupyter/jupyter_notebook_config.json

linux vim編輯命令:

????ins鍵:是進(jìn)入編輯模式;

? ? Esc鍵是進(jìn)入命令模式,此時輸入:q是直接退出,:wq是寫完保存退出

? ? 這里復(fù)制密碼只需要在命令模式下選中ctrl+c就行,然后:q退出

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

? ? 進(jìn)入編輯模式,填寫下面信息

????# 允許通過任意綁定服務(wù)器的ip訪問

????c.NotebookApp.ip = '*'

????# 用于訪問的端口

????c.NotebookApp.port = 8888?

? ? #注意,這里的8888是與上面啟動的容器開放端口一致

????# 不自動打開瀏覽器

????c.NotebookApp.open_browser = False

????# 設(shè)置登錄密碼

????c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxx' # 上面復(fù)制的sha1碼

? ? 進(jìn)入命令模式,:wq退出

(5)容器內(nèi)啟動jupyter:jupyter notebook --allow-root

如果想讓jupyter在窗口關(guān)閉后在后臺運(yùn)行:nohup jupyter notebook --allow-root > jupyter.log 2>&1 &,日志會寫到.log中。

(6)本地瀏覽器啟動遠(yuǎn)程docker 的jupyter:http://服務(wù)器Ip:8888,這里的8888是與上面啟動的服務(wù)器開放端口一致。

就可以輸入自己設(shè)置的密碼,就可以進(jìn)入jupyter啦!


將.ipynb 文件轉(zhuǎn)成.py

執(zhí)行jupyter nbconvert --to script xxx.ipynb


可以直接編輯容器里面的代碼真的太好了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容