mirror of
https://github.com/wassname/ray.git
synced 2026-07-04 10:29:45 +08:00
9a479b3a63
This also removes the async resetting code in VectorEnv. While that improves benchmark performance slightly, it substantially complicates env configuration and probably isn't worth it for most envs. This makes it easy to efficiently support setups like Joint PPO: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/retro-contest/gotta_learn_fast_report.pdf For example, for 188 envs, you could do something like num_envs: 10, num_envs_per_worker: 19.
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
|
|
class EnvContext(dict):
|
|
"""Wraps env configurations to include extra rllib metadata.
|
|
|
|
These attributes can be used to parameterize environments per process.
|
|
For example, one might use `worker_index` to control which data file an
|
|
environment reads in on initialization.
|
|
|
|
RLlib auto-sets these attributes when constructing registered envs.
|
|
|
|
Attributes:
|
|
worker_index (int): When there are multiple workers created, this
|
|
uniquely identifies the worker the env is created in.
|
|
vector_index (int): When there are multiple envs per worker, this
|
|
uniquely identifies the env index within the worker.
|
|
"""
|
|
|
|
def __init__(self, env_config, worker_index, vector_index=0):
|
|
dict.__init__(self, env_config)
|
|
self.worker_index = worker_index
|
|
self.vector_index = vector_index
|
|
|
|
def with_vector_index(self, vector_index):
|
|
return EnvContext(
|
|
self, worker_index=self.worker_index, vector_index=vector_index)
|