Google强化学习框架SEED RL环境部署

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 

本框架是Google发布于ICLR2020顶会上,这两天发布于Google Blog上

**论文Arxiv:**https://arxiv.org/abs/1910.06591

|| 关于Seed RL

现阶段在云端训练复杂的机器学习模型十分昂贵。报告显示,华盛顿大学(University of Washington)的Grover专为生成和检测假新闻而设计,该模型在两周的在训练中共花费了2.5万美元;OpenAI训练其GPT-2语言模型,每小时需花费256美元;谷歌训练其BERT双向转换器模型,预估也花费了6912美元。而这些模型前期的训练成本,对一些大型AI实验室或科技巨头来说也许不足为提,但对于许多的AI创企和小型AI实验室而言,却带来了压力.

当前的框架

上一代的分布式强化学习代理(例如IMPALA)利用专门用于数值计算的加速器,充分利用了(无)监督学习多年来受益的速度和效率。RL代理的体系结构通常分为actor和learner。actor通常在CPU上运行,并且在环境中采取的步骤与对模型进行推断之间进行迭代,以预测下一个动作。通常,actor会更新推理模型的参数,并且在收集到足够数量的观察结果之后,会将观察结果和动作的轨迹发送给learner,从而对learner进行优化。在这种架构中,learner使用来自数百台机器上的分布式推理的输入在GPU上训练模型。

RL Agent(例如IMPALA)的体系结构具有许多缺点:

  • 与使用加速器相比,使用CPU进行神经网络推理的效率和速度要慢得多,并且随着模型变得越来越大且计算量越来越大,问题变得越来越严重。

  • 在actor和learner之间发送参数和中间模型状态所需的带宽可能是瓶颈。

  • 在一台机器上处理两个完全不同的任务(即环境渲染和推理)不可能最佳地利用机器资源。

SEED RL体系结构

SEED RL体系结构旨在解决这些缺点。通过这种方法,learner可以在专用硬件(GPU或TPU)上集中进行神经网络推理,从而通过确保模型参数和状态保持局部状态来加快推理速度并避免数据传输瓶颈。尽管观察结果在每个环境步骤都发送给learner,但由于基于gRPC框架和异步流RPC的非常高效的网络库,延迟保持在较低水平。这使得在一台机器上每秒最多可以实现一百万个查询。learner可以扩展到数千个核心(例如,在Cloud TPU上最多2048个),actor的数量可以扩展到数千台机器,以充分利用learner,从而可以以每秒数百万帧的速度进行训练。SEED RL基于TensorFlow 2 API,在我们的实验中,是通过TPU加速的。

SEED RL的特点与性能

  • 基于谷歌的TensorFlow 2.0框架,SEED RL的特点是能通过集中模型推理,来利用图形卡和TPU(张量处理单元)。

  • 为了避免数据传输瓶颈,SEED RL还使用学习器组件来集中执行AI推理,而该组件也使用来自分布式推理的输入来训练模型。

  • 目标模型的变量和状态信息将保持在本地,并将每个环境步骤的观察结果发送给学习器组件。同时,由于该模型使用了基于开放源代码通用RPC框架的网络库,因此它的延迟也将保持在最低水平。

  • SEED RL的学习器组件能够扩展到成千上万个核心,例如在Cloud TPU上最多可扩展到2048个,而actor的数量可扩展多达数千台机器。

实验结果如下

SEED RL在常用的Arcade学习环境,DeepMind Lab环境以及最近发布的Google Research Football环境中进行了基准测试。

在DeepMind Lab上,作者使用64个Cloud TPU内核实现了每秒240万帧的数据传输速度,与以前的最新分布式代理IMPALA相比,提高了80倍。这样可以显着提高挂钟时间和计算效率。对于相同的速度,IMPALA需要的CPU是SEED RL的3-4倍。

通过针对现代加速器进行优化的架构,自然会增加模型大小,以提高数据效率。我们表明,通过增加模型的大小和输入分辨率,我们可以解决以前未解决的Google Research Football任务“困难”。

更多参数请查看Google blog:

