Stephanie Wang a5c8f28f33 Plasma subscribe (#227)
* Use object_info as notification, not just the object_id

* Add a regression test for plasma managers connecting to store after some objects have been created

* Send notifications for existing objects to new plasma subscribers

* Continuously try the request to the plasma manager instead of setting a timeout in the test case

* Use ray.services to start Redis in plasma test cases

* fix test case
2017-01-25 22:57:15 -08:00
2017-01-18 23:23:34 -08:00
2017-01-10 23:52:38 -08:00
2017-01-25 22:57:15 -08:00
2017-01-25 22:57:15 -08:00
2016-11-22 17:04:24 -08:00
2016-07-28 13:11:13 -07:00
2016-12-31 17:21:33 -08:00
2016-11-01 23:19:06 -07:00
2016-07-08 12:39:11 -07:00
2016-11-22 17:04:24 -08:00
2017-01-10 23:52:38 -08:00

Ray

Build Status

Ray is an experimental distributed execution engine. It is under development and not ready to be used.

The goal of Ray is to make it easy to write machine learning applications that run on a cluster while providing the development and debugging experience of working on a single machine.

Before jumping into the details, here's a simple Python example for doing a Monte Carlo estimation of pi (using multiple cores or potentially multiple machines).

import ray
import numpy as np

# Start Ray with some workers.
ray.init(num_workers=10)

# Define a remote function for estimating pi.
@ray.remote
def estimate_pi(n):
  x = np.random.uniform(size=n)
  y = np.random.uniform(size=n)
  return 4 * np.mean(x ** 2 + y ** 2 < 1)

# Launch 10 tasks, each of which estimates pi.
result_ids = []
for _ in range(10):
  result_ids.append(estimate_pi.remote(100))

# Fetch the results of the tasks and print their average.
estimate = np.mean(ray.get(result_ids))
print("Pi is approximately {}.".format(estimate))

Within the for loop, each call to estimate_pi.remote(100) sends a message to the scheduler asking it to schedule the task of running estimate_pi with the argument 100. This call returns right away without waiting for the actual estimation of pi to take place. Instead of returning a float, it returns an object ID, which represents the eventual output of the computation (this is a similar to a Future).

The call to ray.get(result_id) takes an object ID and returns the actual estimate of pi (waiting until the computation has finished if necessary).

Next Steps

Example Applications

S
Description
An open source framework that provides a simple, universal API for building distributed applications. Ray is packaged with RLlib, a scalable reinforcement learning library, and Tune, a scalable hyperparameter tuning library.
Readme Multiple Licenses 111 MiB
Languages
Python 56.6%
C++ 28.8%
Java 8.5%
TypeScript 1.7%
Starlark 1.4%
Other 2.8%