安装 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"
命令 |
已安装组件 |
|---|---|
|
核心 |
|
核心, 仪表盘, 集群启动器 |
|
核心, 数据 |
|
核心, 训练 |
|
核心, 调优 |
|
核心, 仪表盘, 集群启动器, 服务 |
|
核心, 仪表盘, 集群启动器, 支持 gRPC 的服务 |
|
核心, 调优, RLlib |
|
核心, 仪表盘, 集群启动器, 数据, 训练, 调优, 服务, 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 (x86_64) |
Linux (arm64/aarch64) |
|---|---|
MacOS (x86_64) |
MacOS (arm64) |
|---|---|
备注
在Windows上,多节点Ray集群的支持目前是实验性的且未经测试。如果您遇到问题,请在 ray-project/ray#issues 提交报告。
备注
从特定提交安装#
你可以使用以下模板安装 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.shbash Miniforge3-MacOSX-arm64.shrm Miniforge3-MacOSX-arm64.sh # 清理。
确保你正在使用 miniforge 环境(你应该在终端中看到 (base))。
source ~/.bash_profileconda 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 |
可选的 Python 版本 标签指定了镜像中的 Python 版本。Ray 支持的所有 Python 版本都可用,例如 py39、py310 和 py311。如果未指定,该标签指向 Ray 版本支持的最低 Python 版本的镜像。
可选的 Platform 标签指定了图像所针对的平台:
平台标签 |
描述 |
|---|---|
-cpu |
这些基于Ubuntu镜像。 |
-cuXX |
这些基于指定CUDA版本的NVIDIA CUDA镜像。它们需要Nvidia Docker运行时。 |
-gpu |
指向特定 |
<无标签> |
|
示例:对于基于 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> 替换为适合您系统的限制,例如 512M 或 2G。一个好的估计是使用大约 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"。相关问题见 这里。