https://ai.googleblog.com/2020/03/massively-scaling-reinforcement.html

|| 代码使用

1. 克隆仓库

 

1git clone https://github.com/google-research/seed_rl.git 2cd seed_rl 3

  1. 单机本地机器训练

 

1./run_local.sh [Game] [Agent] [Num. actors] 2./run_local.sh atari r2d2 4 3./run_local.sh football vtrace 4 4./run_local.sh dmlab vtrace 4 5

3. 使用AI平台进行分布式训练

第一步是配置GCP和一个将用于培训的Cloud项目:

  • 按照https://cloud.google.com/sdk/install上的说明安装Cloud SDK,并设置您的GCP项目。

  • 确保为您的项目启用了计费。

  • 启用AI平台(“云机器学习引擎”)和Compute Engine API。

  • 如https://cloud.google.com/ml-engine/docs/

working-with-cloud-storage所述,授予对AI Platform服务帐户的访问权限。

  • 在您的shell脚本中进行云身份验证,以便SEED脚本可以使用您的项目:

gcloud auth login 2gcloud config set project [YOUR_PROJECT] 3gcp/train_[scenario_name].sh 4 

更多详情查看:

GitHub - google-research/seed_rl: SEED RL: Scalable and Efficient Deep-RL with Accelerated Central Inference. Implements IMPALA and R2D2 algorithms in TF2 with SEED's architecture.

任何程序错误,以及技术疑问或需要解答的,请添加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLSQL连接oracel数据库_用户无法登陆_oci.dll_配置问题

为什么80%的码农都做不了架构师?>>> 由于工作需要换了台新电脑,在抚摸新笔记本满怀新鲜感和喜悦心情之余(其实纯屌丝味尽显无余,就基本和双手捧托一颗高大上的茶叶蛋般内心激动且泪眼汪汪),重新…

CentOS7搭建部署Ambari 2.6.2.0最新版(HDP-UTILS、HDP-GPL)大数据平台

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 注:本文基于root用户操作 一、安装环境准备 操作系统 centos7.5 hdc-data1:192.168.163.51 hdc-data2:192.16…

阿里面试题BIO和NIO数量问题附答案和代码

一、问题 BIO 和 NIO 作为 Server 端,当建立了 10 个连接时,分别产生多少个线程? 答案: 因为传统的 IO 也就是 BIO 是同步线程堵塞的,所以每个连接都要分配一个专用线程来处理请求,这样 10 个连接就会创建…

CentOS7搭建离线部署Cloudera CDH 6.2.0大数据平台

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 1.概述 CDH,全称Clouderas Distribution, including Apache Hadoop。是Hadoop众多分支中对应中的一种,由Cloudera维护&a…

负载均衡实现的几种方式

负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构。 说到负载均衡,同学最容易想到的可能就是nginx了&…

CheckBox as Image use button

为什么80%的码农都做不了架构师&#xff1f;>>> <CheckBox android:id"id/notificationPhoneIcon" android:layout_width"wrap_content" android:layout_height"wrap_content" android:layout_centerVertical"true" an…

1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一

首先&#xff0c;安装python3.8和pycharm参考其他教程。 一、安装django 使用下面命令默认安装最新版的django pip install django也可以从django官网查看安装一个LTS长期稳定支持版本&#xff0c;从下图看到3.2是LTS版本&#xff0c;能够长期支持2021年&#xff5e;2024年&…

python装饰器函数传参

python装饰器函数传参 装饰器 装饰器是一个返回函数的高阶函数。 装饰器常见用法&#xff1a; 打印日志 def logger(func):def wrapper(*args, **kw):print do {}.format(func.__name__)func(*args, **kw)print finishreturn wrapperlogger def add(x,y):print {} {} {}.…

Tomcat工作原理及简单模拟实现

Tomcat应该都不陌生&#xff0c;我们经常会把写好的代码打包放在Tomcat里并启动&#xff0c;然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了&#xff0c;那么Tomcat是如何工作的&#xff1f;一、Tomcat工作原理我们启动Tomcat时双击的startup.bat文件的主要作用是…

