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 環境建構子的 kwargs。
categorical_action_encoding (bool, optional) – 如果
True
,則類別規格將轉換為等效的 TorchRL (torchrl.data.Categorical
),否則將使用 one-hot 編碼 (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()
之後,允許環境 (envs) 立即處於done
狀態。預設值為False
。
範例
>>> env = MultiThreadedEnv(num_workers=3, env_name="Pendulum-v1") >>> env.reset() >>> env.rand_step() >>> env.rollout(5) >>> env.close()