安装 Ray#

Ray 目前官方支持 x86_64、aarch64 (ARM) 用于 Linux,以及 Apple silicon (M1) 硬件。Ray 在 Windows 上目前处于测试阶段。

官方发布#

从轮子开始#

你可以通过选择最适合你使用场景的选项,在 Linux、Windows 和 macOS 上从 PyPI 安装 Ray 的最新官方版本。

推荐

对于机器学习应用

pip install -U "ray[data,train,tune,serve]"

# For reinforcement learning support, install RLlib instead.

# pip install -U "ray[rllib]"

对于一般的Python应用

pip install -U "ray[default]"

# If you don't want Ray Dashboard or Cluster Launcher, install Ray with minimal dependencies instead.

# pip install -U "ray"

高级

命令

已安装组件

pip install -U "ray"

核心

pip install -U "ray[default]"

核心, 仪表盘, 集群启动器

pip install -U "ray[data]"

核心, 数据

pip install -U "ray[train]"

核心, 训练

pip install -U "ray[tune]"

核心, 调优

pip install -U "ray[serve]"

核心, 仪表盘, 集群启动器, 服务

pip install -U "ray[serve-grpc]"

核心, 仪表盘, 集群启动器, 支持 gRPC 的服务

pip install -U "ray[rllib]"

核心, 调优, RLlib

pip install -U "ray[all]"

核心, 仪表盘, 集群启动器, 数据, 训练, 调优, 服务, RLlib

小技巧

你可以组合安装额外功能。例如,要安装带有仪表板、集群启动器和训练支持的 Ray,你可以运行:

pip install -U "ray[default,train]"

每日发布(夜间版)#

您可以通过以下链接安装每晚的 Ray 轮子。这些每日发布的版本通过自动化测试,但未经过完整的发布流程。要安装这些轮子,请使用以下 pip 命令和轮子:

# Clean removal of previous install

pip uninstall -y ray

# Install Ray with support for the dashboard + cluster launcher

pip install -U "ray[default] @ LINK_TO_WHEEL.whl"

# Install Ray with minimal dependencies

# pip install -U LINK_TO_WHEEL.whl

Linux

Linux (x86_64)

Linux (arm64/aarch64)

Linux Python 3.9 (x86_64)

Linux Python 3.9 (aarch64)

Linux Python 3.10 (x86_64)

Linux Python 3.10 (aarch64)

Linux Python 3.11 (x86_64)

Linux Python 3.11 (aarch64)

Linux Python 3.12 (x86_64)

Linux Python 3.12 (aarch64)

MacOS

MacOS (x86_64)

MacOS (arm64)

MacOS Python 3.9 (x86_64)

MacOS Python 3.9 (arm64)

MacOS Python 3.10 (x86_64)

MacOS Python 3.10 (arm64)

MacOS Python 3.11 (x86_64)

MacOS Python 3.11 (arm64)

MacOS Python 3.12 (x86_64)

MacOS Python 3.12 (arm64)

Windows (测试版)

Windows (测试版)

Windows Python 3.9

Windows Python 3.10

Windows Python 3.11

Windows Python 3.12

备注

在Windows上,多节点Ray集群的支持目前是实验性的且未经测试。如果您遇到问题,请在 ray-project/ray#issues 提交报告。

备注

使用统计 收集默认启用(可以 禁用),适用于通过 ray.init() 启动的本地集群和通过命令行启动的远程集群的夜间轮子。

备注

从特定提交安装#

你可以使用以下模板安装 master 分支上任何特定提交的 Ray 轮子。你需要指定提交哈希、Ray 版本、操作系统以及 Python 版本:

pip install https://s3-us-west-2.amazonaws.com/ray-wheels/master/{COMMIT_HASH}/ray-{RAY_VERSION}-{PYTHON_VERSION}-{PYTHON_VERSION}-{OS_VERSION}.whl

例如,以下是针对Python 3.9、MacOS、提交 4f2ec46c3adb6ba9f412f09a9732f436c4a5d0c9 的Ray 3.0.0.dev0轮子:

pip install https://s3-us-west-2.amazonaws.com/ray-wheels/master/4f2ec46c3adb6ba9f412f09a9732f436c4a5d0c9/ray-3.0.0.dev0-cp39-cp39-macosx_10_15_x86_64.whl

轮文件名的格式有一些小的变化;最好与 Nightlies 部分 中列出的 URL 中的格式匹配。以下是这些变化的总结:

对于MacOS,2021年8月7日之前的提交将在文件名中使用 macosx_10_13 而不是 macosx_10_15。

M1 Mac (Apple Silicon) 支持#

Ray 支持运行 Apple Silicon(如 M1 Mac)的机器。多节点集群未经测试。要开始本地 Ray 开发:

