OpenAI 宇宙

OpenAI 宇宙是一个旨在训练 AI 代理人以与人类完全相同的方式使用计算机的平台:通过观察屏幕像素并操作虚拟键盘和鼠标。通过在各种软件环境中提供广泛的任务集合,OpenAI 旨在超越“狭义 AI”,迈向通用智能,在这种智能中,单个代理人可以利用过去的经验来掌握陌生且困难的新环境。

宇宙 基础设施和技术设计

宇宙 使用一个通用接口,使代理能够操作远程桌面。该系统将代理转换为 VNC 客户端,以与环境的 VNC 服务器交互,交换视觉数据和输入命令。

性能和可扩展性

为了支持高吞吐量训练,OpenAI 开发了一个用 Go 编写的面向批处理的 VNC 客户端,作为共享库加载到 Python 中。此架构使单个 Python 进程能够以每秒 60 帧的速度并行驱动多达 20 个环境。该系统通常保持 100ms 延迟,其中大部分时间归因于服务器端编码。

关键基础设施属性

  • 通用性: 代理可以与任何现有的计算机程序交互——包括游戏、终端、网页浏览器、CAD 软件和电子表格——而无需仿真器或访问程序的内部代码。
  • 以人为中心的界面: 由于界面模拟了人类的交互(像素/键盘/鼠标),人类的表现作为基线。人类的演示可以被记录为 VNC 流量,并用于行为克隆以在切换到强化学习(RL)之前初始化代理。
  • 标准化: 使用 VNC 可以在各种操作系统之间实现广泛的兼容性,并使得可以使用基于 JavaScript 的 VNC 实现来通过诸如 Amazon Mechanical Turk 之类的服务收集演示。
  • 可观测性: 通过将 VNC 客户端附加到环境的共享桌面上,可以实时调试训练。

支持的环境

宇宙 中的每个环境都被打包为一个 Docker 镜像,其中包含用于像素/输入的 VNC 服务器以及用于奖励信号和控制消息的 WebSocket 服务器。

Atari 游戏

宇宙 包含来自 Arcade Learning Environment 的 Atari 2600 游戏。这些游戏在 Docker 镜像中异步运行,迫使代理处理真实世界的网络条件。在本地云网络上,系统实现 60 FPS,观察延迟为 20ms,动作延迟为 10ms;在公共互联网上,这会降至 20 FPS,观察延迟为 80ms,动作延迟为 30ms。

Flash 游戏

OpenAI 集成了 1,000 个 Flash 游戏(其中 100 个具有奖励函数)以扩展平台。由于这些游戏缺乏用于成功标准的标准化内存结构,OpenAI 开发了一个基于卷积神经网络的 OCR 模型。该模型从 VNC 自环中解析屏幕上的得分,以提供强化学习(RL)的奖励信号。

浏览器任务

宇宙 使代理能够通过像素和输入导航网页,朝着诸如电子邮件管理或完成教育课程之类的任务发展。

  • Mini World of Bits: 一个基准,包含 80 个环境,范围从简单的按钮点击到复杂的模拟电子邮件回复,旨在作为浏览器交互的 MNIST 类比。
  • 真实世界任务: 代理正在接受真实任务的训练,例如使用网站的缓存录音搜索航班预订,以避免对实时服务进行垃圾信息轰炸。

验证和性能结果

为了确保基础设施能够在诸如变延迟之类的“真实世界杂乱”情况下支持学习,OpenAI 进行了几项验证实验。

宇宙 Pong

使用 gym-core.PongDeterministic-v3 环境,OpenAI 验证了代理在变延迟情况下能够学习精确的反应。经过一小时训练的起步代理获得了 +17 分(满分 21),显著优于在同一版本游戏中的人类,后者平均得分为 -11,这是因为环境的高速度。

网络延迟分析

在公共互联网上,代理的平均反应时间大约为 150ms(110ms 观察到达,10ms 计算,30ms 动作效果)。这比平均人类反应时间 250ms 更快。在局域网上,这降至 80ms,而在单台机器上则降至 40ms。

未来方向和社区整合

OpenAI 意图让宇宙 成为通用问题解决能力的催化剂,类似于 ImageNet 如何加速计算机视觉。未来计划包括:

  • 迁移学习基准: 一项即将发布的版本,用于衡量代理是否正在提升跨任务泛化能力。
  • 扩展集成: 计划通过模拟器集成 Android 应用、Unity 游戏、HTML5 游戏以及来自微软的 Project Malmo。
  • 社区贡献: OpenAI 正在寻求许可以打包更多软件,以及人类演示,以构建用于代理初始化的公共数据集。

Sources