安装 Ray#

Run Quickstart on Anyscale

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

备注

在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 开发:

  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 # 清理。

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

    • source ~/.bash_profile

    • conda activate

  3. 像平常一样安装 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 库,可以使用如上所述的 pipconda/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 版本都可用,例如 py39py310py311。如果未指定,该标签指向 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=<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

注意: 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 版本: 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 中添加以下条目:

<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 快照可以在 sonatype 仓库 中找到。要在您的应用程序中使用最新的 Ray Java 快照,请在您的 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>

备注

当你运行 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"。相关问题见 这里