安装 miniforge.

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh

bash Miniforge3-MacOSX-arm64.sh

rm Miniforge3-MacOSX-arm64.sh # 清理。

确保你正在使用 miniforge 环境(你应该在终端中看到 (base))。

source ~/.bash_profile

conda activate

像平常一样安装 Ray。

pip install ray

Windows 支持#

Windows 支持目前处于测试阶段。Ray 支持在 Windows 上运行,但有以下注意事项(只有第一项是 Ray 特有的,其余在任何使用 Windows 的地方都适用):

多节点 Ray 集群未经测试。

在Windows上,文件名可能会带来一些麻烦,Ray可能仍然有一些地方假设使用UNIX文件名而不是Windows文件名。这在下游包中也可能存在。

众所周知,Windows 上的性能较慢,因为在 Windows 上打开文件的速度比其他操作系统慢得多。这可能会影响日志记录。

Windows 没有写时复制分叉模型,因此启动新进程可能需要更多内存。

如果您遇到任何问题,请提交到 GitHub。

在 Arch Linux 上安装 Ray#

注意:在 Arch Linux 上安装 Ray 未经过 Ray 项目开发者的测试。

Ray 可以通过 Arch User Repository (AUR) 在 Arch Linux 上使用,作为 python-ray。

你可以按照 Arch Wiki 上的说明手动安装该软件包,或者使用 AUR helper 如 `yay`_(推荐以简化安装过程),如下所示:

yay -S python-ray

要讨论与此包相关的任何问题,请参阅 python-ray 的 AUR 页面上的评论部分 这里。

从 conda-forge 安装#

Ray 也可以作为 conda 包安装在 Linux 和 Windows 上。

# also works with mamba

conda create -c conda-forge python=3.9 -n ray

conda activate ray

# Install Ray with support for the dashboard + cluster launcher

conda install -c conda-forge "ray-default"

# Install Ray with minimal dependencies

# conda install -c conda-forge ray

要安装 Ray 库,可以使用如上所述的 pip 或 conda/mamba。

conda install -c conda-forge "ray-data" # installs Ray + dependencies for Ray Data

conda install -c conda-forge "ray-train" # installs Ray + dependencies for Ray Train

conda install -c conda-forge "ray-tune" # installs Ray + dependencies for Ray Tune

conda install -c conda-forge "ray-serve" # installs Ray + dependencies for Ray Serve

conda install -c conda-forge "ray-rllib" # installs Ray + dependencies for Ray RLlib

如需查看 Conda-forge 上可用的 ray 库的完整列表,请访问 https://anaconda.org/conda-forge/ray-default

备注

Ray conda 包由社区维护,而非 Ray 团队。在使用 conda 环境时,建议在新创建的环境中使用 pip install ray 从 PyPi 安装 Ray。

从源码构建 Ray#

通过 pip 安装对于大多数 Ray 用户来说应该已经足够。

然而,如果你需要从源代码构建,请按照 这些构建说明 来构建 Ray。

Docker 源镜像#

用户可以从 rayproject/ray Docker Hub 仓库 拉取 Docker 镜像。这些镜像包含了 Ray 和所有必需的依赖项。它附带了 Anaconda 和各种版本的 Python。

图像使用格式 {Ray 版本}[-{Python 版本}][-{平台}] 进行 标记。Ray 版本 标签可以是以下之一:

Ray 版本标签

描述

最新

最新的 Ray 版本。

x.y.z

特定的 Ray 版本,例如 2.31.0

nightly

最新的 Ray 开发构建(来自 Github master 的最新提交)

可选的 Python 版本 标签指定了镜像中的 Python 版本。Ray 支持的所有 Python 版本都可用,例如 py39、py310 和 py311。如果未指定,该标签指向 Ray 版本支持的最低 Python 版本的镜像。

可选的 Platform 标签指定了图像所针对的平台:

平台标签

描述

-cpu

这些基于Ubuntu镜像。

-cuXX

这些基于指定CUDA版本的NVIDIA CUDA镜像。它们需要Nvidia Docker运行时。

-gpu

指向特定 -cuXX 标记图像的别名。

<无标签>

-cpu 标记图像的别名。

示例:对于基于 Python 3.9 且不支持 GPU 的 nightly 镜像,标签为 nightly-py39-cpu。

如果你想调整这些图像的某些方面并在本地构建它们,请参考以下脚本:

cd ray

./build-docker.sh

通过列出它们来审查图像:

docker images

输出应类似于以下内容:

REPOSITORY TAG IMAGE ID CREATED SIZE

rayproject/ray dev 7243a11ac068 2 days ago 1.11 GB

