# Ray 2.50.0 — Ray-2.50.0 - Product: Ray (https://whatsnew.fyi/product/ray) - Vendor: Anyscale - Date: 2025-10-10 - Version: 2.50.0 - Original notes: https://github.com/ray-project/ray/releases/tag/ray-2.50.0 - Permalink: https://whatsnew.fyi/product/ray/releases/2.50.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — Default shuffle strategy changed from sort-based to hash-based for improved shuffle performance and lower peak memory usage for aggregations - **added** — New expression API enables predicate-based filtering, UDF transformations with with_column, and column aliasing for more powerful data transformations - **added** — Added support for projection pushdown into Parquet reads - **added** — New download expression enables efficient loading of data from columns containing URIs with improved performance and error handling - **added** — New explain() API provides insights into dataset execution plans - **added** — Added streaming_train_test_split to avoid materialization for train/test splits - **added** — Enabled multi-node tensor and pipeline parallelism for Ray Data LLM processing - **added** — Added chat_template_kwargs parameter for customizing chat templates in Ray Data LLM - **added** — Added support for OpenAI's nested image URL format in Ray Data LLM multimodal pipelines - **added** — vLLM engines can now be shared across sequential processors for better resource utilization - **added** — Enhanced Dataset.stats() output with input/output row counts per operator - **added** — Added new metrics for task duration, inputs per task, and output blocks - **added** — Added time to first batch metric for better iteration performance monitoring - **added** — Added type-specific aggregators for numerical, categorical, and vector columns - **added** — Added fine-grained concurrency controls with max_task_concurrency and resource allocation options - **added** — Alpha release of Ray Direct Transport enabling GPU data to remain in GPU memory with efficient data transfer via collective communication and RDMA - **added** — Added StepFailedRecreateEnv exception for users with unsatisfiable environments in RLLib - **added** — Async Inference alpha release for Ray Serve with APIs supporting long-running asynchronous inference tasks and message broker support - **added** — Added support for replica ranks in Ray Serve for large-model inference use-cases - **added** — Added FastAPI factory pattern support in Ray Serve for using non-serializable FastAPI plugins - **added** — zip() operator now supports combining multiple datasets, not just pairs - **changed** — Concurrency parameter now accepts tuples for more flexible configuration - **changed** — Resource requirements (num_cpus/gpus, memory) are now top-level parameters in most APIs for easier configuration - **changed** — Write operations now use iterators instead of accumulating blocks in memory - **changed** — Improved groupby performance with sort-shuffle pull-based approach - **changed** — Improved join operations with new abstractions - **changed** — Improved compatibility between PyArrow native types, extension types, and pandas Arrow dtypes - **changed** — Joins now supported with list/tensor non-key columns - **changed** — Enhanced support for variable-shaped tensor arrays with different dimensions - **changed** — Added serialization/deserialization for PyArrow Extension Arrays - **changed** — Reduced memory usage for OneHotEncoder - **changed** — Reduced memory usage for schema unification - **changed** — Eliminated unnecessary block copying and double execution of arrow conversions - **changed** — Improved Parquet encoding ratio estimation - **changed** — Enabled per-block limiting for Limit operator - **changed** — Optimized schema handling with deduplication and removed unnecessary unification - **fixed** — Fixed streaming executor to properly drain output queues - **fixed** — Fixed retry logic for hash shuffle operations - **fixed** — Fixed split_blocks to prevent producing empty blocks #### Release Highlights **Ray Data:** This release offers many updates to Ray Data, including: - The default shuffle strategy is now changed from sort-based to hash-based. This will result in much lower peak memory usage and improved shuffle performance for aggregations. - We’ve added a new expression API enables predicate-based filtering, UDF transformations with `with_column`, and column aliasing for more powerful data transformations - Ray Data LLM has a number of new enhancements for multimodal data pipelines, including multi-node tensor and pipeline parallelism support per replica and ability to share vLLM engines across processors. **Ray Core:** Alpha release of **Ray Direct Transport** (formerly GPU objects) - simply enable it by adding the `tensor_transport` parameter to the existing native Ray Core API. This keeps GPU data in GPU memory until a transfer is needed, avoiding expensive serialization and copies to and from the Ray object store. It uses efficient data transports such as collective communication libraries (GLOO or NCCL) or point-to-point RDMA (via NVIDIA’s NIXL) to transfer data directly between devices, including both CPUs and GPUs. **Ray Train:** Local mode support for multi-process training with `torchrun`, enhanced checkpoint management with new upload modes and validation functions **Ray Serve:** - Async Inference alpha release - New Ray Serve APIs for supporting long-running asynchronous inference tasks, such as for video or large document processing. Includes capabilities for using different message brokers, adapters like `celery` and DLQ. - Support for replica ranks - Replica level ranks are added for supporting large-model inference use-cases such as wide Data Parallel and Expert Parallel setups. - FastAPI factory pattern support - Enables using FastAPI plugins that are not serializable via cloudpickle. - Throughput optimizations - Enable these using the `RAY_SERVE_THROUGHPUT_OPTIMIZED` environment variable. **RLLib:** Add `StepFailedRecreateEnv` exception for users with unsatisfiable environments **Ray Serve/Data LLM:** Improvements to multi node serving, loading models from remote storages, and sharing resources for efficiency (fractional gpus, sharing gpus on a data pipeline with shared stages) #### Ray Libraries ##### Ray Data 🎉 New Features: - **Expression and Filtering API:** New expression API enables predicate-based filtering, UDF transformations with with_column, and column aliasing for more powerful data transformations (#56716, #56313, #56550, #55915, #55788, #56193, #56596) - Added support for projection pushdown into Parquet reads (#56500) - New download expression enables efficient loading of data from columns containing URIs with improved performance and error handling (#55824, #56462, #56294, #56852, #57146) - New `explain()` API provides insights into dataset execution plans (#55482) - Added `streaming_train_test_split` to avoid materialization for train/test splits (#56803) - **Ray Data LLM:** - Enabled multi-node tensor and pipeline parallelism for LLM processing (#56779) - Added `chat_template_kwargs` parameter for customizing chat templates (#56490) - Added support for OpenAI's nested image URL format in multimodal pipelines (#56584) - vLLM engines can now be shared across sequential processors for better resource utilization (#55179) - Enhanced Dataset.stats() output with input/output row counts per operator (#56040) - Added new metrics for task duration, inputs per task, and output blocks (#56958, #56379) - Time to first batch metric for better iteration performance monitoring (#55758) - Added type-specific aggregators for numerical, categorical, and vector columns (#56610) - Added fine-grained concurrency controls with `max_task_concurrency` and resource allocation options (#56370, #56381) 💫 Enhancements: - **Join and shuffle improvements:** - Default shuffle strategy changed from sort-b _[Truncated at 4000 characters — full notes: https://github.com/ray-project/ray/releases/tag/ray-2.50.0]_