Ray is an open-source framework for scaling Python and AI workloads, pairing a general-purpose distributed execution core with libraries for data, training, tuning, serving, and reinforcement learning.
A head node running the global control store and autoscaler coordinates workers; deploy with KubeRay on Kubernetes, the VM cluster launcher, or managed Anyscale. Tasks and actors schedule ordinary Python directly; Ray Data streams through the object store and spills to disk, so datasets need not fit in cluster memory.
How Ray answers the questions Batch Compute turns on.
| How it works | |
| APIs | Ordinary Python functions and classes, tasks and actors |
| Data model | Arbitrary Python objects; Ray Data adds tabular and multimodal, images, video, audio |
| Execution model | Task and actor scheduling on a distributed runtime |
| Larger than memory | The object store spills to disk by default and Ray Data executes as a stream, so a dataset need not fit in cluster memory |
| Running it | |
| Runtime | Native Python |
| GPU support | The strongest here: num_gpus with fractional shares, accelerator_type pinning, and TPUs, AMD, Intel and Gaudi beyond NVIDIA |
| What you run | A Ray cluster: a head node running the GCS and autoscaler, plus workers; KubeRay on Kubernetes or the VM cluster launcher |
| Scaling | The autoscaler adds nodes from pending task and actor demand rather than utilisation, and removes idle ones |
| Failure recovery | Tasks retry three times on system failures but not on application exceptions; actors do not restart unless max_restarts is set; lost objects rebuild from lineage while their owner lives |
| Connections | |
| Table formats | Iceberg, Delta Lake, Hudi and Lance, with Unity Catalog and Delta Sharing; Parquet, ORC, Avro, CSV and JSON underneath |
vs Ray: Self-hosted · Managed · Java
vs Ray: Self-hosted · Managed · Batch · Streaming · Scala, Python, Java
vs Ray: Self-hosted · Free · Operational complexity: Medium · Rust