ray-project / ray

Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.
https://ray.io
Apache License 2.0
32k stars 5.45k forks source link

[RLlib] Custom RLModule import fails using absolute imports (with non-zero `env_runners`) #45849

Open mantasu opened 3 weeks ago

mantasu commented 3 weeks ago

What happened + What you expected to happen

Following the official tutorial, it is possible to specify custom RLModules. However, after importing them from a custom local package, I get errors about that custom package not being found. The custom RLModule can only be found if it is defined within the same file or a relative import is used.

Versions / Dependencies

rllib==2.24.0, python=3.11

Reproduction script

File structure:

└── my_project
    ├── notebooks
    │   └── main.ipynb
    │
    └── src/my_module
        ├── __init__.py
        └── my_ppo_torch_rl_module.py

my_ppo_torch_rl_module.py content:

from ray.rllib.algorithms.ppo.torch.ppo_torch_rl_module import PPOTorchRLModule

class MyPPOTorchRLModule(PPOTorchRLModule):
    pass

main.ipynb content (single cell):

import sys

sys.path.append("../src")

from ray.rllib.algorithms.ppo.ppo import PPOConfig
from ray.rllib.core.rl_module.rl_module import SingleAgentRLModuleSpec
from ray.rllib.algorithms.ppo.torch.ppo_torch_rl_module import PPOTorchRLModule

from my_module.my_ppo_torch_rl_module import MyPPOTorchRLModule

config = (
    PPOConfig()
    .api_stack(enable_rl_module_and_learner=True)
    .rl_module(
        rl_module_spec=SingleAgentRLModuleSpec(module_class=MyPPOTorchRLModule)
    )
    .environment("CartPole-v1")
    .training(train_batch_size=32, sgd_minibatch_size=16, num_sgd_iter=1)
)

