# 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]_