Skip to main content

A subpackage of Ray which provides the Ray C++ API.

Project description

https://github.com/ray-project/ray/raw/master/doc/source/images/ray_header_logo.png https://readthedocs.org/projects/ray/badge/?version=master https://img.shields.io/badge/Ray-Join%20Slack-blue https://img.shields.io/badge/Discuss-Ask%20Questions-blue https://img.shields.io/twitter/follow/raydistributed.svg?style=social&logo=twitter

Ray provides a simple, universal API for building distributed applications.

Ray is packaged with the following libraries for accelerating machine learning workloads:

  • Tune: Scalable Hyperparameter Tuning

  • RLlib: Scalable Reinforcement Learning

  • RaySGD: Distributed Training Wrappers

  • Datasets: Flexible Distributed Data Loading (alpha)

As well as libraries for taking ML and distributed apps to production:

  • Serve: Scalable and Programmable Serving

  • Workflows: Fast, Durable Application Flows (alpha)

There are also many community integrations with Ray, including Dask, MARS, Modin, Horovod, Hugging Face, Scikit-learn, and others. Check out the full list of Ray distributed libraries here.

Install Ray with: pip install ray. For nightly wheels, see the Installation page.

Quick Start

Execute Python functions in parallel.

import ray
ray.init()

@ray.remote
def f(x):
    return x * x

futures = [f.remote(i) for i in range(4)]
print(ray.get(futures))

To use Ray’s actor model:

import ray
ray.init()

@ray.remote
class Counter(object):
    def __init__(self):
        self.n = 0

    def increment(self):
        self.n += 1

    def read(self):
        return self.n

counters = [Counter.remote() for i in range(4)]
[c.increment.remote() for c in counters]
futures = [c.read.remote() for c in counters]
print(ray.get(futures))

Ray programs can run on a single machine, and can also seamlessly scale to large clusters. To execute the above Ray script in the cloud, just download this configuration file, and run:

ray submit [CLUSTER.YAML] example.py --start

Read more about launching clusters.

Tune Quick Start

https://github.com/ray-project/ray/raw/master/doc/source/images/tune-wide.png

Tune is a library for hyperparameter tuning at any scale.

To run this example, you will need to install the following:

$ pip install "ray[tune]"

This example runs a parallel grid search to optimize an example objective function.

from ray import tune


def objective(step, alpha, beta):
    return (0.1 + alpha * step / 100)**(-1) + beta * 0.1


def training_function(config):
    # Hyperparameters
    alpha, beta = config["alpha"], config["beta"]
    for step in range(10):
        # Iterative training function - can be any arbitrary training procedure.
        intermediate_score = objective(step, alpha, beta)
        # Feed the score back back to Tune.
        tune.report(mean_loss=intermediate_score)


analysis = tune.run(
    training_function,
    config={
        "alpha": tune.grid_search([0.001, 0.01, 0.1]),
        "beta": tune.choice([1, 2, 3])
    })

print("Best config: ", analysis.get_best_config(metric="mean_loss", mode="min"))

# Get a dataframe for analyzing trial results.
df = analysis.results_df

If TensorBoard is installed, automatically visualize all trial results:

tensorboard --logdir ~/ray_results

RLlib Quick Start

https://github.com/ray-project/ray/raw/master/doc/source/images/rllib-wide.jpg

RLlib is an open-source library for reinforcement learning built on top of Ray that offers both high scalability and a unified API for a variety of applications.

pip install tensorflow  # or tensorflow-gpu
pip install "ray[rllib]"
import gym
from gym.spaces import Discrete, Box
from ray import tune

class SimpleCorridor(gym.Env):
    def __init__(self, config):
        self.end_pos = config["corridor_length"]
        self.cur_pos = 0
        self.action_space = Discrete(2)
        self.observation_space = Box(0.0, self.end_pos, shape=(1, ))

    def reset(self):
        self.cur_pos = 0
        return [self.cur_pos]

    def step(self, action):
        if action == 0 and self.cur_pos > 0:
            self.cur_pos -= 1
        elif action == 1:
            self.cur_pos += 1
        done = self.cur_pos >= self.end_pos
        return [self.cur_pos], 1 if done else 0, done, {}

tune.run(
    "PPO",
    config={
        "env": SimpleCorridor,
        "num_workers": 4,
        "env_config": {"corridor_length": 5}})

Ray Serve Quick Start

