ray.runtime_env.RuntimeEnv#
- class ray.runtime_env.RuntimeEnv(*, py_modules: List[str] | None = None, working_dir: str | None = None, pip: List[str] | None = None, conda: Dict[str, str] | str | None = None, container: Dict[str, str] | None = None, env_vars: Dict[str, str] | None = None, worker_process_setup_hook: Callable | str | None = None, nsight: Dict[str, str] | str | None = None, config: Dict | RuntimeEnvConfig | None = None, _validate: bool = True, mpi: Dict | None = None, image_uri: str | None = None, uv: List[str] | None = None, **kwargs)[source]#
Bases:
dict
This class is used to define a runtime environment for a job, task, or actor.
See Runtime environments for detailed documentation.
This class can be used interchangeably with an unstructured dictionary in the relevant API calls.
Can specify a runtime environment whole job, whether running a script directly on the cluster, using Ray Job submission, or using Ray Client:
from ray.runtime_env import RuntimeEnv # Starting a single-node local Ray cluster ray.init(runtime_env=RuntimeEnv(...))
from ray.runtime_env import RuntimeEnv # Connecting to remote cluster using Ray Client ray.init("ray://123.456.7.89:10001", runtime_env=RuntimeEnv(...))
Can specify different runtime environments per-actor or per-task using
.options()
or the@ray.remote
decorator:from ray.runtime_env import RuntimeEnv # Invoke a remote task that runs in a specified runtime environment. f.options(runtime_env=RuntimeEnv(...)).remote() # Instantiate an actor that runs in a specified runtime environment. actor = SomeClass.options(runtime_env=RuntimeEnv(...)).remote() # Specify a runtime environment in the task definition. Future invocations via # `g.remote()` use this runtime environment unless overridden by using # `.options()` as above. @ray.remote(runtime_env=RuntimeEnv(...)) def g(): pass # Specify a runtime environment in the actor definition. Future instantiations # via `MyClass.remote()` use this runtime environment unless overridden by # using `.options()` as above. @ray.remote(runtime_env=RuntimeEnv(...)) class MyClass: pass
Here are some examples of RuntimeEnv initialization:
# Example for using conda RuntimeEnv(conda={ "channels": ["defaults"], "dependencies": ["codecov"]}) RuntimeEnv(conda="pytorch_p36") # Found on DLAMIs # Example for using container RuntimeEnv( container={"image": "anyscale/ray-ml:nightly-py38-cpu", "run_options": ["--cap-drop SYS_ADMIN","--log-level=debug"]}) # Example for set env_vars RuntimeEnv(env_vars={"OMP_NUM_THREADS": "32", "TF_WARNINGS": "none"}) # Example for set pip RuntimeEnv( pip={"packages":["tensorflow", "requests"], "pip_check": False, "pip_version": "==22.0.2;python_version=='3.8.11'"}) # Example for using image_uri RuntimeEnv( image_uri="rayproject/ray:2.39.0-py312-cu123")
- Parameters:
py_modules – List of URIs (either in the GCS or external storage), each of which is a zip file that Ray unpacks and inserts into the PYTHONPATH of the workers.
working_dir – URI (either in the GCS or external storage) of a zip file that Ray unpacks in the directory of each task/actor.
pip – Either a list of pip packages, a string containing the path to a pip requirements.txt file, or a Python dictionary that has three fields: 1)
packages
(required, List[str]): a list of pip packages, 2)pip_check
(optional, bool): whether enable pip check at the end of pip install, defaults to False. 3)pip_version
(optional, str): the version of pip, Ray prepends the package name “pip” in front of thepip_version
to form the final requirement string, the syntax of a requirement specifier is defined in full in PEP 508.uv – Either a list of pip packages, or a Python dictionary that has one field: 1)
packages
(required, List[str]).conda – Either the conda YAML config, the name of a local conda env (e.g., “pytorch_p36”), or the path to a conda environment.yaml file. Ray automatically injects the dependency into the conda env to ensure compatibility with the cluster Ray. Ray may automatically mangle the conda name to avoid conflicts between runtime envs. This field can’t be specified at the same time as the ‘pip’ field. To use pip with conda, specify your pip dependencies within the conda YAML config: https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually
container – Require a given (Docker) container image, The Ray worker process runs in a container with this image. This parameter only works alone, or with the
config
orenv_vars
parameters. Therun_options
list spec is here: https://docs.docker.com/engine/reference/run/env_vars – Environment variables to set.
worker_process_setup_hook – (Experimental) The setup hook that’s called after workers start and before Tasks and Actors are scheduled. A module name (string type) or callable (function) can be passed. When a module name is passed, Ray worker should be able to access the module name. When a callable is passed, callable should be serializable. When a runtime env is specified by job submission API, only a module name (string) is allowed.
nsight – Dictionary mapping nsight profile option name to it’s value.
config – config for runtime environment. Either a dict or a RuntimeEnvConfig. Field: (1) setup_timeout_seconds, the timeout of runtime environment creation, timeout is in seconds.
image_uri – URI to a container image. The Ray worker process runs in a container with this image. This parameter only works alone, or with the
config
orenv_vars
parameters.
Methods
Create a new dictionary with keys from iterable and values set to value.
Not implemented yet, always return a empty list
If the key is not found, return the default if given; otherwise, raise a KeyError.
Remove and return a (key, value) pair as a 2-tuple.
Insert key with a value of default if key is not in the dictionary.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
Attributes