No description
Find a file
2016-09-10 21:12:09 -07:00
cmake/Modules help cmake find right python interpreter on mac (#251) 2016-07-11 12:16:10 -07:00
data load imagenet 2016-06-10 17:25:55 -07:00
doc Make sure that pip installation of cloudpickle works. (#417) 2016-09-07 18:50:08 -07:00
docker Make sure that pip installation of cloudpickle works. (#417) 2016-09-07 18:50:08 -07:00
examples Add more print statements to lbfgs app to help debug. (#420) 2016-09-08 11:43:26 -07:00
include/ray Remove unused code. (#418) 2016-09-08 11:36:17 -07:00
lib/python Reintroduce passing arguments by value to remote functions. (#425) 2016-09-10 21:11:18 -07:00
protos Reintroduce passing arguments by value to remote functions. (#425) 2016-09-10 21:11:18 -07:00
scripts Automatically add relevant directories to Python paths of workers (#380) 2016-08-16 14:53:55 -07:00
src Reintroduce passing arguments by value to remote functions. (#425) 2016-09-10 21:11:18 -07:00
test Fix naming in tests. (#424) 2016-09-10 21:12:09 -07:00
thirdparty Work around Arrow bug by increasing metadata size. (#415) 2016-09-07 18:46:04 -07:00
vsprojects Update Windows support (#317) 2016-07-28 13:11:13 -07:00
.editorconfig Update Windows support (#317) 2016-07-28 13:11:13 -07:00
.gitignore ignoring build output and example datasets (#360) 2016-08-09 11:30:33 -07:00
.gitmodules Add hiredis to build (#395) 2016-09-01 20:15:00 -07:00
.travis.yml [WIP] Large changes to make the tests pass. (#376) 2016-08-15 11:02:54 -07:00
build-docker.sh Ray with Docker (#324) 2016-08-01 16:44:11 -07:00
build.sh Write computation graph to file 2016-06-27 12:20:30 -07:00
CMakeLists.txt Add hiredis to build (#395) 2016-09-01 20:15:00 -07:00
install-dependencies.sh Make sure that pip installation of cloudpickle works. (#417) 2016-09-07 18:50:08 -07:00
LICENSE switching to BSD (#90) 2016-06-06 12:07:36 -07:00
pylintrc adding pylint (#233) 2016-07-08 12:39:11 -07:00
Ray.sln Update Windows support (#317) 2016-07-28 13:11:13 -07:00
README.md [API] Implement get for multiple objects (#398) 2016-09-02 18:02:44 -07:00
setup-env.sh Export GRPC environment variable in Python instead of in setup-env.sh (#382) 2016-08-18 15:39:19 -07:00
setup.sh remove installation of dependencies from setup script (#239) 2016-07-08 20:03:21 -07:00

Ray

Build Status

Ray is an experimental distributed extension of Python. It is under development and not ready for general use.

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