https://raw.githubusercontent.com/ray-project/ray/master/doc/source/serve/logo.svg

Ray Serve is a scalable model-serving library built on Ray. It is:

  • Framework Agnostic: Use the same toolkit to serve everything from deep learning models built with frameworks like PyTorch or Tensorflow & Keras to Scikit-Learn models or arbitrary business logic.

  • Python First: Configure your model serving declaratively in pure Python, without needing YAMLs or JSON configs.

  • Performance Oriented: Turn on batching, pipelining, and GPU acceleration to increase the throughput of your model.

  • Composition Native: Allow you to create “model pipelines” by composing multiple models together to drive a single prediction.

  • Horizontally Scalable: Serve can linearly scale as you add more machines. Enable your ML-powered service to handle growing traffic.

To run this example, you will need to install the following:

$ pip install scikit-learn
$ pip install "ray[serve]"

This example runs serves a scikit-learn gradient boosting classifier.

import pickle
import requests

from sklearn.datasets import load_iris
from sklearn.ensemble import GradientBoostingClassifier

from ray import serve

serve.start()

# Train model.
iris_dataset = load_iris()
model = GradientBoostingClassifier()
model.fit(iris_dataset["data"], iris_dataset["target"])

@serve.deployment(route_prefix="/iris")
class BoostingModel:
    def __init__(self, model):
        self.model = model
        self.label_list = iris_dataset["target_names"].tolist()

    async def __call__(self, request):
        payload = await request.json()["vector"]
        print(f"Received flask request with data {payload}")

        prediction = self.model.predict([payload])[0]
        human_name = self.label_list[prediction]
        return {"result": human_name}


# Deploy model.
BoostingModel.deploy(model)

# Query it!
sample_request_input = {"vector": [1.2, 1.0, 1.1, 0.9]}
response = requests.get("http://localhost:8000/iris", json=sample_request_input)
print(response.text)
# Result:
# {
#  "result": "versicolor"
# }

More Information

Older documents:

Getting Involved

  • Forum: For discussions about development, questions about usage, and feature requests.

  • GitHub Issues: For reporting bugs.

  • Twitter: Follow updates on Twitter.

  • Slack: Join our Slack channel.

  • Meetup Group: Join our meetup group.

  • StackOverflow: For questions about how to use Ray.

Project details


Release history Release notifications | RSS feed

This version

1.7.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ray_cpp-1.7.0-cp39-cp39-win_amd64.whl (16.7 MB view details)

Uploaded CPython 3.9Windows x86-64

ray_cpp-1.7.0-cp39-cp39-manylinux2014_x86_64.whl (28.5 MB view details)

Uploaded CPython 3.9

