# Ray 2.9.0 — Ray-2.9.0 - Product: Ray (https://whatsnew.fyi/product/ray) - Vendor: Anyscale - Date: 2023-12-21 - Version: 2.9.0 - Original notes: https://github.com/ray-project/ray/releases/tag/ray-2.9.0 - Permalink: https://whatsnew.fyi/product/ray/releases/2.9.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'. --- - **security** — Fix security vulnerabilities in Ray Dashboard (CVE-2023-6019, CVE-2023-6020, CVE-2023-6021, CVE-2023-48022, CVE-2023-48023) - **changed** — Upgrade Ray Train support for spot node preemption to handle preemption node failures differently than application errors - **changed** — Make Ray compatible with Pydantic versions <2.0.0 and >=2.5.0 - **added** — Add Ray Dashboard page for Ray Data to monitor real-time execution metrics - **added** — Make streaming generator officially a public API for writing streaming applications on top of Ray via Python generator API - **added** — Add experimental support for Intel GPU accelerators - **added** — Add experimental support for Intel Gaudi Accelerators - **added** — Add experimental support for Huawei Ascend NPU accelerators - **added** — Add concurrency argument to Ray Data map-like APIs to replace ComputeStrategy - **added** — Allow task failures during Ray Data execution - **changed** — Support PyArrow 14.0.1 in Ray Data - **added** — Add new API for reading and writing Datasource in Ray Data - **added** — Enable group-by over multiple keys in Ray Data datasets - **added** — Add support for multiple group keys in map_groups for Ray Data - **added** — Introduce logging config in Ray Serve to set different logging parameters for different applications and deployments - **added** — Add gRPC context object into gRPC deployments in Ray Serve for users to set custom code and details back to the client - **added** — Introduce experimental runtime environment feature in Ray Serve to run applications in different containers with different images - **added** — Support reading Result from cloud storage in Ray Train and Ray Tune - **removed** — Remove Legacy Trainers from Ray Train - **removed** — Delete legacy TuneClient and TuneServer APIs from Ray Tune - **removed** — Delete legacy Searchers from Ray Tune #### Release Highlights - This release contains fixes for the Ray Dashboard. Additional context can be found here:   - Ray Train has now upgraded support for spot node preemption -- allowing Ray Train to handle preemption node failures differently than application errors. - Ray is now compatible with Pydantic versions <2.0.0 and >=2.5.0, addressing a piece of user feedback we’ve consistently received. - The Ray Dashboard now has a page for Ray Data to monitor real-time execution metrics. - [Streaming generator](https://docs.ray.io/en/latest/ray-core/ray-generator.html) is now officially a public API (#41436, #38784). Streaming generator allows writing streaming applications easily on top of Ray via Python generator API and has been used for Ray Serve and Ray data for several releases. See the [documentation](https://docs.ray.io/en/master/ray-core/ray-generator.html) for details.  - We’ve added experimental support for new accelerators: Intel GPU (#38553), Intel Gaudi Accelerators (#40561), and Huawei Ascend NPU (#41256). #### Ray Libraries ##### Ray Data 🎉 New Features: * Add the dashboard for Ray Data to monitor real-time execution metrics and log file for debugging (). * Introduce `concurrency` argument to replace `ComputeStrategy` in map-like APIs (#41461) * Allow task failures during execution (#41226) * Support PyArrow 14.0.1 (#41036) * Add new API for reading and writing Datasource () * Enable group-by over multiple keys in datasets (#37832) * Add support for multiple group keys in `map_groups` (#40778) 💫 Enhancements: - Optimize `OpState.outqueue_num_blocks` (#41748) - Improve stall detection for `StreamingOutputsBackpressurePolicy` (#41637) - Enable read-only Datasets to be executed on new execution backend (#41466, #41597) - Inherit block size from downstream ops (#41019) - Use runtime object memory for scheduling (#41383) - Add retries to file writes (#41263) - Make range datasource streaming (#41302) - Test core performance metrics (#40757) - Allow `ConcurrencyCapBackpressurePolicy._cap_multiplier` to be set to 1.0 (#41222) - Create `StatsManager` to manage `_StatsActor` remote calls (#40913) - Expose `max_retry_cnt` parameter for `BigQuery` Write (#41163) - Add rows outputted to data metrics (#40280) - Add fault tolerance to remote tasks (#41084) - Add operator-level dropdown to ray data overview (#40981) - Avoid slicing too-small blocks (#40840) - Ray Data jobs detail table (#40756) - Update default shuffle block size to 1GB (#40839) - Log progress bar to data logs (#40814) - Operator level metrics (#40805) 🔨 Fixes: - Partial fix for `Dataset.context` not being sealed after creation (#41569) - Fix the issue that `DataContext` is not propagated when using `streaming_split` (#41473) - Fix Parquet partition filter bug (#40947) - Fix split read output blocks (#41070) - Fix `BigQueryDatasource `fault tolerance bugs (#40986) 📖 Documentation: - Add example of how to read and write custom file types (#41785) - Fix `ray.data.read_databricks_tables` doc (#41366) - Add `read_json` docs example for setting PyArrow block size when reading large files (#40533) - Add `AllToAllAPI` to dataset methods (#40842) ##### Ray Train 🎉 New Features: - Support reading `Result` from cloud storage (#40622) 💫 Enhancements: - Sort local Train workers by GPU ID (#40953) - Improve logging for Train worker scheduling information (#40536) - Load the latest unflattened metrics with `Result.from_path` (#40684) - Skip incrementing failure counter on preemption node died failures (#41285) - Update TensorFlow `ReportCheckpointCallback` to _[Truncated at 4000 characters — full notes: https://github.com/ray-project/ray/releases/tag/ray-2.9.0]_