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()