安装 Ray#

Ray 当前官方支持 x86_64, aarch64 (ARM) Linux,以及 Apple silicon (M1) 硬件。 Ray 在 Windows 中当前处于 beta 状态。

官方发布#

通过 Wheels#

您可以通过选择最适合您用例的选项,在 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"

Core

pip install -U "ray[default]"

Core, Dashboard, Cluster Launcher

pip install -U "ray[data]"

Core, Data

pip install -U "ray[train]"

Core, Train

pip install -U "ray[tune]"

Core, Tune

pip install -U "ray[serve]"

Core, Dashboard, Cluster Launcher, Serve

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

Core, Dashboard, Cluster Launcher, Serve with gRPC support

pip install -U "ray[rllib]"

Core, Tune, RLlib

pip install -U "ray[air]"

Core, Dashboard, Cluster Launcher, Data, Train, Tune, Serve

pip install -U "ray[all]"

Core, Dashboard, Cluster Launcher, Data, Train, Tune, Serve, RLlib

Tip

您可以组合安装附加功能。 例如,要安装带有 Dashboard、Cluster Launcher 和 Train 支持的 Ray,您可以运行:

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

每日版本 (Nightlies)#

您可以通过以下链接安装 nightly Ray wheels。这些每日发布是通过自动化测试进行测试的,但不会经历完整的发布过程。要安装这些轮子,请使用以下 pip 命令和 wheels:

# 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

Note

在 Windows 上,对多节点 Ray 集群的支持目前处于实验阶段,未经测试。 如果您遇到问题,请在以下地址提交报告:https://github.com/ray-project/ray/issues.

Note

使用统计 收集选项 (可 禁用) 针对每日版本包括本地集群通过 ray.init() 以及远程集群运行的 cli 默认开启。

Note

Python 3.11 支持是实验性的。

从指定提交处安装#

您可以使用以下模板在 master 上安装任何特定提交的 Ray wheels。您需要指定提交哈希、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

例如,这里针对 Ray 3.0.0.dev0 wheels 的 Python 3.9,MacOS 的 4f2ec46c3adb6ba9f412f09a9732f436c4a5d0c9 commit:

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

针对 wheel 文件名格式有少量的变量组成;最好和 每日构建 章节 列出的 URL 格式相匹配。 以下是变化的总结:

  • 针对 MacOS,早于 2021 年 8 月 7 日的文件名会由 macosx_10_13 替代 macosx_10_15

通过 Maven 安装 Ray Java#

在通过 Maven 安装 Ray Java 之前,你需要通过 pip install -U ray 安装 Ray Python。注意 Ray Java 和 Ray Python 版本必须匹配。 注意当安装 Ray Java snapshot 版本时,也需要安装 nightly Ray Python wheels。

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

<dependency>
  <groupId>io.ray</groupId>
  <artifactId>ray-api</artifactId>
  <version>${ray.version}</version>
</dependency>
<dependency>
  <groupId>io.ray</groupId>
  <artifactId>ray-runtime</artifactId>
  <version>${ray.version}</version>
</dependency>

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

<!-- only needed for snapshot version of ray -->
<repositories>
  <repository>
    <id>sonatype</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>io.ray</groupId>
    <artifactId>ray-api</artifactId>
    <version>${ray.version}</version>
  </dependency>
  <dependency>
    <groupId>io.ray</groupId>
    <artifactId>ray-runtime</artifactId>
    <version>${ray.version}</version>
  </dependency>
</dependencies>

Note

当你运行 pip install 来安装 Ray,Java jars 也会被安装。上述依赖项仅用于构建您的 Java 代码以及在本地模式下运行您的代码。

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

安装 Ray C++#

你可以通过以下方式安装和使用 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

Note

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

M1 Mac (Apple Silicon) 支持#

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

  1. 安装 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 # Cleanup.

  2. 确保你在使用 miniforge 环境 (你将在终端看到 (base) )。

    • source ~/.bash_profile

    • conda activate

  3. 像往常一样安装 Ray。

    • pip install ray

Windows 支持#

Windows 支持现在处理 Beta。Ray 支持在Windows上运行,但需要注意以下事项 (只有第一个是 Ray 指定,其余都适用于任何使用Windows的地方):

  • 多节点 Ray 集群未经测试。

  • 文件名在 Windows 上很棘手,Ray 可能仍有一些地方 假定使用 UNIX 文件名而不是 Windows 文件名。 在下游的包也是如此。

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

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

将您遇到的任何问题提交给 GitHub

在 Arch Linux 上安装 Ray#

Note: 在 Arch Linux 上安装 Ray 未经 Project Ray 开发者测试。

Ray 在 Arch Linux 上通过 Arch 用户存储库 (AUR) 作为 python-ray

你可以手动安装包,按照 Arch Wiki 上的说明, 或者使用 AUR helperyay (推荐的简便安装):

