你好,我是郑洪智,你的技术探路者。
洪流学堂公众号回复OTC
,关注比赛全纪录。
Unity官方推荐了GCP(Google Cloud Platform,谷歌云平台)来训练模型,新注册会有$300的免费额度。昨天搞的过程中遇到了点问题,就先跳过了,今天终于把所有的坑给填平了。
GCP的部署过程主要按照文档一步一步来:
https://github.com/Unity-Technologies/obstacle-tower-env/blob/master/examples/gcp_training.md
下面主要把主要的坑记录一下。
0. 注册GCP账号
注册自行注册,没什么好说的。如果已经有google账号了就可以直接用。
需要用到支持外币的信用卡。
不过我中间遇到一个问题,google让我验证身份。多了一步验证的环节,选地区里面没有中国大陆,选了香港,传了身份证和信用卡的图片,大概过了一个小时审核通过。
1. 打开市场
2. 搜索Deep Learning VM
点击启动:
3. 配置VM
有两个需要注意的地方:
- GPU按照Unity文档的推荐,选择T4/P4就够用,关键是费用低。
- 下面要勾选上
Install NVIDIA GPU driver automatically on first startup?
其他看图中保持默认即可。
接下来我这就没那么顺利了,部署的时候报错,创建了几次都是:
“tensorflow”存在资源警告 tensorflow-1-vm: {"ResourceType":"compute.v1.instance","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"errors":[{"domain":"usageLimits","message":"Quota 'GPUS_ALL_REGIONS' exceeded. Limit: 0.0 globally.","reason":"quotaExceeded"}],"message":"Quota 'GPUS_ALL_REGIONS' exceeded. Limit: 0.0 globally.","statusMessage":"Forbidden","requestPath":"https://www.googleapis.com/compute/v1/projects/zhzytb5/zones/us-west1-b/instances","httpMethod":"POST"}}
看了GCP的很多文档,才发现免费试用版(free-tier)不支持使用GPU,可以在GCP console首页右上角点击upgrade进行升级。
文档如下:
https://cloud.google.com/free/docs/gcp-free-tier#how-to-upgrade
看完文档后发现我早就手贱升级过了:
- 不升级之前,额度用超了也不会自动收费,但是有些资源不能使用
- 升级之后,资源用超了会自动从信用卡扣费
然后才发现是配额的问题,我的账户上没有全局GPU配额,也就是说创建虚拟机不能有GPU。按文档来说升级完账户默认会有一个GPU配额,但是不知道为什么我的账户没有。
打开配额的页面,按如下图所示申请配额,申请完需要等待人工审核:
接下来就是等待google的邮件通知。
大概过了一个多小时,收到邮件说配额已经给了,咱们接着搞。
还是按之前的老方法创建VM,这次没啥大问题了,有个警告,我们先忽略它,看看后面会不会有啥问题。
4. SSH它!
点击下图中SSH,就可以通过web ssh连接到这台服务器。
看见这个界面了,不容易:
接下来继续按照Unity的文档进行操作:
5. 安装XServer
按照文档一路通畅,但好事不长久,执行下面两行代码时出错了:
sudo /usr/bin/X :0 &
export DISPLAY=:0
报错主要是:
Fatal server error:
(EE) no screens found(EE)
如下图:
查阅github issues,确实有一个同样的issue,但是没有答案。
https://github.com/Unity-Technologies/obstacle-tower-env/issues/51
只能回头重新梳理一下所有执行过的命令。果然!还是不好使!
开始查看所有的log,搜索aicroud和github issues都没有找到答案,只能根据报错google。报错最核心的一句是:NVIDIA(GPU-0): UseDisplayDevice "None" is not supported with GRID
果不其然,找到了类似的问题,经过试验后,这也正是答案:
链接:https://github.com/agisoft-llc/cloud-scripts/blob/master/fix_xorg_conf.py
解决办法:删除或者使用#
注释掉/etc/X11/xorg.conf
文件的ServerLayout 和 Screen 两个部分。
然后再执行命令就可以了,包括后续的测试命令,如下图所示:
然后接着按文档来,一路顺利,又遇到一个报错:
ImportError: No module named 'atari_py'
这个一看报错是python少了一个包,按理说不应该啊,往上翻了翻文档,原来是我选择性忽略了中间一步。。。
sudo apt update && sudo apt install cmake zlib1g-dev
pip3 install absl-py atari-py gin-config gym opencv-python
如果你也遇到了问题,你需要首先回去看看是不是选择性忽略了哪一步。如果确定没有再去寻找其他答案。
经过我们坚持不懈地努力,终于跑起来了:
记住按下Ctrl + A, Ctrl +D
可以从Screen里面出来,就可以退出terminal,并且程序还在后台运行。
6. 访问tensorboard
下面是如何访问tensorboard,为了一劳永逸,直接在GCP中修改了防火墙,添加了一条防火墙规则,是这个样子。
添加防火墙规则的时候注意那个目标标记deeplearning-vm
,这个是咋来的呢?
点开你的虚拟机就能看到:
image.png添加过后,在terminal里面执行:
tensorboard --logdir=/tmp/dopamine
就可以通过虚拟机的公网ip访问tensorboard了。
记录的间隔有些久,我这个大概训练了2个小时才这样,好像是2个小时才记录一次数据。
总结
今天将整个GCP环境搭建好了,不过网络的原因,在GCP上迭代太慢了,还是需要在本地把模型测试个7788,昨天说今天要看论文也还没有看完,要继续加油了。
洪流学堂公众号回复OTC
,关注比赛全纪录。
网友评论