滴滴云的GPU云可以用了,冲着3元一小时的价格,我去试了一把。
1、好吧,先注册滴滴云,这个简单略过。
2、要购买GPU实例,先要实名认证,要上传身份证的正反面,JPG格式,好吧,我上传。
3、开始购买了啦,发现可用地区有且只有广州一区和广州二区,还有北京一区,北京一区暂时没有GPU服务器。
4、切换到控制台-计算
付费我是按时发费
选择最低配置
选择带宽1M的话是0.03元每小时(按小时收费哦),开始配置服务器时应该要分配大一点,因为肯定要下载一些环境之类的。
最后再设一下密码(用户名固定为dc2-user):
好吧,最后用微信付款3.224元(6M带宽),申请到如下配置的GPU服务器一个小时的使用时间
可以看出来,收费主要有三项,一个是镜像占有空间收费(20G内免费,我们现在还没有创建镜像),实例收费,带宽收费。
注意点:
当你创建完实例以后,系统就开始收钱喽,如果你不想让它收钱要怎么办,你可能会认为把实例关机就不收钱了,答案是错的,你得把这个实例删除,删除哦,当你把实例删除时,连带网络也要删了哦,也就是说当你不想付钱时,我好容易配好的环境训练一次,删了以后,后面再用又要再配环境,所以你在删除之间先做个镜像,然后删除实例和网络。后面再用的时候,再创建实例的时候选择这个自己的镜像,就可以还原到上次的系统了,但是镜像空间免费赠送20G,超过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 修改该配置文件(PermitRootLogin yes 意思是允许root登陆):
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
修改完以后重启服务,或是重启实例:
service sshd restart
现在再用winscp直接以root登录以后,就可以无限制的做各种动作了。
登陆时会弹出一个提示,给它打勾不显示。
如果只是一台训练机,我个人感觉不用担心安全问题,因为训练完我马上关掉,而且在防火墙上默认只开了443,80,22等端口,可以按自己的需求关掉除22外的其它外网端口。
下载一个putty,并给winscp设置好putty位置
设置以后就可以通过此按钮启动putty
打开putty,使用root连接上实例,先给它装个anaconda先,注意不要装最新版的anaconda,因为最新anaconda用的是python3.7,当前版的tensorflow不支持,导致pip install tensorflow-gpu时找不到文件。
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(这里用了-i的参数,使用了清华的镜像,可以加快下载速度)
pip install tensorflow-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
装完tensorflow以后,我们就可以做事了,比如做对象检测,将https://github.com/sanfooh/tensorflow_object_detection_api_demo 这里的脚本一脑的粘进去:
#在根目录下创建一个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是否有问题
问题来了,如果出现无法下载或是下载很慢的时候,在这台服务器上是拿不下来的。所以只能想其它的办法,比如使用mybinder的服务先把它下载到本地来,然后再通过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把模型拿下来用了。