苹果怎么调字体大小?详细教程在这,赶快get起来!

在我们使用苹果手机时&#xff0c;可能会遇到需要调整字体大小的情况。合适的字体大小能够提高阅读体验和舒适度&#xff0c;使得手机使用更加便捷。然而&#xff0c;还有很多用户并不知道苹果怎么调字体大小。别着急&#xff01;本文将为您详细介绍操作方法&#xff0c;帮助您…

PyQt5树形结构控件QTreeWidget操作

QTreeWidget 类根据预设的模型提供树形显示控件。 QTreeWidget 使用类似于 QListView 类的方式提供一种典型的基于 item 的树形交互方法类&#xff0c;该类基于QT的“模型/视图”结构&#xff0c;提供了默认的模型来支撑 item 的显示&#xff0c;这些 item 类为 QTreeWidgetIt…

Python3之logging输出写入日志

Python3之logging模块浅析 目录 Python3之logging模块浅析 简单用法日志与控制台同时输出 一个同时输出到屏幕、文件的完成例子日志文件截取日志重复打印问题解决 问题分析解决方案 1.使用不同的日志对象2.及时清理&#xff08;logger.handlers.clear&#xff09;3.使用前先判…

HashMap线程安全问题

HashMap是线程不安全的&#xff0c;在多线程环境下对某个对象中HashMap类型的实例变量进行操作时&#xff0c;可能会产生各种不符合预期的问题。本文详细说明一下HashMap存在的几个线程安全问题。注&#xff1a;以下基于JDK1.8HashMap原理请走传送门通过简单例子来探索HashMap原…

四、PyCharm PyQt5创建主窗口详细教程

1.打开PyCharm,新建工程MyMainTest 2.按照Tools-External Tools-QtDesigner,打开QT设计界面,保存窗体文件。

java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself

2019独角兽企业重金招聘Python工程师标准>>> 一、用户组件的功能 使用java8 lambda表达式实现实现世界的一个例子&#xff1a;用户组件。此用户组件有以下几个操作&#xff1a;获取用户列表&#xff0c;获取单个用户&#xff0c;增加用户&#xff0c;删除用户&am…

如何在CDH5上部署Dolphin Scheduler 1.3.1

本文记录了在CDH5.16.2集群上集成Dolphin Scheduler 1.3.1的详细流程&#xff0c;特别注意一下MySQL数据库的连接串&#xff01; 1 文档编写目的 详细记录CDH5上Dolphin Scheduler 1.3.1的部署流程分布式部署Dolphin Scheduler 2 部署环境和依赖组件 为了适配CDH5上的Hive…

Kafka面试题全套整理 | 划重点要考!

做积极的人&#xff0c;而不是积极废人&#xff01;有很多人问过我要过Kafka相关的面试题&#xff0c;我一直懒得整理&#xff0c;这几天花了点时间&#xff0c;结合之前面试被问过的、别人咨询过的、我会问别人的进行了相关的整理&#xff0c;也就几十题&#xff0c;大家花个几…

关于Java基础你不得不会的34个问题

目录1. 面向对象和面向过程的区别2. Java 语言有哪些特点3. 关于 JVM JDK 和 JRE 最详细通俗的解答4. Oracle JDK 和 OpenJDK 的对比5. Java和C的区别6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同7. Java 应用程序与小程序之间有那些差别8. 字符型常量和字符串常…

Android--快速接入微信支付

前言 最近实习的时候要求我做支付模块&#xff0c;主要是介入支付宝支付和微信支付的。支付宝支付接入相对来说比较好做&#xff0c;官网文档也比较容易懂。但是做微信支付的时候&#xff0c;官网文档就有点懵逼了&#xff0c;不过慢慢读还是能够开通的。与是抽时间记录一下微…

PyQt5 QTreeWidget更改item项前的展开折叠三角图标

把下面代码放到对话框初始化函数中即可 # 设置树控件样式self.treeWidget.setStyleSheet("QTreeView::branch:open:has-children:!has-siblings,""QTreeView::branch:open:has-children:has-siblings {image: url(:/pic/images/minus.png);}""QTreeVi…