0
点赞
收藏
分享

微信扫一扫

Unity OTC参赛全纪录 | 5.Evaluation环境搭建(脱坑篇)

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

由于前两天环境搭建的时候网络环境太差了,经常因为网络原因出错,非常影响效率,今天换了一个地方,准备用虚拟机从头再来一遍,如果你也想尝试,前两篇就可以忽略了,直接上虚拟机是你最好的归宿。

1. 安装虚拟机

之前用虚拟机一直用的是VMWare,这次电脑上没有装VMWare,为啥呢?之前开发Hololens,需要用到Hyper-V,这货也是个虚拟机服务,和VMWare不兼容,那我就想着这次ubuntu的虚拟机就装在这个Hyper-V上试试好了,刚好体验下新产品。

Hyper-V在Windows10上自带的就有,但是必须要Pro或企业版才行,你要是家庭版就没有这个选项。

如下图搜索hyper就可以找到“启用或关闭Windows功能”:

勾选Hyper后,点确定需要重启电脑后生效。

Hyper可以直接快速创建虚拟机:

选择ubuntu就会自动下载安装,非常方便:

其他的就是一些常见的配置,不再多说。

2. 配置虚拟机环境

hyper-v安装的这个ubuntu是个简版,我们需要安装很多东西,比如:

sudo apt-get install git python3.6 python3-pip

接下来就可以按照Unity的指示一步一步安装了:

  1. git clone https://github.com/Unity-Technologies/obstacle-tower-challenge
  2. 安装docker,根据docker的文档安装即可
  3. 安装aicrowd-repo2docker,在这遇到了点问题,安装完后无法直接在terminal中使用aicrowd-repo2docker命令。

如果直接pip3 install aicrowd-repo2docker安装,会安装在~/.local/bin/aicrowd-repo2docker中,无法直接在terminal中使用aicrowd-repo2docker命令。

在网上找到了答案,可以通过下面的命令:

sudo -H pip3 install aicrowd-repo2docker
  1. 下载Obstacle Tower (Linux) ,解压后放到克隆下来的obstacle-tower-challenge目录里。

  2. 开始build

sudo ./build.sh

注意这要使用sudo,否则会操作不了docker

中间遇到一个问题,说user id已经存在了:

Step 13/33 : RUN adduser --disabled-password --gecos "Default user" --uid ${NB_UID} ${NB_USER}
---> Running in 6d6a7f099ee6
adduser: The UID 0 is already in use.

相关issue:https://github.com/Unity-Technologies/obstacle-tower-challenge/issues/22

修改build.sh,中间加一行--user-id 1001 \,注意要加到中间,我之前加到最后不生效

修改后代码应该如下:

export IMAGE_NAME="obstacle_tower_challenge"

aicrowd-repo2docker --no-run \
  --image-name ${IMAGE_NAME} \
  --user-name aicrowd \
  --user-id 1001 \
  --debug . 

经过漫长的下载安装以及多次尝试(中间从nvdia下载时经常出错,好在有缓存,多试几次),docker的镜像终于编译好了。

3. 运行

分别在两个terminal里面运行下面的命令:

sudo docker run \
  --env OTC_EVALUATION_ENABLED=true \
  --network=host \
  -it obstacle_tower_challenge:latest ./run.sh

第二个:

sudo docker run \
  --env OTC_EVALUATION_ENABLED=true \
  --env OTC_DEMO_EVALUATION=true \
  --network=host \
  -it obstacle_tower_challenge:latest ./env.sh

坑又来了,第二个docker跑不起来,导致第一个docker会有超时的错误。

查找,思考了半天,原因有两个:

  1. env.sh里面的代码有问题,构建镜像时明明用户名是aicrowd,这里代码竟然是otc。这个错误可以通过在执行的命令上加参数解决,第二个命令应该使用:
sudo docker run \
  --env OTC_EVALUATION_ENABLED=true \
  --env OTC_DEMO_EVALUATION=true \
  --network=host \
  -it obstacle_tower_challenge:latest ./env.sh 5005 ./ObstacleTower/obstacletower.x86_64
  1. 这个是我的问题,我要背大锅,构建docker镜像之前忘了把Obstacle Tower (Linux) 解压放到对应目录了,这样就等于镜像里没这个文件。
    是前面没有按顺序来,没有将Obstacle Tower (Linux)放好就去build images了。

这个问题可以将Obstacle Tower (Linux)直接拷贝到容器中解决,不过我比较蠢,又重新构建了一次镜像,又等了好久才搞定。

4. Evalution环境搞定

再次运行就可以了,再把运行的命令贴一下:
第一个终端:

sudo docker run \
  --env OTC_EVALUATION_ENABLED=true \
  --network=host \
  -it obstacle_tower_challenge:latest ./run.sh

第2个终端:

sudo docker run \
  --env OTC_EVALUATION_ENABLED=true \
  --env OTC_DEMO_EVALUATION=true \
  --network=host \
  -it obstacle_tower_challenge:latest ./env.sh 5005 ./ObstacleTower/obstacletower.x86_64

上图:


总结

Evaluation环境搭建总算翻篇了,还没开始好好训练已经快被这些环境折磨死了。

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

举报

相关推荐

0 条评论