Ray currently supports Linux, MacOS and Windows. Ray on Windows is currently in beta.
You can install the latest official version of Ray as follows.
pip install -U ray # minimal install
# To install Ray with support for the dashboard + cluster launcher, run
# `pip install -U "ray[default]"`
To install Ray libraries:
pip install -U "ray[tune]" # installs Ray + dependencies for Ray Tune
pip install -U "ray[rllib]" # installs Ray + dependencies for Ray RLlib
pip install -U "ray[serve]" # installs Ray + dependencies for Ray Serve
You can install the nightly Ray wheels via the following links. These daily releases are tested via automated tests but do not go through the full release process. To install these wheels, use the following pip
command and wheels:
pip uninstall -y ray # clean removal of previous install, otherwise version number may cause pip not to upgrade
pip install -U LINK_TO_WHEEL.whl # minimal install
# To install Ray with support for the dashboard + cluster launcher, run
# `pip install -U 'ray[default] @ LINK_TO_WHEEL.whl'`
Note
Python 3.9 support is currently experimental.
Note
On Windows, support for multi-node Ray clusters is currently experimental and untested. If you run into issues please file a report at https://github.com/ray-project/ray/issues.
You can install the Ray wheels of any particular commit on master
with the following template. You need to specify the commit hash, Ray version, Operating System, and Python version:
pip install https://s3-us-west-2.amazonaws.com/ray-wheels/master/{COMMIT_HASH}/ray-{RAY_VERSION}-{PYTHON_VERSION}-{PYTHON_VERSION}m-{OS_VERSION}.whl
For example, here are the Ray 2.0.0.dev0 wheels for Python 3.7, MacOS for commit ba6cebe30fab6925e5b2d9e859ad064d53015246
:
pip install https://s3-us-west-2.amazonaws.com/ray-wheels/master/ba6cebe30fab6925e5b2d9e859ad064d53015246/ray-2.0.0.dev0-cp37-cp37m-macosx_10_15_intel.whl
There are minor variations to the format of the wheel filename; it's best to match against the format in the URLs listed in the Nightlies section <install-nightlies>
. Here's a summary of the variations:
- For Python 3.8 and 3.9, the
m
before the OS version should be deleted and the OS version for MacOS should readmacosx_10_15_x86_64
instead ofmacosx_10_15_intel
. - For MacOS, commits predating August 7, 2021 will have
macosx_10_13
in the filename instad ofmacosx_10_15
.
Before installing Ray Java with Maven, you should install Ray Python with pip install -U ray . Note that the versions of Ray Java and Ray Python must match. Note that nightly Ray python wheels are also required if you want to install Ray Java snapshot version.
The latest Ray Java release can be found in central repository. To use the latest Ray Java release in your application, add the following entries in your 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>
The latest Ray Java snapshot can be found in sonatype repository. To use the latest Ray Java snapshot in your application, add the following entries in your 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
When you run pip install
to install Ray, Java jars are installed as well. The above dependencies are only used to build your Java code and to run your code in local mode.
If you want to run your Java code in a multi-node Ray cluster, it's better to exclude Ray jars when packaging your code to avoid jar conficts if the versions (installed Ray with pip install
and maven dependencies) don't match.
Ray has experimental support for machines running Apple Silicon (such as M1 macs). To get started:
- Install miniforge.
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
rm https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh # Cleanup.
- Ensure you're using the miniforge environment (you should see (base) in your terminal).
source ~/.bash_profile
conda activate
- Ensure that the
grpcio
package is installed via forge and not pypi. Grpcio currently requires special compilation flags, which pypi will _not correctly build with. Miniforge provides a prebuilt version of grpcio for M1 macs.pip uninstall grpcio; conda install grpcio
.
- Install Ray as you normally would.
pip install ray
Note
At this time, Apple Silicon ray wheels are being published for releases only. As support stabilizes, nightly wheels will be published in the future.
Windows support is currently in beta. Please submit any issues you encounter on GitHub.
Note: Installing Ray on Arch Linux is not tested by the Project Ray developers.
Ray is available on Arch Linux via the Arch User Repository (AUR) as python-ray
.
You can manually install the package by following the instructions on the Arch Wiki or use an AUR helper like yay (recommended for ease of install) as follows:
yay -S python-ray
To discuss any issues related to this package refer to the comments section on the AUR page of python-ray
here.
If you use Anaconda (installation instructions) and want to use Ray in a defined environment, e.g, ray
, use these commands:
conda create --name ray
conda activate ray
conda install --name ray pip
pip install ray
Use pip list
to confirm that ray
is installed.
Installing from pip
should be sufficient for most Ray users.
However, should you need to build from source, follow these instructions for building <building-ray>
Ray.
Most users should pull a Docker image from the Ray Docker Hub.
- The
rayproject/ray
image has ray and all required dependencies. It comes with anaconda and Python 3.7. - The
rayproject/ray-ml
image has the above features as well as many additional libraries. - The
rayproject/base-deps
andrayproject/ray-deps
are for the linux and python dependencies respectively.
Image releases are tagged using the following format:
Tag | Description |
---|---|
latest | The most recent Ray release. |
1.x.x | A specific Ray release. |
nightly | The most recent Ray build (the most recent commit on Github master ) |
Git SHA | A specific nightly build (uses a SHA from the Github master ). |
Some tags also have variants that add or change functionality:
Variant | Description |
---|---|
-cpu | These are based off of an Ubuntu image. |
-cuXX | These are based off of an NVIDIA CUDA image with the specified CUDA version. They require the Nvidia Docker Runtime. |
-gpu | Aliases to a specific -cuXX tagged image. |
<no tag> | Aliases to -cpu tagged images. For ray-ml image, aliases to -gpu tagged image. |
If you want to tweak some aspect of these images and build them locally, refer to the following script:
cd ray
./build-docker.sh
Beyond creating the above Docker images, this script can also produce the following two images.
- The
rayproject/development
image has the ray source code included and is setup for development. - The
rayproject/examples
image adds additional libraries for running examples.
Review images by listing them:
docker images
Output should look something like the following:
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
Start out by launching the deployment container.
docker run --shm-size=<shm-size> -t -i rayproject/ray
Replace <shm-size>
with a limit appropriate for your system, for example 512M
or 2G
. A good estimate for this is to use roughly 30% of your available memory (this is what Ray uses internally for its Object Store). The -t
and -i
options here are required to support interactive use of the container.
If you use a GPU version Docker image, remember to add --gpus all
option. Replace <ray-version>
with your target ray version in the following command:
docker run --shm-size=<shm-size> -t -i --gpus all rayproject/ray:<ray-version>-gpu
Note: Ray requires a large amount of shared memory because each object store keeps all of its objects in shared memory, so the amount of shared memory will limit the size of the object store.
You should now see a prompt that looks something like:
root@ebc78f68d100:/ray#
To test if the installation was successful, try running some tests. This assumes that you've cloned the git repository.
python -m pytest -v python/ray/tests/test_mini.py
If importing Ray (python3 -c "import ray"
) in your development clone results in this error:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File ".../ray/python/ray/__init__.py", line 63, in <module>
import ray._raylet # noqa: E402
File "python/ray/_raylet.pyx", line 98, in init ray._raylet
import ray.memory_monitor as memory_monitor
File ".../ray/python/ray/memory_monitor.py", line 9, in <module>
import psutil # noqa E402
File ".../ray/python/ray/thirdparty_files/psutil/__init__.py", line 159, in <module>
from . import _psosx as _psplatform
File ".../ray/python/ray/thirdparty_files/psutil/_psosx.py", line 15, in <module>
from . import _psutil_osx as cext
ImportError: cannot import name '_psutil_osx' from partially initialized module 'psutil' (most likely due to a circular import) (.../ray/python/ray/thirdparty_files/psutil/__init__.py)
Then you should run the following commands:
rm -rf python/ray/thirdparty_files/
python3 -m pip install setproctitle