转载请注明原始出处!
项目地址:
https://github.com/LeoCHANGcn/Nvidia-docker-Ubuntu-16.04-Unity-Desktop-TensorFlow-with-GPU.
由于一般的服务器都是Linux系统,并且考虑到隔离用户,最好的方法是使用Docker容器,docker类似于虚拟机,但是很轻量,效率很高,可以使用显卡资源!好多实验室或者研究团体使用docker为团队成员提供计算资源。但是这存在一个问题,就是docker本身是没有图形界面的,因此需要查看模型效果的时候不是很方便。
本项目旨在在GPU服务器的服务端配置可视化容器,满足大家的深度学习要求的同时,提供一个类似原生系统的操作体验。本项目可以在浏览器里为你提供一个接近原生的操作系统,在浏览器的系统里面进行深度学习编程!
开始之前,你需要对docker有一些了解。然后电脑需要一个满足深度学习要求的强悍显卡,电脑需要安装了dockr以及nvidia-docker。Docker和nvidia-docker请自行搜索官网安装。
如果感觉不错,可以github上给一颗星哦!
首先:
git clone https://github.com/LeoCHANGcn/Nvidia-docker-Ubuntu-16.04-Unity-Desktop-TensorFlow-with-GPU
cd Nvidia-docker-Ubuntu-16.04-Unity-Desktop-TensorFlow-with-GPU
你可以根据github里的命令进行编译:
sudo nvidia-docker build -t leeochang/deep_learning:v0.1 .
或者直接pull:
sudo docker pull leeochang/deep_learning:v0.1
然后在服务器运行:
sudo nvidia-docker run -itd -p 16068:6080 -p 16062:22 -e PASSWORD=0000 -e SUDO=yes leeochang/deep_learning:v0.1
-e PASSWORD=**** 设置密码(作为noVNC登陆密码和系统密码)
-e SUDO=yes 设置登录后允许root权限
-p 暴露端口 6080是登陆界面提供端口;22是ssh端口
在本地打开浏览器,输入
http://[your ip address]:16068/vnc.html
然后就可以登陆了!
浏览器左侧控制栏进行如下选择可以自适应分辨率(选择远端调整大小):
由于gnome terminal在容器里无法运行,所以配置了guake(推荐)和tilda两款终端仿真器。这两款终端仿真器都是雷神下拉式风格。
搜索guake启动guake终端,然后使用“F12”快捷键调出。
已经配置好了opencv3.2 Tensorflow1.6 等:
使用如下命令修改密码,密码至少是8位数字、子母的组合:
passwd
输入此命令后,根据提示修改密码。修改密码主要保证个人容器无法被其他人登录。
注意,这里的修改密码是修改的ubuntu系统的密码,第一步登录novnc的密码还是你一开始设置的密码,不过不要紧,本次更新为容器配置了锁屏功能,输入以下命令锁屏:
gnome-screensaver-command -l
如果感觉这条指令太长,可以使用自定义命令,输入如下命令:
vim .bashrc
在文件尾添加‘:
alias lock="gnome-screensaver-command -l"
保存并退出,然后:
source .bashrc
这样以后你只需要输入’lock’就可以锁屏了!
对于linux用户,可以暴露22端口,然后使用scp命令;
windows可以使用mobaXterm软件,MobaXterm软件下载.
安装完成后打开,点击“start local terminal”
通过监控网站找到容器内对应22端口的主机端口,比如我的是16062,所以输入(下面一条指令每个用户只需要替换端口号即可):
ssh -p 16062 ubuntu@10.193.0.11
输入你修改后的密码:
然后左侧就会出现文件夹,你可以拖拽下载或者上传。
容器内火狐浏览器崩溃:
- browser.tabs.remote.autostart = false
- webgl.disable-wgl = true
- webgl.disabled = true
- webgl.enable-webgl2 = false
完成上述指令后,重启火狐浏览器即可。
目前使用中没有观察到过浏览器崩溃的情况。
无论是用anaconda安装虚拟环境还是使用原生python安装jupyter,在启动的时候推荐:
jupyter notebook --ip=0.0.0.0
不推荐ip=127.0.0.1,因为这样无法在本地浏览器访问,只能在容器内的火狐浏览器访问,虽然火狐的崩溃问题在刚刚修复了,但是并不确定这些修复可以完全避免崩溃。
容器内没有配置Anacondaa,但是可以自行配置。
andocnda创建环境的时候,由于opencv是为python3.5和python2.7编译的,所以opencv只能在这两个python版本或更低的版本下使用(亲测python3.6失败)。具体方法是conda创建虚拟环境之后,把/usr/local/lib/python3.5/dist-packages目录下的cv2.so和cv2.cpython-35m-x86_64-linux-gnu.so复制到你的虚拟环境目录下lib/python3.5/site-packages即可使用。