RLlib Environments

1.RLlib 的环境概述RLlib可以处理几种不同类型的环境,包括OpenAI Gym、用户定义的环境、多代理环境以及批处理环境。您可以传递字符串名称或Python类来指定环境。默认情况下,字符串将被解释为gym环境名称。直接传递给训练器的自定义env类必须在构造函数中使用一个env_config参数:import gym, rayfrom ray.rllib.agents impo...
摘要由CSDN通过智能技术生成

1.RLlib 的环境概述

RLlib可以处理几种不同类型的环境,包括OpenAI Gym、用户定义的环境、多代理环境以及批处理环境。

在这里插入图片描述

在这里插入图片描述
您可以传递字符串名称或Python类来指定环境。默认情况下,字符串将被解释为gym环境名称。直接传递给训练器的自定义env类必须在构造函数中使用一个env_config参数:

import gym, ray
from ray.rllib.agents import ppo

class MyEnv(gym.Env):
    def __init__(self, env_config):
        self.action_space = <gym.Space>
        self.observation_space = <gym.Space>
    def reset(self):
        return <obs>
    def step(self, action):
        return <obs>, <reward: float>, <done: bool>, <info: dict>

ray.init()
trainer = ppo.PPOTrainer(env=MyEnv, config={
    "env_config": {},  # config to pass to env class
})

while True:
    print(trainer.train())

您还可以使用字符串名称注册自定义env creator函数。这个函数必须接受一个env_config参数并返回一个env实例:

from ray.tune.registry import register_env

def env_creator(env_config):
    return MyEnv(...)  # return an env instance

register_env("my_env", env_creator)
trainer = ppo.PPOTrainer(env="my_env")

有关使用自定义环境API的完整可运行代码示例,请参见custom_env.py

注意: gym注册表与Ray不兼容。相反,始终使用上面记录的注册流来确保Ray工作人员能够访问环境。

配置环境

在上面的例子中,注意env_creator函数接受一个env_config对象。这是一个包含通过您的训练器传递的选项dict。您还可以访问env_config.worker_indexenv_config.vector_index获取worker id和env id(如果num_envs_per_worker >0)

class MultiEnv(gym.Env):
    def __init__(self, env_config):
        # pick actual env based on worker and env indexes
        self.env = gym.make(
            choose_env_for(env_config.worker_index, env_config.vector_index))
        self.action_space = self.env.action_space
        self.observation_space = self.env.observation_space
    def reset(self):
        return self.env.reset()
    def step(self, action):
        return self.env.step(action)

register_env("multienv", lambda config: MultiEnv(config))

2.OpenAI Gym

RLlib使用Gym作为单代理训练的环境接口。有关如何实现自定义gym环境的更多信息,请参见gyn. env类定义。您可能会发现SimpleCorridor示例作为参考非常有用。

性能

有两种方法来扩大gym环境的实验收集:

  1. 单个进程中的向量化:尽管许多env可以实现每个核心的高帧率,但是它们的吞吐量在实践中受到步骤间策略评估的限制。例如,即使是很小的TensorFlow模型也会产生几毫秒的延迟来进行评估。这可以通过在每个进程中创建多个env并在这些env之间进行批处理策略评估来解决。
    您可以配置{"num_envs_per_worker": M},让RLlib为每个worker创建M个并发环境。RLlib通过vectoren .wrap()自动向量化gym环境。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值