config.build()
Error traceback ```bash --------------------------------------------------------------------------- ActorDiedError Traceback (most recent call last) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:169, in EnvRunnerGroup.__init__(self, env_creator, validate_env, default_policy_class, config, num_env_runners, local_env_runner, logdir, _setup, num_workers, local_worker) [168](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:168) try: --> [169](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:169) self._setup( [170](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:170) validate_env=validate_env, [171](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:171) config=config, [172](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:172) num_env_runners=num_env_runners, [173](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:173) local_env_runner=local_env_runner, [174](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:174) ) [175](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:175) # EnvRunnerGroup creation possibly fails, if some (remote) workers cannot [176](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:176) # be initialized properly (due to some errors in the EnvRunners's [177](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:177) # constructor). File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:239, in EnvRunnerGroup._setup(self, validate_env, config, num_env_runners, local_env_runner) [238](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:238) # Create a number of @ray.remote workers. --> [239](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:239) self.add_workers( [240](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:240) num_env_runners, [241](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:241) validate=config.validate_env_runners_after_construction, [242](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:242) ) [244](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:244) # If num_env_runners > 0 and we don't have an env on the local worker, [245](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:245) # get the observation- and action spaces for each policy from [246](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:246) # the first remote worker (which does have an env). File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:754, in EnvRunnerGroup.add_workers(self, num_workers, validate) [753](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:753) if not result.ok: --> [754](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:754) raise result.get() File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/utils/actor_manager.py:500, in FaultTolerantActorManager._fetch_result(self, remote_actor_ids, remote_calls, tags, timeout_seconds, return_obj_refs, mark_healthy) [499](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/utils/actor_manager.py:499) try: --> [500](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/utils/actor_manager.py:500) result = ray.get(ready) [501](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/utils/actor_manager.py:501) remote_results.add_result(actor_id, ResultOrError(result=result), tag) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/auto_init_hook.py:21, in wrap_auto_init..auto_init_wrapper(*args, **kwargs) [20](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/auto_init_hook.py:20) auto_init_ray() ---> [21](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/auto_init_hook.py:21) return fn(*args, **kwargs) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/client_mode_hook.py:103, in client_mode_hook..wrapper(*args, **kwargs) [102](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/client_mode_hook.py:102) return getattr(ray, func.__name__)(*args, **kwargs) --> [103](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/client_mode_hook.py:103) return func(*args, **kwargs) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:2613, in get(object_refs, timeout) [2612](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:2612) # TODO(ujvl): Consider how to allow user to retrieve the ready objects. -> [2613](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:2613) values, debugger_breakpoint = worker.get_objects(object_refs, timeout=timeout) [2614](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:2614) for i, value in enumerate(values): File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:863, in Worker.get_objects(self, object_refs, timeout) [862](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:862) else: --> [863](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:863) raise value [864](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/worker.py:864) return values, debugger_breakpoint ActorDiedError: The actor died because of an error raised in its creation task, ray::RolloutWorker.__init__() (pid=345329, ip=172.29.231.252, actor_id=98c6b7d296129f2c6c58738401000000, repr=) At least one of the input arguments for this task could not be computed: ray.exceptions.RaySystemError: System error: No module named 'my_module' traceback: Traceback (most recent call last): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'my_module' During handling of the above exception, another exception occurred: RaySystemError Traceback (most recent call last) Cell In[17], [line 22](vscode-notebook-cell:?execution_count=17&line=22) [8](vscode-notebook-cell:?execution_count=17&line=8) # class MyPPOTorchRLModule(PPOTorchRLModule): [9](vscode-notebook-cell:?execution_count=17&line=9) # pass [12](vscode-notebook-cell:?execution_count=17&line=12) config = ( [13](vscode-notebook-cell:?execution_count=17&line=13) PPOConfig() [14](vscode-notebook-cell:?execution_count=17&line=14) .api_stack(enable_rl_module_and_learner=True) (...) [19](vscode-notebook-cell:?execution_count=17&line=19) .training(train_batch_size=32, sgd_minibatch_size=16, num_sgd_iter=1) [20](vscode-notebook-cell:?execution_count=17&line=20) ) ---> [22](vscode-notebook-cell:?execution_count=17&line=22) config.build() File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:868, in AlgorithmConfig.build(self, env, logger_creator, use_copy) [865](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:865) if isinstance(self.algo_class, str): [866](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:866) algo_class = get_trainable_cls(self.algo_class) --> [868](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:868) return algo_class( [869](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:869) config=self if not use_copy else copy.deepcopy(self), [870](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:870) logger_creator=self.logger_creator, [871](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm_config.py:871) ) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:554, in Algorithm.__init__(self, config, env, logger_creator, **kwargs) [540](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:540) # Initialize common evaluation_metrics to nan, before they become [541](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:541) # available. We want to make sure the metrics are always present [542](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:542) # (although their values may be nan), so that Tune doesn't complain [543](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:543) # when we use these as stopping criteria. [544](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:544) self.evaluation_metrics = { [545](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:545) EVALUATION_RESULTS: { [546](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:546) ENV_RUNNER_RESULTS: { (...) [551](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:551) }, [552](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:552) } --> [554](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:554) super().__init__( [555](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:555) config=config, [556](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:556) logger_creator=logger_creator, [557](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:557) **kwargs, [558](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:558) ) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:158, in Trainable.__init__(self, config, logger_creator, storage) [154](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:154) logger.debug(f"StorageContext on the TRAINABLE:\n{storage}") [156](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:156) self._open_logfiles(stdout_file, stderr_file) --> [158](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:158) self.setup(copy.deepcopy(self.config)) [159](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:159) setup_time = time.time() - self._start_time [160](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/tune/trainable/trainable.py:160) if setup_time > SETUP_TIME_THRESHOLD: File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:640, in Algorithm.setup(self, config) [637](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:637) self.config.off_policy_estimation_methods = ope_dict [639](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:639) # Create a set of env runner actors via a EnvRunnerGroup. --> [640](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:640) self.workers = EnvRunnerGroup( [641](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:641) env_creator=self.env_creator, [642](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:642) validate_env=self.validate_env, [643](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:643) default_policy_class=self.get_default_policy_class(self.config), [644](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:644) config=self.config, [645](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:645) num_env_runners=self.config.num_env_runners, [646](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:646) local_env_runner=True, [647](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:647) logdir=self.logdir, [648](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:648) ) [650](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:650) # Ensure remote workers are initially in sync with the local worker. [651](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/algorithms/algorithm.py:651) self.workers.sync_weights(inference_only=True) File ~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:191, in EnvRunnerGroup.__init__(self, env_creator, validate_env, default_policy_class, config, num_env_runners, local_env_runner, logdir, _setup, num_workers, local_worker) [178](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:178) except RayActorError as e: [179](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:179) # In case of an actor (remote worker) init failure, the remote worker [180](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:180) # may still exist and will be accessible, however, e.g. calling [181](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:181) # its `sample.remote()` would result in strange "property not found" [182](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:182) # errors. [183](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:183) if e.actor_init_failed: [184](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:184) # Raise the original error here that the EnvRunners raised [185](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:185) # during its construction process. This is to enforce transparency (...) [189](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:189) # - e.args[0].args[2]: The original Exception (e.g. a ValueError due [190](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:190) # to a config mismatch) thrown inside the actor. --> [191](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:191) raise e.args[0].args[2] [192](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:192) # In any other case, raise the RayActorError as-is. [193](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:193) else: [194](https://vscode-remote+wsl-002bubuntu.vscode-resource.vscode-cdn.net/home/mantasu/projects/symrl/notebooks/~/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/rllib/env/env_runner_group.py:194) raise e RaySystemError: System error: No module named 'my_module' traceback: Traceback (most recent call last): File "/home/mantasu/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/serialization.py", line 412, in deserialize_objects obj = self._deserialize_object(data, metadata, object_ref) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mantasu/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/serialization.py", line 271, in _deserialize_object return self._deserialize_msgpack_data(data, metadata_fields) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mantasu/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/serialization.py", line 226, in _deserialize_msgpack_data python_objects = self._deserialize_pickle5_data(pickle5_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/mantasu/programs/anaconda/envs/sddl/lib/python3.11/site-packages/ray/_private/serialization.py", line 216, in _deserialize_pickle5_data obj = pickle.loads(in_band) ^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'my_module' ```

Issue Severity

Medium: It is a significant difficulty but I can work around it.

mantasu commented 3 weeks ago

This only happens when .env_runners(num_env_runners=0) is not set, unlike in the tutorial.

simonsays1980 commented 1 week ago

@mantasu Thanks for raising this issue. It appears as if your Python module my_module is not installed in the Python environment? As soon as you start remote workers the remote workers do not find this module - probably due to a different file search paths in the remote workers. When starting a ray cluster you either have to install the module directly into the Python enviornment or you need to use a absolute filepath.