Ray design patterns

This document is a collection of common design patterns (and anti-patterns) for Ray programs. It is meant as a handbook for both:

  • New users trying to understand how to get started with Ray, and

  • Advanced users trying to optimize their Ray applications

This document is not meant as an introduction to Ray. For that and any further questions that arise from this document, please refer to A Gentle Introduction to Ray, the Ray GitHub, and the Ray Slack. Highly technical users may also want to refer to the Ray 1.0 Architecture whitepaper.

The patterns below are organized into “Basic Patterns,” which are commonly seen in Ray applications, and “Advanced Patterns,” which are less common but may be invaluable for certain use cases.


These documentation pages were created from a community-maintaned document.

In the document, you can suggest edits to the existing patterns and antipatterns. There is also a list of patterns and antipattern which we would like to cover in the future.

If you want to contribute, just edit the document. Once reviewed, we will make sure to reflect the changes on this documentation.