滴滴云GPU服务器做深度学习之tensorflow object detect 对象检测 实践

滴滴云的GPU云可以用了,冲着3元一小时的价格,我去试了一把。
1、好吧,先注册滴滴云,这个简单略过。
2、要购买GPU实例,先要实名认证,要上传身份证的正反面,JPG格式,好吧,我上传,在下班时间里居然秒通过,话说这不是人为审核吧,我估计乱传一张身份证也会通过。
3、开始购买了啦,发现可用地区有且只有广州一区和广州二区,难道滴滴服务器只在广州吗,难道是根据我的地区自动选择的(深圳,不知其它的人是不是更多选择),没有譬如香港之类的地区,这就造成我们的服务器天然上不了类似google的网站,不巧的是tensorflow正好是google的。



GPU服务也是有且只有一个p4

镜像有两个右上角有GPU的,我们选个Ubuntu吧

付费我是按时发费

选择最低配置

选择带宽1M的话是0.03元每小时(按小时收费哦),开始配置服务器时应该要分配大一点,因为肯定要下载一些环境之类的。

最后再设一下密码(用户名固定为dc2-user):

好吧,最后用微信付款3.03元(1M带宽),申请到如下配置的GPU服务器一个小时的使用时间

可以看出来,收费主要有三项,一个是镜像占有空间收费(20G内免费,我们现在还没有创建镜像),实例收费,带宽收费。

注意点:
当你创建完实例以后,系统就开始收钱喽,如果你不想让它收钱要怎么办,你可能会认为把实例关机就不收钱了,答案是错的,你得把这个实例删除,删除哦,当你把实例删了以后,发现宽带还在收钱哦,你还要把宽带也删了哦,也就是说当你不想付钱时,你要手动分别删除两个项目实例和带宽哦。你又会说了,我好容易配好的环境训练一次,删了以后,后面再用又要再配环境,那不是晕了,所以你在删除之间先做个镜像,然后删除实例和网络。后面再用的时候,再创建实例的时候选择这个自己的镜像,就可以还原到上次的系统了。

好吧,我们终于建好了实例,有了ssh的帐号和密码,我们在windows上要装个ssh的客户端来登陆吧,常用的应该是winscp+putty吧,要上传下载文件就用winscp,要命令行就用putty,在winscp里可以打开putty,但要先装好putty,并且做一下配置关联起来。

putty登陆上去以后,可以发现它已经装好的显卡驱动+cuda(9.0)+cudnn(7.0),但是其它像tensorflow之类都是没有的。
我上去的第一次事是启用root,为root设置密码以后,把ssh的允许root登陆,
相关指令是:
sudo passwd root
/etc/ssh/sshd_config 修改该配置文件(红色字体位置修改):
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
修改完以后重启服务,或是重启实例:
service sshd restart
现在再用winscp直接以root登录以后,就可以无限制的做各种动作了。

如果只是一台训练机,我个人感觉不用担心安全问题,因为训练完我马上关掉,而且在防火墙上默认只开了443,80,22等端口,可以按自己的需求关掉除22外的其它外网端口。

打开putty,使用root连接上实例,先给它装个anaconda先
wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
chmod 777 Anaconda3-5.2.0-Linux-x86_64.sh
sh Anaconda3-5.2.0-Linux-x86_64.sh
按q,然后yes,然后一路按提示yes,最后提示是否加到bashrc,这是需要的。
装完以后
source ~/.barshrc
另外cuda的lib也要加到barshrc里,不然后面使用tensorflow时有问题
nano ~/.barshrc
再最后加上
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
ctrl-o +回车  //保存
ctrl-x      //退出
nano ~/.barshrc
看看python装好了没
python --version  
安装tensorflow
pip install tensorflow-gpu
装完tensorflow以后,我们就可以做事了,比如做对象检测,将 https://github.com/sanfooh/tensorflow_object_detection_api_demo 这里的脚本一脑的粘进去(具体可以查看这里的视频 https://edu.csdn.net/course/detail/8274 ):
#在根目录下创建一个output目录
mkdir /output
cd /output/

#下载旧版本的tensorflow model(object api 包含在model里),最新版本的api存在问题(当前2018.4.20)
wget  https://github.com/tensorflow/models/archive/dcfe009a024854207c9067d785c105f5ebf5a01b.zip
unzip dcfe009a024854207c9067d785c105f5ebf5a01b.zip 
mv models-dcfe009a024854207c9067d785c105f5ebf5a01b models
rm dcfe009a024854207c9067d785c105f5ebf5a01b.zip 

#安装依赖项
pip install Cython
pip install pillow
pip install lxml
pip install jupyter
pip install matplotlib
pip install opencv-python
pip install pycocotools

#安装object detection api 并验证
cd /output/models/research/
protoc object_detection/protos/*.proto --python_out=.
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
python object_detection/builders/model_builder_test.py

#下载图片及标注文件
cd /output
git clone https://github.com/sanfooh/tensorflow_object_detection_api_demo.git

#下载预训练文件
cd /output/tensorflow_object_detection_api_demo
wget  http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz
tar -xzvf ssd_mobilenet_v1_coco_2017_11_17.tar.gz
rm -r ssd_mobilenet_v1_coco_2017_11_17.tar.gz

#生成tfrecord数据集
python create_tf_record.py 

#可使用check_tfrecord.ipynb验证一下tfrecord是否有问题



问题来了,其中红色部分下载的预训练文件是在tensorflow的官网上,在这台服务器上是拿不下来的。所以只能想其它的办法,比如用翻墙之类的方法,先把它拿到本地来,然后再通过winscp传上去,由于winscp是用root登录的,所以就不会出现没有权限之类的。

当我们要启动jupter notebook时:
jupyter notebook --allow-root --ip 实例的内网ip port 80
要注意的是,这里的ip要设置为实例的内网ip,而不能设为外网ip,然后在防火墙组里默认开了80,所以用就指定80好了,如果不指定,默认开启6006,那就要滴滴云安全-防火墙组里手动打开这个端口了。

同样的查看tensorboard
tensorboard --logdir=mytrain --port=80

搞七搞八之后,时间差不多了,我们需要对这个实例生成一个快照(镜像)保存下来,生成快照之前最好瘦身一下系统,不必要的文件删除掉,因为超过20G是要收费的,生成完镜像以后,我们就可以把实例删掉,再把网络-弹性公网ip也删除,就可以洗洗睡了,然后啥时有项目要训练,就利用此快照创建一个实例,再通过winscp把样本传上去进行训练,最后通过winscp把模型拿下来用了。

视频介绍链接: https://edu.csdn.net/course/detail/8274

另一篇有意思的深度学习文章:

深度学习tensorflow object detect 之识别社会人小猪佩奇

猜你喜欢

转载自blog.csdn.net/wulala789/article/details/80550407