yay -S python-ray

任何相关问题的讨论请参考 python-ray 的 AUR 页面上的 `评论部分`_

通过 conda-forge 安装#

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

# 也适用于 mamba
conda create -c conda-forge python=3.9 -n ray
conda activate ray

# 安装支持仪表板 + 集群启动器
conda install -c conda-forge "ray-default"

# 安装最小依赖的 Ray
# conda install -c conda-forge ray

要安装 Ray 库包,使用如上 pipconda/mamba

conda install -c conda-forge "ray-air"    # installs Ray + dependencies for Ray AI Runtime
conda install -c conda-forge "ray-tune"   # installs Ray + dependencies for Ray Tune
conda install -c conda-forge "ray-rllib"  # installs Ray + dependencies for Ray RLlib
conda install -c conda-forge "ray-serve"  # installs Ray + dependencies for Ray Serve

要查看在 Conda-forge 上的完成可用 ray 库包, 参考 https://anaconda.org/conda-forge/ray-default

Note

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

从源码构建 Ray#

对于大多数 Ray 用户来说,从 pip 进行安装就足够了。

然而,如果需要从源码构建,参考 这篇 Ray 构建说明

Docker 源镜像#

多数用户应该从 Ray Docker Hub 拉取 Ray 镜像。

  • rayproject/ray 镜像 包含 Ray 和 所有必须的依赖。它附带了 anaconda 和各种版本的 Python。

  • rayproject/ray-ml 镜像 包含以上以及众多 ML 类库。

  • rayproject/base-depsrayproject/ray-deps 镜像分别为 Linux 和 Python 依赖。

镜像 tagged 格式为 {Ray version}[-{Python version}][-{Platform}]Ray version 标签可能为以下某种:

Ray 版本 tag

描述

latest

最新的 Ray 版本。

x.y.z

特定 Ray 版本,如:1.12.1

nightly

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

6 字符 Git SHA 前缀

特定开发构建 (使用来自 Github master 的 SHA,例如 8960af)。

可选的 Python version 标签指定了镜像的 Python 版本。Ray 支持所有可用的 Python 版本。如 py37, py38, py39 and py310。如果未指定,镜像使用 Python 3.7

可选的 Platform 标签指定用于镜像平台:

平台标签

描述

-cpu

以 Ubuntu 为基础镜像。

-cuXX

这里以 NVIDIA CUDA 进行集成特定的 CUDA 版本为基础。需要 Nvidia Docker Runtime。

-gpu

-cuXX 镜像标签的别名。

<no tag>

-cpu 镜像标签的别名。针对 ray-ml 镜像,为 -gpu 镜像标签别名。

例如:对于基于 Python 3.8 的 nightly 镜像且不支持 GPU,标签为 nightly-py38-cpu

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

cd ray
./build-docker.sh

除了创建上面的 Docker 镜像,这个脚本还可以生成以下两个镜像。

  • rayproject/development 镜像包含了为开发而设置的 ray 源码。

  • rayproject/examples 镜像添加了额外的运行示例的类库。

通过命令查看镜像:

docker images

输出应该类似于以下内容:

REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
rayproject/ray                      latest              7243a11ac068        2 days ago          1.11 GB
rayproject/ray-deps                 latest              b6b39d979d73        8 days ago          996  MB
rayproject/base-deps                latest              5606591eeab9        8 days ago          512  MB
ubuntu                              focal               1e4467b07108        3 weeks ago         73.9 MB

在 Docker 运行 Ray#

从运行本地容器开始。

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

针对你的系统设置适当的 <shm-size>,例如 512M2G。合理的预估大致为可用内存的 30% (这是因为 Ray 内部会使用它自己的对象存储)。-t-i 选项用于 容器的交互。

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

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

Note: Ray 需要 巨大 数量的共享内存,以为每个对象存储 的共享内存都保存了所有的对象,所有共享内存大小将 限制对象存储的大小。

现在,您应该会看到一个提示,内容如下:

root@ebc78f68d100:/ray#

测试安装是否成功#

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

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

安装 Python 依赖#

我们的 Docker 镜像已经预装了 Ray 和 所需的 Python 依赖。

我们发布了 rayray-ml Docker 镜像中安装的依赖项, 适用于 Python 3.9。

Ray version: 2.7.1 (9f07c12)

