No description
Find a file
Robert Nishihara 241c955707 Determine node IP address programatically. (#151)
* Determine node ip address programatically.

* Factor out methods for getting node IP addresses.

* Address comments.
2016-12-23 15:31:40 -08:00
.travis Python 3 compatibility. (#121) 2016-12-16 14:40:37 -08:00
cmake/Modules help cmake find right python interpreter on mac (#251) 2016-07-11 12:16:10 -07:00
doc Start working toward Python3 compatibility. (#117) 2016-12-11 12:25:31 -08:00
docker Migrate repositories to ray-project. (#438) 2016-09-17 00:52:05 -07:00
examples Start working toward Python3 compatibility. (#117) 2016-12-11 12:25:31 -08:00
lib/python Determine node IP address programatically. (#151) 2016-12-23 15:31:40 -08:00
numbuf Print helpful error message when libgcc error occurs. (#133) 2016-12-17 15:38:48 -08:00
scripts Determine node IP address programatically. (#151) 2016-12-23 15:31:40 -08:00
src Give run_function_on_all_workers to take a worker_info dictionary including a counter. (#149) 2016-12-22 22:05:58 -08:00
test Experimental utils for copying directories to other machines in the c… (#150) 2016-12-23 00:43:16 -08:00
vsprojects Windows compatibility (#57) 2016-11-22 17:04:24 -08:00
webui Integration of Webui with Ray (#32) 2016-11-17 22:33:29 -08:00
.clang-format Implement object table notification subscriptions and switch to using Redis modules for object table. (#134) 2016-12-18 18:19:02 -08:00
.editorconfig Update Windows support (#317) 2016-07-28 13:11:13 -07:00
.gitignore Use flatcc for serialization of IPC messages. (#140) 2016-12-20 14:46:25 -08:00
.gitmodules Windows compatibility (#57) 2016-11-22 17:04:24 -08:00
.travis.yml Use flatcc for serialization of IPC messages. (#140) 2016-12-20 14:46:25 -08:00
build-docker.sh Migrate repositories to ray-project. (#438) 2016-09-17 00:52:05 -07:00
build-webui.sh Global scheduler skeleton (#45) 2016-11-18 19:57:51 -08:00
build.sh Global scheduler - per-task transfer-aware policy (#145) 2016-12-22 03:11:46 -08:00
LICENSE Change license to Apache 2 (#20) 2016-11-01 23:19:06 -07:00
pylintrc adding pylint (#233) 2016-07-08 12:39:11 -07:00
Ray.sln Windows compatibility (#57) 2016-11-22 17:04:24 -08:00
README.md Start working toward Python3 compatibility. (#117) 2016-12-11 12:25:31 -08:00

Ray

Build Status

Ray is an experimental distributed extension of Python. 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 a scheduler, an object store, and some workers.
ray.init(start_ray_local=True, 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