Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Universe入门

Universe入门

作者头像
东心木水
修改于 2018-02-10 02:15:18
修改于 2018-02-10 02:15:18
3.1K0
举报
文章被收录于专栏:翻译翻译

Universe

Universe是一个用于衡量和训练AI的软件平台,适合世界上的所有游戏,网站和应用程序。本项目是一个universe开源库,它为 每个Universe环境提供了一个简单的Gym界面。

Universe允许任何人在任何时候,任何复杂环境中训练和评估智能体(AI agents)。

Universe可以使得任何现有的程序成为一个OpenAI Gym环境,而不需要对程序的内部,源代码或API的特殊访问。它通过将程序打包到Docker容器中,并使用直观的界面来呈现AI:包括发送键盘和鼠标事件以及读取屏幕像素。Universe的最初版本包含超过1000个可以执行任务和收集信息的智能体。

此外,一些环境给智能体发送奖赏信号,以指导强化学习。我们已经拥有几百个内置奖赏信号的环境。这些环境还可以实现自动化的键鼠操作,让您的智能体跳到环境中有趣的部分。

我们希望社区的帮助 能够增加可用环境的数量,当然也包括整合日益庞大和复杂的游戏。

以下任务类包装在公共可用的Docker容器中,现在就可以无需任何额外的工作马上运行:

  • 通过VNC玩雅达利和CartPole游戏: ,gym-core.Pong-v3gym-core.CartPole-v0等。
  • VNC上的Flash游戏:flashgames.DuskDrive-v0
  • VNC上的浏览器会话(World of Bits”):wob.mini.TicTacToe-v0

我们已经为许多游戏建立了集成,包括高质量的GTA V集成(感谢Craig Quiter和NVIDIA),不过这些都不包含在今天这文章中。

本文档的内容

  • 入门
    • 安装
    • 系统总览
    • 运行你的第一个agents
  • 测试
  • 其他文文档
  • 获得帮助
  • 下一步该做什么
    • 更新日志

入门

安装

支持系统

目前支持Python 2.7或3.5

支持Linux和OSX。

建议在开始之前设置一个conda环境,将所有与Universe相关的软件包保存在同一个地方。

安装Universe

要开始,首先安装universe

代码语言:txt
AI代码解释
复制
git clone https://github.com/openai/universe.git
cd universe
pip install -e .

如果有错误出来,可能是因为缺少一些必需的软件包。以下是所需软件包列表(如果需要安装其他软件的话,请告诉我们以帮助我们做的更好)。

Ubuntu 16.04上:

代码语言:txt
AI代码解释
复制
pip install numpy
sudo apt-get install golang libjpeg-turbo8-dev make

在Ubuntu 14.04上:

代码语言:txt
AI代码解释
复制
sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable  
sudo apt-get update
sudo apt-get install golang libjpeg-turbo8-dev make
#译者注:以上的ppa可能已经失效,可以使用下面的命令
#sudo add-apt-repository ppa:gophers/archive
#sudo apt-get update
#sudo apt-get install golang-1.9 libjpeg-turbo8-dev make
# 之后把 /usr/lib/go-1.9/bin 加入PATH

在OSX上:

首先安装命令行工具

代码语言:txt
AI代码解释
复制
xcode-select --install

以及numpylibjpeg-turboincremental包:

代码语言:txt
AI代码解释
复制
pip install numpy incremental
brew install golang libjpeg-turbo
安装Docker

Universe中的大部分环境在Docker容器中运行,所以需要安装Docker(在OSX上,推荐Docker for Mac)。

之后运行docker ps,结果如下:

代码语言:txt
AI代码解释
复制
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS    
备用配置 - 在docker中运行智能体

通过以上配置,智能体在操作系统中会作为常规python进程来运行,并根据远程需要启动docker容器。还有一种方法:为智能体构建一个docker镜像,将其作为容器来运行。这种方法适合安装了最新版本docker的任何操作系统和git客户端。

首先cloneuniverse仓库:

代码语言:txt
AI代码解释
复制
git clone https://github.com/openai/universe.git
cd universe

建立一个docker镜像,标签为“universe”,注意最后还有个.

代码语言:txt
AI代码解释
复制
docker build -t universe .
#译者注:可能需要在dockerfile中加入libffi的安装