adal==1.2.7
aiohttp==3.8.5
aiohttp-cors==0.7.0
aiorwlock==1.3.0
aiosignal==1.3.1
anyio==3.7.1
applicationinsights==0.11.10
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.29.4
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.0.1
blessed==1.20.0
boltons @ file:///croot/boltons_1677628692245/work
boto3==1.26.76
botocore==1.29.165
brotlipy==0.7.0
cachetools==5.3.1
certifi @ file:///croot/certifi_1690232220950/work/certifi
cffi @ file:///tmp/abs_98z5h56wf8/croots/recipe/cffi_1659598650955/work
charset-normalizer==3.2.0
click==8.1.7
cloudpickle==2.2.0
colorful==0.5.5
commonmark==0.9.1
conda @ file:///croot/conda_1696257509808/work
conda-content-trust @ file:///tmp/abs_5952f1c8-355c-4855-ad2e-538535021ba5h26t22e5/croots/recipe/conda-content-trust_1658126371814/work
conda-package-handling @ file:///croot/conda-package-handling_1690999929514/work
conda_package_streaming @ file:///croot/conda-package-streaming_1690987966409/work
cryptography==38.0.1
Cython==0.29.32
Deprecated==1.2.14
distlib==0.3.7
dm-tree==0.1.8
exceptiongroup==1.1.3
Farama-Notifications==0.0.4
fastapi==0.99.1
filelock==3.12.2
flatbuffers==23.5.26
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
frozenlist==1.4.0
fsspec==2023.5.0
google-api-core==2.11.1
google-api-python-client==1.7.8
google-auth==2.22.0
google-auth-httplib2==0.1.1
google-oauth==1.0.1
googleapis-common-protos==1.60.0
gpustat==1.1.1
grpcio==1.57.0
gymnasium==0.28.1
h11==0.12.0
httplib2==0.22.0
humanfriendly==10.0
idna @ file:///croot/idna_1666125576474/work
imageio==2.31.1
importlib-metadata==4.10.0
isodate==0.6.1
jax-jumpy==1.0.0
jmespath==1.0.1
jsonpatch @ file:///tmp/build/80754af9/jsonpatch_1615747632069/work
jsonpointer==2.1
jsonschema==4.17.3
jsonschema-specifications==2023.7.1
knack==0.10.1
lazy_loader==0.3
lz4==4.3.2
markdown-it-py==3.0.0
mdurl==0.1.2
msal==1.18.0b1
msal-extensions==1.0.0
msgpack==1.0.5
msrest==0.7.1
msrestazure==0.6.4
multidict==6.0.4
networkx==2.6.3
numpy==1.26.0
nvidia-ml-py==12.535.108
oauthlib==3.2.2
opencensus==0.11.2
opencensus-context==0.1.3
opentelemetry-api==1.1.0
opentelemetry-exporter-otlp==1.1.0
opentelemetry-exporter-otlp-proto-common==1.20.0
opentelemetry-exporter-otlp-proto-grpc==1.1.0
opentelemetry-exporter-otlp-proto-http==1.20.0
opentelemetry-proto==1.1.0
opentelemetry-sdk==1.1.0
opentelemetry-semantic-conventions==0.20b0
packaging==21.3
pandas==1.5.3
paramiko==2.12.0
Pillow==9.2.0
pkginfo==1.9.6
platformdirs==3.10.0
pluggy @ file:///tmp/build/80754af9/pluggy_1648024445381/work
portalocker==2.8.2
prometheus-client==0.17.1
protobuf==3.19.6
psutil==5.9.5
py-spy==0.3.14
pyarrow==12.0.1
pyasn1==0.5.0
pyasn1-modules==0.3.0
pycosat @ file:///croot/pycosat_1696536503704/work
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
pydantic==1.10.12
Pygments==2.13.0
PyJWT==2.8.0
PyNaCl==1.5.0
pyOpenSSL==22.1.0
pyparsing==3.0.9
pyrsistent==0.19.3
PySocks @ file:///tmp/build/80754af9/pysocks_1605305812635/work
python-dateutil==2.8.2
pytz==2022.7.1
PyWavelets==1.4.1
PyYAML==6.0.1
ray @ file:///home/ray/ray-2.7.1-cp39-cp39-manylinux2014_x86_64.whl#sha256=ae14c7e21c0c62fb352ba6fda8ebf6222a5f9fa89971a152049b54b0ca665ee0
ray-cpp==2.7.1
redis==3.5.3
referencing==0.30.2
requests @ file:///croot/requests_1690400202158/work
requests-oauthlib==1.3.1
rich==12.6.0
rpds-py==0.10.4
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.19.3
scipy==1.10.1
six==1.16.0
smart-open==6.2.0
sniffio==1.3.0
starlette==0.27.0
tabulate==0.9.0
tensorboardX==2.6
tifffile==2023.7.10
tqdm @ file:///croot/tqdm_1679561862951/work
typer==0.9.0
typing_extensions==4.5.0
tzdata==2023.3
uritemplate==3.0.1
urllib3 @ file:///croot/urllib3_1686163155763/work
uvicorn==0.22.0
virtualenv==20.21.0
watchfiles==0.19.0
wcwidth==0.2.6
wrapt==1.15.0
yarl==1.9.2
zipp==3.16.2
zstandard @ file:///croot/zstandard_1677013143055/work