MultiThreadedEnv¶
- torchrl.envs.MultiThreadedEnv(*args, **kwargs)[source]¶
基于 EnvPool 的多线程环境执行。
GitHub: https://github.com/sail-sg/envpool
论文: https://arxiv.org/abs/2206.10558
基于多线程的 ParallelEnv 替代方案。它更快,因为它不需要启动新进程,但灵活性较低,因为它只支持 EnvPool 库中实现的环境。目前只支持同步执行模式,即批处理大小等于 worker 数量,详情请参阅 https://envpool.readthedocs.io/en/latest/content/python_interface.html#batch-size。
- 参数:
num_workers (int) – 同时运行的环境数量。将与 ~.batch_size 的内容相同。
env_name (str) – 要构建的环境名称。
- 关键字参数:
create_env_kwargs (Dict[str, Any], optional) – 传递给 envpool 环境构造函数的关键字参数。
categorical_action_encoding (bool, optional) – 如果
True
,则分类规格将被转换为等效的 TorchRL 类型 (torchrl.data.Categorical
),否则将使用独热编码 (torchrl.data.OneHot
)。默认为False
。disable_env_checker (bool, optional) – 仅适用于 gym > 0.24。如果
True
(这些版本的默认值),则不会运行环境检查器。frame_skip (int, optional) – 如果提供,表示同一动作将重复执行多少步。返回的观测值将是序列中的最后一个观测值,而奖励将是所有步骤的奖励总和。
device (torch.device, optional) – 如果提供,则数据将要转换到的设备。默认为
torch.device("cpu")
。allow_done_after_reset (bool, optional) – 如果
True
,则允许环境在调用reset()
后立即完成 (done
)。默认为False
。
示例
>>> env = MultiThreadedEnv(num_workers=3, env_name="Pendulum-v1") >>> env.reset() >>> env.rand_step() >>> env.rollout(5) >>> env.close()