快捷方式

MultiThreadedEnv

torchrl.envs.MultiThreadedEnv(*args, **kwargs)[源代码]

基于 EnvPool 的多线程环境执行。

GitHub:https://github.com/sail-sg/envpool

论文:https://arxiv.org/abs/2206.10558

基于多线程的 ParallelEnv 的替代方案。它更快,因为它不需要重新生成进程,但灵活性较差,因为它只支持 EnvPool 库中实现的环境。目前,只支持同步执行模式,当批次大小等于工作程序数量时,请参见 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.DiscreteTensorSpec),否则将使用独热编码 (torchrl.data.OneHotTensorSpec)。默认为 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()

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获得面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源