可能需要一段时间,因为docker镜像要从docker hub中下载。

一旦构建镜像完成,就可以运行测试示例。

代码语言:txt
AI代码解释
复制
docker run --privileged --rm -e DOCKER_NET_HOST = 172.17.0.1 -v /var/run/docker.sock:/var/run/docker.sock universe pytest

命令详细解释:

  • docker run - 启动docker容器
  • --rm - 一旦启动完成,删除容器
  • -e DOCKER_NET_HOST=172.17.0.1 - 启动时告诉universe远程VNC连接到这个Docketr分配的IP
  • -v /var/run/docker.sock:/var/run/docker.sock - 使主机上的docker unix socket可用于容器。这功能常用于允许容器在其自身旁启动其他容器。
  • universe - 使用上面构建的名为“Universe”的镜像
  • pytest - 在容器中运行“pytest”,即运行所有测试

在这一点上,你会看到一堆测试运行,全部通过的话就说明上面的工作已经完成了。

实际的开发工作中,你可能想要运行universe仓库里的其他东西,可以执行以下命令:

代码语言:txt
AI代码解释
复制
docker run --privileged --rm -it -e DOCKER_NET_HOST=172.17.0.1 -v /var/run/docker.sock:/var/run/docker.sock -v (full path to cloned repo above):/usr/local/universe universe python
安装注意事项
  • 安装universe时,在安装numpy时可能会看到warning消息,正常现象。
  • 需要go 版本1.5。Ubuntu 14.04有一个较旧的Go,所以需要升级你的Golang。
  • 我们内部运行的是Python 3.5,所以Python 3.5将会进行更彻底的性能测试。如果您在2.7上看到任何问题,请告诉我们。
  • 虽然我们并非正式支持Windows,但我们希望我们的代码能够在Windows工作。我们很乐意接受完美兼容Windows的请求。同时,Windows用户运行Universe的最简单方法是使用上述备用配置。

系统总览

Universer环境与任何其他Gym环境类似:智能体提交行动并使用step() 方法接收观测。

在内部,Universe环境由两部分组成:客户端远程

  • 客户端是一个VNCEnv 实例,它和智能体在同一个进程中。它能够接收智能体的操作,将智能体代理到 远程,等待智能体的奖赏队列以及维护当前事件状态的本地视图。 -远程是运行环境的动力,通常是Docker容器内部运行的程序。它可以在任何地方运行 - 在本地,远程服务器或云中运行。(这里有一个网页,描述了如何管理远程。)
  • 客户端和远端使用VNC 远程桌面系统以及WebSocket辅助通道互相通信,以获得奖赏,诊断和控制消息。(有关客户端 - 远程通信的更多信息,请参阅Universe内部通信协议。)

这个仓库中的代码对应于Universe环境的客户端。此外,您可以随意访问远程的Docker镜像。我们将在未来发布远程部分的源码,以及使用户能够整合新环境的工具。 如果您想提前体验,请注册我们的测试版(https://docs.google.com/forms/d/e/1FAIpQLScAiW-kIS0mz6hdzzFZJJFlXlicDvQs1TX9XMEkipNwjV5VlA/viewform)。

运行你的第一个智能体

现在已经安装了universe库,确保它能正常工作,试试用python运行下面的例子。(可能需要输入一段时间来确保while循环正在执行。)

代码语言:txt
AI代码解释
复制
import gym
import universe  # 注册 universe环境

env = gym.make('flashgames.DuskDrive-v0')
env.configure(remotes=1)  # 自动创建本地 docker容器
observation_n = env.reset()

while True:
  action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]  # 智能体
  observation_n, reward_n, done_n, info = env.step(action_n)
  env.render()

该示例将在您的Python进程中初始化客户端,自动拉取quay.io/openai/universe.flashgames镜像,并将该镜像作为远程镜像启动。(在我们的远程文档页面中,介绍了其他可以运行远程的方法。)

第一次需要几分钟的时间。顺利的话会有一个窗口弹出来。一个反复向上的箭头,这就是你的智能体,可以看到它正在玩一个Flash赛车游戏Dusk Drive。这个智能体以可编程的方式控制VNC客户端,连接到在云中的Docker容器内运行的VNC服务器,从而呈现一个启用了Flash的无界面版Chrome:

如果只是为了观察或操作您的智能体,您甚至还可以将您自己的VNC客户端连接到环境。我们把flashgamesgym-core镜像捆绑在一个基于浏览器的VNC客户端,可以方便地在这里访问 http://localhost:15900/viewer/?password=openai。如果你在Mac上,连接到VNC服务器更加简单`open vnc://localhost:5900`。

(如果使用docker-machine,则需要将“localhost”替换为Docker守护进程的IP地址,密码为openai。)

例子解析

我们成功运行了一个智能体,那么这些代码是什么意思?我们将通过示例逐行解释。

  • 首先,我们导入已经构建完成的universe的gym库。同时也导入 universe注册 所有的universe环境。
代码语言:txt
AI代码解释
复制
import gym
import universe # 注册universe环境
  • 接下来,我们创建环境实例。gym 在后台搜索注册 信息flashgames.DuskDrive-v0,并实例化 已被修饰VNCEnv对象, 以添加一些实用的诊断和程序。VNCEnv对象是环境的客户端部分,且此时VNCEnv尚未连接到远程
代码语言:txt
AI代码解释
复制
env = gym.make('flashgames.DuskDrive-v0')
  • configure()将客户端连接到远程环境服务器。当调用configure(remotes=1)时,Universe将自动在计算机本地上创建一个Docker镜像。本地客户端使用VNC连接到远程。(客户端-远程通信的更多信息可以在页面中找到universe内部通信协议。更多关于配置远程的信息可查看远程)。
代码语言:txt
AI代码解释
复制
env.configure(remotes=1)
  • 调用env.reset()就可以开始一个新的环境。Universe环境实时运行,而不是与智能体的动作同步,因此reset是异步的,立即完成的。由于环境在返回之前,不会等待与VNC服务器的连接完成,所以reset后最初的观察为None,表明还没有有效的观察。 同样,即使智能体没有调用环境,环境仍在后台运行env.step()。这意味着一个从Universe环境中成功学习的智能体不能休息(thinking breaks):它必须不断地向环境发送行动。 此外,Universe还包含了矢量化的 Gym API。智能体可以控制固定大小n的环境向量,而不是一次控制单个环境。因为每个环境都有自己的远程控制,所以来自reset的返回值是观察的向量。有关更多信息,请参阅有关环境语义的单独页面 )
代码语言:txt
AI代码解释
复制
observation_n = env.reset()
  • 在每次step()的调用中,智能体都会提交一个操作向量,每个操作向量对应一个正在控制中的环境实例。每个VNC操作都是事件的列表; 每个动作就是单个事件“ ArrowUp键”。智能体可以通过提交[('KeyEvent', 'ArrowUp', True), ('KeyEvent', 'ArrowUp', False)]事件来代替按下和释放 ArrowUp键。 事实上,只要提交('KeyEvent', 'ArrowUp', True)一次,然后再调用env.step([[] for ob in observation_n]) ,智能体就能实现与上述相同的效果,而不用使用('KeyEvent', 'ArrowUp', False)释放按键。在远程运行的浏览器将继续将方向键状态表示为被按下。发送其他按键不会中断箭头上键的状态。只有明确地释放按键才能取消它。有一个点非常微妙:当游戏重置,浏览器将重置,并将忘记按键的状态; 你在每个游戏片段开始时都需要提交新的ArrowUp
代码语言:txt
AI代码解释
复制
action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]
  • 在我们向环境提交动作和每逢渲染场景一帧后,step()都会返回一个观察的列表,一个奖赏的列表,一个表示该事件是否已经结束的“done”(布尔值)列表,最后返回列表的一个信息索引{'n':[{},...]},您可以在其中以info ['n'] [i]的形式访问环境信息。
代码语言:txt
AI代码解释
复制
observation_n,reward_n,done_n,info = env.step(action_n)
env.render()
  • 我们调用step时,看起来像是一直循环调用。实际上, 客户端上有一个Throttle修饰器,默认目标帧速率为60fps,或者每16.7ms一帧。如果你比以前更频繁地调用它, step会 在剩下的时间里休眠

测试

我们使用pytest进行测试。

代码语言:txt
AI代码解释
复制
pytest