ray_cpp-1.7.0-cp39-cp39-macosx_10_15_x86_64.whl (26.7 MB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

ray_cpp-1.7.0-cp38-cp38-win_amd64.whl (16.7 MB view details)

Uploaded CPython 3.8Windows x86-64

ray_cpp-1.7.0-cp38-cp38-manylinux2014_x86_64.whl (28.5 MB view details)

Uploaded CPython 3.8

ray_cpp-1.7.0-cp38-cp38-macosx_10_15_x86_64.whl (26.7 MB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

ray_cpp-1.7.0-cp37-cp37m-win_amd64.whl (16.7 MB view details)

Uploaded CPython 3.7mWindows x86-64

ray_cpp-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl (28.5 MB view details)

Uploaded CPython 3.7m

ray_cpp-1.7.0-cp37-cp37m-macosx_10_15_intel.whl (26.7 MB view details)

Uploaded CPython 3.7mmacOS 10.15+ Intel (x86-64, i386)

ray_cpp-1.7.0-cp36-cp36m-win_amd64.whl (16.7 MB view details)

Uploaded CPython 3.6mWindows x86-64

ray_cpp-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl (28.5 MB view details)

Uploaded CPython 3.6m

ray_cpp-1.7.0-cp36-cp36m-macosx_10_15_intel.whl (26.7 MB view details)

Uploaded CPython 3.6mmacOS 10.15+ Intel (x86-64, i386)

File details

Details for the file ray_cpp-1.7.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 16.7 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c7227848355e65d0c94b7e24bdb00f02378c2462a3876548a10893e757e1403c
MD5 906566185244b833d42e0906265ceab8
BLAKE2b-256 1796f2933660067370b20249cf143312a8a06ffb9dc2a183276914405af53ca2

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.5 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8677b88801fc5d4a133d32df9b521957ba11739008999916f9dd2a54e217d57
MD5 96c18b647baed5d4da795a72a9cbd669
BLAKE2b-256 70ac9518ce61bfb2aa9b18e3d1c8497dc987a04eca6390819718769c76833889

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 26.7 MB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f418027100d17a8d12cb5a4cccffa6ed2045f56cb5ea8346430231dec4fe77c8
MD5 de9eb76e28e7af9b556dd24d3cca4336
BLAKE2b-256 07394eecc7d319aac32b1323f4927662e4b6f90f89c3ca673bb062ff7b7fd4d1

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 16.7 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 337c6d12a308eda5fce1eae3357a512594f55ae637a34953f2b51f5c0e764fc0
MD5 77eeb3ce69c8409057bcaeba47614bb5
BLAKE2b-256 1bc1f5e292591f916b4ff08286dbe14f8799f6b801c4a8988f894fbbe96fae9e

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.5 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 031ce4040c56ec74de6780323ddd53fe001e99ae3a6aaa359aa8c94f23d964ec
MD5 32dd043ecc11dfaabfc4e7c3069d371d
BLAKE2b-256 e21367928bb44a2e1181c4eaa68d0825f293d3bc3df6674c0afaac786d610c92

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 26.7 MB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 598f23a62681d9a32c233fbf004ae2ca43d2abc065a0806ee31c7b80709aacba
MD5 4f7ed7740b8b4bbe33ac6be8a8a8bd26
BLAKE2b-256 13fdd40baa3565c46f935c5f616325dfe20866e38642ed81fa53a36bf00aaaea

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 16.7 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f05876fab4b2a507fb9d67762ca98c327b087d2cd204b94fe87e5a380461888e
MD5 a33105d2271e38e122d64a26e180d6d1
BLAKE2b-256 cb12f4684ebd356369a274853e68d11049b345dd57f3b5fb49f1bb907e30fa51

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.5 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7efe49bf0b04c80410c1af5ede1058a178f3c849ea1e6313c2466e07da05925
MD5 964786b287a18e1c5038e1c83e476808
BLAKE2b-256 a2ddf09c1e22f0dfa92c9b7acee85f08c2c30385545e3b4e8b3a87a2dde0d544

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp37-cp37m-macosx_10_15_intel.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp37-cp37m-macosx_10_15_intel.whl
  • Upload date:
  • Size: 26.7 MB
  • Tags: CPython 3.7m, macOS 10.15+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp37-cp37m-macosx_10_15_intel.whl
Algorithm Hash digest
SHA256 69a8f7135c0a006a02fd4612b15c45f9ae48b82bdc51cc26c44aa4e6a7079e06
MD5 c3c38e2bd83cc29687733caab14ca602
BLAKE2b-256 3e03169d050354c9b6e245abeb776db99cd11f536a1811747299ceccd70a3cc8

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 16.7 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 c5d87919405f13ec5d4da08ea972f79a44ee6a10b2aedf4fb7db41f73c55f8ec
MD5 a3103e388a21b64f551a636aa1fa762c
BLAKE2b-256 e071aa0dee24062dd94638016a2021d9f2fc8a93b57f318c43a14a8bd1abfa31

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 28.5 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec0c5c41f8eadbcc640ec7a3853ef9532223bdfb5bbacb3eaa2cd28b9b6bcd88
MD5 d53767e2a42118a29e76e08f2b5e182c
BLAKE2b-256 4f49a57fe125376e9d84188a534b2cd07a0a10c0045ea696352ea8fd094f5245

See more details on using hashes here.

File details

Details for the file ray_cpp-1.7.0-cp36-cp36m-macosx_10_15_intel.whl.

File metadata

  • Download URL: ray_cpp-1.7.0-cp36-cp36m-macosx_10_15_intel.whl
  • Upload date:
  • Size: 26.7 MB
  • Tags: CPython 3.6m, macOS 10.15+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.11

File hashes

Hashes for ray_cpp-1.7.0-cp36-cp36m-macosx_10_15_intel.whl
Algorithm Hash digest
SHA256 8bd16dd856673cfcfdfad89500690fc14e9b9aa3edbb5103fff1b79c06528e3f
MD5 b34e128629251e3629897fe1e4a58159
BLAKE2b-256 12cc6378f3b25654211220fac4b28f11f5a8467b476182759bb8cf35ea6dfaa9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page