Ray v1.0.1 Release Notes
Release Date: 2020-11-10 // over 4 years ago-
Ray 1.0.1
π Ray 1.0.1 is now officially released!
Highlights
- If you're migrating from Ray < 1.0.0, be sure to check out the 1.0 Migration Guide.
- π³ Autoscaler is now docker by default.
- RLLib features multiple new environments.
- π³ Tune supports population based bandits, checkpointing in Docker, and multiple usability improvements.
- π SGD supports PyTorch Lightning
- π All of Ray's components and libraries have improved performance, scalability, and stability.
Core
- 1.0 Migration Guide.
- π Many bug fixes and optimizations in GCS.
- π Polishing of the Placement Group API.
- π Improved Java language support
RLlib
- β Added documentation for Curiosity exploration module (#11066).
- β Added RecSym environment wrapper (#11205).
- β Added Kaggleβs football environment (multi-agent) wrapper (#11249).
- π· Multiple bug fixes: GPU related fixes for SAC (#11298), MARWIL, all example scripts run on GPU (#11105), lifted limitation on 231 timesteps (#11301), fixed eval workers for ES and ARS (#11308), fixed broken no-eager-no-workers mode (#10745).
- π Support custom MultiAction distributions (#11311).
- π· No environment is created on driver (local worker) if not necessary (#11307).
- β Added simple SampleCollector class for Trajectory View API (#11056).
- π Code cleanup: Docstrings and type annotations for Exploration classes (#11251), DQN (#10710), MB-MPO algorithm, SAC algorithm (#10825).
Serve
- API: Serve will error when
serve_client
is serialized. (#11181) - Performance:
serve_client.get_handle("endpoint")
will now get a handle to nearest node, increasing scalability in distributed mode. (#11477) - β‘οΈ Doc: Added FAQ page and updated architecture page (#10754, #11258)
- β Testing: New distributed tests and benchmarks are added (#11386)
- π Testing: Serve now run on Windows (#10682)
SGD
- π Pytorch Lightning integration is now supported (#11042)
- π Support
num_steps
continue training (#11142) - Callback API for SGD+Tune (#11316)
Tune
- π New Algorithm: Population-based Bandits (#11466)
tune.with_parameters()
, a wrapper function to pass arbitrary objects through the object store to trainables (#11504)- Strict metric checking - by default, Tune will now error if a result dict does not include the optimization metric as a key. You can disable this with TUNE_DISABLE_STRICT_METRIC_CHECKING (#10972)
- π³ Syncing checkpoints between multiple Docker containers on a cluster is now supported with the
DockerSyncer
(#11035) - β Added type hints (#10806)
- Trials are now dynamically created (instead of created up front) (#10802)
- Use
tune.is_session_enabled()
in the Function API to toggle between Tune and non-tune code (#10840) - π Support hierarchical search spaces for hyperopt (#11431)
- π Tune function API now also supports
yield
andreturn
statements (#10857) - π Tune now supports callbacks with
tune.run(callbacks=...
(#11001) - 0οΈβ£ By default, the experiment directory will be dated (#11104)
- π· Tune now supports
reuse_actors
for function API, which can largely accelerate tuning jobs.
Thanks
π We thank all the contributors for their contribution to this release!
@acxz, @Gekho457, @allenyin55, @AnesBenmerzoug, @michaelzhiluo, @SongGuyang, @maximsmol, @WangTaoTheTonic, @Basasuya, @sumanthratna, @juliusfrost, @maxco2, @Xuxue1, @jparkerholder, @AmeerHajAli, @raulchen, @justinkterry, @herve-alanaai, @richardliaw, @raoul-khour-ts, @C-K-Loan, @mattearllongshot, @robertnishihara, @internetcoffeephone, @Servon-Lee, @clay4444, @fangyeqing, @krfricke, @ffbin, @akotlar, @rkooo567, @chaokunyang, @PidgeyBE, @kfstorm, @barakmich, @amogkam, @edoakes, @ashione, @jseppanen, @ttumiel, @desktable, @pcmoritz, @ingambe, @ConeyLiu, @wuisawesome, @fyrestone, @oliverhu, @ericl, @weepingwillowben, @rkube, @alanwguo, @architkulkarni, @lasagnaphil, @rohitrawat, @ThomasLecat, @stephanie-wang, @suquark, @ijrsvt, @VishDev12, @Leemoonsoo, @scottwedge, @sven1977, @yiranwang52, @carlos-aguayo, @mvindiola1, @zhongchun, @mfitton, @simon-mo
Previous changes from v1.0.0
-
Ray 1.0
π We're happy to announce the release of Ray 1.0, an important step towards the goal of providing a universal API for distributed computing.
π To learn more about Ray 1.0, check out our blog post and whitepaper.
Ray Core
- π The ray.init() and
ray start
commands have been cleaned up to remove deprecated arguments - The Ray Java API is now stable
- π Improved detection of Docker CPU limits
- β Add support and documentation for Dask-on-Ray and MARS-on-Ray: https://docs.ray.io/en/master/ray-libraries.html
- β± Placement groups for fine-grained control over scheduling decisions: https://docs.ray.io/en/latest/placement-group.html.
- π New architecture whitepaper: https://docs.ray.io/en/master/whitepaper.html
Autoscaler
- π Support for multiple instance types in the same cluster: https://docs.ray.io/en/master/cluster/autoscaling.html
- π Support for specifying GPU/accelerator type in
@ray.remote
Dashboard & Metrics
- π Improvements to the memory usage tab and machine view
- π The dashboard now supports visualization of actor states
- π Support for Prometheus metrics reporting: https://docs.ray.io/en/latest/ray-metrics.html
RLlib
- Two Model-based RL algorithms were added: MB-MPO (βModel-based meta-policy optimizationβ) and βDreamerβ. Both algos were benchmarked and are performing comparably to the respective papersβ reported results.
- π A βCuriosityβ (intrinsic motivation) module was added via RLlibβs Exploration API and benchmarked on a sparse-reward Unity3D environment (Pyramids).
- β Added documentation for the Distributed Execution API.
- β Removed (already soft-deprecated) APIs: Model(V1) class, Trainer config keys, some methods/functions. Where you would see a warning previously when using these, there will be an error thrown now.
- β Added DeepMind Control Suite examples.
Tune
π₯ Breaking changes:
- Multiple tune.run parameters have been deprecated:
ray_auto_init, run_errored_only, global_checkpoint_period, with_server
(#10518) - π
tune.run(upload_dir, sync_to_cloud, sync_to_driver, sync_on_checkpoint
have been moved totune.SyncConfig
[docs] (#10518)
π New APIs:
mode, metric, time_budget
parameters for tune.run (#10627, #10642)- β± Search Algorithms now share a uniform API: (#10621, #10444). You can also use the new
create_scheduler/create_searcher
shim layer to create search algorithms/schedulers via string, reducing boilerplate code (#10456). - π Native callbacks for: MXNet, Horovod, Keras, XGBoost, PytorchLightning (#10533, #10304, #10509, #10502, #10220)
- β± PBT runs can be replayed with PopulationBasedTrainingReplay scheduler (#9953)
- Search Algorithms are saved/resumed automatically (#9972)
- π New Optuna Search Algorithm docs (#10044)
- π Tune now can sync checkpoints across Kubernetes pods (#10097)
- Failed trials can be rerun with
tune.run(resume="run_errored_only")
(#10060)
Other Changes:
- Trial outputs can be saved to file via
tune.run(log_to_file=...)
(#9817) - 0οΈβ£ Trial directories can be customized, and default trial directory now includes trial name (#10608, #10214)
- π Improved Experiment Analysis API (#10645)
- π Support for Multi-objective search via SigOpt Wrapper (#10457, #10446)
- π BOHB Fixes (#10531, #10320)
- Wandb improvements + RLlib compatibility (#10950, #10799, #10680, #10654, #10614, #10441, #10252, #8521)
- π Updated documentation for FAQ, Tune+serve, search space API, lifecycle (#10813, #10925, #10662, #10576, #9713, #10222, #10126, #9908)
RaySGD:
- Creator functions are subsumed by the TrainingOperator API (#10321)
- 0οΈβ£ Training happens on actors by default (#10539)
Serve
- π
serve.client
API makes it easy to appropriately manage lifetime for multiple Serve clusters. (#10460) - Serve APIs are fully typed. (#10205, #10288)
- Backend configs are now typed and validated via Pydantic. (#10559, #10389)
- Progress towards application level backend autoscaler. (#9955, #9845, #9828)
- π New architecture page in documentation. (#10204)
Thanks
π We thank all the contributors for their contribution to this release!
@MissiontoMars, @ijrsvt, @desktable, @kfstorm, @lixin-wei, @Yard1, @chaokunyang, @justinkterry, @pxc, @ericl, @WangTaoTheTonic, @carlos-aguayo, @sven1977, @gabrieleoliaro, @alanwguo, @aryairani, @kishansagathiya, @barakmich, @rkube, @SongGuyang, @qicosmos, @ffbin, @PidgeyBE, @sumanthratna, @yushan111, @juliusfrost, @edoakes, @mehrdadn, @Basasuya, @icaropires, @michaelzhiluo, @fyrestone, @robertnishihara, @yncxcw, @oliverhu, @yiranwang52, @ChuaCheowHuan, @raphaelavalos, @suquark, @krfricke, @pcmoritz, @stephanie-wang, @hekaisheng, @zhijunfu, @Vysybyl, @wuisawesome, @sanderland, @richardliaw, @simon-mo, @janblumenkamp, @zhuohan123, @AmeerHajAli, @iamhatesz, @mfitton, @noahshpak, @maximsmol, @weepingwillowben, @raulchen, @09wakharet, @ashione, @henktillman, @architkulkarni, @rkooo567, @zhe-thoughts, @amogkam, @kisuke95, @clarkzinzow, @holli, @raoul-khour-ts
- π The ray.init() and