运行pytest --help查看帮助,如pytest -s(禁用输出捕捉)或pytest -k <expression>(只运行特定的测试)。

其他文档

未包含的更多文档可以在项目库的doc文件夹中找到 。

获得帮助

如果遇到本自述文件或附加文档中未解决的问题,请尝试常见问题维基页面,如果解决方案不存在,那么欢迎添加新的解决方案。

您还可以搜索此项目的论坛问题页面,以查看是否有其他用户发布了相同的问题,或着向社区寻找帮助。

如果尝试上述所有步骤后仍无法解决问题,请在本github项目上发布问题。

下一步是什么?

更新日志

  • 2017-02-08:wrappers.SafeActionSpace的旧位置已被移至wrappers.experimental.SafeActionSpace。SoftmaxClickMouse也被转移到wrappers.experimental.SoftmaxClickMouse
  • 2017-01-08:wrappers.SafeActionSpace已被移至wrappers.experimental.SafeActionSpace。旧的位置将保持低版本警告,直到2017-02-08。
  • 2016-12-27:反向不兼容:gym监视器现在是一个修饰器。与其将启动监视器作为env.monitor.start(目录),不如将envs修饰为:env = wrappers.Monitor(env,directory)。(master 0.21.0分支)
评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenAI/Universe-万物
这真是一个 idea 喷薄的时代! 2016 年的最后一个月,OpenAI 在 NIPS 2016 来临之际发布 Universe,一个在世界范围内的游戏、网站及其他应用上衡量和训练 AI 通用智能的
用户1107453
2018/06/21
1.4K0
强化学习笔记-Python/OpenAI/TensorFlow/ROS-基础知识
环境类型:确定,随机,完全可观测,部分可观测,离散,连续,情景序列,非情景序列,单智能体,多智能体。
zhangrelay
2019/06/14
1.2K0
强化学习笔记-Python/OpenAI/TensorFlow/ROS-基础知识
universe-starter-agent
The codebase implements a starter agent that can solve a number of universe environments. It contains a basic implementation of the A3C algorithm, adapted for real-time environments.
CreateAMind
2018/07/24
7750
universe-starter-agent
Python 强化学习实用指南:1~5
强化学习(RL)是机器学习的一个分支,其中学习是通过与环境交互来进行的。 这是面向目标的学习,不教导学习器采取什么行动; 相反,学习器从其行动的结果中学习。 随着各种算法的迅速发展,它是人工智能(AI)中最活跃的研究领域之一。
ApacheCN_飞龙
2023/04/24
2K0
Python中的gym入门
在机器学习和强化学习领域,学习和评估算法的性能通常是非常重要的。为了满足这个需求,OpenAI开发了一个名为gym的Python库。gym提供了一系列标准化的环境,用于开发和比较强化学习算法。
大盘鸡拌面
2023/10/17
6180
强化学习第1天:强化学习概述
强化学习中有一些重要的概念,我们接下来一一介绍他们,如果有些不理解不要着急,我们会举一个具体例子来解释
Nowl
2024/01/18
3000
强化学习第1天:强化学习概述
强化学习系列(三)-gym介绍和实例
gym是openAI下的一个开发和对比强化学习算法的工具包,内部提供了强化学习需要的环境。
languageX
2022/02/06
5.7K0
OpenAI gym  强化学习环境库安装以及使用
在强化学习里面我们需要让agent运行在一个环境里面,然鹅手动编环境是一件很耗时间的事情, 所以如果有能力使用别人已经编好的环境, 可以节约我们很多时间。 OpenAI gym 就是这样一个模块, 他提供了我们很多优秀的模拟环境. 我们的各种 RL 算法都能使用这些环境.。
大鹅
2021/06/15
2.2K0
OpenAI gym  强化学习环境库安装以及使用
OpenAI Gym 中级教程----深入解析 Gym 代码和结构
OpenAI Gym 是一个用于开发和测试强化学习算法的工具包。在本篇博客中,我们将深入解析 Gym 的代码和结构,了解 Gym 是如何设计和实现的,并通过代码示例来说明关键概念。
Echo_Wish
2024/02/01
8640
强化学习笔记5-Python/OpenAI/TensorFlow/ROS-阶段复习
通过上面一系列探索学习,就行完全掌握人工智能学工具(OpenAI)和机器人学工具(ROS)。
zhangrelay
2019/06/15
6840
强化学习仿真环境搭建入门Getting Started with OpenAI gym
gym是用于开发和比较强化学习算法的工具包。它不对代理的结构做任何假设,并且与任何数字计算库(例如TensorFlow或Theano)兼容。
列夫托尔斯昊
2020/09/10
2.7K1
强化学习仿真环境搭建入门Getting Started with OpenAI gym
【通用人工智能的新宇宙】OpenAI 重磅发布AGI测试训练平台Universe
【新智元导读】OpenAI 昨天发布 OpenAI Universe, 根据其官方博客的介绍,这是一个能在几乎所有环境中衡量和训练 AI 通用智能水平的开源平台,当下的目标是让 AI 智能体能像人一样使用计算机。目前,Universe 已经有1000种训练环境,由微软、英伟达等公司参与建设。研究人员介绍说,Universe 从李飞飞等人创立的 ImageNet 上获得启发,希望把 ImageNet 在降低图像识别错误率上的成功经验引入到通用人工智能的研究上来,取得实质进展。 继今年 4 月发布 OpenAI
新智元
2018/03/26
1.9K0
【通用人工智能的新宇宙】OpenAI 重磅发布AGI测试训练平台Universe
使用50行Python教AI玩运杆游戏
嗨,大家好!今天我想展示如何使用50行Python代码教一台机器来平衡杆!我们将使用标准的OpenAI Gym作为我们的测试环境,并只使用numpy创建我们的智能体。
AiTechYun
2018/11/08
1.4K0
50行代码教AI实现动作平衡 | 附完整代码
【导读】本文将为大家展示如何通过 Numpy 库和 50行 Python 代码,使用标准的 OpenAI Gym平台创建智能体 (agent),就教会机器处理推车杆问题 (cart pole problem) ,保持平衡。
AI科技大本营
2019/06/20
5780
50行代码教AI实现动作平衡 | 附完整代码
【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
注释:导入gym库,第2行创建CartPole-v0环境,并在第3行重置环境状态。在for循环中进行1000个时间步长(timestep)的控制,第5行刷新每个时间步长环境画面,第6行对当前环境状态采取一个随机动作(0或1),最后第7行循环结束后关闭仿真环境。 同时本地会渲染出一个窗口进行模拟如下图:
汀丶人工智能
2022/12/01
9390
【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
【AI模型】gym强化学习仿真平台配置与使用
OpenAI Gym 是一个用于开发和比较强化学习算法的开源工具包。它提供了一系列标准化的环境场景和 API 接口,使得研究人员和开发者能够轻松地创建、测试和评估各种强化学习算法。
DevFrank
2024/07/24
4540
24条 Docker 建议
在TES GLOBAL,我们已经爱上Docker并从Docker的0.8版本开始就在生产环境中使用它。我们的很多开发者都参加了在DockerCon欧洲上的培训。下面是我们总结的一些tips,希望可以帮
小小科
2018/05/02
1.1K0
24条 Docker 建议
基于 Docker 的 Jenkins 持续集成与持续部署
基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。
Criss@陈磊
2019/10/14
9280
基于 Docker 的 Jenkins 持续集成与持续部署
【机器学习】机器学习的重要方法——强化学习:理论,方法与实践
在人工智能的广阔领域中,强化学习(Reinforcement Learning, RL)是一个备受瞩目的分支。它通过让智能体(Agent)在环境中进行试错学习,以最大化累积奖励为目标。本文将带您深入探索强化学习算法的魅力与奥秘,并通过一些代码示例来展示其工作原理和应用场景。
破晓的历程
2024/08/20
3440
【机器学习】机器学习重要分支——强化学习:从理论到实践
强化学习(Reinforcement Learning, RL)作为机器学习的重要分支之一,通过与环境交互、试错学习来优化决策策略,已在机器人控制、游戏AI、自动驾驶等领域展现出巨大的潜力。本文将深入探讨强化学习的基本原理、核心算法及其在实际中的应用,并提供代码示例和图表以帮助读者更好地理解和掌握这一技术。
E绵绵
2024/06/17
1.5K0
相关推荐
OpenAI/Universe-万物
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档