# Ray 2.47.0 — Ray-2.47.0 - Product: Ray (https://whatsnew.fyi/product/ray) - Vendor: Anyscale - Date: 2025-06-12 - Version: 2.47.0 - Original notes: https://github.com/ray-project/ray/releases/tag/ray-2.47.0 - Permalink: https://whatsnew.fyi/product/ray/releases/2.47.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'. --- - **added** — Support prefill disaggregation in Ray Serve LLM for production LLM serving use cases - **added** — Add save modes support to file data sinks - **added** — Add flattening capability to the Concatenator preprocessor to support output vectorization use cases - **added** — Support for configuring Ray Train worker actor runtime environments - **added** — Include Grafana panel data in Ray Train export for improved monitoring - **added** — Introduce a structured logging environment variable to standardize log formats - **added** — Add metrics for TrainControllerState to enhance observability - **added** — Add support for implementing custom request routing algorithms in Ray Serve - **added** — Introduce an environment variable to prioritize custom resources during deployment scheduling - **added** — Expose vLLM Metrics to serve.llm API - **added** — Add Embedding API to Ray Serve/Data LLM - **added** — Add GPU inference to offline evaluation in RLlib - **changed** — Re-enable Actor locality-based scheduling with improved algorithms for ranking bundle locations - **changed** — Disable blocking pipeline by default until Actor Pool fully scales up to min actors - **changed** — Improve progress bar and dashboard to show name of partial functions properly - **changed** — The ingress API now accepts a builder function in addition to an ASGI app object - **changed** — Allow setting name_prefix in build_llm_deployment - **changed** — Mitigate the serve.llm streaming overhead by properly batching stream chunks - **fixed** — Make Ray Data from_torch respect Dataset len - **fixed** — Fix race condition bug in fault tolerance by disabling on_exit hook - **fixed** — Fix move_tensors_to_device utility for the list/tuple[tensor] case - **fixed** — Fix ActorPool scaling to avoid scaling down when the input queue is empty - **fixed** — Fix internal queues accounting for all Operators with an internal queue - **fixed** — Fix backpressure for FileBasedDatasource to prevent potential OOMs for workloads using FileBasedDatasources - **fixed** — Fixed GPU transfer support for non-contiguous tensors - **fixed** — Fixed runtime_env validation for py_modules - **fixed** — Disallow special characters in Serve deployment and application names - **fixed** — Add a descriptive error message when a deployment name is not found - **fixed** — LLMRouter.check_health() should check LLMServer.check_health() - **fixed** — Fix runtime passthrough and auto-executor class selection - **fixed** — Update check_health return type - **fixed** — Bug fix for duplication of token - **fixed** — In stream batching, first part of the stream was always consumed and not streamed back from the router - **fixed** — Fixed weight synching in offline evaluation - **fixed** — Fixed bug in split_and_zero_pad utility function related to complex structures vs simple values or np.arrays #### Release Highlights * Prefill disaggregation is now supported in initial support in Ray Serve LLM (#53092). This is critical for production LLM serving use cases. * Ray Data features a variety of performance improvements (locality-based scheduling, non-blocking execution) as well as improvements to observability, preprocessors, and other stability fixes. * Ray Serve now features custom request routing algorithms, which is critical for high throughput traffic for large model use cases. #### Ray Libraries ##### Ray Data 🎉 New Features: - Add save modes support to file data sinks (#52900) - Added flattening capability to the Concatenator preprocessor to support output vectorization use cases (#53378) 💫 Enhancements: - Re-enable Actor locality-based scheduling. This PR also improves algorithms for ranking the locations for the bundle. (#52861) - Disable blocking pipeline by default until Actor Pool fully scales up to min actors (#52754) - Progress bar and dashboard improvements to show name of partial functions properly(#52280) 🔨 Fixes: - Make Ray Data `from_torch` respect Dataset len (#52804) - Fixing flaky aggregation test (#53383) - Fix race condition bug in fault tolerance by disabling `on_exit` hook (#53249) - Fix `move_tensors_to_device` utility for the list/tuple[tensor] case (#53109) - Fix `ActorPool` scaling to avoid scaling down when the input queue is empty (#53009) - Fix internal queues accounting for all Operators w/ an internal queue (#52806) - Fix backpressure for `FileBasedDatasource`. This fixes potential OOMs for workloads using `FileBasedDatasources` (#52852) 📖 Documentation: - Fix working code snippets (#52748) - Improve AggregateFnV2 docstrings and examples (#52911) - Improved documentation for vectorizers and API visibility in Data (#52456) ##### Ray Train 🎉 New Features: - Added support for configuring Ray Train worker actor runtime environments. (#52421) - Included Grafana panel data in Ray Train export for improved monitoring. (#53072) - Introduced a structured logging environment variable to standardize log formats. (#52952) - Added metrics for `TrainControllerState` to enhance observability. (#52805) 💫 Enhancements: - Logging of controller state transitions to aid in debugging and analysis. (#53344) - Improved handling of `Noop` scaling decisions for smoother scaling logic. (#53180) 🔨 Fixes: - Improved `move_tensors_to_device utility` to correctly handle `list` / `tuple` of tensors. (#53109) - Fixed GPU transfer support for non-contiguous tensors. (#52548) - Increased timeout in `test_torch_device_manager` to reduce flakiness. (#52917) 📖 Documentation: - Added a note about PyTorch DataLoader’s multiprocessing and forkserver usage. (#52924) - Fixed various docstring format and indentation issues. (#52855, #52878) - Removed unused "configuration-overview" documentation page. (#52912) - General typo corrections. (#53048) 🏗 Architecture refactoring: - Deduplicated ML doctest runners in CI for efficiency. (#53157) - Converted isort configuration to Ruff for consistency. (#52869) - Removed unused `PARALLEL_CI` blocks and combined imports. (#53087, #52742) ##### Ray Tune 💫 Enhancements: - Updated `test_train_v2_integration` to use the correct `RunConfig`. (#52882) 📖 Documentation: - Replaced `session.report` with `tune.report` and corrected import paths. (#52801) - Removed outdated graphics cards reference in docs. (#52922) - Fixed various docstring format issues. (#52879) ##### Ray Serve 🎉 New Features: - Added support for implementing custom request routing algorithms. (#53251) - Introduced an environment variable to prioritize custom resources during deployment scheduling. (#51978) 💫 Enhancements: - The ingress API now accepts a builder function in addition to an ASGI app object. (#52892) 🔨 Fixes: - Fixed `runtime_env` validation for `py_modules`. (#53186) - Disallowed special character _[Truncated at 4000 characters — full notes: https://github.com/ray-project/ray/releases/tag/ray-2.47.0]_