ray.运行时环境.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, **kwargs)[源代码]#

基类:dict

此类用于定义作业、任务或角色的运行时环境。

详细文档请参见 运行时环境

此类可以在相关API调用中与非结构化字典互换使用。

可以指定整个作业的运行时环境,无论是直接在集群上运行脚本,使用Ray作业提交,还是使用Ray客户端:

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

可以使用 .options()@ray.remote 装饰器为每个参与者或每个任务指定不同的运行时环境:

from ray.runtime_env import RuntimeEnv
# Invoke a remote task that will run in a specified runtime environment.
f.options(runtime_env=RuntimeEnv(...)).remote()

# Instantiate an actor that will run 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()` will 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()` will use this runtime environment unless overridden by
# using `.options()` as above.
@ray.remote(runtime_env=RuntimeEnv(...))
class MyClass:
    pass

以下是一些 RuntimeEnv 初始化的示例:

# 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'"})
参数:
  • py_modules – URI 列表(可以是 GCS 或外部存储中的任何一个),每个 URI 都是一个 zip 文件,这些文件将被解压并插入到工作者的 PYTHONPATH 中。

  • working_dir – URI(在GCS或外部存储中)的zip文件,将在每个任务/角色的目录中解压缩。

  • pip – 可以是pip包的列表,包含pip requirements.txt文件路径的字符串,或者是具有三个字段的python字典:1) packages (必需, List[str]):pip包的列表,2) pip_check (可选, bool):是否在pip安装结束时启用pip检查,默认为False。3) pip_version (可选, str):pip的版本,Ray会在``pip_version``前加上包名“pip”以形成最终的需求字符串,需求说明符的语法在PEP 508中有详细定义。

  • conda – 可以是 conda YAML 配置、本地 conda 环境名称(例如,“pytorch_p36”),或 conda environment.yaml 文件的路径。Ray 依赖项将自动注入 conda 环境中,以确保与集群 Ray 的兼容性。conda 名称可能会自动修改以避免运行时环境之间的冲突。此字段不能与 ‘pip’ 字段同时指定。要在 conda 中使用 pip,请在 conda YAML 配置中指定您的 pip 依赖项:https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually

  • container – 需要一个给定的(Docker)容器镜像,Ray 工作进程将在使用此镜像的容器中运行。run_options 列表规范在此处:https://docs.docker.com/engine/reference/run/

  • env_vars – 要设置的环境变量。

  • worker_process_setup_hook – (实验性) 在工作者启动后和任务及角色调度前调用的设置钩子。可以传递模块名(字符串类型)或可调用对象(函数)。当传递模块名时,Ray 工作者应能够访问该模块名。当传递可调用对象时,该对象应是可序列化的。当通过作业提交 API 指定运行时环境时,只允许传递模块名(字符串)。

  • nsight – 字典映射 nsight 配置选项名称到其值。

  • config – 运行时环境的配置。可以是字典或 RuntimeEnvConfig。字段:(1) setup_timeout_seconds,运行时环境创建的超时时间,超时时间以秒为单位。

方法

clear

copy

fromkeys

使用可迭代对象中的键创建一个新字典,并将值设置为指定的值。

items

keys

plugin_uris

尚未实现,总是返回一个空列表

pop

如果未找到键,则返回给定的默认值;否则,引发 KeyError。

popitem

移除并返回一个 (键, 值) 对作为 2-tuple。

setdefault

如果字典中不存在键,则插入键并赋予默认值。

update

如果 E 存在且有 .keys() 方法,则执行: for k in E: D[k] = E[k] 如果 E 存在但没有 .keys() 方法,则执行: for k, v in E: D[k] = v 在任何一种情况下,之后都会执行: for k in F: D[k] = F[k]

values

属性

extensions_fields

known_fields