美文网首页Unity探路营
Unity OTC参赛全纪录 | 2.GCP搭建

Unity OTC参赛全纪录 | 2.GCP搭建

作者: 洪智 | 来源:发表于2019-03-02 11:20 被阅读2次

    你好,我是郑洪智,你的技术探路者。

    洪流学堂公众号回复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

    有两个需要注意的地方:

    1. GPU按照Unity文档的推荐,选择T4/P4就够用,关键是费用低。
    2. 下面要勾选上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

    链接是:
    https://github.com/Unity-Technologies/obstacle-tower-env/blob/master/examples/gcp_training.md#set-up-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

    点开你的虚拟机就能看到:

    image.png

    添加过后,在terminal里面执行:

    tensorboard --logdir=/tmp/dopamine
    

    就可以通过虚拟机的公网ip访问tensorboard了。

    记录的间隔有些久,我这个大概训练了2个小时才这样,好像是2个小时才记录一次数据。

    总结

    今天将整个GCP环境搭建好了,不过网络的原因,在GCP上迭代太慢了,还是需要在本地把模型测试个7788,昨天说今天要看论文也还没有看完,要继续加油了。

    洪流学堂公众号回复OTC,关注比赛全纪录。

    相关文章

      网友评论

        本文标题:Unity OTC参赛全纪录 | 2.GCP搭建

        本文链接:https://www.haomeiwen.com/subject/qbafuqtx.html