rayproject/base-deps latest 5606591eeab9 8 days ago 512 MB

ubuntu 22.04 1e4467b07108 3 weeks ago 73.9 MB

在 Docker 中启动 Ray#

首先启动部署容器。

docker run --shm-size= -t -i rayproject/ray

替换为适合您系统的限制,例如 512M 或 2G。一个好的估计是使用大约 30% 的可用内存(这是 Ray 在内部用于其对象存储的)。这里的 -t 和 -i 选项是支持容器交互使用的必需项。

如果你使用的是GPU版本的Docker镜像,记得添加 --gpus all 选项。在以下命令中,将 替换为你的目标ray版本:

docker run --shm-size= -t -i --gpus all rayproject/ray:-gpu

注意: Ray 需要 大量 的共享内存,因为每个对象存储都将所有对象保存在共享内存中,因此共享内存的量将限制对象存储的大小。

你现在应该看到一个类似以下的提示:

root@ebc78f68d100:/ray#

测试安装是否成功#

要测试安装是否成功,请尝试运行一些测试。这假设您已经克隆了git仓库。

python -m pytest -v python/ray/tests/test_mini.py

已安装的 Python 依赖项#

我们的 Docker 镜像预装了 Ray 及其库所需的 Python 依赖项。

我们发布了在我们的 ray Docker 镜像中为 Python 3.9 安装的依赖项。

ray (Python 3.9)

Ray 版本: nightly (679989c)

adal==1.2.7

aiohttp==3.9.5

aiohttp-cors==0.7.0

aiosignal==1.3.1

anaconda-anon-usage @ file:///croot/anaconda-anon-usage_1710965072196/work

annotated-types==0.6.0

anyio==3.7.1

applicationinsights==0.11.10

archspec @ file:///croot/archspec_1709217642129/work

argcomplete==1.12.3

async-timeout==4.0.3

attrs==21.4.0

azure-cli-core==2.40.0

azure-cli-telemetry==1.0.8

azure-common==1.1.28

azure-core==1.30.2

azure-identity==1.10.0

azure-mgmt-compute==23.1.0

azure-mgmt-core==1.4.0

azure-mgmt-network==19.0.0

azure-mgmt-resource==20.0.0

backoff==1.10.0

bcrypt==4.2.0

boltons @ file:///croot/boltons_1677628692245/work

boto3==1.26.76

botocore==1.29.165

Brotli @ file:///croot/brotli-split_1714483155106/work

cachetools==5.3.2

certifi==2023.11.17

cffi @ file:///croot/cffi_1714483155441/work

charset-normalizer==3.3.2

click==8.1.7

cloudpickle==2.2.0

colorful==0.5.5

conda @ file:///home/conda/feedstock_root/build_artifacts/conda_1722273159124/work

conda-content-trust @ file:///croot/conda-content-trust_1714483159009/work

conda-libmamba-solver @ file:///croot/conda-libmamba-solver_1706733287605/work/src

conda-package-handling @ file:///croot/conda-package-handling_1718138267740/work

conda_package_streaming @ file:///croot/conda-package-streaming_1718136078615/work

cryptography==38.0.1

cupy-cuda12x==13.1.0

Cython==0.29.37

distlib==0.3.7

distro @ file:///croot/distro_1714488253808/work

dm-tree==0.1.8

exceptiongroup==1.2.2

Farama-Notifications==0.0.4

fastapi==0.109.2

fastrlock==0.8.2

filelock==3.13.1

flatbuffers==24.3.25

frozendict @ file:///croot/frozendict_1713194832637/work

frozenlist==1.4.1

fsspec==2023.5.0

google-api-core==1.34.0

google-api-python-client==1.7.8

google-auth==2.23.4

google-auth-httplib2==0.2.0

google-oauth==1.0.1

googleapis-common-protos==1.61.0

grpcio==1.60.0

gymnasium==0.28.1

h11==0.12.0

httplib2==0.22.0

httptools==0.6.1

humanfriendly==10.0

idna @ file:///croot/idna_1714398848350/work

imageio==2.34.2

importlib-metadata==6.11.0

isodate==0.6.1

jax-jumpy==1.0.0

Jinja2==3.1.2

jmespath==1.0.1

jsonpatch @ file:///croot/jsonpatch_1714483231291/work

jsonpointer==2.1

jsonschema==4.17.3

knack==0.10.1

lazy_loader==0.4

libmambapy @ file:///croot/mamba-split_1714483352891/work/libmambapy

lz4==4.3.3

markdown-it-py==2.2.0

MarkupSafe==2.1.3

mdurl==0.1.2

memray==1.10.0

menuinst @ file:///croot/menuinst_1723567589013/work

msal==1.18.0b1

msal-extensions==1.0.0

