Ray-2.41.0
- Expression support for filters in Ray Data
- Support partition_cols in write_parquet for Ray Data
- Multi-directional sort over Ray Data datasets
- Output JSON structured log files for system and application logs in Ray Train
- Support for AMD ROCR_VISIBLE_DEVICES in Ray Train
- Allow users to configure optuna storage in optuna_search
- Support for external Envs to new API stack in RLlib with custom tcp-capable EnvRunner
- Sequence sampling to EpisodeReplayBuffer in offline RL
- ExecutionCallback interface in Ray Data
- Seed for read files in Ray Data
- Support for individual lambda-style callbacks in RLlib Callbacks API
- Use dask 2022.10.2 in Ray Data
- Upgrade Arrow version from 17 to 18 in Ray Data
- Update hudi version to 0.2.0 in Ray Data
- Make select_columns and rename_columns use Project operator in Ray Data
- Improved request_id generation to reduce proxy CPU overhead in Ray Serve
- Tune GC threshold by default in proxy in Ray Serve
- Use pickle.dumps for faster serialization from proxy to replica in Ray Serve
- Fix groupby hang when value contains np.nan in Ray Data
- Fix bug where file_extensions doesn't work with compound extensions in Ray Data
- Default behavior for sync methods will change in a future release to run in a threadpool by default in Ray Serve
Highlights
- Major update of RLlib docs and example scripts for the new API stack.
Ray Libraries
Ray Data
🎉 New Features:
- Expression support for filters (#49016)
- Support
partition_colsinwrite_parquet(#49411) - Feature: implement multi-directional sort over Ray Data datasets (#49281)
💫 Enhancements:
- Use dask 2022.10.2 (#48898)
- Clarify schema validation error (#48882)
- Raise
ValueErrorwhen the data sort key isNone(#48969) - Provide more messages when webdataset format is error (#48643)
- Upgrade Arrow version from 17 to 18 (#48448)
- Update
hudiversion to 0.2.0 (#48875) webdataset: expand JSON objects into individual samples (#48673)- Support passing kwargs to map tasks. (#49208)
- Add
ExecutionCallbackinterface (#49205) - Add seed for read files (#49129)
- Make
select_columnsandrename_columnsuse Project operator (#49393)
🔨 Fixes:
- Fix partial function name parsing in
map_groups(#48907) - Always launch one task for
read_sql(#48923) - Reimplement of fix memory pandas (#48970)
webdataset: flatten return args (#48674)- Handle
numpy > 2.0.0behaviour in_create_possibly_ragged_ndarray(#48064) - Fix
DataContextsealing for multiple datasets. (#49096) - Fix
to_tfforListtypes (#49139) - Fix type mismatch error while mapping nullable column (#49405)
- Datasink: support passing write results to
on_write_completes(#49251) - Fix
groupbyhang when value containsnp.nan(#49420) - Fix bug where
file_extensionsdoesn't work with compound extensions (#49244) - Fix map operator fusion when concurrency is set (#49573)
Ray Train
🎉 New Features:
- Output JSON structured log files for system and application logs (#49414)
- Add support for AMD ROCR_VISIBLE_DEVICES (#49346)
💫 Enhancements:
- Implement Train Tune API Revamp REP (#49376, #49467, #49317, #49522)
🏗 Architecture refactoring:
- LightGBM: Rewrite
get_network_paramsimplementation (#49019)
Ray Tune
🎉 New Features:
- Update
optuna_searchto allow users to configure optuna storage (#48547)
🏗 Architecture refactoring:
- Make changes to support Train Tune API Revamp REP (#49308, #49317, #49519)
Ray Serve
💫 Enhancements:
- Improved request_id generation to reduce proxy CPU overhead (#49537)
- Tune GC threshold by default in proxy (#49720)
- Use
pickle.dumpsfor faster serialization fromproxytoreplica(#49539)
🔨 Fixes:
- Handle nested ‘=’ in serve run arguments (#49719)
- Fix bug when
ray.init()is called multiple times with differentruntime_envs(#49074)
🗑️ Deprecations:
- Adds a warning that the default behavior for sync methods will change in a future release. They will be run in a threadpool by default. You can opt into this behavior early by setting
RAY_SERVE_RUN_SYNC_IN_THREADPOOL=1. (#48897)
RLlib
🎉 New Features:
- Add support for external Envs to new API stack: New example script and custom tcp-capable EnvRunner. (#49033)
💫 Enhancements:
- Offline RL:
- Add sequence sampling to
EpisodeReplayBuffer. (#48116) - Allow incomplete
SampleBatchdata and fully compressed observations. (#48699) - Add option to customize
OfflineData. (#49015) - Enable offline training without specifying an environment. (#49041)
- Various fixes: #48309, #49194, #49195
- Add sequence sampling to
- APPO/IMPALA acceleration (new API stack):
- Add support for
AggregatorActorsper Learner. (#49284) - Auto-sleep time AND thread-safety for MetricsLogger. (#48868)
- Activate APPO cont. actions release- and CI tests (HalfCheetah-v1 and Pendulum-v1 new in
tuned_examples). (#49068) - Add "burn-in" period setting to the training of stateful RLModules. (#49680)
- Add support for
- Callbacks API: Add support for individual lambda-style callbacks. (#49511)
- Other enhancements: #49687, #49714, #49693, #49497, #49800, #49098
📖 Documentation:
- New example scripts:
- How to write a custom algorithm (VPG) from scratch. (#49536)
- How to customize an offline data pipeline. (#49046)
- GPUs on EnvRunners. (#49166)
- Hierarchical training. (#49127)
- Async gym vector env. (#49527)
- Other fixes and enhancements: #48988, #49071
- New/rewritten html pages:
- Rewrite checkpointing page. (#49504)
- New scaling guide. (#49528)
- New callbacks page. (#49513)
- Rewrite
RLModulepage. (#49387) - New AlgorithmConfig page and redo
package_refpage for algo configs. (#49464) - Rewrite offline RL page. (#48818)
- Rewrite “key concepts" rst page. (#49398)
- Rewrite RL environments pages. (#49165, #48542)
- Fixes and enhancements: #49465, #49037, #49304, #49428, #49474, #49399, #49713, #49518
🔨 Fixes:
- Add
on_episode_createdcallback to SingleAgentEnvRunner. (#49487) - Fix
train_batch_size_per_learnerproblems. (#49715) - Various other fixes: #48540, #49363, #49418, #49191
🏗 Architecture refactoring:
- RLModule: Introduce
Default[algo]RLModuleclasses (#49366, #49368) - Remove RLlib dependencies from setup.py; add
ormsgpack(#49489)
🗑️ Deprecations:
- #49488, #49144
Ray Core and Ray Clusters
Ray Core
💫 Enhancements:
- Add
task_name,task_function_nameandactor_namein Structured Logging (#48703) - Support redis/valkey authentication with username (#48225)
- Add v6e TPU Head Resource Autoscaling Support (#48201)
- compiled graphs: Support all driver and actor read combinations (#48963)
- compiled graphs: Add ascii based CG visualization (#48315)
- compiled graphs: Add ray[cg] pip install option (#49220)
- Allow uv cache at installation (#49176)
- Support != Filter in GCS for Task State API (#48983)
- compiled graphs: Add CPU-based NCCL communicator for development (#48440)
- Support gcs and raylet log rotation (#48952)
- compiled graphs: Support
nsight.nvtxprofiling (#49392)
🔨 Fixes:
- autoscaler: Health check logs are not visible in the autoscaler container's stdout (#48905)
- Only publish
WORKER_OBJECT_EVICTIONwhen the object is out of scope or manually freed (#47990) - autoscaler: Autoscaler doesn't scale up correctly when the KubeRay RayCluster is not in the goal state (#48909)
- autoscaler: Fix incorrectly terminating nodes misclassified as idle in autoscaler v1 (#48519)
- compiled graphs: Fix the missing dependencies when num_returns is used (#49118)
- autoscaler: Fuse scaling requests together to avoid overloading the Kubernetes API server (#49150)
- Fix bug to support S3 pre-signed url for
.whlfile (#48560) - Fix data race on gRPC client context (#49475)
- Make sure draining node is not selected for scheduling (#49517)
Ray Clusters
💫 Enhancements:
- Azure: Enable accelerated networking as a flag in azure vms (#47988)
📖 Documentation:
- Kuberay: Logging: Add Fluent Bit
DaemonSetand Grafana Loki to "Persist KubeRay Operator Logs" (#48725) - Kuberay: Logging: Specify the Helm chart version in "Persist KubeRay Operator Logs" (#48937)
Dashboard
💫 Enhancements:
- Add instance variable to many default dashboard graphs (#49174)
- Display duration in milliseconds if under 1 second. (#49126)
- Add
RAY_PROMETHEUS_HEADERSenv for carrying additional headers to Prometheus (#49353) - Document about the
RAY_PROMETHEUS_HEADERSenv for carrying additional headers to Prometheus (#49700)
🏗 Architecture refactoring:
- Move
memraydependency from default to observability (#47763) - Move
StateHead's methods into free functions. (#49388)
Thanks
@raulchen, @alanwguo, @omatthew98, @xingyu-long, @tlinkin, @yantzu, @alexeykudinkin, @andrewsykim, @win5923, @csy1204, @dayshah, @richardliaw, @stephanie-wang, @gueraf, @rueian, @davidxia, @fscnick, @wingkitlee0, @KPostOffice, @GeneDer, @MengjinYan, @simonsays1980, @pcmoritz, @petern48, @kashiwachen, @pfldy2850, @zcin, @scottjlee, @Akhil-CM, @Jay-ju, @JoshKarpel, @edoakes, @ruisearch42, @gorloffslava, @jimmyxie-figma, @bthananjeyan, @sven1977, @bnorick, @jeffreyjeffreywang, @ravi-dalal, @matthewdeng, @angelinalg, @ivanthewebber, @rkooo567, @srinathk10, @maresb, @gvspraveen, @akyang-anyscale, @mimiliaogo, @bveeramani, @ryanaoleary, @kevin85421, @richardsliu, @hartikainen, @coltwood93, @mattip, @Superskyyy, @justinvyu, @hongpeng-guo, @ArturNiederfahrenhorst, @jecsand838, @Bye-legumes, @hcc429, @WeichenXu123, @martinbomio, @HollowMan6, @MortalHappiness, @dentiny, @zhe-thoughts, @anyadontfly, @smanolloff, @richo-anyscale, @khluu, @xushiyan, @rynewang, @japneet-anyscale, @jjyao, @sumanthratna, @saihaj, @aslonnie
Many thanks to all those who contributed to this release!