From d394a3fdf6453e7cf1de1a069bb84b116a7e4b64 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Sat, 20 May 2017 18:33:36 -0700 Subject: [PATCH] Website for the v0.1 release (#576) * commit jekyll template * Port blog post to markdown. * Small changes. * Improvements to layout and post. * More improvements. * Add computation graph figures to the blog post. * Small changes. * Update gitignore. --- .gitignore | 5 + site/Gemfile | 28 +++ site/README.md | 24 ++ site/_config.yml | 31 +++ .../_posts/2017-05-17-announcing-ray.markdown | 231 ++++++++++++++++++ site/assets/announcing_ray/graph1.png | Bin 0 -> 6591 bytes site/assets/announcing_ray/graph2.png | Bin 0 -> 42005 bytes site/assets/announcing_ray/graph3.png | Bin 0 -> 17976 bytes site/index.html | 13 + 9 files changed, 332 insertions(+) create mode 100644 site/Gemfile create mode 100644 site/README.md create mode 100644 site/_config.yml create mode 100644 site/_posts/2017-05-17-announcing-ray.markdown create mode 100644 site/assets/announcing_ray/graph1.png create mode 100644 site/assets/announcing_ray/graph2.png create mode 100644 site/assets/announcing_ray/graph3.png create mode 100644 site/index.html diff --git a/.gitignore b/.gitignore index 136e3d3e0577..8166a90a4e3f 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,8 @@ cmake-build-debug/ # Gradle: .idea/**/gradle.xml .idea/**/libraries + +# Website +/site/Gemfile.lock +/site/.sass-cache +/site/_site diff --git a/site/Gemfile b/site/Gemfile new file mode 100644 index 000000000000..8af267397b31 --- /dev/null +++ b/site/Gemfile @@ -0,0 +1,28 @@ +source "https://rubygems.org" +ruby RUBY_VERSION + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "jekyll", "3.4.3" + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + diff --git a/site/README.md b/site/README.md new file mode 100644 index 000000000000..ff55def0f971 --- /dev/null +++ b/site/README.md @@ -0,0 +1,24 @@ +# Ray Website + +## Development instructions + +With Ruby >= 2.1 installed, run: + +``` +gem install jekyll bundler +bundle install +``` + +To view the site, run: + +``` +bundle exec jekyll serve +``` + +## Deployment + +To deploy the site, run (inside the main ray directory): + +``` +git subtree push --prefix site origin gh-pages +``` diff --git a/site/_config.yml b/site/_config.yml new file mode 100644 index 000000000000..5f7f5d4a033e --- /dev/null +++ b/site/_config.yml @@ -0,0 +1,31 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: "Ray: A Distributed Execution Framework for AI Applications" +email: "" +description: > # this means to ignore newlines until "baseurl:" + Ray is a flexible, high-performance distributed execution framework for AI applications. +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +github_username: ray-project + +# Build settings +markdown: kramdown +theme: minima +gems: + - jekyll-feed +exclude: + - Gemfile + - Gemfile.lock diff --git a/site/_posts/2017-05-17-announcing-ray.markdown b/site/_posts/2017-05-17-announcing-ray.markdown new file mode 100644 index 000000000000..5ba97078b8ee --- /dev/null +++ b/site/_posts/2017-05-17-announcing-ray.markdown @@ -0,0 +1,231 @@ +--- +layout: post +title: "Ray: A Distributed Execution Framework for AI Applications" +excerpt: "This post announces Ray, a framework for efficiently running Python code on clusters and large mult-core machines." +date: 2017-05-20 14:00:00 +--- + +This post announces Ray, a framework for efficiently running Python code on +clusters and large multi-core machines. The project is open source. +You can check out [the code](https://github.com/ray-project/ray) and +[the documentation](http://ray.readthedocs.io/en/latest/?badge=latest). + +Many AI algorithms are computationally intensive and exhibit complex +communication patterns. As a result, many researchers spend most of their +time building custom systems to efficiently distribute their code across +clusters of machines. + +However, the resulting systems are often specific to a single algorithm or class +of algorithms. We built Ray to help eliminate a bunch of the redundant +engineering effort that is currently repeated over and over for each new +algorithm. Our hope is that a few basic primitives can be reused to implement +and to efficiently execute a broad range of algorithms and applications. + +
+ +
A simulated robot learning to run using Ray.
+
+
+ +# Simple Parallelization of Existing Code + +Ray enables Python functions to be executed remotely with minimal modifications. + +With **regular Python**, when you call a function, the call blocks until the +function has been executed. This example would take 8 seconds to execute. + +{% highlight python %} +def f(): + time.sleep(1) + +# Calls to f executed serially. +results = [] +for _ in range(8): + result = f() + results.append(result) +{% endhighlight %} + +**With Ray**, when you call a **remote function**, the call immediately returns +an object ID. A task is then created, scheduled, and executed somewhere in the +cluster. This example would take 1 second to execute. + +{% highlight python %} +@ray.remote +def f(): + time.sleep(1) + +# Tasks executed in parallel. +results = [] +for _ in range(8): + result = f.remote() + results.append(result) + +results = ray.get(results) +{% endhighlight %} + +Note that the only changes are that we add the ``@ray.remote`` decorator to the +function definition, we call the function with ``f.remote()``, and we call +``ray.get`` on the list of object IDs in order to block until the corresponding +tasks have finished executing. + +
+ +
+
A graph depicting the tasks and objects in this example. The circles +represent tasks, and the boxes represent objects. There are no arrows between +the 8 separate tasks indicating that all of the tasks can be executed in +parallel.
+
+ +# Flexible Encoding of Task Dependencies + +In contrast with bulk-synchronous parallel frameworks like MapReduce or Apache +Spark, Ray is designed to support AI applications which require fine-grained +task dependencies. In contrast with the computation of aggregate statistics of +an entire dataset, a training procedure may operate on a small subset of data or +on the outputs of a handful of tasks. + +Dependencies can be encoded by passing object IDs (which are the outputs of +tasks) into other tasks. + +{% highlight python %} +import numpy as np + +@ray.remote +def aggregate_data(x, y): + return x + y + +data = [np.random.normal(size=1000) for i in range(4)] + +while len(data) > 1: + intermediate_result = aggregate_data.remote(data[0], data[1]) + data = data[2:] + [intermediate_result] + +result = ray.get(data[0]) +{% endhighlight %} + +By passing the outputs of some calls to `aggregate_data` into subsequent calls +to `aggregate_data`, we encode dependencies between these tasks which can be +used by the system to make scheduling decisions and to coordinate the transfer +of objects. Note that when object IDs are passed into remote function calls, the +actual values will be unpacked before the function is executed, so when the +`aggregate_data` function is executed, `x` and `y` will be numpy arrays. + +
+ +
+
A graph depicting the tasks and objects in this example. The circles +represent tasks, and the boxes represent objects. Arrows point from tasks to the +objects they produce and from objects to the tasks that depend on +them.
+
+ +# Shared Mutable State with Actors + +Ray uses actors to share mutable state between tasks. Here is an example in +which multiple tasks share the state of an Atari simulator. Each task runs the +simulator for several steps picking up where the previous task left off. + +{% highlight python %} +import gym + +@ray.remote +class Simulator(object): + def __init__(self): + self.env = gym.make("Pong-v0") + self.env.reset() + + def step(self, action): + return self.env.step(action) + +# Create a simulator, this will start a new worker that will run all +# methods for this actor. +simulator = Simulator.remote() + +observations = [] +for _ in range(4): + # Take action 0 in the simulator. + observations.append(simulator.step.remote(0)) +{% endhighlight %} + +Each call to `simulator.step.remote` generates a task that is scheduled on the +actor. These tasks mutate the state of the simulator object, and they are +executed one at a time. + +Like remote functions, actor methods return object IDs that can be passed into +other tasks and whose values can be retrieved with `ray.get`. + +
+ +
+
A graph depicting the tasks and objects in this example. The circles +represent tasks, and the boxes represent objects. The first task is the actor's +constructor. The thick arrows are used to show that the methods invoked on this +actor share the underlying state of the actor.
+
+ +# Efficient Shared Memory and Serialization with Apache Arrow + +Serializing and deserializing data is often a bottleneck in distributed +computing. Ray lets worker processes on the same machine access the same objects +through shared memory. To facilitate this, Ray uses an in-memory object store on +each machine to serve objects. + +To illustrate the problem, suppose we create some neural network weights and +wish to ship them from one Python process to another. + +{% highlight python %} +import numpy as np + +weights = {"Variable{}".format(i): np.random.normal(size=5000000) + for i in range(10)} # 2.68s +{% endhighlight %} + +To ship the neural network weights around, we need to first serialize them into +a contiguous blob of bytes. This can be done with standard serialization +libraries like pickle. + +{% highlight python %} +import pickle + +# Serialize the weights with pickle. Then deserialize them. +pickled_weights = pickle.dumps(weights) # 0.986s +new_weights = pickle.loads(pickled_weights) # 0.241s +{% endhighlight %} + +The time required for deserialization is particularly important because one of +the most common patterns in machine learning is to aggregate a large number of +values (for example, neural net weights, rollouts, or other values) in a single +process, so the deserialization step could happen hundreds of times in a row. + +To minimize the time required to deserialize objects in shared memory, we use +the [Apache Arrow](https://arrow.apache.org/) data layout. This allows us to +compute offsets into the serialized blob without scanning through the entire +blob. **In practice, this can translate into deserialization that is several +orders of magnitude faster**. + +{% highlight python %} +# Serialize the weights and copy them into the object store. Then deserialize +# them. +weights_id = ray.put(weights) # 0.525s +new_weights = ray.get(weights_id) # 0.000622s +{% endhighlight %} + +The call to `ray.put` serializes the weights using Arrow and copies the result +into the object store's memory. The call to `ray.get` then deserializes the +serialized object and constructs a new dictionary of numpy arrays. However, the +underlying arrays backing the numpy arrays live in shared memory and are not +copied into the Python process's heap. + +Note that if the call to `ray.get` happens from a different machine, the +relevant serialized object will be copied from a machine where it lives to the +machine where it is needed. + +In this example, we call `ray.put` explicitly. However, normally this call would +happen under the hood when a Python object is passed into a remote function or +returned from a remote function. + +# Feedback is Appreciated + +This project is in its early stages. If you try it out, we'd love to hear your +thoughts and suggestions. diff --git a/site/assets/announcing_ray/graph1.png b/site/assets/announcing_ray/graph1.png new file mode 100644 index 0000000000000000000000000000000000000000..1817286e4e718d134e86df88fc630c95056039c0 GIT binary patch literal 6591 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 literal 0 HcmV?d00001 diff --git a/site/assets/announcing_ray/graph2.png b/site/assets/announcing_ray/graph2.png new file mode 100644 index 0000000000000000000000000000000000000000..3aad1d0e23d6f16a0d19c4c99f299571d0c30997 GIT binary patch literal 42005 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 QkPiGA95+Q4>6{DyA0sDBhyVZp literal 0 HcmV?d00001 diff --git a/site/assets/announcing_ray/graph3.png b/site/assets/announcing_ray/graph3.png new file mode 100644 index 0000000000000000000000000000000000000000..6f128b2702d0a6d9b62dbac35548ac97a9c5f9c5 GIT binary patch literal 17976 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 f^nKlN{S9hu%v$3`Z!qKUZ@kDzD2SJf8u literal 0 HcmV?d00001 diff --git a/site/index.html b/site/index.html new file mode 100644 index 000000000000..bbb7a032920f --- /dev/null +++ b/site/index.html @@ -0,0 +1,13 @@ +--- +layout: default +--- + +
+ +{% for post in site.posts %} + {{ post.date | date: "%b %-d, %Y" }} + {{ post.title }} + {{ post.excerpt }} +{% endfor %} + +