msgpack==1.0.7

msrest==0.7.1

msrestazure==0.6.4

multidict==6.0.5

networkx==3.2.1

numpy==1.26.4

oauthlib==3.2.2

opencensus==0.11.3

opencensus-context==0.1.3

opentelemetry-api==1.1.0

opentelemetry-exporter-otlp==1.1.0

opentelemetry-exporter-otlp-proto-grpc==1.1.0

opentelemetry-proto==1.1.0

opentelemetry-sdk==1.1.0

opentelemetry-semantic-conventions==0.20b0

packaging==23.0

pandas==1.5.3

paramiko==2.12.0

pillow==10.3.0

pkginfo==1.11.1

platformdirs==3.11.0

pluggy @ file:///tmp/build/80754af9/pluggy_1648024445381/work

portalocker==2.10.1

prometheus-client==0.19.0

protobuf==3.20.3

psutil==5.9.8

py-spy==0.3.14

pyarrow==14.0.2

pyasn1==0.5.1

pyasn1-modules==0.3.0

pycosat @ file:///croot/pycosat_1714510623388/work

pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work

pydantic==2.5.0

pydantic_core==2.14.1

Pygments==2.18.0

PyJWT==2.9.0

PyNaCl==1.5.0

pyOpenSSL==22.1.0

pyparsing==3.1.4

pyrsistent==0.20.0

PySocks @ file:///tmp/build/80754af9/pysocks_1605305812635/work

python-dateutil==2.8.2

python-dotenv==1.0.1

pytz==2022.7.1

PyYAML==6.0.1

ray @ file:///home/ray/ray-3.0.0.dev0-cp39-cp39-manylinux2014_x86_64.whl#sha256=3ffd977059119b997d03fcf4914449c5109cef7f65cfcb84957b53ff741b004b

redis==3.5.3

requests==2.31.0

requests-oauthlib==2.0.0

rich==13.3.2

rsa==4.7.2

ruamel.yaml @ file:///croot/ruamel.yaml_1666304550667/work

ruamel.yaml.clib @ file:///croot/ruamel.yaml.clib_1666302247304/work

s3transfer==0.6.2

scikit-image==0.24.0

scipy==1.11.4

shellingham==1.5.4

six==1.16.0

smart-open==6.2.0

sniffio==1.3.1

starlette==0.36.3

tabulate==0.9.0

tensorboardX==2.6.2.2

tifffile==2024.7.21

tqdm @ file:///croot/tqdm_1716395931952/work

typer==0.12.3

typing_extensions==4.8.0

uritemplate==3.0.1

urllib3==1.26.19

uvicorn==0.22.0

uvloop==0.19.0

virtualenv==20.25.3

watchfiles==0.19.0

websockets==11.0.3

yarl==1.9.4

zipp==3.19.2

zstandard @ file:///croot/zstandard_1714677652653/work

使用 Maven 安装 Ray Java#

备注

所有 Ray Java API 都是实验性的,仅由社区支持。

在使用Maven安装Ray Java之前,你应该先通过 pip install -U ray 安装Ray Python。请注意,Ray Java和Ray Python的版本必须匹配。如果你想安装Ray Java的快照版本,还需要使用Ray Python的夜间轮。

在 中央仓库 中找到最新的 Ray Java 版本。要在您的应用程序中使用最新的 Ray Java 版本,请在您的 pom.xml 中添加以下条目:

io.ray

ray-api

${ray.version}

io.ray

ray-runtime

${ray.version}

最新的 Ray Java 快照可以在 sonatype 仓库 中找到。要在您的应用程序中使用最新的 Ray Java 快照,请在您的 pom.xml 中添加以下条目:

sonatype

https://oss.sonatype.org/content/repositories/snapshots/

false

true

io.ray

ray-api

${ray.version}

io.ray

ray-runtime

${ray.version}

备注

当你运行 pip install 来安装 Ray 时,Java jar 文件也会被安装。上述依赖项仅用于构建你的 Java 代码并在本地模式下运行你的代码。

如果你想在多节点 Ray 集群中运行你的 Java 代码,最好在打包代码时排除 Ray jar 文件,以避免版本不匹配(通过 pip install 安装的 Ray 和 maven 依赖)导致的 jar 冲突。

安装 Ray C++#

备注

所有 Ray C++ API 都是实验性的,仅由社区支持。

您可以按照以下方式安装和使用 Ray C++ API。

pip install -U ray[cpp]

# Create a Ray C++ project template to start with.

ray cpp --generate-bazel-project-template-to ray-template

备注

如果你从源码构建 Ray,请在运行你的应用程序之前,从文件 cpp/example/.bazelrc 中移除构建选项 build --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"。相关问题见 这里。