Ray

AI

A distributed runtime for scaling Python and machine-learning workloads.

Latest 2.56.1 · by AnyscaleWebsiteray-project/ray

Release activity

Release activity — 17 releases across 17 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 20261 release on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 20261 release on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

17 releases in the last year

Changelog

2.56.1

Ray-2.56.1

Changed 3
  • Added protobuf >=7 compatibility to _proto_to_dict by binding to FieldDescriptor.is_repeated when the deprecated label attribute is absent
  • Upgraded the ONNX example from MobileNet v1 to MobileNet v3 via torchvision and pinned onnxscript in GPU/ml-build CI dep locks
  • The threshold memory monitor now snapshots both the user and system cgroup slices and logs an error when system-slice usage exceeds the reserved system memory
Fixed 6
  • Fixed Arrow-backed to_pandas regressions by adding DataContext.enable_arrow_backed_pandas_conversion as an opt-out and reconciling divergent numeric column types before concatenation to avoid int64/double[pyarrow] overflow crashes
  • Fixed TensorDtype.__from_arrow__ crash on zero-size tensor elements by using an explicit row count instead of numpy's -1 dimension inference
  • Fixed a crash in hash partition caused by read-only hash arrays
  • Nullified _input_dependencies in _get_args so exporting operator args no longer triggers an exponential sanitize_for_struct call chain over fused operators
  • Fixed direct-streaming routing for body-aware routers by parsing the raw request body into a SimpleNamespace over routing-key fields so choose_replica receives the message body instead of raw bytes
  • Disabled NCCL cuMem host buffer registration in CI pytests to stabilize GPU test runs

Highlights

  • Ray Data: We added fixes for several to_pandas regressions introduced in 2.56: an opt-out flag (RAY_DATA_ENABLE_ARROW_BACKED_PANDAS_CONVERSION) for Arrow-backed conversion, an int64/double[pyarrow] overflow crash on concatenation, and a TensorDtype.__from_arrow__ crash on empty tensor columns (#64793, #64794).
  • Ray Core: We added early detection for system-slice memory pressure: the memory monitor now snapshots the user and system cgroup slices together and logs an error when the system slice exceeds reserved system memory, warning users to raise --system-reserved-memory before it causes node deaths (#64492).
  • Ray Serve: We added protobuf 7 compatibility and a routing fix for LLM direct streaming, so body-aware routers like PrefixCacheAffinityRouter no longer hang when RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 (#64592, #64488).

Ray Data

🔨 Fixes
  • Fixed two Arrow-backed to_pandas regressions: added DataContext.enable_arrow_backed_pandas_conversion as an opt-out, and reconciled divergent numeric column types before concatenation to avoid int64/double[pyarrow] overflow crashes (#64793, #64768).
  • Fixed a TensorDtype.__from_arrow__ crash on zero-size tensor elements by using an explicit row count instead of numpy's -1 dimension inference (#64794, #64767).
  • Fixed a crash in hash partition caused by read-only hash arrays (#64584, #64552, #64559).
  • Nullified _input_dependencies in _get_args so exporting operator args no longer triggers an exponential sanitize_for_struct call chain over fused operators (#64412, #64316).

Ray Serve

🔨 Fixes
  • Added protobuf >=7 compatibility to _proto_to_dict by binding to FieldDescriptor.is_repeated when the deprecated label attribute is absent (#64592, #64362).

Ray LLM

🔨 Fixes
  • Fixed direct-streaming routing for body-aware routers: the ingress now parses the raw request body into a SimpleNamespace over routing-key fields (messages, prompt) so choose_replica receives the message body instead of raw bytes (#64488, #64328, #64326).

Ray RLlib

🔨 Fixes
  • Upgraded the ONNX example from the retired MobileNet v1 to MobileNet v3 via torchvision and pinned onnxscript in the GPU/ml-build CI dep locks, fixing ONNX export failures (#64591, #64028, #64031, #64590, #64033).

Ray Core

💫 Enhancements
  • The threshold memory monitor now snapshots both the user and system cgroup slices and logs an error when system-slice usage exceeds the reserved system memory, prompting users to raise --system-reserved-memory (#64492).
🔨 Fixes
  • Disabled NCCL cuMem host buffer registration in CI pytests to stabilize GPU test runs (#64580, #64146).

Documentation

📖 Documentation
  • Repointed the ASHA Tune example links to the renamed README document, fixing the fail_on_warning ReadTheDocs build on the release line (#64761, #64630).
  • Updated the Python 3.10 CPU pip freeze dependency list for the Ray 2.56.0 release (#64447, #64357).
View originalPermalink
How 2.56.1 went
2.56.0

Ray-2.56.0

Added 17
  • Support multiple datasets per cluster via subcluster labels and resource partitioning
  • Add Dataset.mix() public API and MixOperator for weighted dataset mixing
  • Implement new DataSourceV2 framework with ParquetDatasourceV2, chunked reader, predicate splitting, and listing/scanner infrastructure
  • Add batch_size='auto' to map_batches to derive batch row count from target row batch size
  • Implement distributed upsert for Iceberg using task-based merge algorithm
  • Add include_row_hash to read_parquet
Changed 2
  • Fix iter_batches spilling by replacing make_async_gen with iter_threaded and reducing buffered batches
  • Re-architect Ray Serve LLM by decoupling request handling from token streaming response path
Deprecated 1
  • Deprecate ConcurrencyCapBackpressurePolicy, DataIterator.to_torch, and pandas UDF batches

Highlights

  • Ray Data Stability: In this Ray release, we've added a variety of stability improvements, including running multiple datasets in a cluster, adding automatic batch size selection to CPU-based map-batches, and default logical memory configuration to prevent OOMs. We've also tightened iter_batches stability by reducing hidden buffering and shutting down the executor when consumers exit early (#63660, #63682, #62949). This reduces object-store spilling for common training workloads
  • Ray Serve: We re-architected Ray Serve LLM by decoupling request handling from token streaming response path (#62667, #62680, #62668, #62669, #63167), resulting in significant LLM serving performance improvements. We've also introduced new routing policies such as session-sticky routing via consistent hashing with ConsistentHashRouter (#62905, #63096, #62906) and CapacityQueueRouter (#62323) which is beneficial for supply-constrained workloads.
  • Ray Core: We've added GPU-domain-aware placement groups using label locality (#61442, #61614, #62487, #62533). This enables placement groups to pack bundles onto nodes that share a ray.io/gpu-domain label instead of only packing at the single-node level. We've also added initial Kubernetes in-place pod resizing support for Autoscaler v2 (#55961, #62369, #62215), enabling Ray clusters to resize CPU and memory on existing worker pods before scaling out new pods.

Ray Data

🎉 New Features
  • Support multiple datasets per cluster via subcluster labels and resource partitioning (#63331, #63375, #63982)
  • Add Dataset.mix() public API and MixOperator for weighted dataset mixing (#63168, #62450)
  • New DataSourceV2 framework: ParquetDatasourceV2, chunked reader, predicate splitting, listing/scanner infra (#63113, #63454, #63163, #62975, #63027, #62182)
  • Add batch_size='auto' to map_batches to derive batch row count from target row batch size (#62648)
  • Implement distributed upsert for Iceberg using task-based merge algorithm, preventing performance bottleneck on driver (#63482)
  • Add include_row_hash to read_parquet (#61408)
  • Add JAX data iterator (#61630)
  • Expose flag to run read tasks on isolated worker processes via isolate_read_workers (#63490)
  • Expose flag to set default logical memory for map operators via default_map_logical_memory_enabled (#63814)
  • Support predicate pushdown for Lance format (#61400)
  • Support per-partition start_offset and end_offset for read_kafka (#61620)
  • Add obstore async download backend for download operator (#61735)
  • Support UDF retries on transient exceptions (#63023)
💫 Enhancements
  • Fix iter_batches spilling by replacing make_async_gen with iter_threaded and reducing buffered batches (#63660, #63682)
  • Gate restore_original_order in iter_batches behind preserve_order (#63792)
  • Convert drop_columns to a Project logical operator when input schema is known (#63813)
  • Make ConcatAggregation and TurbopufferDatasink use polars for sorting (#61904)
  • Boost and vectorize hash_partition with sort_indices, zero-copy slices, and pandas (#63498, #62757, #63152, #62587)
  • Enable GPU_SHUFFLE in grouped_data.py (#62410)
  • Eager StarExpr expansion, schema inference for non-black-box UDFs, and Expressions struct support (#63776, #63387, #62560)
  • Make logging configurable via RAY_DATA_LOG_LEVEL and log RAY_DATA env vars at execution start (#63487, #63380)
  • Display and track logical memory in progress bar (#63379)
  • Honor compute= in filter(expr=...) and deprecate concurrency= (#63576)
  • Enable filter pushdown through StreamingRepartition and read stage column-rename removal (#62347, #63384, #63582)
  • Cache deserialized Arrow schemas in BlockMetadataWithSchema (#63462)
  • Track scheduling-loop step duration (p50/p90/max), peak USS/object-store memory, and task block locality (#63586, #63345, #63489, #63418, #62249)
  • Replace TaskDurationStats and Timer with DistributionTracker (#63488, #63530, #63825)
  • Introduce BlockEntry on RefBundle in place of (ref, metadata) tuples (#63654)
  • Pre-resolve filesystem in threaded download to avoid IMDS herd (#62898)
  • Convert logical operators to frozen dataclasses and consolidate operator base/repr (#62593, #62568, #62400, #63137, #63140, #63108)
  • Non-blocking default autoscaling coordinator and resource-aware auto-downscaling (#62725, #62574)
  • Release pinned blocks after dataset execution and shut down executor on early DataIterator exit (#62456, #62949)
  • Optimize local shuffle with incremental index and configurable compaction threshold (#62539)
  • Speed up checkpoint filter and reduce memory usage (#60294)
  • Preserve Arrow types through pandas roundtrip and reorder block columns by name before schema ops (#63017, #63582)
  • Block pickle object columns when reading untrusted Parquet and gate unsafe WebDataset deserialization (#63470, #63469)
  • Move backpressure escape hatch across all policies (#63539)
  • Update pandas, modin, and pyarrow minimum versions (#62899)
  • Add utilization monitoring and correct logical resource usage for ActorPool (#61987, #61528)
  • Deprecate ConcurrencyCapBackpressurePolicy, DataIterator.to_torch, and pandas UDF batches (#63392, #62540, #61733)
  • Rank actors per node in a heap and avoid re-exporting actor class via .options (#62309, #62722)
  • read_delta reads from preconfigured pyarrow dataset (#61721)
  • Include column name and target type in ArrowConversionError; reduce arrow conversion warning verbosity (#62407, #61486, #62521)
  • Show external consumer bytes in verbose operator progress log (#63728)
  • Disable DataSourceV2 by default after earlier enabling (#63674, #63326)
🔨 Fixes
  • Rename subcluster label key from __subcluster__ to ray-subcluster (#63982)
  • Fix get_or_create_stats_actor crash in Ray Client mode (#63402)
  • Fix datasource pushdown crashes for generic UDFExpr filter predicates (#63781)
  • Fix hash-shuffle aggregator memory estimation: metadata propagation, node-size clamp, column pruning (#63809)
  • Fix CheckpointConfig FileNotFoundError on Azure Blob Storage (#63606)
  • Fix silent credential drop for fsspec-S3 in download expression (#62897)
  • Fix missing f-string prefix in _concatenate_extension_column (#62939)
  • Fix HashAggregate duplicate group rows for AggregateFnV2 (#63066)
  • Fix JSONL read retry with advanced file cursor (#63233)
  • Fix read_parquet ArrowNotImplementedError for nested column types exceeding ~2GB row group (#61824)
  • Fix read_parquet nested-type fallback and parquet scanner memory accumulation (#63175, #62745)
  • Fix memory leak in DataIterator.to_torch() by switching to PyArrow (#60966)
  • Fix ZipOperator freeing shared blocks via _split_at_indices (#62665)
  • Fix concurrent writes race condition in write_parquet (#62377)
  • Fix GPU shuffle output ordering when using ShuffleStrategy.GPU_SHUFFLE (#62351)
  • Fix incorrect DatasetStat uuid propagation (#62255)
  • Fix none issue when DATA_ENABLE_OP_RESOURCE_RESERVATION=False (#61718)
  • Fix filesystem compatibility check for fsspec-wrapped PyFileSystem (#61850)
  • Forward try_create_dir to pyarrow.dataset.write_dataset (#58302)
  • Fix autoscaler bug blocking timely release of leased resources (#62592)
  • Ensure consistent nan_is_null/nans-as-nulls semantics in encoder (#62623, #62618)
  • Skip unconditional null strip in find_partition_index (#62594)
  • V1 _split_predicate_by_columns correctness fix (#63176)
  • Avoid importing cudf in _is_cudf_dataframe when cudf not loaded (#62302)
  • Revert raw-modulo hash partition fast path (#63097)
  • Remove tfx-bsl support from read_tfrecords (#63245)
📖 Documentation
  • Document isolate_read_workers for read_parquet (#63816)
  • Remove docs recommending increased object store memory proportion (#63389)
  • Update docs minimum version for build_processor and "auto" batch size (#61757, #62790)
  • Remove outdated limitation of DefaultClusterAutoscalerV2 and stale object-store-memory warnings (#62385, #62387)

Ray Serve

🎉 New Features:
  • Add custom ingress request router app interfaces and HAProxy ingress dispatch path (#62680, #62668, #62669, #62667)
  • Expose choose_replica/dispatch on deployment handles and AsyncioRouter with replica-side slot reservation (#63255, #63254, #63252)
  • Introduce experimental round robin router and ConsistentHashRouter for session-sticky routing (#63238, #62906, #63096, #62905)
  • Central capacity queue for token-based request routing via CapacityQueueRouter (#62323)
  • Add experimental ray-haproxy support behind RAY_SERVE_EXPERIMENTAL_PIP_HAPROXY (#62589)
  • Add deployment actor context API and broadcast API for deployment handles (#62532, #61472)
  • Add ControllerOptions for configurable controller runtime_env (#63352)
  • Make rolling update percentage configurable (#62160)
  • Support per-request timeout and disconnect in HTTP proxy path (#62867)
💫 Enhancements:
  • HAProxy stability improvements: wait for old workers before drain, redirect stdout/stderr, redispatch+retry-on, coalesce broadcasts, quarantine released ports (#63620, #63621, #63622, #63623, #63628)
  • Bind direct ingress ports to 0.0.0.0 for cross-node HAProxy routing (#62515)
  • HAProxy ingress request router metrics, enable splice by default, TCP_NODELAY default 1, optional retry knobs, RAY_SERVE_HAPROXY_STATS_PORT (#63356, #63531, #63353, #63415, #62979)
  • Resolve bundled ray-haproxy binary before RAY_SERVE_HAPROXY_BINARY_PATH; HAProxy abspath env var (#63829, #62610)
  • Replace socat subprocess with Python socket for HAProxy admin communication; bump HAProxy to avoid CVE-2025-11230 (#61897, #62585)
  • Expose controller health metrics via /api/serve/applications/ API; add max_replicas_per_node to response (#63556, #63234)
  • Run health check on user execution path to detect request-serving stalls (#61621)
  • Mark widely-used APIs as stable (#62932)
  • Retain recently-stopped replica logs in the dashboard (#63678)
  • Add observability logs for pack scheduling decisions (#63603)
  • Gate ingress request router body forwarding behind escape hatch (#63183)
  • Avoid rolling replicas for no-op config overrides (#63034)
  • Gate replica/deployment creation during shutdown (#62761)
  • Defer PG creation for TPU Serve deployments to accelerator backend (#62941)
  • Expose DeploymentStateManager APIs for controller access (#62950)
  • Add tracing support for Windows and gRPC tracing improvements (#62821, #63833)
  • Split node vs requested resources in deployment scheduler (#62778)
  • Defer DEPLOYMENT_TARGETS broadcast while replicas are RECOVERING (#62751)
  • Evict per-deployment LongPollHost state on deployment delete; enable logs when client stops its event loop (#62820, #63028)
  • Add metrics: max replica processing latency, objref resolution latency, serve_autoscaling_target_ongoing_requests (#62381, #62355, #62421)
  • Filter stale bootstrap observations from serve_long_poll_latency_ms (#62868)
  • Retry build_serve_application task on failure (#62987)
  • Scale down non-matching primary-label replicas first (#61488)
  • Refactor internal autoscaling policy state extraction into a single helper (#62452)
  • Catalog Ray Serve env vars (#62006)
  • Remove or raise clear error for deprecated deployment items; remove deprecated DeploymentMode (#63548, #63510)
🔨 Fixes:
  • Fix orphaned actors on controller crash during shutdown; drop and replace replicas surviving a controller crash without rank assignment (#62823, #63139)
  • Fix deployment actors creating 15K OS threads for sync actor classes (#62661)
  • Fix gang scheduling PG leak when deployment actors are starting (#62469)
  • Fix app-level autoscaling policy state cross-deployment contamination and state loss for skipped deployments (#62484)
  • Fix Serve autoscaling delay to use wall-clock time (#62144)
  • Fix race condition in multiplex LRU cache update using move_to_end() (#62548)
  • Normalize multiplexed model ID header to support proxy-transformed names (#61869)
  • Fix AttributeError when request_router is None in update_deployment_config (#63180)
  • Fix potential UnboundLocalError in ActorReplicaWrapper.check_stopped() (#63339)
  • Fail loud when ingress request router dispatch fails (#63215)
  • Fix stale _global_client cache across driver sessions (#62368)
  • Fix start_metrics_pusher crash when deployment has record_autoscaling_stats but no autoscaling config (#62123)
  • Fix high-cardinality namespace tag on long poll metrics (#62386)
  • Fix Java long poll timeout serialization (#61875)
  • Avoid destructor error when FastAPI ingress init fails (#62172)
  • Avoid proxy readiness future timeout race (#62194)
  • Avoid self-cause on non-gRPC replica exceptions (#62412)
  • Fix HAProxy startup timeout propagation (#61752)
  • Include ingress_request_router.lua.tmpl in package_data (#63145)
  • Revert support for root_path parameter across uvicorn versions (#62529)
📖 Documentation:
  • Add round robin and consistent hashing router documentation (#63636)
  • Introduce gang scheduling documentation (#61737)
  • Add deployment scope actor docs (#62735)
  • Add Kuberay guide for RayService with HAProxy and High Throughput mode (#62408)
  • Add Ray Serve office hours invite into documentation (#62176)

Ray Train

🎉 New Features
  • Add LoggingConfig for configuring the ray.train logger on controller and workers (#61550)
  • Allow DataParallelTrainer's train_fn to return data (#62021)
  • Add async checkpointing/validation with Torch Lightning (#62370)
💫 Enhancements
  • Report time spent syncing and transferring checkpoints to storage in ray.train.report(checkpoint) (#62027)
  • Block until create_or_update_train_run completes on Train initialization (#63432)
  • Implement DatasetManager (#63309)
  • Forward label_selector to AutoscalingCoordinator (#63287)
  • Add log line before launching training function (#62911)
  • Allow contextlib.redirect_stdout() to bypass print redirect to logs (#61075)
  • Add timeouts to validation functions of ray.train.report (#62916)
  • ray.train.report does not hang across replica group restarts; Ray Train manages replica group restarts (#62651, #61475)
  • Swallow RayTaskError during BackendSetupCallback shutdown (#63143)
  • Improve JaxTrainer TPU multi-slice fault tolerance and reservation ergonomics (#62893)
  • Export default data execution options (#62784)
  • Consolidate Train run metadata sanitization and improve readability (#63182)
  • Fix PlacementGroupCleaner race condition: drain queue before cleanup on controller death (#62754)
  • Harden against unsafe pickle deserialization (#62807)
  • Raise error when checkpoint is within experiment directory and delete_local_checkpoint_after_upload=True (#62555)
  • Add timeout_s to ray.train.get_all_reported_checkpoints (#61761)
  • Change remaining pytorch_lightning imports (#61291)
  • Make controller resilient to errors in all lifecycle hooks (#60900)
  • Remove Predictor from Train v1 (#63461)
🔨 Fixes
  • Fix missing comma in DataBatchType Union type (#63872)
  • Handle Arrow-backed pandas dtypes in LightGBM examples (#63427)
  • Fix exclude_resources regression for V1 Train + V2 cluster autoscaler (#62827)
  • Add missing %s to logger.debug (#63039)
  • Increase get_actor timeout (#62516)
📖 Documentation
  • Document S3-compatible storage (#63103)
  • Add Azure Files to persistent storage docs (#63406)
  • Uncomment Result.from_path in docs (#62887)
  • Document how to tune async validation (#62227)
  • Document why validation runs need unique names (#62224)

Ray Tune

💫 Enhancements
  • Fix Tune search for Python 3.14 (#63575)
  • Modernize AxSearch for Ax Platform 1.0.0+ (#60522)
  • Use built-in inspect for argument capture (#60049)
🔨 Fixes
  • Fix import count in CIFAR PyTorch tutorial (#62756)

Ray LLM

🎉 New Features
  • Major Ray Serve LLM performance improvement with direct streaming (#63167, #63468, #63779)
  • TPU support: Add topology field to LLMConfig for multi-host TPU support (#61906)
  • Add per-host bundles default and fix fractional TPUs for TPUAccelerator (#63177)
  • Enable Ray Serve LLM session-stickiness routing policy via RAY_SERVE_SESSION_ID_HEADER_KEY (#63362)
💫 Enhancements
  • Upgrade vLLM to 0.22.0 (#63730, #63396, #62970, #62349)
  • Co-locate DP rank 0 worker with advertised master address (#63803)
  • Add pick-only fast path to AsyncioRouter for LLM ingress (#63517)
  • Replace LLM ingress router replica selection with choose_replica; don't fetch LLMConfig from replicas at startup (#63280, #63065)
  • Promote max_tasks_in_flight_per_actor to a first-class config field and adjust defaults (#63214)
  • Validate accelerator_type against CPU-only configs; replace GPUType alias with AcceleratorType (#62139, #62978)
  • Add rate-limiter for per-request traceback spam (#62440)
  • Promote SGLang integration to user guide and move engine to _internal (#62570)
  • Lazy-load batch stage/processor submodules and make boto3/botocore imports lazy (#62861, #62383)
  • LLM telemetry bugfixes (#63782)
🔨 Fixes
  • Fix flaky GPU-0 worker and NIXL port collisions (#63810)
  • Fix P/D direct streaming OpenAI routing (#63679)
  • Remove guided_decoding, truncate_prompt_tokens, build_llm_processor (#63569)
  • Fix misleading ImportError when vLLM is installed but fails to import (#63305)
  • Fix max_pending_requests default to track vLLM's GPU-dependent max_num_seqs (#62918)
  • Fix HF config loading for models with custom rope_scaling (#62464)
  • Wait for request router init in LLMRouter constructor (#63206)
  • Materialize chat completion message content in sanitizer (#63119)
  • Fix lora_request not forwarded to vLLM engine + add regression tests (#62609)
  • Fix SGLangEngineProcessor telemetry for trust_remote_code models (#62102)
  • Fix TOKENIZER_ONLY downloads missing chat_template for S3-backed models (#62121)
  • Fix SGLang chat tokenize to respect add_generation_prompt (#61688)
  • Fix bool serialization in benchmark_vllm CLI builder (#63516)
📖 Documentation
  • Document multimodal pixel-budget gotchas and vLLM compatibility (#63593)
  • Add tokenization disaggregation documentation (#62494)
  • Add benchmark docs and refactor into submodules (#62204)
  • Remove VLLM_USE_V1 from docs and examples (#63001)
  • Fix wrong documented default for max_tasks_in_flight_per_actor (#62917)

Ray RLlib

🎉 New Features
  • Add custom_resources_per_learner config and custom_resources_for_main_process to AlgorithmConfig (#63303, #62475)
  • Add Importance Sampling APPO metrics to the torch learner (#63675)
💫 Enhancements
  • Put only one copy of weights into the object store (#63529)
  • Handle the all-evaluation-workers-unhealthy case uniformly across modes (#63128)
  • Stop IMPALA/APPO learner thread gracefully to avoid misleading error messages (#62763)
  • Improve invalid input error messages (#62324)
🔨 Fixes
  • Fix two substantial edge cases in PPO's value target calculation (#59958)
  • Fix EnvRunner crash loops (#62884)
  • Fix extra model outputs hanging val indexing (#62960)
  • Fix ValueError in MultiAgentEpisode.get_rewards() when an agent is inactive for all requested env steps (#62907)
  • Preserve Torch optimizer param-group scalar types on restore (#61937)
  • Fix wrong assert variable in _update_env_seed_if_necessary (#61823)
  • Maintain value in EMAStat (#63064)
📖 Documentation
  • Clarify extra model output docstrings (#63524)

Ray Core

🎉 New Features
  • Add support for Furiosa AI NPU (#63035) and register_collective_backend API for custom collective backends (#60701)
  • In-place pod resizing (IPPR) on Kubernetes 1.35: initial implementation and standalone KubeRay IPPR provider (#55961, #62369, #62215)
  • Label locality support: GPU-domain-aware placement groups, autoscaler proto changes, and state API observability (#61442, #61614, #62487, #62533)
  • Publish platform events via Ray Event Recorder and support single-event emission in the Python layer (#63329, #60858)
  • Autoscaler v2: priority-based worker group selection (#62997) and noDriverTimeoutSeconds for KubeRay cluster termination (#63465)
  • RDT: concurrent one-sided transfers for multiple ObjectRefs in ray.get (#61773), retry support (#62842), and NIXL memory deregistration via deregister_nixl_memory (#62341)
  • Support .tar.gz archives for remote working_dir URIs (#62813)
  • Add IPv6 localhost and all-interfaces support (#60023)
💫 Enhancements
  • Resource isolation: event-based memory monitor, multi-memory-monitor factory, time-based group killing policy, idle-worker prioritization, system/user slice bounds, and OOM policy tuning (#62060, #62705, #62643, #62378, #62168, #63521, #63324, #63067, #62957)
  • Compute per-component memory usage in MiB (#63932) and add host vs container memory distinction to memory panels (#63111)
  • Consider cgroup limit when fetching CPU (#63685) and correct worker OOM score adjustment logic (#62470)
  • Replace NodeAffinitySchedulingStrategy with Label Selector API when soft=False (#54940)
  • Improve SlicePlacementGroup lifecycle and support explicit bundle_label_selector for TPUs (#63171); add TPU head resource for Ironwood TPU (#62786), chips_per_vm arg (#62526), and v6e single-host fixes (#62306)
  • Batch placement group bundle removal RPCs (#63839); remove PG resource deduction from GCS in favor of resource broadcast (#63723)
  • Migrate Raylet/GCS timing logic to a shared ClockInterface with a fake clock for testing (#62562, #62502, #62476)
  • Refactor asio build targets and add IOContextMonitor; run GCS health check on io_service (#63042, #63166, #62608, #62374)
  • Autoscaler v2 performance: skip serializations for debug logs (#63778); accept fractional resource values in request_resources (#63306)
  • Reduce traffic: halve task arg pubsub by skipping redundant raylet pull (#62583), avoid extra memcpy when spilling fused objects (#63653), and resolve task dependencies synchronously when objects exist (#62561)
  • Improve inspect_serializability messages and traversal context (#63501, #63373, #63258); better worker startup error messages (#63714)
  • Warn when runtime_env package approaches upload size limit (#63404); harden zip extraction path containment (#63786, #62813)
  • Include owner node ID in OwnerDiedError (#63727); add dependency info to taskspec debug string (#62316)
  • Add unexpected worker failure metric and dashboard panel (#62297); group observability APIs in ray CLI help (#62748)
  • Normalize OTel metric labels before Prometheus export (#63744) and retry/log when Prometheus queries fail (#63578); add GPU usage instance filter (#62214)
  • Move observability and control-plane pubsub to dedicated services and rename InternalPubSub* to ControlPlanePubSub* (#62806, #63044, #62461)
  • AMD GPU: replace rocm-smi ctypes binding with amd-smi Python interface (#62393); detect NVIDIA Blackwell consumer GPUs (#63322)
  • Add task retry delay for ACTOR_UNAVAILABLE retries (#62330); improve State API filter key handling (#63638)
  • Patch setproctitle to skip launch services IPC calls (#63366); add timeout for first redis probe (#63148)
  • Clarify head node commands in ray up output (#63409); pass logging_config through Ray Client ray.init (#62192)
  • Print subprocess log tails with exit codes on unexpected exit (#61905); add warning log when GPU profiling command times out (#63706)
  • Add unique suffix to log filenames (#62365); disable profiling endpoints by default (#62531)
  • Remove pydantic v1 support (#62716); update Starlette to v1.0.1 (#63722)
  • Deprecate DAGNode.execute() (#63716); remove experimental _owner support for ray.put (#63520)
🔨 Fixes
  • Fix ray.get hanging forever when an object's owner dies during pull (#63694); resolve ReferenceCounter race on WORKER_REF_REMOVED_CHANNEL (#60495)
  • Fix resource leaks in subprocess management (#63878) and runtime_env cache not detecting changes in -r-referenced requirements files (#63403)
  • Fix replica actor zombie process after GCS restart (#63764); fix actor creation race condition (#62994); fix actor state counter bug (#63647)
  • Fix placement groups with label domain stuck on the infeasible queue (#62483); log status for failed PG PrepareResources/CommitResources (#62836)
  • Fix env var expansion in ray job submit CLI via shlex.join (#63797) and --working-dir for local zip files and http:// URLs (#62843)
  • Surface WebSocket close codes and errors in job log streaming (#63364); fix ray stop failing to terminate dashboard/runtime_env agents on Windows (#62428)
  • Fix ray down not stopping Docker containers on worker nodes for local clusters (#62169); fix delayed/missing worker logs in Jupyter by flushing stdout/stderr (#63599)
  • Fix Python log monitor handling for same-inode truncated files (#63720); avoid os.getcwd() on import by lazily evaluating scratch_dir (#63040)
  • Fix accelerator detection on NVIDIA Blackwell consumer GPUs (#63322); avoid FabricManager stall on NVLink systems in GpuProfilingManager (#63312)
  • Fix POSIX semaphore crash in experimental mutable objects (#62328); fix overflow on exponential backoff multiplication (#62366)
  • Fix OOM kill message wrong threshold with resource isolation (#62948); fix OpenTelemetryMetricRecorder singleton init guard (#63081)
  • Fix MarkFootprintAsBusy clearing saved idle state for unrelated items (#62588); fix HandleIsLocalWorkerDead for drivers (#62688)
  • Fix AttributeError on trace in client mode (#62955); fix IndexError in legacy post-mortem debugging (#61479)
  • Keep strong references to fire-and-forget asyncio tasks (#63291); validate JobConfig code_search_path type (#62499)
  • Fix uv existence check in UVProcessor (#62818); fix invalid default stats factory in ClusterStatus (#62934)
  • Fix autoscaler v2 instance_type_name in autoscaling state (#62101) and stopped-node metric double counting (#62026)
  • Fix ReadOnlyProviderConfigReader max_workers counting bug (#62819); fix circular import in ray_print_logs thread (#63410)
  • Fix wrong container in spill-fusion threshold check (#63605); avoid emitting idle worker failure for unregistered failed workers (#62789)
  • Avoid return in finally block (Python 3.14 SyntaxWarning) (#63742); fix typos and replace type() checks with isinstance() (#62154)
📖 Documentation
  • Add "bring your own transport" docs page for RDT (#60308); doc changes for label locality support (#62551)
  • Fix misleading docstrings on drain_node APIs (#62942); update outdated description for max_direct_call_object_size (#63164)

Dashboard

🎉 New Features
  • Add Platform Events module with K8s event ingestion/caching and frontend UI (#62314, #63332)
  • Show TPU stats on the Cluster tab (#63774)
💫 Enhancements
  • Add py-spy --idle and --subprocesses flags to profiling endpoints (#63852)
  • Pass Grafana cluster filter to Serve metrics URLs (#63211)
  • Show last data load time (#63618)
  • Add Name column to Jobs view from job_name metadata (#62257)
  • Mask password arguments in get_entrypoint_name() to prevent password exposure (#61995)
🔨 Fixes
  • Fix TPU metrics (#63998)
  • Guard against zero num_cpus in k8s_utils.cpu_percent (#63729)
  • Fix invalid PromQL when global_filters is empty in Grafana dashboard generation (#63687)
  • Fix unexpected log line details pop-up in log viewer UI (#62637)

Ray Wheels and Images

  • Bumped the Ray version for the 2.56.0 release.
  • Bumped the minimum Python version in pyproject.toml (#62569).
  • Added TPU release images (#62113) and updated the TPU Docker image base dependencies (#63006).
  • Added a torchft image for Torch trainer tests (#63361) and ran apt-get upgrade for slim base images (#62666).
  • Numerous dependency lockfile and CI image updates (raydepsets migration, depset regeneration across core/ML/RLlib/docs/macOS CI images).

Documentation

  • Established doc/redirects/current.yaml as the redirects source of truth with legacy-version 404 redirect coverage (#63367, #63880).
  • Added an agent context guide for Ray documentation and an ipython3 lexer hook for notebook shell/magic cells (#63227, #63515).
  • Added Sphinx /llms.txt and /llms-full.txt generation, excluding Jupyter notebooks (#63130, #63228).
  • Upgraded doc toolchain: pydata-sphinx-theme 0.17.1, myst-nb 1.4.0, added sphinxext-opengraph, unpinned yanked tf-keras (#63344, #63360, #63343, #63358).
  • Banned new .rst files under doc/source/ and added CI to skip RTD builds for PRs that don't touch docs (#63057, #63431).
  • Added meta descriptions to ray-contribute pages and anonymized personal paths in Tune notebook outputs (#63832, #63464).
  • Tune: updated deprecated sample_from examples to config-dict style and documented time_attr scheduler values (#63804, #32467).
  • RLlib: clarified DQN hiddens as dueling-only, removed a broken parametric-actions link, fixed broken doc links (#43051, #54671, #47146).
  • Ray Data: added a map_batches shuffle section, streaming generator docs, and fixed a broken README link (#62576, #63791, #63412).
  • Ray Train: documented iter_jax_batches for JaxTrainer and updated TPU scaling config docs (#63294, #62584).
  • Kubernetes/TPU: added a GKE Gateway ingress example, fixed the GKE TPU guide, and replaced deprecated example images (#63546, #63209, #63019).
  • Added a RayCronJob quick-start guide and clarified KAI Scheduler RayJob submission modes (#62151, #61332).
  • Added a Slurm guide for running Ray inside Docker containers (#63221).
  • Documented AutoscalingConfig replica/target fields and corrected max_calls default docs (#48601, #63894).

Dependencies

This is the last Ray release to support the dependency versions listed below. For the 2.57.0 release, Ray will raise its minimum required versions for several core dependencies. If your environment pins any of these packages below the new minimums, plan to upgrade before moving to the next Ray release.

DependencyLast supported in this releaseNew minimum (next release)
numpy< 2.1>= 2.1
protobuf< 5.26>= 5.26
pandas< 2.2.3>= 2.2.3
pyarrow< 18.0.0>= 18.0.0
pydantic< 2.9>= 2.9
grpcio< 1.66>= 1.66
scipy(previously unpinned)>= 1.14.1

Most users on recent releases of these packages are unaffected

Thanks

Many thanks to all those who contributed to this release!

@khluu, @Krishnachaitanyakc, @leewyang, @ssam18, @christian-pinto, @Hyunoh-Yeo, @hango880623, @yuanzhuoyang1-bit, @marwan116, @aaronscalene, @tianyi-ge, @TriNguyen1208, @andrewsykim, @leonaIee, @OneSizeFitsQuorum, @AksodFlare, @limarkdcunha, @dayshah, @jade710, @pedrojeronim0, @dev-miro26, @DonPalius, @TimothySeah, @abrarsheikh, @nathon-lee, @prince8273, @Bye-legumes, @rayhhome, @Yunnglin, @spencer-p, @ryanaoleary, @herin049, @stephanie-wang, @liulehui, @slxswaa1993, @psaikaushik, @cyhapun, @tdat1465, @akyang-anyscale, @chenshi5012, @zzchun, @ryankert01, @EagleLo, @mzjp2, @justinvyu, @petern48, @YuangGao, @sjp611, @wingkitlee0, @AndySung320, @dstrodtman, @Accurio, @JasonLi1909, @peterjc123, @eicherseiji, @kyuds, @Chong-Li, @joaquinhuigomez, @IrvinFan, @XuQianJin-Stars, @AJamesPhillips, @harshit-anyscale, @claytonlin1110, @nhquana2, @Rruop, @win5923, @raulchen, @rohankmr414, @andrew-anyscale, @YoyinZyc, @doanxem99, @liujp, @dancingactor, @Evelynn-V, @SohamRajpure, @dragongu, @ShockYoungCHN, @ljstrnadiii, @WFY123wfy, @axreldable, @pseudo-rnd-thoughts, @H4ck2, @mvcb, @xinyuangui2, @edoakes, @ankushbbbr, @ps2181, @dominikkawka, @vinhuytran0810-cell, @siyuanfoundation, @MengjinYan, @Chronostasys, @jeffreywang88, @lalitc375, @sampan-s-nayak, @ArturNiederfahrenhorst, @srini047, @ChangyuWang, @adam360x, @Yicheng-Lu-llll, @thakoreh, @Aydin-ab, @manhld0206, @oab24413gmai, @ayushk7102, @tycao0338-cpu, @slfan1989, @myandpr, @rueian, @ans9868, @Ziy1-Tan, @elliot-barn, @as-jding, @daiping8, @robertnishihara, @MatthewCWeston, @Cursx, @laysfire, @karticam, @Mr-Neutr0n, @jjyao, @zent1n0, @aslonnie, @DenBuzz, @michael-pryor, @goanpeca, @nadongjun, @ronny-anyscale, @GoparapukethaN, @werkt, @carolynwang, @kamil-kaczmarek, @madiyar-wayve, @peterxcli, @pqkzzz, @Future-Outlier, @iamjustinhsu, @micah-yong-ai, @wxwmd, @owenowenisme, @sai-miduthuri, @lonexreb, @prassanna-ravishankar, @wanadzhar913, @kouroshHakha, @tobby168, @johntaylor-cell, @richabanker, @Kunchd, @vincere-mori, @vaishdho1, @wenhaozhao011-cmd, @bveeramani, @bittoby, @Phucvt123, @aschuh-hf, @RudrenduPaul, @xyuzh, @Sparks0219, @yancanmao, @eureka0928, @yuhuan130, @goutamvenkat-anyscale, @Zerui18, @machichima, @Lucas61000, @weimingdiit, @xi377266, @EmaFerrao, @awen11123, @Lawson-Darrow, @suppagoddo

View originalPermalink
How 2.56.0 went
2.55.1

Ray-2.55.1

Changed 1
  • Upgrade apt packages in slim base
Fixed 1
  • SSH connectivity issue in the ray-llm image
  • Fixes SSH connectivity issue in the ray-llm image (#62625 / #62718).
  • Upgrade apt packages in slim base (#62666 / #62717).
View originalPermalink
How 2.55.1 went
2.55.0

Ray-2.55.0

Added 16
  • Add DataSourceV2 API with scanner/reader framework, file listing, and file partitioning
  • Support GPU shuffle with rapidsmpf 26.2
  • Add Kafka datasink, migrate to confluent-kafka, support datetime offsets
  • Add Turbopuffer datasink
  • Add 2-phase commit checkpointing with trie recovery and load method
  • Integrate queue-based autoscaling policy with task consumers
Changed 8
  • Cache _map_task args, improve heap-based actor ranking, and improve actor pool map
  • Optimize concat tables and PyArrow schema hashing
  • Reduce default DownstreamCapacityBackpressurePolicy threshold to 50%
  • Improve reproducibility for random APIs
  • Port changes from lance-ray into Ray Data
  • Enable PyArrow compute-to-expression conversion for predicate pushdown
  • Upgrade to pyiceberg 0.11.0 and cap pandas to <3
  • Refactor logical operators to frozen dataclasses
Fixed 24
  • Fix RCE in Arrow extension type deserialization from Parquet
  • Fix StreamingSplitDataIterator.schema()
  • Fix ParquetDatasource handling of FileSystemFactory.inspect
  • Fix read_parquet file-extension filtering for versioned object-store URIs
  • Fix wide_schema_pipeline_tensors cloudpickle deserialization
  • Fix OpBufferQueue race condition
Removed 1
  • Remove legacy BlockList, locality_with_output, old callback API, and PyArrow 9.0 checks
Ray Data
🎉 New Features
  • Add DataSourceV2 API with scanner/reader framework, file listing, and file partitioning (#61220, #61615, #61997)
  • Support GPU shuffle with rapidsmpf 26.2 (#61371, #62062)
  • Add Kafka datasink, migrate to confluent-kafka, support datetime offsets (#60307, #61284, #60909)
  • Add Turbopuffer datasink (#58910)
  • Add 2-phase commit checkpointing with trie recovery and load method (#61821, #60951)
  • Queue-based autoscaling policy integrated with task consumers (#59548, #60851)
  • Enable autoscaling for GPU stages (#61130)
  • Expressions: add random(), uuid(), cast, and map namespace support (#59656, #60695, #59879)
  • Add support for Arrow native fixed-shape tensor type (#56284)
  • Support writing tensors to tfrecords (#60859)
  • Add pathlib.Path support to read_* functions (#61126)
  • Add cudf as a batch_format (#61329)
  • Allow ActorPoolStrategy for read_datasource() via compute parameter (#59633)
  • Introduce ExecutionCache for streamlined caching (#60996)
  • Support strict=False mode for StreamingRepartition (#60295)
  • Port changes from lance-ray into Ray Data (#60497)
  • Enable PyArrow compute-to-expression conversion for predicate pushdown (#61617)
  • Add vLLM metrics export and Data LLM Grafana dashboard (#60385)
  • Include logical memory in resource manager scheduling decisions (#60774)
  • Add monotonically increasing ID support (#59290)
💫 Enhancements
  • Performance: cache _map_task args, heap-based actor ranking, actor pool map improvements (#61996, #62114, #61591)
  • Optimize concat tables and PyArrow schema hashing (#61315, #62108)
  • Reduce default DownstreamCapacityBackpressurePolicy threshold to 50% (#61890)
  • Improve reproducibility for random APIs (#59662)
  • Clamp batch size to fall within C++ 32-bit int range (#62242)
  • Account for external consumer object store usage in resource manager budget (#62117)
  • Make get_parquet_dataset configurable in number of fragments to scan (#61670)
  • Consolidate schema inference and make all preprocessors implement SerializablePreprocessorBase (#61213, #61341)
  • Disable hanging issue detection by default (#62405)
  • Make execution callback dataflow explicit to prevent state leakage (#61405)
  • Log DataContext in JSON format at execution start for traceability (#61150, #61428)
  • Autoscaler: configurable traceback, Prometheus gauges, relaxed constraints (#62210, #62209, #61917, #61385)
  • Add metrics for task scheduling time, output backpressure, and logical memory (#61192, #61007, #61436)
  • Prevent operators from dominating entire shared object store budget (#61605)
  • Eliminate generators to avoid intermediate state pinning (#60598)
  • Default log encoding to UTF-8 on Windows (#61143)
  • Remove legacy BlockList, locality_with_output, old callback API, PyArrow 9.0 checks (#60575, #61044, #62055, #61483)
  • Upgrade to pyiceberg 0.11.0; cap pandas to <3 (#61062, #60406)
  • Refactor logical operators to frozen dataclasses (#61059, #61308, #61348, #61349, #61351, #61364, #61481)
  • Prevent aggregator head node scheduling (#61288)
  • Add error for local:// paths with a zero-resource head node (#60709)
🔨 Fixes
  • Fix RCE in Arrow extension type deserialization from Parquet (#62056)
  • Fix StreamingSplitDataIterator.schema() (#62057)
  • Fix ParquetDatasource handling of FileSystemFactory.inspect (#62065)
  • Fix read_parquet file-extension filtering for versioned object-store URIs (#61376)
  • Fix wide_schema_pipeline_tensors cloudpickle deserialization (#62149)
  • Fix OpBufferQueue race condition (#60828)
  • Fix scheduling metrics computation (#62031)
  • Fix OneHotEncoder max_categories to use global top-k instead of per-partition (#60790)
  • Fix ReservationOpResourceAllocator resource borrowing for ActorPoolMapOperator (#60882)
  • Fix DatabricksUCDatasource schema() shadowing by schema string attribute (#61282)
  • Fix AliasExpr structural equality to respect rename flag (#60711)
  • Fix _align_struct_fields failure with unaligned scalar fields (#58364)
  • Fix min_scheduling_resources fallback to incremental_resource_usage (#60997)
  • Fix output backpressure unblocking sequence for terminal ops (#60798)
  • Fix multi-input operator object store memory attribution (#61208)
  • Fix reference cycle by moving to module scope (#61934)
  • Fix autoscaler logging: reduce verbose output and move traceback to debug (#61989, #62126)
  • Fix double counting ref_bundle + input_files (#61774)
  • Replace on_exit hook with __ray_shutdown__ to fix UDF cleanup race (#61700)
  • Prevent Limit from getting pushed past map_groups (#60881)
  • Propagate schema in empty _shuffle_block to fix ColumnNotFound in chained left joins (#61507)
  • Fix unclear metadata warning and incorrect operator name logging (#61380)
  • Clamp rolling utilization averages to zero (#61543)
  • Fix floating point errors in TimeWindowAverageCalculator (#61580)
  • Remove default task-level timeout and clamp end_offset in Kafka datasource (#61476)
  • Avoid redundant reads in train_test_split (#60274)
  • Return None when no outputs have been produced (#62029)
  • Replace bare raise with TypeError in string concatenation (#60795)
📖 Documentation
  • Add job-level checkpointing documentation (#60921)
  • Update exclude_resources docs for Train autoscaling changes (#61990)
  • Add locality_with_output migration instructions (#61151)
  • Document max_tasks_in_flight_per_actor vs max_concurrent_batches (#60477)
  • Add missing MOD operation docs; improve ray.data.Datasource docs (#60803, #59654)
  • Add polars usage instructions (#60029)
Ray Serve
🎉 New Features:
  • Added end-to-end gRPC client and bidirectional streaming support, including public APIs, proxy handling, proto updates, and developer docs, so Serve apps can handle streaming workloads natively instead of building custom transport layers. (#60767, #60768, #60769, #60770, #60771)
  • Introduced HAProxy-based serving with fallback proxy support and load-balancer tunables, giving operators a higher-throughput ingress path and more control over traffic behavior in production. (#60586, #61180, #61271, #61468, #61988)
  • Added queue-based autoscaling for async inference and Taskiq-backed workloads, so scaling decisions can account for both HTTP in-flight load and queued tasks. (#59548, #60851, #60977, #61008)
  • Rolled out gang scheduling support across validation, core scheduling, fault tolerance, downscaling, autoscaling, rolling updates, and migration, enabling coordinated multi-replica placement for tightly coupled workloads. (#60944, #61205, #61206, #61207, #61215, #61467, #61216, #61659)
  • Introduced deployment-scoped actors with config/schema, lifecycle management, public API, and controller health checks, making it easier to run durable per-deployment sidecar-like logic inside Serve. (#61639, #61648, #61664, #61833, #62161)
💫 Enhancements:
  • Added first-class tracing support for Serve, including inter-deployment gRPC propagation and richer streaming-path attributes, improving end-to-end observability across distributed request flows. (#61230, #61089, #61451)
  • Expanded operational metrics with replica utilization, richer error labeling, and client IP logging in access logs, helping teams diagnose bottlenecks and user-impacting issues faster. (#60758, #61092, #60967)
  • Improved autoscaling extensibility with class-based policies and policy_kwargs, so advanced users can package reusable autoscaling logic without custom forks. (#60964)
  • Reduced controller overhead with broad algorithmic improvements (indexing, cache reuse, and avoiding repeated per-tick work), which improves scalability as deployment and replica counts grow. (#60810, #60829, #60830, #60838, #60842, #60843, #60844, #60832, #60806)
  • Improved throughput-oriented operation controls by adding environment-based tuning and explicit throughput optimization logging, making performance behavior easier to configure and audit. (#60757, #62146)
  • Upgraded Serve internals to Pydantic v2 and refined time-series aggregation behavior for more predictable metric accuracy under high load. (#61061, #61403)
🔨 Fixes:
  • Fixed a direct-ingress shutdown bug where replicas could hang indefinitely while draining stuck requests, ensuring bounded shutdown behavior in failure scenarios. (#60754)
  • Fixed HAProxy reliability issues, including config race conditions, draining guards, and platform compatibility edge cases, improving stability in production rollouts. (#61120, #60955)
  • Fixed autoscaling correctness issues that could cause runaway scaling or delayed reactions, including feedback-loop regressions, streaming scale-down behavior, and wall-clock delay handling. (#61731, #61920, #62331, #61844, #60613)
  • Fixed high-percentile latency regression in request routing and queue-length accounting, reducing tail-latency spikes under load. (#61755)
  • Fixed replica-state and health-state edge cases during migration and ingress transitions, preventing false errors and unhealthy/healthy misreporting. (#60365, #61818, #62213)
  • Fixed chained upstream actor-failure handling so request failures are attributed correctly and no longer hang when upstream deployments die mid-chain. (#61758, #62147)
  • Fixed HTTP status classification for client disconnects after successful responses, improving accuracy of error-rate monitoring and alerting. (#61396)
📖 Documentation:
  • Added AsyncInferenceAutoscalingPolicy documentation and clarified Serve performance guidance for HAProxy and inter-deployment gRPC use cases. (#61086, #61386)
  • Updated scheduling and configuration docs, including replica scheduling guidance and a catalog of Serve environment variables, so operators can tune deployments with less guesswork. (#60922, #60807)
  • Clarified multiplexing and async behavior docs (including model pre-warming constraints and request-cancel semantics) to prevent common integration mistakes. (#61842, #62280)
🏗 Architecture refactoring:
  • Refactored deployment-state execution to skip unnecessary steady-state per-tick work, lowering control-loop churn and creating cleaner hooks for future scheduling logic. (#60840)
  • Moved autoscaling metric aggregation into Cython-backed paths and added focused controller benchmarking, giving a stronger performance baseline for future Serve controller changes. (#58892, #61368)
  • Simplified internal structure by migrating shared internals away from private modules and consolidating replica abstractions, reducing coupling and maintenance complexity. (#60849, #61363, #60198)
Ray Train
🎉 New Features
  • Elastic training: core capability, user guide, release tests, multi-host TPU, telemetry (#60721, #61115, #61133, #61299, #61267)
  • Add HF TRL (Transformer Reinforcement Learning) example (#61627)
  • Add Tensor Parallel templates for DeepSpeed AutoTP and DTensor (#60160, #60158)
  • Add status attribute to ReportedCheckpoint (#61684)
  • Richer Train run metadata (#59186)
  • Add timers for Train worker initialization (#60870)
  • Configure torchft environment (#61156)
💫 Enhancements
  • Register training resources with AutoscalingCoordinator in FixedScalingPolicy (#61703)
  • Decouple datasets field from TrainRunContext (#61953)
  • Log warning for checkpoint_upload_fn when slow (#61720)
  • Fix StateManagerCallback to accept datasets explicitly (#62042)
  • Make train run abortable during before_controller_shutdown (#61816)
  • Graceful abort catches all RayActorError (#61375)
  • Refactor checkpoint and sync_actor to use wait_with_logging (#61063)
  • Unwrap UserExceptionWithTraceback in WorkerGroupError.worker_failures (#61153)
🔨 Fixes
  • Fix v2 PlacementGroupCleaner zombie actor (#61756)
  • Fix checkpoint paths for multinode run (#61471)
  • Abort cancels validation tasks with deterministic resumption (#61510)
  • Fix deepspeed finetune release test (#61266)
📖 Documentation
  • Add section on async validation with experiment tracking (#62104)
  • Add section on when to use async validation (#61702)
Ray Tune
💫 Enhancements
  • Remove deprecated Logger interface and logger_creator (#61181)
🔨 Fixes
  • Fix PBT trial order when NaN values are present (#57160)
Ray LLM
🎉 New Features
  • Replace PDProxyServer with decode-as-orchestrator PD architecture (#62076)
  • Introduce DP group fault tolerance for WideEP deployments (#61480)
  • SGLang engine: streaming chat/completions, tokenize/detokenize, embeddings, multi-GPU TP/PP (#61236, #61446, #61159, #61201, #62221)
  • Add bundle_per_worker config for simpler placement group setup (#59903)
  • Separate Data and Serve LLM dashboards with improved panel visibility (#61037, #62069)
💫 Enhancements
  • Promote Data LLM and Serve LLM APIs to beta (#61249, #62054, #62223)
  • Upgrade vLLM to 0.16.0, 0.17.0, and 0.18.0 (#61389, #61598, #61952)
  • Upgrade NIXL to v1.0.0 and fix tensor transport issues (#61991)
  • Unify duplicated PlacementGroup config schemes (#62241)
  • Decouple Serve LLM ingress from vLLM protocol models (#61931)
  • Set download task num_cpus=0 to reduce contention on low-CPU machines (#61191)
  • SGLangServer cleanup and replace format_messages_to_prompt with _build_chat_messages (#61117, #61372)
🔨 Fixes
  • Fix duplicate data: [DONE] in streaming SSE responses (#62246)
  • Fix enable_log_requests=False not forwarded to vLLM AsyncLLM (#60824)
  • Fix OpenAiIngress scale-to-zero when all models set min_replicas=0 (#60836)
  • Handle missing state attributes from vLLM's task-conditional init_app_state (#60812)
  • Fix NIXL side channel host for cross-node P/D disaggregation (#60817)
  • Fix trust_remote_code download (#60344)
  • Avoid deprecated TRANSFORMERS_CACHE; treat HuggingFace config load failure as non-fatal (#60854)
  • Fix sequential batch processing in SGLangServer (#61189)
📖 Documentation
  • Update data parallel attention documentation (#61706)
  • Add custom tokenizer example (#61098)
  • Add C/C++ binaries incompatibility workaround (#62110)
Ray RLlib
💫 Enhancements
  • Connector/batching optimizations: ndarray fast paths, direct env step pipeline, batch reuse (#61320, #61255, #61256, #61259, #61144)
  • Unify default encoders for all algorithms (#60302)
  • Toggle eval/train mode in TorchRLModule forward passes (#61985)
  • Clean up offline prelearner and unit testing (#60632)
  • Remove duplicate assignments in AlgorithmConfig (#61233)
  • Remove legacy RLlib release tests (#59288)
  • Add APPO example with Footsies environment (#59006)
🔨 Fixes
  • Support custom eval functions returning zero eval_results, env_steps, or agent_steps (#61563)
  • Fix PrioritizedEpisodeReplayBuffer bug (#60065)
  • Fix missing LayerNorm in RLModuleSpec (#61025)
  • Fix evaluation in parallel to training (#60777)
  • Fix MultiAgentEpisode.env_t_to_agent_t (#60319)
  • Fix default metric during eval (#61590)
  • Fix incorrect log value of environment steps sampled/trained (#56599)
  • Prevent torch_learner.py crash under parameter-freezing edge cases (#62158)
Ray Core
🎉 New Features
  • Resource isolation: pressure-based memory monitor, time-based killing, cgroup constraints (#61361, #61323, #61097, #61210, #61297, #59365, #59368, #60752)
  • IPPR: add ResizeRayletResourceInstances to GCS/Python client, schema/status models, KubeRay provider (#61654, #61666, #61803, #61814)
  • Add PlatformEvent proto and placement group events in one-event framework (#61701, #60449)
  • Add Nvidia B300 support (#60753)
  • Add UV support for Ray Client mode (#60868)
  • Add Percentile metric type backed by quadratic histogram (#61148)
  • Expose fallback_strategy in TaskInfoEntry and ActorTableData (#60659)
  • Add submission job proto changes (#60857)
  • Add TPU util for ready multi-host slice count; simplify elastic TPU scaling (#61300, #62141)
  • Introduce per-node level temp-dir (#60761)
  • Make ray.put() generic: put(value: R) -> ObjectRef[R] (#60995)
  • Add Python 3.14 support for recursion limit handling (#58459)
💫 Enhancements
  • Upgrade cloudpickle to 3.1.2, gRPC to v1.58.0, protobuf to 3.20.3 (#60317, #61499, #60736)
  • Multiple gRPC connections for improved object transfer throughput, enabled by default (#61121, #61440)
  • Improve pg.ready() performance via async GCS RPC; fix deadlocks (#60657, #62086)
  • RDT: non-torch transfers, PyTorch storage caching, metadata caching, NIXL agent reuse (#61081, #60999, #60689, #60602)
  • Cache ActorHandle.__hash__ and fix __eq__ correctness (#61638)
  • Cache find_gcs_addresses (#61065)
  • Optimize worker listener thread (#61353)
  • Eliminate Python GCS client from state manager get_all_node_info (#61232)
  • Loosen restriction on worker thread count (#62279)
  • Sequence in-order actor tasks per concurrency group instead of globally (#61082)
  • Prioritize killing workers that occupy large memory in OOM killer (#60330)
  • Cap exponential backoff attempt number to prevent integer overflow (#61003)
  • Replace deprecated threading APIs (getName/setDaemon) (#62153)
  • Improve error handling for @ray.remote/@ray.method with num_returns (#59286)
  • Convert StopIteration on non-generator functions to RuntimeError (#60521)
  • Surface warnings for scheduling rate limits slowing task ramp-up (#61004)
  • Periodically reload service account tokens; use AuthenticationValidator in sync server (#60778, #60779)
  • Remove support for local_mode (#60647)
  • Allow matching worker_process_setup_hook on re-entry (#61473)
  • Reduce default event aggregator buffer size to avoid OOM (#60826)
  • Suppress autoscaler action logs for read-only provider (#61732)
  • Lazy subscription to node changes on non-driver workers (#61118)
  • Tighten export symbol allowlists to prevent non-ray symbol leakage (#61298)
  • Approximate USS from memory_info instead of calling memory_full_info (#60000)
  • Dedicated IO context for NodeManager and InternalKVManager (#61002)
  • Print gRPC peer address on GCS HandleUnregisterNode/HandleDrainNode (#62226, #62112)
🔨 Fixes
  • Fix task stuck when pop worker repeatedly fails (#60104)
  • Fix bool env var parsing for RAY_CGRAPH_overlap_gpu_communication (#61421)
  • Fix negative RUNNING task metric (#62070)
  • Fix OnNodeDead to destroy all owned actors when owner node dies (#60669)
  • Fix actor task queue blocked after cancelling head task (#60850)
  • Fix TASK_PROFILE_EVENT aggregation for multiple phases (#61559)
  • Fix double-counting in WorkerPool::WarnAboutSize() (#61246)
  • Fix TaskLifecycleEvent.node_id using emitting node instead of executor (#61478)
  • Fix publisher_id type mismatch in GCS pubsub (#61518)
  • Fix dataclass.asdict with None in dashboard list_jobs API (#61033)
  • Fix dashboard node head API dead node cache (#61185)
  • Fix dashboard event agent for events without HTTP scheme (#60811)
  • Fix Ray Actor typing for async methods (#60682)
  • Fix autoscaler retry during k8s exceptions (#60658)
  • Fix ReadOnlyProvider.terminate() signature mismatch (#62251)
  • Fix set/get env races in OtlpGrpcMetricExporterOptions and metrics exporter init (#61034, #61281)
  • Clean up node processes on version mismatch during ray start (#61837)
  • Retry node discovery upon ray.init() (#61029)
  • Ensure Node._node_labels initializes regardless of connect_only (#61618)
  • Avoid reentrant locking in worker context (#61925)
  • Java Local Mode type confusion with multiple Actor types (#61858)
  • Recover from WrongClusterID on head restart (#60860)
  • Fix Azure: do not delete shared MSI when tearing down clusters (#61811)
  • Configure TLS/mTLS for OpenTelemetry OTLP gRPC exporter (#60745)
Dashboard
🎉 New Features
  • Add Queued Blocks metric to Ray Data Dashboard (#61716)
  • Add Logical Memory Usage panel (#60772)
  • Add running tasks by node, update Ray Data active tasks panel (#61641)
  • Add NIXL KV transfer metrics to Serve LLM Grafana dashboard (#60819)
  • Add GPU power and temperature graphs (#60942)
  • Support log links in Grafana dashboard (#60896)
  • Support autoscaler v2 for cluster-level node metrics (#60504)
  • Add middleware proxy for history server (#61295)
  • Forward **kwargs through JobSubmissionClient to cluster info resolvers (#61902)
Ray Wheels and Images
  • Upgrade Bazel from 6.5.0 to 7.5.0 (#61601)
  • Bump torch to 2.7.0+cu128 and torchvision (#61328)
  • Upgrade jackson-databind 2.16.1 -> 2.18.6 (GHSA-72hv-8253-57qq) (#61808)
  • Upgrade CI containers from Ubuntu 20.04 to 22.04; Forge from clang-12 to clang-14 (#61533, #61662)
  • Add CUDA 13 images for ray-llm/core-gpu and release test configs (#61497, #61637)
  • Add py312+CUDA 12.9 and py312+CUDA 13 depsets for Ray LLM (#61116, #61149, #61496)
  • Add TPU Docker images to CI build and publish pipeline (#61172, #61173, #61174, #61175)
  • Add Python 3.14 to Linux wheel verification (#62127)
  • Windows base build fix (#62415)
  • Add build-image.sh and CLI for local Docker image builder (#61042, #61338)
  • Support repeated execution of setup-dev.py (#61357)
Documentation
  • Add Ray History Server user guide (#62030)
  • Add RAY_BACKEND_LOG_JSON environment variable documentation (#59962)
  • Add user guide for Ray token auth with Kubernetes RBAC (#61644)
  • Add warning about token authentication in untrusted networks (#62248)
  • KubeRay: prerunning deadline docs, version 1.6.0 refs, GKE/cgroups cross-refs (#61552, #61865, #62140)
  • Use RayCluster name as ServiceAccount name for RBAC authentication (#61785)
  • Remove outdated note on labels in local RayCluster (#61719)
  • List TPUs as fully tested/supported (#61634)
  • Restructure development.rst with image build, wheel paths, and cross-references (#61500, #61501, #61504, #61596)
  • Remove incorrect warning for placement groups (#61176)
  • Add multi-agent A2A example (#61193)
  • Add object spill internal doc (#60930)
Thanks

Many thanks to all those who contributed to this release!

@justinyeh1995, @marwan116, @jddqd, @MkDev11, @mjd3, @XuQianJin-Stars, @elliot-barn, @DeborahOlaboye, @aaronscalene, @rayhhome, @ayushk7102, @bj-son, @nadongjun, @Daraan, @xinyuangui2, @Sparks0219, @justinvyu, @suppagoddo, @akyang-anyscale, @ambicuity, @Aydin-ab, @mickeyyliu, @MatthewCWeston, @vaishdho1, @jinbum-kim, @eicherseiji, @kouroshHakha, @karticam, @JasonLi1909, @ArturNiederfahrenhorst, @moktamd, @nrghosh, @dragongu, @andrewsykim, @mgchoi239, @ruoliu2, @harshit-anyscale, @Chong-Li, @pseudo-rnd-thoughts, @lee1258561, @khluu, @daiping8, @SolitaryThinker, @jonalee99, @yancanmao, @SohamRajpure, @rueian, @VitaliyEroshin, @Future-Outlier, @nehiljain, @JiangJiaWei1103, @Yicheng-Lu-llll, @KaisennHu, @jeffreywang-anyscale, @aslonnie, @alanwguo, @machichima, @limarkdcunha, @codope, @sampan-s-nayak, @kyuds, @thjung123, @abrarsheikh, @wingkitlee0, @preneond, @7ckingBest, @slfan1989, @win5923, @kaori-seasons, @israbbani, @andrew-anyscale, @zestze, @owenowenisme, @edoakes, @laysfire, @pushpavanthar, @tohtana, @leewyang, @liulehui, @Hyunoh-Yeo, @eureka0928, @ryanaoleary, @947132885, @Kunchd, @simonsays1980, @dpj135, @bveeramani, @raulchen, @Partth101, @dubin555, @richabanker, @bittoby, @sai-miduthuri, @RedGrey1993, @kamil-kaczmarek, @TimothySeah, @myandpr, @rishic3, @justinrmiller, @HassamSheikh, @chiayi, @petern48, @carolynwang, @MrKWatkins, @400Ping, @summaryzb, @peterxcli, @RocMarshal, @coqian, @yuhuan130, @ryankert01, @dayshah, @Anarion-zuo, @ZacAttack, @weimingdiit, @iamjustinhsu, @matthewdeng, @goutamvenkat-anyscale, @KeeProMise, @Sanskarzz, @yuchen-ecnu, @praneethkaturi, @rajeshg007, @ankur-anyscale, @Art0white, @xyuzh, @dancingactor, @MengjinYan, @dengkliu92, @alexeykudinkin

View originalPermalink
How 2.55.0 went
2.54.1

Ray-2.54.1

Fixed 1
  • Disable hanging issue detection to prevent blocking calls to the Ray State API that could cause the scheduling loop to block and severely degrade pipeline performance
Ray Data

🔨 Fixes

  • Disable hanging issue detection (#61895) — The hanging issue detector was making blocking calls to the Ray State API, which could cause the scheduling loop to block and severely degrade pipeline performance. The detector is disabled in this patch release until the blocking calls are fixed.
View originalPermalink
How 2.54.1 went
2.54.0

Ray-2.54.0

Added 12
  • Add checkpointing support to Ray Data
  • Add list operations, fixed-size arrays, string padding, logarithmic, trigonometric, arithmetic, and rounding to Compute Expressions
  • Add sql_params support to read_sql
  • Add AsList aggregation
  • Support CountDistinct aggregate
  • Add credential provider abstraction for Databricks UC datasource
Changed 7
  • Improve numerical stability in scalers by handling near-zero values
  • Update to PyArrow 23
  • Demote Sort from requiring preserve_order
  • Use Arrow IPC for Arrow Schema serialization and deserialization
  • Enable and tune DownstreamCapacityBackpressurePolicy
  • Decouple Ray Train from Ray Data by removing top-level ray.data imports
  • Move extension types to ray.data
Fixed 1
  • Fuse MapBatches even if they modify the row count
Removed 1
  • Remove deprecated TENSOR_COLUMN_NAME constant
Ray Data

🎉 New Features

  • Add checkpointing support to Ray Data (#59409)
  • Compute Expressions: list operations (#59346), fixed-size arrays (#58741), string padding (#59552), logarithmic (#59549), trigonometric (#59712), arithmetic (#59678), and rounding (#59295)
  • Add sql_params support to read_sql (#60030)
  • Add AsList aggregation (#59920)
  • Support CountDistinct aggregate (#59030)
  • Add credential provider abstraction for Databricks UC datasource (#60457)
  • Support callable classes for UDFExpr (#56725)
  • Add autoscaler metrics to Data Dashboard (#60472)
  • Add optional filesystem parameter to download expression (#60677)
  • Allow specifying partitioning style or flavor in write_parquet() (#59102)
  • New cluster autoscaler enabled by default (#60474)

💫 Enhancements

  • Improve numerical stability in scalers by handling near-zero values (#60488)
  • Export dataset operator output schema to event logger (#60086)
  • Iceberg: add retry policy for Storage + Catalog writes (#60620)
  • Iceberg: remove calls to Catalog Table in write tasks (#60476)
  • Expose logical operators and rules via package exports (#60297, #60296)
  • Demote Sort from requiring preserve_order (#60555)
  • Improve appearance of repr(dataset) (#59631)
  • Allow configuring DefaultClusterAutoscalerV2 thresholds via env vars (#60133)
  • Use Arrow IPC for Arrow Schema serialization/deserialization (#60195)
  • Store _source_paths in object store to prevent excessive spilling during read task serialization (#59999)
  • Add more shuffle fusion rules (#59985)
  • Enable and tune DownstreamCapacityBackpressurePolicy (#59753)
  • Enable concurrency cap backpressure with tuning (#59392)
  • Set default actor pool scale up threshold to 1.75 (#59512)
  • Don't downscale actors if the operator hasn't received any inputs (#59883)
  • Don't reserve GPU budget for non-GPU tasks (#59789)
  • Only return selected data columns in hive-partitioned Parquet files (#60236)
  • Ordered + FIFO bundle queue (#60228)
  • Add node_id, pid, attempt number for hanging tasks (#59793)
  • Revise resource allocator task scheduling to factor in pending task outputs (#60639)
  • Track block serialization time (#60574)
  • Use metrics from OpRuntimeMetrics for progress (#60304)
  • Tabular form for streaming executor op metrics (#59774)
  • Info-log cluster scale-up decisions (#60357)
  • Use plain mode instead of grid mode for OpMetrics logging (#59907)
  • Progress reporting refactors (#59350, #59629, #59880)
  • Remove deprecated TENSOR_COLUMN_NAME constant (#60573)
  • Remove meta_provider parameter (#60379)
  • Decouple Ray Train from Ray Data by removing top-level ray.data imports (#60292)
  • Move extension types to ray.data (#59420)
  • Skip upscaling validation warning for fixed-size actor pools (#60569)
  • Make StatefulShuffleAggregation.finalize allow incremental streaming (#59972)
  • Revisit OutputSplitter semantics to avoid unnecessary buffer accumulation (#60237)
  • Update to PyArrow 23 (#60739, #59489)
  • Add BackpressurePolicy to streaming executor progress bar (#59637)
  • Support Arrow-based transformations for preprocessors (#59810)
  • StandardScaler preprocessor with Arrow format (#59906)
  • OneHotEncoder with Arrow format (#59890)

🔨 Fixes

  • Fuse MapBatches even if they modify the row count (#60756)
  • Don't push limit past map_batches by default (#60448)
  • Fix wrong type hint of other dataset in zip and union (#60653)
  • Fix ActorPoolMapOperator to guarantee dispatch of all given inputs (#60763)
  • Fix ArrowInvalid error when backfilling missing fields from map tasks (#60643)
  • Fix attribute error in UnionOperator.clear_internal_output_queue (#60538)
  • Fix DefaultClusterAutoscalerV2 raising KeyError: 'CPU' (#60208)
  • Fix ReorderingBundleQueue handling of empty output sequences (#60470)
  • Fix task completion time without backpressure grafana panel metric name (#60481)
  • Fix Union operator blocking when preserve_order is set (#59922)
  • Fix autoscaler requesting empty resources instead of previous allocation when not scaling up (#60321)
  • Fix autoscaler not respecting user-configured resource limits (#60283)
  • Fix DefaultAutoscalerV2 not scaling nodes from zero (#59896)
  • Fix Iceberg warning message (#60044)
  • Fix Parquet datasource path column support (#60046)
  • Fix ProgressBar with use_ray_tqdm (#59996)
  • Fix stale stats on refit for preprocessors (#60031)
  • Fix StreamingRepartition hang with empty upstream results (#59848)
  • Fix operator fusion bug to preserve UDF modifying row count (#59513)
  • Fix AutoscalingCoordinator double-allocating resources for multiple datasets (#59740)
  • Fix DownstreamCapacityBackpressurePolicy issues (#59990)
  • Fix AutoscalingCoordinator crash when requesting 0 GPUs on CPU-only cluster (#59514)
  • Fix TensorArray to Arrow tensor conversion (#59449)
  • Fix resource allocator not respecting max resource requirement (#59412)
  • Fix GPU autoscaling when max_actors is set (#59632)
  • Fix checkpoint filter PyArrow zero-copy conversion error (#59839)
  • Restore class aliases to fix deserialization of existing datasets (#59828, #59818)
  • Fix DataContext deserialization issue with StatsActor (#59471)

📖 Documentation

  • Sort references in "Loading data and Saving data" pages (#60084)
  • Fix inconsistent heading levels in "How to write tests" guide (#60706)
  • Clarify resource_limits refers to logical resources (#60109)
  • Update read_lance doc (#59673)
  • Fix broken link in read_unity_catalog docstring (#59745)
  • Fix bug in docs for enable_true_multi_threading (#60515)
  • Add more education around transformations (#59415)
Ray Serve

🎉 New Features

  • Queue-based autoscaling for TaskConsumer deployments (phase 1). Introduces a QueueMonitor actor that queries message brokers (Redis, RabbitMQ) for queue length, enabling TaskConsumer scaling based on pending tasks rather than HTTP load. (#59430)
  • Default autoscaling parameters for custom policies. New apply_autoscaling_config decorator allows custom autoscaling policies to automatically benefit from Ray Serve's standard parameters (delays, scaling factors, bounds) without reimplementation. (#58857)
  • label_selector and bundle_label_selector in Serve deployments. Deployments can now specify node label selectors for scheduling and bundle-level label selectors for placement groups, useful for targeting specific hardware (e.g., TPU topologies). (#57694)
  • Deployment-level autoscaling observability. The controller now emits a structured JSON serve_autoscaling_snapshot log per autoscaling-enabled deployment each control-loop tick, with an event summarizer that reduces duplicate logs. (#56225)
  • Batching with multiplexing support. Batching now guarantees each batch contains requests for the same multiplexed model, enabling correct multiplexed model serving with @serve.batch. (#59334)

💫 Enhancements

  • Replica routing data structure optimizations. O(1) pending-request lookups, cached replica lists, lazy cleanup, optimized retry insertion, and metrics throttling yield significant routing performance improvements. (#60139)
  • New operational metrics suite. Added long-poll metrics, replica lifecycle metrics, app/deployment status metrics, proxy health and request routing delay metrics, event loop utilization metrics, and controller health metrics — greatly improving monitoring and debugging capabilities. (#59246, #59235, #59244, #59238, #59535, #60473)
  • Autoscaling config validation. lookback_period_s must now be greater than metrics_interval_s, preventing silent misconfigurations. (#59456)
  • Cross-version root_path support for uvicorn. root_path now works correctly across all uvicorn versions, including >=0.26.0 which changed how root_path is processed. (#57555)
  • Preserve user-set gRPC status codes. When deployments raise exceptions after setting a gRPC status code on the context, that code is now correctly propagated to the client instead of being overwritten with INTERNAL. Error messages are truncated to 4 KB to respect HTTP/2 trailer limits. (#60482)
  • Replica ThreadPoolExecutor capped to num_cpus. The user-code event loop's default ThreadPoolExecutor is now limited to the deployment's num_cpus, preventing oversubscription when using asyncio.to_thread. (#60271)
  • Generic actor registration API for shutdown cleanup. Deployments can register auxiliary actors (e.g., PrefixTreeActor) with the controller for automatic cleanup on serve.shutdown(), eliminating cross-library import dependencies. (#60067)
  • Deployment config logging in controller. Deployment configurations are now logged in the controller for easier debugging and auditability. (#59222, #59501)
  • Pydantic v1 deprecation warning. A FutureWarning is now emitted at ray.init() when Pydantic v1 is detected, as support will be removed in Ray 2.56. (#59703)

🔨 Fixes

  • Fixed tracing signature mismatch across processes. Resolved TypeError: got an unexpected keyword argument _ray_trace_ctx when calling actors from a different process than the one that created them (e.g., serve start + dashboard interaction). (#59634)
  • Fixed ingress deployment name collision. Ingress deployment name was incorrectly modified when a child deployment shared the same name, causing routing failures. (#59577)
  • Fixed downstream deployment over-provisioning. Downstream deployments no longer over-provision replicas when receiving DeploymentResponse objects. (#60747)
  • Fixed replicas hanging forever during draining. Replicas no longer hang indefinitely when requests are stuck during the draining phase. (#60788)
  • Fixed TaskProcessorAdapter shutdown during rolling updates. Removed shutdown() from __del__, which was broadcasting a kill signal to all Celery workers instead of just the local one, breaking rolling updates. (#59713)
  • Fixed Windows test failures. Resolved tracing file handle cleanup on Windows, skipped incompatible gRPC and tracing tests on Windows. (#60078, #60356, #60393, #59771)
  • Fixed flaky tests. Addressed gauge throttling race in test_router_queue_len_metric, ensured proxy replica queue cache is populated before GCS failure tests, and added metrics server readiness checks. (#60333, #60466, #60468)
  • Fixed distilbert test segfault. Worked around a pyarrow/jemalloc crash triggered by specific import ordering of FastAPI, torch, and TensorFlow. (#60478)

📖 Documentation

  • Improved autoscaling documentation. Clarified the relationship between delays, metric push intervals, and the autoscaling control loop. (#59475)
  • New example: video analysis inference. End-to-end notebook demonstrating a Serve application for scene change detection, - tagging, and video description. (#59859)
  • New examples: model multiplexing and model composition. Published workload-based examples for forecasting with model multiplexing and recommendation systems with model composition. (#59166)
  • Model registry integration guide. Added documentation for integrating Serve with model registries (e.g., MLflow). (#59080)
  • Fixed broken documentation links. Resolved 404 errors for async inference, MLflow registry example, and LLM code examples. (#59917, #60071, #59520, #59521, #60181)
  • Fixed monitoring docs. Corrected target replicas metric emission to enable time-series comparison with actual replicas. (#59571)
  • Async inference template. Added an end-to-end template for building asynchronous inference applications with Ray Serve. (#58393, #59926)

🏗 Architecture refactoring

  • Environment variable cleanup (5-part series). Removed deprecated and redundant env vars (RAY_SERVE_DEFAULT_HTTP_HOST, RAY_SERVE_DEFAULT_HTTP_PORT, RAY_SERVE_DEFAULT_GRPC_PORT, RAY_SERVE_HTTP_KEEP_ALIVE_TIMEOUT_S, RAY_SERVE_REQUEST_PROCESSING_TIMEOUT_S, RAY_SERVE_ENABLE_JSON_LOGGING, RAY_SERVE_ALWAYS_RUN_PROXY_ON_HEAD_NODE), cleaned up legacy constant fallbacks, and added documentation for previously undocumented env vars (e.g., RAY_SERVE_CONTROLLER_MAX_CONCURRENCY, RAY_SERVE_ROOT_URL, proxy health check settings, and fault tolerance params). Users relying on removed env vars should migrate to the Serve config API (http_options, grpc_options, LoggingConfig). (#59470, #59619, #59647, #59963, #60093)
Ray Train

🎉 New Features

  • Add TPU multi-slice support to JaxTrainer (#58629)
  • Update async validation API (#59428)
  • Add a CallbackManager and guardrail some callback hooks (#60117)
  • Add inter-execution file shuffling for deterministic multi-epoch training (#59528)
  • Resume validations on driver restoration (#59270)

💫 Enhancements

  • Pass ray remote args to validation task (#60203)
  • Deprecate Predictor API (#60305)
  • Increase worker group start default timeout to 60s (#60376)
  • Unify PlacementGroup and SlicePlacementGroup interface in WorkerGroup (#60116)
  • Cleanup zombie RayTrainWorker actors (#59872)
  • Add usage telemetry for checkpointing and validation (#59490)
  • Validate that validation is called with a checkpoint (#60548)
  • Replace pg.ready() with pg.wait() in worker group (#60568)
  • Rename DatasetsSetupCallback to DatasetsCallback (#59423)
  • Update "Checkpoint Report Time" metric title to "Cumulative Checkpoint Report Time" (#58470)
  • Add training failed error back to failure policy log (#59957)
  • Decouple Ray Train from Ray Data by removing top-level imports (#60292)

🔨 Fixes

  • Add try-except for pg.wait() (#60743)
  • TrainController reraises AsyncioActorExit (#59461)

📖 Documentation

  • Add a JaxTrainer template (#59842)
  • Update Jax doc to include GPU and multi-slice TPU support (#60593)
  • Document checkpoint_upload_fn backend and cuda:nccl backend support (#60541)
  • Rename checkpoint_upload_func to checkpoint_upload_fn in docs (#60390)
  • Fix Ray Train workloads and PyTorch with ASHA templates (#60537)
  • Publish Ray Train workload example (#58936)
Ray Tune

🔨 Fixes

  • Avoid file deletion race by using unique tmp file names (#60556)
Ray LLM

🎉 New Features

  • Add /tokenize and /detokenize endpoints (#59787)
  • Add /collective_rpc endpoint for RLHF weight synchronization (#59529)
  • Add Control Plane API for Sleep/Wakeup (#59455)
  • Add Pause/Resume Control Plane API (#59523)
  • Add support for classification and scoring models (#59499)
  • Add pooling parameter (#59534)
  • Support vLLM structured outputs with backward-compat for guided_decoding (#59421)
  • Add CPU support to Ray Serve LLM (#58334)
  • Add should_continue_on_error support for ServeDeploymentStage (#59395)
  • Support configuring HttpRequestUDF resources (#60313)

💫 Enhancements

  • Upgrade vLLM to 0.15.0 (#60679)
  • Unify schema of success and failure rows (#60572)
  • Prefer uniproc executor over mp executor when world_size==1 (#60403)
  • Use compute instead of concurrency to specify ActorPool size (#59645)
  • Remove DataContext overrides in Ray Data LLM Processor (#60142)
  • Use numpy arrays for embeddings to avoid torch.Tensor serialization overhead (#59919)
  • Make PrefixCacheAwareRouter imbalance threshold less surprising (#59390)
  • Allow tokenized_prompt without prompt in vLLMEngineStage (#59801)
  • Avoid passing enums through fn_constructor_kwargs (#59806)
  • Refactor Control Plane endpoints into mixins (#59502)
  • Remove CUDA_VISIBLE_DEVICES deletion workaround (#60502)

🔨 Fixes

  • Fix nested dict to Namespace conversion in vLLM engine initialization (#60380)
  • Fix JSON non-serializable ndarray exception in http_request_stage (#60299)
  • Exit actor on EngineDeadError to enable recovery (#60145)
  • Fix NIXL port conflict in prefill-decode disaggregation test (#60057)

📖 Documentation

  • Batch inference docs reorg and update to reflect per-stage config refactor (#59214)
  • Add resiliency section and refine doc code (#60594)
  • Add video/audio examples for vLLMEngineProcessor (#59446)
  • Add SGLang integration example (#58366)
  • Remove inaccurate statement in docs (#60425)
Ray RLlib

🎉 New Features

  • Add TQC (Truncated Quantile Critics) algorithm implementation (#59808)
  • Add LR scheduling ability to BC and MARWIL (#59067)
  • RLlib and Ray Tune: Hyperparameter Optimisation example (#60182)

💫 Enhancements

  • 🔥 APPO improvements: learner pipeline performance improvements (#59544)
  • Improve stateful model training on offline data (#59345)
  • Create resource bundle per learner (#59620)
  • Improve env runner sampling by replacing recursive solution with iterative solution (#56082)
  • Improve IMPALA examples and premerge (#59927)
  • Remove MLAgents dependency (#59524)
  • Upgrade to gymnasium v1.2.2 (#59530)
  • Decrease log quantity for learning tests (#59005)
  • Update learner state warnings to the debug level (#60178)
  • Don't log np.nanmean warnings in EMA stats (#60408)

🔨 Fixes

  • Fix DQN RLModule forward methods to handle dict spaces (#60451)
  • Fix LearnerGroup.load_module_state() and mark as deprecated (#60354)
  • Fix static dimension issue in ONNX export of Torch attention models (#60102)
  • Fix Multi-Agent Episode concatenation for sequential environments (#59895)
  • Fix module episode returns metrics accumulation for shared module IDs (#60234)
  • Fix rollout fragment length calculation in AlgorithmConfig (#59438)
  • Fix checkpointable issues with cloud storages (#60440)
  • Update flatten_observations.py for nested spaces for ignored multi-agent (#59928)
Ray Core

🎉 New Features

  • Resource Isolation: unify config construction, add public docs, and expose cgroup_path in ray.init() (#59372, #60183, #60726)
  • Support tensor-level deduplication for NIXL (#60509)
  • Add CUDA IPC transport for RDT (#59838)
  • Register custom transport at runtime for RDT (#59255)
  • Support TPU v7x accelerator type for device discovery (#60338)
  • Introduce local port service discovery (#59613)
  • Cancel sync actor by checking is_canceled() (#58914)
  • Support labels for ray job submit --entrypoint-resource (#59735)
  • Add --ip option in ray attach (#59931)
  • Add bearer token support for remote URI downloads (#60050)
  • Support HTTP redirection download (#59384)
  • Add ray kill-actor --name/--namespace for force/graceful shutdown (#60258)

💫 Enhancements

  • Bound object spilling file size to avoid disk increase pressure (#60098)
  • Replace SHA-1 with SHA-256 for internal hash operations (#60242)
  • Use whitelist approach to block mutation requests from browser (#60526)
  • Pass authentication headers to WebSocket connections in tail_job_logs (#60346)
  • Add auth to Dashboard HTTP agent and client (#59891)
  • Use dedicated service account path for Ray auth tokens (#60409)
  • Update Kubernetes token auth verb to ray:write (#60411)
  • Replace RAY_AUTH_MODE=k8s with separate config for Kubernetes token auth (#59621)
  • Optimize token auth: use shared_ptr caching and avoid per-RPC construction (#59500)
  • Optimize OpenTelemetry metric recording calls (#59337)
  • Throttle infeasible resource warning (#59790)
  • Add default excludes for working_dir uploads (#59566)
  • Tell users why objects cannot be reconstructed (#59625)
  • Extend instance allocation timeout in autoscaler v2 (#60392)
  • Remove GCS centralized scheduling (#59979, #60121, #60188)
  • Demote stale sync message drop log to DEBUG in RaySyncer (#59616)
  • Migrate remaining std::unordered_map to absl::flat_hash_map (#59921)
  • Add missing fields to NodeDefinitionEvent proto (#60314)
  • Add actor and task event missing fields (#60287)
  • Add node id to the base event (#59242)
  • Add repr_name to actor_lifecycle_event (#59925)
  • Support ALL in exposable event config (#59878)
  • Support publishing events from aggregator to GCS (#55781)
  • Update the attempt number of actor creation task when actor restarts (#58877)
  • Unify node feasibility and availability checking for GPU fractions (#59278)
  • Update TPU utils for multi-slice compatibility (#59136)
  • Improve SubprocessModuleHandle.destroy_module() resource cleanup (#60172)
  • Support viewing PIDs for Dashboard and Runtime Env Agent (#58701)
  • Optimize autoscaler monitor by moving resource demand parsing outside loop (#59190)
  • Avoid GCS query for is_head in dashboard agent startup (#59378)
  • Skip reporter and event aggregator client creation in minimal mode (#59846)
  • Support out-of-order actors by extracting metadata when creating (RDT) (#59610)
  • Synchronize CUDA stream before registering for NIXL (#60072)
  • Atomically send/recv for two-sided ordering (RDT) (#60202)
  • Add get_session_name() to RuntimeContext (#59469)
  • Make MAX_APPLICATION_ERROR_LEN configurable via env var (#59543)
  • Preserve function signatures through Ray decorators (#60479)

🔨 Fixes

  • Fix idle_time_ms resetting for nodes not running tasks (#60581)
  • Fix task event loss during shutdown (#60247)
  • Filter bad subscriber messages from taking down GCS publisher (#60252)
  • Fix RAY_EXPERIMENTAL_NOSET_* environment variable parsing in accelerator managers (#60577)
  • Fix ray start --no-redirect-output crash (#60394)
  • Fix drain state propagation race condition (#59536)
  • Fix use-after-free race condition in OpenTelemetry gauge metric callback during shutdown (#60048)
  • Fix PSUTIL_PROCESS_ATTRS returning empty list on Windows (#60173)
  • Fix deadlock in garbage collection when holding lock (#60014)
  • Fix incorrect error handling in autoscaler for available_node_types on on-prem clusters (#60184)
  • Fix invalid status transitions in autoscaler v2 (#60412, #59550)
  • Fix GCS crash from race condition in MetricsAgentClient exporter initialization (#59611)
  • Fix tracing signature mismatch when calling actors from different processes (#59634)
  • Fix crash when killing actor handle from previous session (#59425)
  • Fix multiple deployment same name resolve (#59577)
  • Handle dual task errors with read-only args (#59507)
  • Handle exceptions raised by internal_ip() within StandardAutoscaler (#57279)
  • Fix uv_runtime_env_hook.py to pin worker Python version (#59768)
  • Fix STRICT_PACK placement groups ignoring bundle label selectors (#60170)
  • Fix logging bug when log value is an empty string (#59434)
  • Fix aggregator-to-GCS event conversion (#59783)
  • Raise error on tail log job error in newer Ray versions (#59506)
  • Fix num retries left message (#59829)
  • Fix psutil internal API usage in dashboard disk usage reporting (#59659)
  • Fix event exporter init ray check (#60073)
  • Prevent use-after-free error in core worker shutdown (#58435)
  • Fix task name inconsistency in RUNNING vs FINISHED metrics (#59893)
  • Fix symmetric_run using wrong condition to check GCS readiness (#59794)
  • Preserve Pydantic details when serialization fails (#59401)
  • Retry GCP project metadata updates on HTTP 412 errors (#60429)
  • Fix v1 autoscaler TypeError when using bundle_label_selectors (#59850)
  • Shorten SHA-256 hex with base32 to comply with GCP label limits (#60722)

📖 Documentation

  • Add initial user guide for Ray resource isolation with writable cgroups (#59051)
  • Add token authentication internals documentation (#59299)
  • Update metric exporter docs (#59874)
  • Add internal documentation for Port Service Discovery (#59844)
  • Update misleading Ray job diagram (#59940)
  • Add debugging logs related to pinned argument size limit (#60175)
  • Add slow startup tip to podman troubleshooting docs (#59942)
  • Clarify ray.shutdown() behavior for local vs remote clusters (#59845)
  • Improve placement group fault tolerance doc (#59830)
  • Add head-node memory growth and OOM guidance (#58695)
  • Add documentation for RAY_RUNTIME_ENV_BEARER_TOKEN env var (#60136)
Dashboard

💫 Enhancements

  • Support more panels in dashboard (#60018)
  • Add autoscaler metrics to Data Dashboard (#60472)
  • Support viewing PIDs for Dashboard and Runtime Env Agent (#58701)

🔨 Fixes

  • Update total for dark mode color (#60106)
Ray Wheels and Images
  • Add experimental Python 3.13 images (#59811, #60549)
  • Drop Python 3.9 support completely (#59824, #59825, #59769); wheel Python version now declared as 3.10+ (#59835)
  • ray-cpp wheels are now py3-none, without specific Python versions. (#59969)
Documentation
  • Add committership documentation (#60069)
  • Update contribution guide with common labels (#59473)
  • Add KubeRay & Volcano integration docs update (#59636)
  • Add RayJob InTreeAutoscaling with Kueue docs after Kueue 0.16.0 release (#59648)
  • Refactor LLM batch inference template (#59897)
  • Add async inference template (#58393)
  • Add RunLLM chat widget for Ray docs (#59126)
  • Fix various typos and broken links (#60249, #59901, #60181)
  • Replace Ray Tune + Train example with vanilla Ray Tune in homepage (#60229)
  • Add Ray technical charter (#60068)
Thanks

Thank you to everyone who contributed to this release! @KaisennHu, @MiXaiLL76, @slfan1989, @krisselberg, @JasonLi1909, @Priya-753, @pseudo-rnd-thoughts, @zzchun, @ZacAttack, @pushpavanthar, @jjyao, @ryanaoleary, @pcmoritz, @akshay-anyscale, @HassamSheikh, @yurekami, @Hyunoh-Yeo, @ruoliu2, @nrghosh, @wxwmd, @myandpr, @J-Meyers, @trilamsr, @kouroshHakha, @limarkdcunha, @manhld0206, @jreiml, @preneond, @yuchen-ecnu, @Yicheng-Lu-llll, @AchimGaedkeLynker, @vaishdho1, @israbbani, @OneSizeFitsQuorum, @Sathyanarayanaa-T, @nadongjun, @xinyuangui2, @Rob12312368, @as-jding, @lee1258561, @popojk, @coqian, @rajeshg007, @jeffreywang-anyscale, @kamil-kaczmarek, @alexeykudinkin, @Aydin-ab, @mgchoi239, @dragongu, @edoakes, @smortime, @tk42, @abrarsheikh, @jakubzimny, @Future-Outlier, @axreldable, @owenowenisme, @g199209, @cem-anyscale, @dayshah, @akelloway, @daiping8, @dlwh, @robertnishihara, @400Ping, @matthewdeng, @antoine-galataud, @cristianjd, @Partth101, @goutamvenkat-anyscale, @codope, @seanlaii, @andrew-anyscale, @andrewsykim, @liulehui, @simonsays1980, @Sparks0219, @yifanmai, @landscapepainter, @win5923, @kangwangamd, @srinarayan-srikanthan, @KeeProMise, @srinathk10, @my-vegetable-has-exploded, @MengjinYan, @yancanmao, @yuhuan130, @ArturNiederfahrenhorst, @akyang-anyscale, @rushikeshadhav, @kongjy, @harshit-anyscale, @justinvyu, @dancingactor, @Vito-Yang, @cr7258, @marwan116, @muyihao, @DeborahOlaboye, @bveeramani, @kriyanshii, @khluu, @machichima, @Kunchd, @jonded94, @iamjustinhsu, @sampan-s-nayak, @wingkitlee0, @sunsetxh, @dkhachyan, @can-anyscale, @TimothySeah, @raulchen, @elliot-barn, @ryankert01, @xyuzh, @stephanie-wang, @hao-aaron, @simeetnayan81, @cszhu, @richardliaw, @yuanjiewei, @kyuds, @eicherseiji, @RedGrey1993, @rueian, @jeffreyjeffreywang, @crypdick, @ankur-anyscale, @aslonnie

View originalPermalink
How 2.54.0 went
2.53.0

Ray-2.53.0

Added 13
  • Add Kafka as a native datasource for data ingestion
  • Add Dataset.summary() API for quick dataset inspection
  • Add Iceberg schema evolution, upsert, and overwrite support
  • Add should_continue_on_error for graceful error handling in batch inference
  • Add datetime compute expressions support
  • Enable expressions for grouped with_column in Ray Data
Changed 5
  • Parallelize DefaultCollateFn and arrow_batch_to_tensors
  • Optimize autoscaler to support configurable step size for actor pool scaling
  • Improve streaming repartition performance
  • Add version support to read_lance()
  • Add configurable batching for resolve_block_refs to speed up iter_batches
Fixed 2
  • Fix support of list types for Unique aggregator
  • Fix reading from written parquet for numpy with NaNs
Removed 1
  • Remove deprecated read_parquet_bulk API
Deprecated 1
  • Ray plans to drop support for Pydantic V1 starting version 2.56.0
Highlights
  • Ray plans to drop support for Pydantic V1 starting version 2.56.0. Please see this RFC for details.
  • Ray Data now has support for bounded reading from Kafka and improved Iceberg support.
Ray Data

🎉 New Features

  • Autoscaling: New utilization-based cluster autoscaler for Ray Data workloads (#59353, #59362, #59366). To use this new autoscaler set RAY_DATA_CLUSTER_AUTOSCALER=V2.
  • Kafka Datasource: Add Kafka as a native datasource for data ingestion (#58592)
  • Dataset summary API: Add Dataset.summary() API for quick dataset inspection (#58862)
  • Iceberg support: Add Iceberg schema evolution, upsert, and overwrite support (#59210, #59335)
  • Graceful error handling: Add should_continue_on_error for graceful error handling in batch inference (#59212)
  • Datetime compute expressions: Add datetime compute expressions support (#58740)
  • Grouped with_column expressions: Enable expressions for grouped with_column in Ray Data (#58231)
  • Parallelized collation: Parallelize DefaultCollateFn, arrow_batch_to_tensors (#58821)

💫 Enhancements

  • Optimized Autoscaler Step Size: Optimize autoscaler to support configurable step size for actor pool scaling (#58726)
  • Improved Streaming Repartition: Improve streaming repartition performance (#58728)
  • Actor init retry: Add actor retry if there's a failure in __init__ (#59105)
  • Fused Repartition + MapBatches: Fuse StreamingRepartition with MapBatches operators to scale collate (#59108)
  • Combined repartitions: Combine consecutive repartitions for efficiency (#59145)
  • Prefetch buffering: Handle prefetch buffering in iter_batches (#58657)
  • HashShuffle block breakdown: HashShuffleAggregator breaks down blocks on finalize (#58603)
  • Backpressure tuning: Tune concurrency cap backpressure object store budget ratio (#58813)
  • Non-string ApproximateTopK: Support non-string items for ApproximateTopK aggregator (#58659)
  • Lance version support: Add version support to read_lance() (#58895)
  • Dashboard metrics: Add time_to_first_batch and get_ref_bundles metrics to data dashboard (#58912)
  • Iter prefetched bytes stats: Add iter_prefetched_bytes statistics tracking (#58900)
  • Configurable batching for iter_batches: Add configurable batching for resolve_block_refs to speed up iter_batches (#58467)
  • Improved dashboard metrics: Improve Ray Data dashboard metrics display (#58667)
  • Histogram percentiles: Update Ray Data histograms to show percentiles in data dashboard (#58650)
  • Deprecated API removal: Remove deprecated read_parquet_bulk API (#58970)
  • Block shaping option: Add disable block shaping option to BlockOutputBuffer (#58757)
  • Removed concurrency lock: Remove concurrency lock for better performance (#56798)

🔨 Fixes

  • Fixes to Unique: Fix support of list types for Unique aggregator (#58916)
  • Parquet NaN fix: Fix reading from written parquet for numpy with NaNs (#59172)
  • Hash Shuffle empty block: Fix empty block sort in hash shuffle operator (#58836)
  • Hive partitioning pushdown: Fix pushdown optimizations with Hive partitioning (#58723)
  • Object Store usage reporting: Fix obj_store_mem_max_pending_output_per_task reporting (#58864)
  • Pyarrow FileSystem serialization fix: Handle filesystem serialization issue in get_parquet_dataset (#57047)
  • Azure UC SAS: Handle Azure UC user delegation SAS (#59393)
  • Async UDF Thread Cleanup: Close threads from async UDF after actor died (#59261)
  • Object Locality Default: Default return 0s for object locality instead of -1s (#58754)

📖 Documentation

  • Added contributing guide to Ray Data documentation (#58589)
  • Added download expression to key user journeys in documentation (#59417)
  • Added Kafka user guide (#58881)
  • Added unstructured data templates from Ray Summit 2025 (#57063)
  • Improved instructions for reading Hugging Face datasets (#58492, #58832)
  • Refined batch-format guidance in docs (#58971)
  • Exposed vision_preprocess and vision_postprocess in VLM docs (#59012)
  • Added upgrading huggingface_hub instruction (#59109)
  • Added scaling out expensive collation functions doc (#58993)
Ray Serve

🎉 New Features

  • Deployment topology visibility. Exposes deployment dependency graphs in Serve REST API, allowing users to visualize and understand the DAG structure of their applications. (#58355)
  • External autoscaler integration. Adds external_scaler_enabled flag to application config, enabling third-party autoscalers to control replica counts. (#57727, #57698)
  • Node rank and local rank support. Extends replica rank system to track node-level and per-node local ranks, enabling better distributed serving coordination for multi-node deployments. (#58477, #58479)
  • Custom batch size function. Allows users to define custom functions for computing logical batch sizes in @serve.batch, useful when batch items have varying weights (e.g., token counts in LLM inference). (#59059)
  • Stateful application-level autoscaling. Adds policy state persistence for custom autoscaling policies, allowing policies to maintain state across control-loop iterations. (#59118)
  • New autoscaling, batching, and routing metrics. Adds Prometheus metrics for autoscaling decisions (ray_serve_deployment_target_replicas, ray_serve_autoscaling_decision_replicas), batching statistics, and router queue latency for improved observability. (#59220, #59232, #59233)

💫 Enhancements

  • Smarter downscaling behavior. Prioritizes stopping most recently scaled-up replicas during downscale, preserving long-lived replicas that are optimally placed and fully warmed up. (#52929)
  • Autoscaling performance optimizations. Short-circuits metric aggregation for single time series cases (O(n log n) → O(1)) and lazily evaluates expensive autoscaling context fields to reduce controller CPU usage. (#58962, #58963)
  • Route matching cleanup. Removes redundant route matching logic from replicas since correct route values are now included in RequestMetadata. Also allows multiple methods (GET, PUT) corresponding to a route. (#58927)
  • Deployment wrapper metadata preservation. Wrapper classes from decorators like @ingress now preserve original class metadata (__qualname__, __module__, __doc__, __annotations__). (#58478)
  • Improved type annotations. Enhances generic type annotations on DeploymentHandle, DeploymentResponse, and DeploymentResponseGenerator for better IDE support and type inference. Adds .result() stub to DeploymentResponseGenerator to fix static typing errors. (#59363, #58522)

🔨 Fixes

  • YAML serialization for autoscaling enums. Fixes RepresenterError when using serve build with AggregationFunction enum values in autoscaling config. (#58509)
  • Autoscaling context timestamp fix. Correctly sets last_scale_up_time and last_scale_down_time on autoscaling context. (#59057)
  • Deadlock in chained deployment responses. Fixes hang when awaiting intermediate DeploymentResponse objects in a chain of deployment calls from different event loops. (#59385)
  • FastAPI class-based view inheritance. Fixes make_fastapi_class_based_view to properly handle inherited methods. (#59410)

📖 Documentation

  • Async I/O best practices guide. New documentation covering async programming patterns and best practices for Ray Serve deployments. (#58909)
  • Replica scheduling guide. New documentation covering compact scheduling, placement groups, custom resources, and guidance on when to use each feature. (#59114)
Ray Train

🎉 New Features

  • Worker Placement with Label Selectors: Added label_selector to ScalingConfig. This allows users to control worker placement by targeting specific labeled nodes in the cluster. (#58845, #59414)
  • Multihost JaxTrainer on GPU: Introduced support for JaxTrainer running on GPU machines. (#58322)
  • Checkpoint Consistency Modes: Added CheckpointConsistencyMode to get_all_reported_checkpoints, providing options for handling checkpoint retrieval consistency. (#58271)
  • Per-Dataset Execution Options: DataConfig now supports setting execution_options on a per-dataset basis for finer-grained control over data loading. (#58717)

💫 Enhancements

  • Nested Metrics Support: Result.get_best_checkpoint now supports nested metrics, allowing for more flexible metric tracking and checkpoint selection. (#58537)
  • Non-Blocking Checkpoint Retrieval: get_all_reported_checkpoints no longer blocks when only metrics are reported. (#58870)
  • Improved Resource Cleanup: Implemented eager cleanup of data resources and placement groups upon training run failures or aborts, preventing resource leaks. (#58325, #58515)

🔨 Fixes

  • MLflow Compatibility: Updated setup_mlflow API to ensure full compatibility with Ray Train V2. (#58705)
  • Validation for Checkpoint Uploads: A ValueError is now raised if checkpoint_upload_fn fails to return a valid checkpoint. (#58863)

📖 Documentation

  • New API Documentation: Added comprehensive documentation for the ray.train.get_all_reported_checkpoints method. (#58946)
Ray Tune

💫 Enhancements:

  • Nested Metrics Support: Result.get_best_checkpoint now supports nested metrics, allowing for more flexible metric tracking and checkpoint selection. (#58537)
Ray LLM

💫 Enhancements

  • Cloud filesystem restructuring with provider-specific implementations (#58469)
  • Bump transformers to 4.57.3 (#58980)
  • Ray Data LLM config refactor (#58298)
  • Update vllm_engine.py to check for VLLM_USE_V1 attribute (#58820)
  • Infer VLLM_RAY_PER_WORKER_GPUS from fractional placement-group bundles automatically (#58949)

🔨 Fixes

  • Fix LLM DP release test configuration (#59090)
Ray RLlib

🎉 New Features

  • DreamerV3: allow num_env_runners \> 0 (#58495)

💫 Enhancements

  • 🔥 MetricsLogger tweaks+ Stats rewrite (#56838)
  • move restart message into EnvRunner (#56750)
  • make “Footsies” less verbose (optionally) (#58939)
  • update an AlgorithmConfig deprecated argument with incorrect behavior/semantics (#59138)
  • Examples/docs cleanup:
    • merge tuned examples into examples/ (#58893)
    • move old API examples (#59159)
    • move example run scripts (#59160)
    • remove Torch 2.x doc tied to removed benchmarks (#59173)
    • remove rllib/benchmark(s) folder from RLlib directory (#59158)
  • Testing / CI & infra cleanup (part of a larger effort to organize + harden RLlib testing):
    • clean up tests folder layout in favor of /component/tests (#58890)
    • re-enable and fix nightly tests for APPO on Atari and MuJoCo (#58853)
    • re-enable all RLlib doctests (#58974)
    • add pytest reporting hook (pytest_runtest_makereport) across tests (#59003)
    • add/enable RLlib Py3.10 CI lane (#59226)
    • fix as-release-test silently failing (#59386)
    • fix recursive imports in old test-utils location (#59435)
    • Remove asv.conf.json (#58934)
    • Update requirement for byod_rllib.sh (#59157)

🔨 Fixes

  • Fix custom model-config mismatch between EnvRunner and Learner (#58739)
  • MultiAgentEnvRunner: prevent double-calling connectors (#58931)
  • Error handling: log or raise when a case is not fully handled (#58889)
  • Error handling: error out when data cannot be loaded (#59002)
  • Assorted RLlib bugfixes (#59386)

📖 Documentation

  • Update APPO paper reference to link to IMPACT paper (#58935)
Ray Core

🎉 New Features

  • Support zero-copy serialization for read-only PyTorch tensors via RAY_ENABLE_ZERO_COPY_TORCH_TENSORS (#57639)
  • Add .rayignore file support for controlling cluster uploads (#58500)
  • Improve large-scale resource view synchronization through sync message batching (#57641)
  • Autoscaler with cloud resource availability awareness (#58623)
  • Token authentication UX improvements with new AuthenticationError exception (#58737)
  • Support X-Ray-Authorization fallback header for auth token in dashboard (#58819)

💫 Enhancements

  • Limit core worker gRPC reply threads to 2 by default via RAY_core_worker_num_server_call_thread (#58771)
  • Make accessor node address and liveliness cache thread safe (#58947)
  • Create OtlpGrpcMetricExporter wrapper to log export failures (#58929)
  • Print detailed exception information when failing to report events (#58953)
  • Simplify local/global GC logic (#58671)
  • Surface correct error message when get_if_exists=True for actor lookup (#58628)
  • Throw AuthenticationError from Python for token loading errors (#59031)
  • Use secrets.token_hex(32) to generate auth tokens (#58818)
  • Remove AUTH_MODE=token check in get-auth-token CLI (#58848)
  • Introduce core chaos network release tests (#58868)

🔨 Fixes

  • Fix grpc_authentication_server_interceptors streaming response handling (#59104)
  • Fix handle leak in IsProcessAlive on Windows (#59106)
  • Fix counter metric default branch for RAY_enable_open_telemetry (#59095)
  • Fix leaking metric recorder in tests (#58952)
  • Fix crash when using JVM HDFS by adding RAY_DISABLE_FAILURE_SIGNAL_HANDLER option (#58984)
  • Fix heap corruption in RayletClient causing driver crash (use-after-free) (#58660)
  • Use shared_ptr for pins_in_flight_ to prevent use-after-free (#58744)
  • Remove deprecated add_command_alias (#58719)
  • Remove cluster_full_of_actors_detected_* fields (unused in autoscaler v2) (#59052)

📖 Documentation

  • Add token-auth.md documentation page (#58829)
  • Update KubeRay authentication guide to use native Ray token authentication (#58729)
Dashboard

💫 Enhancements

  • Add time_to_first_batch and get_ref_bundles metrics to data dashboard (#58912)
  • Update Ray Data histograms to show percentiles grouped by operator (#58650)
Ray Wheels and Images
  • Upgraded rich, cupy-cuda12x, and memray (#58983)
  • Upgraded lxml to 6.0.2 (#58808)
  • Upgraded requests from 2.32.3 to 2.32.5 (#58724)
  • Added openlineage-python in the dependency set (#58724)
Thanks

Thank you to everyone who contributed to this release! @xinyuangui2, @harshit-anyscale, @Sparks0219, @israbbani, @siyuanfoundation, @robertnishihara, @thomasdesr, @spencer-p, @aslonnie, @ZacAttack, @soodoshll, @marosset, @simeetnayan81, @soffer-anyscale, @abrarsheikh, @400Ping, @richo-anyscale, @as-jding, @rueian, @kshanmol, @yancanmao, @zzchun, @coqian, @matthewdeng, @Future-Outlier, @YoussefEssDS, @ykdojo, @pseudo-rnd-thoughts, @lowdy1, @ArturNiederfahrenhorst, @myandpr, @komikndr, @machichima, @RisinT96, @curiosity-hyf, @alanwguo, @CaiZhanqi, @Aydin-ab, @MengjinYan, @suzuri-lollipop, @jeffreyjeffreywang, @rushikeshadhav, @alexeykudinkin, @meAmitPatil, @zcin, @teddygood, @elliot-barn, @dayshah, @srinathk10, @XLC127, @simonsays1980, @kevin85421, @bveeramani, @kunling-anyscale, @khluu, @andrew-anyscale, @KaisennHu, @kouroshHakha, @ryankert01, @pavitrabhalla, @jjyao, @dragongu, @SolitaryThinker, @justinrmiller, @wxwmd, @Haustle-v, @TimothySeah, @goutamvenkat-anyscale, @liulehui, @raulchen, @HassamSheikh, @Priya-753, @vaishdho1, @dancingactor, @daiping8, @eloaf, @JasonLi1909, @rayci-bot, @richardliaw, @SheldonTsen, @Yicheng-Lu-llll, @ktyxx, @pschmutz, @iamjustinhsu, @ahao-anyscale, @cem-anyscale, @eicherseiji, @edoakes, @rajeshg007, @arki05, @andrewsykim, @nrghosh, @ryanaoleary, @kyuds, @Daraan, @can-anyscale, @sampan-s-nayak, @xyuzh, @owenowenisme

View originalPermalink
How 2.53.0 went
2.51.2

Ray-2.51.2

Security 1
  • reject Sec-Fetch-* other browser-specific headers in dashboard browser rejection logic for CVE-2025-62593
  • Fix for CVE-2025-62593: reject Sec-Fetch-* other browser-specific headers in dashboard browser rejection logic
View originalPermalink
How 2.51.2 went
2.52.1

Ray-2.52.1

Security 1
  • Improved handling for CVE-2025-62593 by testing for more browser-specific headers in dashboard browser rejection logic
  • More robust handling for CVE-2025-62593: test for more browser-specific headers in dashboard browser rejection logic
View originalPermalink
How 2.52.1 went
2.52.0

Ray-2.52.0

Added 10
  • Added predicate pushdown rule that pushes filter predicates past eligible operators
  • Iceberg support for upsert tables, schema updates, and overwrite operations
  • Iceberg support for predicate and projection pushdown
  • Iceberg write datafiles in write() then commit
  • Namespaced expressions that expose PyArrow functions
  • Added version argument to read_delta_lake
Changed 6
  • Enhanced Unity Catalog integration
  • Use approximate quantile for RobustScaler preprocessor
  • Map batches support for limit pushdown
  • Make all map operations zero-copy by default
  • Use tqdm_ray for progress reporting from workers
  • Improved concurrency cap backpressure tuning
Fixed 3
  • Fixed renamed columns to be appropriately dropped from output
  • Fixed handling of renames in projection pushdown
  • Fixed broken LogicalOperator abstraction barrier in predicate pushdown rule
Removed 1
  • End of Life for Python 3.9 Support: Ray will no longer be releasing Python 3.9 wheels from now on
Security 1
  • Token authentication: Ray now supports built-in token authentication across all components including the dashboard, CLI, API clients, and internal services

Release Highlights

Ray Core:

  • End of Life for Python 3.9 Support: Ray will no longer be releasing Python 3.9 wheels from now on.
  • Token authentication: Ray now supports built-in token authentication across all components including the dashboard, CLI, API clients, and internal services. This provides an additional layer of security for production deployments to reduce the risk of unauthorized code execution. Token authentication is initially off by default. For more information, see: https://docs.ray.io/en/latest/ray-security/token-auth.html

Ray Data:

  • We’ve added a number of improvements for Iceberg, including upserts, predicate and projection pushdown, and overwrite.
  • We’ve added significant improvements to our expressions framework, including temporal, list, tensor, and struct datatype expressions.

Ray Libraries

Ray Data

🎉 New Features:

  • Added predicate pushdown rule that pushes filter predicates past eligible operators (#58150, #58555)
  • Iceberg support for upsert tables, schema updates, and overwrite operations (#58270)
  • Iceberg support for predicate and projection pushdown (#58286)
  • Iceberg write datafiles in write() then commit (#58601)
  • Enhanced Unity Catalog integration (#57954)
  • Namespaced expressions that expose PyArrow functions (#58465)
  • Added version argument to read_delta_lake (#54976)
  • Generator UDF support for map_groups (#58039)
  • ApproximateTopK aggregator (#57950)
  • Serialization framework for preprocessors (#58321)
  • Support for temporal, list, tensor, and struct datatypes (#58225)

💫 Enhancements:

  • Use approximate quantile for RobustScaler preprocessor (#58371)
  • Map batches support for limit pushdown (#57880)
  • Make all map operations zero-copy by default (#58285)
  • Use tqdm_ray for progress reporting from workers (#58277)
  • Improved concurrency cap backpressure tuning (#58163, #58023, #57996)
  • Sample finalized partitions randomly to avoid lens effect (#58456)
  • Allow file extensions starting with '.' (#58339)
  • Set default file_extensions for read_parquet (#56481)
  • URL decode values in parse_hive_path (#57625)
  • Streaming partition enforces row_num per block (#57984)
  • Streaming repartition combines small blocks (#58020)
  • Lower DEFAULT_ACTOR_MAX_TASKS_IN_FLIGHT_TO_MAX_CONCURRENCY_FACTOR to 2 (#58262)
  • Set udf-modifying-row-count default to false (#58264)
  • Cache PyArrow schema operations (#58583)
  • Explain optimized plans (#58074)
  • Ranker interface (#58513)

🔨 Fixes:

  • Fixed renamed columns to be appropriately dropped from output (#58040, #58071)
  • Fixed handling of renames in projection pushdown (#58033, #58037)
  • Fixed broken LogicalOperator abstraction barrier in predicate pushdown rule (#58683)
  • Fixed file size ordering in download partitioning with multiple URI columns (#58517)
  • Fixed HTTP streaming file download by using open_input_stream (#58542)
  • Fixed expression mapping for Pandas (#57868)
  • Fixed reading from zipped JSON (#58214)
  • Fixed MCAP datasource import for better compatibility (#57964)
  • Avoid slicing block when total_pending_rows < target (#58699)
  • Clear queue for manually marked execution_finished operators (#58441)
  • Add exception handling for invalid URIs in download operation (#58464)
  • Fixed progress bar name display (#58451)

📖 Documentation:

  • Documentation for Ray Data metrics (#58610)
  • Simplify and add Ray Data LLM quickstart example (#58330)
  • Convert rST-style to Google-style docstrings (#58523)

🏗 Architecture:

  • Removed stats update thread (#57971)
  • Refactor histogram metrics (#57851)
  • Revisit OpResourceAllocator to make data flow explicit (#57788)
  • Create unit test directory for fast, isolated tests (#58445)
  • Dump verbose ResourceManager telemetry into ray-data.log (#58261)
Ray Train

🎉 New Features:

  • Result::from_path implementation in v2 (#58216)

💫 Enhancements:

  • Exit actor and log appropriately when poll_workers is in terminal state (#58287)
  • Set JAX_PLATFORMS environment variable based on ScalingConfig (#57783)
  • Default to disabling Ray Train collective util timeouts (#58229)
  • Add SHUTTING_DOWN TrainControllerState and improve logging (#57882)
  • Improved error message when calling training function utils outside Ray Train worker (#57863)
  • FSDP2 template: Resume from previous epoch when checkpointing (#57938)
  • Clean up checkpoint config and trainer param deprecations (#58022)
  • Update failure policy log message (#58274)

📖 Documentation:

  • Ray Train Metrics documentation page (#58235)
  • Local mode user guide (#57751)
  • Recommend tree_learner="data_parallel" in examples for distributed LightGBM training (#58709)
Ray Serve
🎉 New Features:
  • Custom request routing with runtime environment support. Users can now define custom request router classes that are safely imported and serialized using the application's runtime environment, enabling advanced routing logic with custom dependencies. (#56855)
  • Custom autoscaling policies with enhanced logging. Deployment-level and application-level autoscaling policies now display their custom policy names in logs, making it easier to debug and monitor autoscaling behavior. (#57878)
  • Audio transcription support in vLLM backend. Ray Serve now supports transcription tasks through the vLLM engine, expanding multimodal capabilities. (#57194)
  • Data parallel attention public API. Introduced a public API for data parallel attention, enabling efficient distributed attention mechanisms for large-scale inference workloads. (#58301)
  • Route pattern tracking in proxy metrics. Proxy metrics now expose actual route patterns (e.g., /api/users/{user_id}) instead of just route prefixes, enabling granular endpoint monitoring without high cardinality issues. Performance impact is minimal (~1% RPS decrease). (#58180)
  • Replica dependency graph construction. Added list_outbound_deployments() method to discover downstream deployment dependencies, enabling programmatic analysis of service topology for both stored and dynamically-obtained handles. (#58345, #58350)
  • Multi-dimensional replica ranking. Introduced ReplicaRank schema with global, node-level, and local ranks to support advanced coordination scenarios like tensor parallelism and model sharding across nodes. (#58471, #58473)
  • Proxy readiness verification. Added a check to ensure proxies are ready to serve traffic before serve.run() completes, improving deployment reliability. (#57723)
  • IPv6 socket support. Ray Serve now supports IPv6 networking for socket communication. (#56147)
💫 Enhancements:
  • Selective throughput optimization flag overrides. Users can now override individual flags set by RAY_SERVE_THROUGHPUT_OPTIMIZED without manually configuring all flags, improving flexibility for performance tuning. (#58057)
  • OpenTelemetry metrics enabled by default. Ray now uses OpenTelemetry as the default metrics backend, with updated metric names (ray_serve_*) and improved observability infrastructure. (#56432)
  • Cleaner long-poll communication. Removed actor handles from RunningReplicaInfo objects passed in long-poll updates, avoiding complex reference counting patterns. (#58174)
  • Improved replica config handling. Excluded IMPLICIT_RESOURCE_PREFIX from ReplicaConfig.ray_actor_options to prevent internal resource annotations from leaking into user-visible configurations. (#58275)
  • Custom autoscaling telemetry. Added telemetry tracking for custom autoscaling policy usage. (#58336)
  • Proxy target group control. Added from_proxy_manager argument to get_target_groups() for finer control over returned routing targets. (#57620)
🔨 Fixes:
  • Fixed default deployment name in async inference. Corrected the default deployment name which was changed to _TaskConsumerWrapper during async inference implementation. (#57664)
  • Fixed proxy location handling in CLI and Python API. serve run now respects proxy_location from config files instead of hardcoding EveryNode, and serve.start() no longer defaults to HeadOnly when http_options are provided without an explicit location. (#57622)
  • Fixed deprecated Stable Diffusion model in example. Updated documentation example to use a current model after stabilityai/stable-diffusion-2 was deprecated on Hugging Face. (#58609)
📖 Documentation:
  • KV-cache offloading user guide. Added comprehensive documentation for KV-cache offloading in LLM deployments. (#58025)
  • Model loading documentation. Documented best practices and options for loading models in Ray Serve. (#57922)
  • Cross-node tensor/pipeline parallelism examples. Added examples and documentation for running TP/PP across multiple nodes. (#57715)
  • Data parallel attention documentation. Created user guide for data parallel attention with architecture diagrams. (#58301, #58543)
  • Custom autoscaling policy examples. Added missing imports and improved clarity in autoscaling policy examples. (#57896, #58170)
  • Async inference documentation improvements. Added notes about task consumer replica configurations and fixed the end-to-end example. (#58493)
  • Callback documentation. Added documentation for using callbacks in Ray Serve. (#58713)
  • Monitoring and troubleshooting improvements. Enhanced monitoring section with links to Anyscale troubleshooting resources. (#58472)
  • Minor documentation fixes. Fixed spelling errors and improved docstring alignment. (#58172, #58233)
🏗 Architecture refactoring:
  • Replica rank management refactoring. Extracted generic RankManager class with type-safe ReplicaRank representation, creating a cleaner foundation for future multi-level rank support. (#58471, #58473)
Ray Tune

💫 Enhancements:

  • Updated jobs test to use tune module (#57995)
  • Add pydantic to Ray Tune requirements (#58354)
RLlib

🎉 New Features:

  • Support for vectorize modes in SingleAgentEnvRunner.make_env (#58410)
  • Support for composed spaces in Offline RL (#58594)
  • Enhanced support for complex observations in SingleAgentEpisode (#57017)
  • Prometheus metrics support for selected components (#57932)

💫 Enhancements:

🔨 Fixes:

  • Resolve bug that fails to propagate model_config to MultiAgentRLModule instances (#58243)
  • Fixed access to self._minibatch_size (#58595)
  • Broken restore from remote - Add missing FileSystem argument (#58324)
  • Fixed deterministic sampling and training documentation link (#58494)
  • Corrected typo in pyspiel import error message (#54618)

📖 Documentation:

  • Add reinforcement learning example illustrating GPU-to-GPU RDT and GRPO (#57961)

Ray Core

🎉 New Features:

💫 Enhancements:

  • Fault-tolerant RPCs: KillActor, CancelRemoteTask, NotifyGCSRestart, and ReleaseUnusedBundles (#57648, #57945, #57965)
  • Use graceful actor shutdown when GCS polling detects actor ref deleted (#58605)
  • Use graceful shutdown path when actor OUT_OF_SCOPE (del actor) (#57090)
  • Improved actor kill logs (#58544)
  • Scheduling detached actor with placement group not recommended (#57726)
  • Better handling of detached actor restarts (#57931)
  • Enhanced ray.get thread safety (#57911)
  • Making concurrent ray.get requests for the same object thread-safe (#58606)
  • Move request ID creation to worker to address plasma get perf regression (#58390)
  • Make GlobalState lazy initialization thread-safe (#58182)
  • Reporter agent can get PID via RPC to raylet (#57004)
  • Add tee logging for subprocess exit codes in ray start --block (#57982)
  • Add entrypoint log for jobs (#58300)
  • Cleaner error message for exceeding list actors limit (#58255)
  • Clean up NODE_DIED task error message (#58638)
  • Improved histogram metrics midpoint calculation (#57948)
  • Migrated from STATS to metric interface in RPC components (#57926)
  • Kill STATS in core worker component (#58060)
  • Kill STATS in object manager component (#57974)
  • Improve scheduler_placement_time_s metric (#58217)
  • Refactor OpenTelemetry environment variable handling (#57910)
  • Add option to disable OpenTelemetry SDK error logs (#58257)
  • Improved cgroups support (#57776, #57864, #57731, #58017, #58028, #58059, #58064, #58577)
  • Use GetNodeAddressAndLiveness in raylet client pool (#58576)
  • Ray Direct Transport improvements with NIXL integration (#57671, #58550, #58548, #56783, #58263)
  • Fix symmetric-run (#58337)
  • Make worker connection timeout parameters configurable (#58372)
  • Define env for controlling UVloop (#58442)
  • Allow 60 seconds for dashboard to start (#58341)
  • Report driver stats (#58045)
  • Fix idle node termination on object pulling (#57928)
  • Check if temp_dir is subdir of virtualenv to prevent runtime virtualenv problems (#58084)

🔨 Fixes:

  • Fixed use-after-free in RayletClient (#58747)
  • Fixed deadlock when cancelling stale requests on in-order actors (#57746)
  • Fixed "RayEventRecorder::StartExportingEvents() should be called only once" error (#57917)
  • Fixed raylet shutdown races (#57198)
  • Fixed incorrect usage of gRPC streaming API in ray syncer (#58307)
  • Fixed log monitor seeking bug after log rotation (#56902)
  • Fixed idempotency issues in RequestWorkerLease for scheduled leases (#58265)
  • Fixed RAY_CHECK(inserted) inside reference counter (#58092)
  • Fixed static type hints for ActorClass when setting options (#58439)
  • Fixed exception type for accelerator ID visibility check (#58269)
  • Fixed transport type handling in DAG node initialization (#57987)
  • Fixed RAY_NODE_TYPE_NAME handling when autoscaler is in read-only mode (#58460)
  • Ensure client_call_manager_ outlives metrics_agent_client_ in core worker (#58315)
  • Fixed header validation in dashboard tests (#58648)
  • Validation of Ray-on-Spark-on-YARN mode to enable it to run (#58335)

📖 Documentation:

  • Fix pattern_async_actor demo typo (#58486)
  • Add limitations of RDT documentation (#58063)
  • Add actor+job+node event to ray event export documentation (#57930)
  • Remove implementation details from get_runtime_context docstring (#58212)
  • Improved monitoring section with links (#58472)

🏗 Architecture:

  • Refactor ActorInfoAccessor in gcs_client to be mockable (#57241)
  • Refactor reference_counter out of memory store and plasma store (#57590)
  • Remove reference counter mock for real reference counter in testing (#57178)
  • Split raylet cython file into multiple files (#56575)
  • Move ray_syncer to top level directory (#58316)
  • Move python_callbacks to common (#57909)
  • Consolidate find_free_port to network_utils (#58304)
  • Implement event merge logic at export time (#58070)
  • Feature flag for enabling ray export event (#57999)
  • Add comments explaining ray_syncer_ channels in Raylet (#58342)
  • Integration tests for task event generation (#57636)
Dashboard

💫 Enhancements:

  • Added percentage usage graphs for resources (#57549)
  • Sub-tabs with full Grafana dashboard embeds on Metrics tab (#57561)
  • Added queued blocks to operator panels (#57739)
  • Improved operator metrics logging (#57702)
  • Make do_reply accept status_code instead of success bool (#58384)
  • Add denial of fetch headers (#58553)

🔨 Fixes:

  • Fixed broken Ray Data per node metrics due to unsupported operator filter (#57970)
  • Filtered out ANSI escape codes from logs (#53370)

📖 Documentation:

  • Expose dashboard URL when deploying on Yarn using Skein (#57793)
Autoscaler + KubeRay

🎉 New Features:

  • KubeRay autoscaling support with top-level Resources and Labels fields (#57260)
  • Bundle label selector support in request_resources SDK (#54843)

💫 Enhancements:

  • Azure VM launcher release test (#57921)
  • Azure CLI added to base-extra image (#58012)

📖 Documentation:

  • Label selector guide (#58157)
  • Add minimum version requirement on kai-scheduler (#58161)
  • Mention RayJob gang scheduling for Yunikorn (#58375)
  • Add Volcano RayJob gang scheduling example (#58320)
  • Add KAI scheduler integration documentation (#54857)
  • Kuberay sidecar mode (#58273)
  • Update RayJob documentation with new DeletionStrategy (#58306)
  • Add guidance for RayService initialization timeout (#58238)
  • Update version to 1.5.0 (#58452)
  • Add output example of CLI commands (#58078)
  • Fix invalid syntax in label_selector (#58352)

Thank You to all the Contributors! @marosset, @curiosity-hyf, @bveeramani, @Future-Outlier, @saihaj, @ZacAttack, @ArthurBook, @crypdick, @Aydin-ab, @elliot-barn, @Kunchd, @justinvyu, @jjyao, @gangsf, @sunsetxh, @Daraan, @justinyeh1995, @MatthewCWeston, @kyuds, @daiping8, @sauravvenkat, @omatthew98, @CowKeyMan, @morotti, @israbbani, @goutamvenkat-anyscale, @fscnick, @Zakelly, @xyuzh, @kouroshHakha, @owenowenisme, @Qiaolin-Yu, @czgdp1807, @shen-shanshan, @wph95, @iamjustinhsu, @MengjinYan, @jugalshah291, @Yicheng-Lu-llll, @ryanaoleary, @nadongjun, @xinyuangui2, @ideal, @my-vegetable-has-exploded, @lucaschadwicklam97, @tianyi-ge, @ahao-anyscale, @abrarsheikh, @Blaze-DSP, @rueian, @thomasdesr, @CaiZhanqi, @harshit-anyscale, @jeffreyjeffreywang, @TimothySeah, @codope, @sampan-s-nayak, @andrewsykim, @xingsuo-zbz, @aslonnie, @OneSizeFitsQuorum, @ryankert01, @Sparks0219, @soffer-anyscale, @akyang-anyscale, @alanwguo, @chrisfellowes-anyscale, @richo-anyscale, @alexeykudinkin, @JasonLi1909, @ruisearch42, @EkinKarabulut, @MarcoGorelli, @SolitaryThinker, @srinathk10, @dayshah, @richardliaw, @pseudo-rnd-thoughts, @win5923, @axreldable, @matthewdeng, @ArturNiederfahrenhorst, @can-anyscale, @khluu, @landscapepainter, @kevin85421, @seanlaii, @edoakes, @nrghosh, @eicherseiji, @Artimislyy, @cem-anyscale, @coqian, @chiayi, @liulehui

View originalPermalink
How 2.52.0 went
2.51.0

Ray-2.51.0

Added 12
  • Application-level autoscaling in Ray Serve with custom autoscaling policies that operate across all deployments in an application
  • Enhanced autoscaling context with replica-level metrics including total_running_requests, total_queued_requests, and total_num_requests
  • Autoscaling metrics aggregation functions supporting min, max, and time-weighted average aggregation
  • Support for multiple task consumers in a single Ray Serve application
  • Enhanced support for Unity Catalog integration in Ray Data
  • New expression evaluator infrastructure for improved query optimization in Ray Data
Changed 4
  • Ray Train v2 is now enabled by default, providing usability and stability improvements and new features
  • Improved projection pushdown handling with renamed columns in Ray Data
  • Enhanced hash-shuffle performance with better retry policies in Ray Data
  • Reduced memory usage with improved streaming generator backpressure in Ray Data
Fixed 4
  • Fixed renamed columns to be appropriately dropped from output in Ray Data
  • Fixed driver hang during streaming generator block metadata retrieval in Ray Data
  • Fixed ControllerError triggered by after_worker_group_poll_status errors in Ray Train
  • Fixed iter_torch_batches use of ray.train.torch.get_device outside Train

Release Highlights

Ray Train:

  • Ray Train v2 is now enabled by default! Ray Train v2 provides usability and stability improvements, as well as new features. For more details, see the REP and Migration Guide. To disable Ray Train v2, set the environment variable RAY_TRAIN_V2_ENABLED=0.

Ray Serve:

  • Application-level autoscaling: Introduces custom autoscaling policies that operate across all deployments in an application, enabling coordinated scaling decisions based on aggregate metrics. This is a significant advancement over per-deployment autoscaling, allowing for more intelligent resource management at the application level.
  • Enhanced autoscaling capabilities with replica-level metrics: Wires up AutoscalingContext with total_running_requests, total_queued_requests, and total_num_requests, plus adds support for min, max, and time-weighted average aggregation functions. These improvements give users fine-grained control to implement sophisticated custom autoscaling policies based on real-time workload metrics.

Ray Libraries

Ray Data

🎉 New Features:

  • Added enhanced support for Unity Catalog integration (#57954, #58049)
  • New expression evaluator infrastructure for improved query optimization (#57778, #57855)
  • Support for SaveMode in write operations (#57946)
  • Added approximate quantile aggregator (#57598)
  • MCAP datasource support for robotics data (#55716)
  • Callback-based stat computation for preprocessors and ValueCounter (#56848)
  • Support for multiple download URIs with improved error handling (#57775)

💫 Enhancements:

  • Improved projection pushdown handling with renamed columns (#58033, #58037, #58040, #58071)
  • Enhanced hash-shuffle performance with better retry policies (#57572)
  • Streamlined concurrency parameter semantics (#57035)
  • Improved execution progress rendering (#56992)
  • Better handling of empty columns in pandas blocks (#57740)
  • Enhanced support for complex data types and column operations (#57271)
  • Reduced memory usage with improved streaming generator backpressure (#57688)
  • Enhanced preemption testing and utilities (#57883)
  • Improved Download operator display names (#57773)
  • Better handling of variable-shaped tensors and tensor columns (#57240)
  • Optimized aggregator execution with out-of-order processing by default (#57753)

🔨 Fixes:

  • Fixed renamed columns to be appropriately dropped from output (#58040, #58071)
  • Fixed handling of renames in projection pushdown (#58033, #58037)
  • Fixed vLLMEngineStage field name inconsistency for images (#57980)
  • Fixed driver hang during streaming generator block metadata retrieval (#56451)
  • Fixed retry policy for hash-shuffle tasks (#57572)
  • Fixed prefetch loop to avoid blocking on fetches (#57613)
  • Fixed empty projection handling (#57740)
  • Fixed errors with concatenation of mixed pyarrow native and extension types (#56811)

📖 Documentation:

  • Updated document embedding benchmark to use canonical Ray Data API (#57977)
  • Improved concurrency-related documentation (#57658)
  • Updated preprocessing and data handling examples
Ray Train

🎉 New features

  • Turn on Train v2 by default (#57857)
  • Top-level ray.train aliases for public APIs (#57758)

💫 Enhancements

  • Raise clear errors when mixing v1/v2 APIs (#57570)
  • JAX backend: add jax.distributed.shutdown() for JaxBackend (#57802)
  • Update TrainingFailedError module (#57865)
  • Improve deprecation handling when ray.train methods are called from ray.tune (#57810)
  • Enable deprecation warnings for legacy XGBoost/LightGBM trainers (#57280)

🔨 Fixes

  • Fix ControllerError triggered by after_worker_group_poll_status errors (#57869)
  • Fix iter_torch_batches use of ray.train.torch.get_device outside Train (#57816)
  • Fix exception-queue race condition in ThreadRunner (#57249)

📖 Documentation

  • Add validation and details to checkpoint docs (#57065)

🏗 Architecture / tests

  • Enable Train v2 across test suites; migrate remaining tests and isolate/disable stragglers (#56868, #57256, #57534, #57722, #57764)
  • Isolate circular-dependency tests and resolve circular imports (#57710, #56921)
  • Replace Checkpoint Manager Pydantic v2 APIs with v1 (#57147)
  • Bump test timeouts (test_util, torch_trainer) (#57939, #57873)
Ray Tune

💫 Enhancements:

  • Updated release tests to import from tune (#57956)
  • Better integration with Train V2 backend
Ray Serve

🎉 New Features:

  • Application-level autoscaling. Introduces support for custom autoscaling policies that operate across all deployments in an application, enabling coordinated scaling decisions based on aggregate metrics. (#57535, #57548, #57637, #57756)
  • Autoscaling metrics aggregation functions. Adds support for min, max, and time-weighted average aggregation over timeseries data, providing more flexible autoscaling control. (#56871)
  • Enhanced autoscaling context with replica-level metrics. Wires up AutoscalingContext constructor arguments to expose total_running_requests, total_queued_requests, and total_num_requests for use in custom autoscaling policies. (#57202)
  • Multiple task consumers in a single application. Ray Serve applications can now run multiple task consumer deployments concurrently. (#56618)

💫 Enhancements:

  • Reconfigure invoked on replica rank changes. The reconfigure method now receives both user_config and rank parameters when ranks change, enabling replicas to adapt their configuration dynamically. (#57091)
  • Celery adapter configuration improvements. Added default serializer and new configuration fields to enhance Celery integration flexibility. (#56707)
  • AutoscalingContext promoted to public API. The autoscaling context is now officially part of the public API with comprehensive documentation. (#57600)
  • Async inference telemetry. Added telemetry tracking to monitor the number of replicas using asynchronous inference. (#57665)
  • Rank logging verbosity reduced. Changed seven rank-related INFO logs to DEBUG level, reducing log noise during normal operations. (#57831)
  • Controller logging optimized. Removed expensive debug logs from the controller that were costly in large clusters. (#57813)

🔨 Fixes:

  • Max constructor retry count test fixed for Windows. Adjusted test resource requirements to account for Windows process creation overhead compared to Linux forking. (#57541)
  • Streaming test stability improvements. Added synchronization mechanisms to prevent chunk coalescing and rechunking, eliminating test flakiness. (#57592, #57728)
  • Autoscaling test deflaking. Fixed race conditions in application-level autoscaling tests and removed flaky min aggregation test scenario. (#57784, #57967)
  • State API usage test corrected. Fixed a unit test that was broken but not running in CI. (#56948)
  • Controller recovery logging condition fixed. Updated test condition to properly verify debug and JSON logs after controller recovery. (#57568)

📖 Documentation:

  • Custom autoscaling documentation. Added comprehensive guide for implementing custom autoscaling policies with examples and best practices. (#57600)
  • Replica ranks documentation. Documented the replica rank feature, including how ranks are assigned and how to use them in reconfigure methods. (#57649)
  • Application-level autoscaling guide. Added documentation explaining how to configure and use application-level autoscaling policies. (#57756)
  • Autoscaling documentation improvements. Updated serve autoscaling docs with clearer explanations and examples. (#57652)
  • Performance flags documentation. Documented performance-related configuration flags for Ray Serve. (#57845)
  • Metrics documentation fix. Corrected ray_serve_deployment_queued_queries metric name discrepancy in documentation. (#57629)
  • AutoscalingContext import added to examples. Fixed missing import statement in custom autoscaling policy example. (#57876)
  • App builder guide typo corrected. Fixed command syntax error in typed application builder example. (#57634)
  • Celery filesystem broker note. Added warning about using filesystem as a broker in Celery workers. (#57686)
  • Async inference alpha stage warning. Added notice that async inference is in alpha stage. (#57268)

🏗 Architecture refactoring:

  • Autoscaling control moved to application state. Migrated autoscaling control loop from deployment state to application state, preparing for application-level autoscaling. (#57548)
  • Async capability enum removed. Cleaned up unused async capability enum from codebase. (#57666)
Ray Serve/Data LLM

🎉 New Features:

  • Updated vLLM to 0.11.0 and Nixl to 0.6.0 (#57201)
  • Video processor support for multimodal pipelines (#56785)
  • Enhanced callback API for engine customization (#57257)
  • Unified and extended builder configuration for LLM deployments (#57724)

💫 Enhancements:

  • Protocol-based typing improvements and cleaner inheritance structure (#57743)
  • Better engine metrics enabled by default (#57615)
  • Simplified NIXL dependency management in ray-llm images (#57706)
  • Per-stage map kwargs for LLM processor preprocessing/postprocessing (#57826)
  • Improved architecture documentation (#57830)
  • Better code structure alignment with architectural design (#57889)
  • Enhanced multimodal support with Deepseek compatibility (#56906)

🔨 Fixes:

  • Fixed NIXL limitations with proper exception handling (#58159)
  • Improved runai_streamer for vLLM 0.10.2+ integration (#56906)

📖 Documentation:

  • Added comprehensive architecture documentation for Ray Serve LLM (#57830)
  • Reorganized LLM documentation with improved navigation (#57787)
  • Added benchmark page for performance reference (#57960)
  • Converted quick-start guide to MyST Markdown (#57782)
  • Better organization of Ray Serve LLM documentation (#57181?)
RLlib

🎉 New Features:

  • Prometheus metrics support for selected RLlib components (#57932)
  • Enhanced support for complex observations in SingleAgentEpisode (#57017)

💫 Enhancements:

  • LINT improvements with enabled ruff imports for rllib/utils (#56737)
  • Better type hints for learner_connector (#57673)
  • Improved throughput metrics to avoid biasing (#57215)

🔨 Fixes:

  • Fixed segment_tree.py edge case (#57599)
  • Fixed small bug in type hints (#57673)
Ray Core

🎉 New Features:

  • Enhanced Ray Direct Transport (RDT) with improved NIXL integration and garbage collection (#57671, #57603, #58159)
  • Cgroups support improvements with better system resource management (#57776, #57864, #57731, #58017, #58028, #58064)
  • Fault-tolerant RPC improvements for better distributed reliability (#57786, #57861)
  • Exponential backoff for retryable gRPCs (#56568)

💫 Enhancements:

  • Migrated from STATS to metric interface in RPC components (#57926)
  • Improved histogram metrics midpoint calculation (#57948)
  • Made FreeObjects non-fatal for better error handling (#57550)
  • Enhanced ReleaseUnusedBundles fault tolerance (#57786)
  • Made DrainRaylet and ShutdownRaylet fault tolerant (#57861)
  • Better error handling for metric and event exporter agent (#57925)
  • Improved raylet shutdown process and file organization (#57817)
  • Reporter agent can now get PID via RPC to raylet (#57004)
  • Enhanced ray.get thread safety (#57911)
  • Configurable proto naming during event JSON conversion (#57705)
  • Better handling of detached actor restarts (#57931)
  • Improved lease rescheduling in local lease manager during node draining (#57834)

🔨 Fixes:

  • Fixed "RayEventRecorder::StartExportingEvents() should be called only once" error (#57917)
  • Fixed deadlock when cancelling stale requests on in-order actors (#57746)
  • Fixed raylet shutdown races (#57198)
  • Fixed log monitor seeking bug after log rotation (#56902)
  • Deflaked multiple test suites for better CI reliability
  • Fixed various memory and resource management issues
  • Better handling of actor and task failures

📖 Documentation:

  • Added JaxTrainer API overview to Ray docs (#57182)
  • Fixed various typos and documentation issues
  • Updated autoscaling and system configuration guides
  • Enhanced SLURM documentation with symmetric-run support (#56775)

🏗 Architecture refactoring:

  • Dashboard API server subprocesses moved into system cgroup (#57864)
  • Driver moved into workers cgroup for better isolation (#57776)
  • Improved worker-raylet interface separation (#57804)
  • Better plasma store provider architecture
Dashboard

💫 Enhancements:

  • Added percentage usage graphs for resources (#57549)
  • Introduced sub-tabs with full Grafana dashboard embeds on Metrics tab (#57561)
  • Added queued blocks to operator panels (#57739)
  • Improved operator metrics logging for better clarity (#57702)
  • Better filtering and display in job lists

🔨 Fixes:

  • Fixed filtering issue in job list (#56946)
  • Fixed incomplete card content on overview page (#56947)
  • Filtered out ANSI escape codes from logs (#53370)
Autoscaler

🎉 New Features:

  • KubeRay autoscaling support with top-level Resources and Labels fields (#57260)
  • Bundle label selector support in request_resources SDK (#54843)
  • Application Gateway for Containers as ingress for Ray clusters on Azure

💫 Enhancements:

  • Azure improvements: Cleaning up extra resources (MSI, VNET, NSG) during cluster teardown (#57610)
  • Updated defaults for Azure cluster templates (#57716)
  • Better availability zone support for Azure node pools (#55532)
  • Hello world release tests for Azure and GCE (#57597, #57695)
  • Improved cluster resource state handling to fix over-provisioning (#57130)

🔨 Fixes:

  • Fixed autoscaler state synchronization issues (#57010)
  • Better handling of node state information (#57130)
  • Improved timeout handling for patch requests (#56605)

Thank you to everyone who contributed to this release! Special thanks to all the contributors who helped make Ray 2.51.0 possible through bug fixes, features, documentation improvements, and testing efforts.

View originalPermalink
How 2.51.0 went
2.50.1

Ray-2.50.1

Fixed 1
  • Fix deadlock when cancelling stale requests on in-order actors

Ray Core: Fix deadlock when cancelling stale requests on in-order actors (#57746)

View originalPermalink
How 2.50.1 went
2.50.0

Ray-2.50.0

Added 20
  • New expression API enables predicate-based filtering, UDF transformations with with_column, and column aliasing for more powerful data transformations
  • Added support for projection pushdown into Parquet reads
  • New download expression enables efficient loading of data from columns containing URIs with improved performance and error handling
  • New explain() API provides insights into dataset execution plans
  • Added streaming_train_test_split to avoid materialization for train/test splits
  • Enabled multi-node tensor and pipeline parallelism for Ray Data LLM processing
Changed 16
  • Default shuffle strategy changed from sort-based to hash-based for improved shuffle performance and lower peak memory usage for aggregations
  • Concurrency parameter now accepts tuples for more flexible configuration
  • Resource requirements (num_cpus/gpus, memory) are now top-level parameters in most APIs for easier configuration
  • Write operations now use iterators instead of accumulating blocks in memory
  • Improved groupby performance with sort-shuffle pull-based approach
  • Improved join operations with new abstractions
Fixed 3
  • Fixed streaming executor to properly drain output queues
  • Fixed retry logic for hash shuffle operations
  • Fixed split_blocks to prevent producing empty blocks

Release Highlights

Ray Data: This release offers many updates to Ray Data, including:

  • The default shuffle strategy is now changed from sort-based to hash-based. This will result in much lower peak memory usage and improved shuffle performance for aggregations.
  • We’ve added a new expression API enables predicate-based filtering, UDF transformations with with_column, and column aliasing for more powerful data transformations
  • Ray Data LLM has a number of new enhancements for multimodal data pipelines, including multi-node tensor and pipeline parallelism support per replica and ability to share vLLM engines across processors.

Ray Core:

Alpha release of Ray Direct Transport (formerly GPU objects) - simply enable it by adding the tensor_transport parameter to the existing native Ray Core API. This keeps GPU data in GPU memory until a transfer is needed, avoiding expensive serialization and copies to and from the Ray object store. It uses efficient data transports such as collective communication libraries (GLOO or NCCL) or point-to-point RDMA (via NVIDIA’s NIXL) to transfer data directly between devices, including both CPUs and GPUs.

Ray Train:

Local mode support for multi-process training with torchrun, enhanced checkpoint management with new upload modes and validation functions

Ray Serve:

  • Async Inference alpha release - New Ray Serve APIs for supporting long-running asynchronous inference tasks, such as for video or large document processing. Includes capabilities for using different message brokers, adapters like celery and DLQ.
  • Support for replica ranks - Replica level ranks are added for supporting large-model inference use-cases such as wide Data Parallel and Expert Parallel setups.
  • FastAPI factory pattern support - Enables using FastAPI plugins that are not serializable via cloudpickle.
  • Throughput optimizations - Enable these using the RAY_SERVE_THROUGHPUT_OPTIMIZED environment variable.

RLLib: Add StepFailedRecreateEnv exception for users with unsatisfiable environments

Ray Serve/Data LLM:

Improvements to multi node serving, loading models from remote storages, and sharing resources for efficiency (fractional gpus, sharing gpus on a data pipeline with shared stages)

Ray Libraries

Ray Data

🎉 New Features:

  • Expression and Filtering API: New expression API enables predicate-based filtering, UDF transformations with with_column, and column aliasing for more powerful data transformations (#56716, #56313, #56550, #55915, #55788, #56193, #56596)
  • Added support for projection pushdown into Parquet reads (#56500)
  • New download expression enables efficient loading of data from columns containing URIs with improved performance and error handling (#55824, #56462, #56294, #56852, #57146)
  • New explain() API provides insights into dataset execution plans (#55482)
  • Added streaming_train_test_split to avoid materialization for train/test splits (#56803)
  • Ray Data LLM:
    • Enabled multi-node tensor and pipeline parallelism for LLM processing (#56779)
    • Added chat_template_kwargs parameter for customizing chat templates (#56490)
    • Added support for OpenAI's nested image URL format in multimodal pipelines (#56584)
    • vLLM engines can now be shared across sequential processors for better resource utilization (#55179)
  • Enhanced Dataset.stats() output with input/output row counts per operator (#56040)
  • Added new metrics for task duration, inputs per task, and output blocks (#56958, #56379)
  • Time to first batch metric for better iteration performance monitoring (#55758)
  • Added type-specific aggregators for numerical, categorical, and vector columns (#56610)
  • Added fine-grained concurrency controls with max_task_concurrency and resource allocation options (#56370, #56381)

💫 Enhancements:

  • Join and shuffle improvements:
    • Default shuffle strategy changed from sort-based to hash-based for better performance (#55510)
    • Improved groupby performance with sort-shuffle pull-based approach (#57014)
    • Improved join operations with new abstractions (#57022, #56945, #55759)
  • Tensor type handling improvements:
    • Improved compatibility between PyArrow native types, extension types, and pandas Arrow dtypes (#57566, #57176, #57057)
    • Joins now supported with list/tensor non-key columns (#5648)
    • Enhanced support for variable-shaped tensor arrays with different dimensions (#57240, #56918, #56457)
    • Added serialization/deserialization for PyArrow Extension Arrays (#51972)
  • Removing Parquet metadata fetching in ParquetDatasource (#56105)
  • Resource requirements (num_cpus/gpus, memory) are now top-level parameters in most APIs for easier configuration (#56419)
  • zip() operator now supports combining multiple datasets, not just pairs (#56524)
  • Concurrency parameter now accepts tuples for more flexible configuration (#55867)
  • Write operations now use iterators instead of accumulating blocks in memory (#57108)
  • Reduced memory usage for OneHotEncoder (#56565)
  • Reduced memory usage for schema unification (#55880)
  • Eliminated unnecessary block copying and double execution of arrow conversions (#56569, #56793)
  • Improved Parquet encoding ratio estimation (#56268)
  • Enabled per-block limiting for Limit operator (#55239)
  • Optimized schema handling with deduplication and removed unnecessary unification (#55854, #55926)
  • Improved issue detection with event emission instead of just logs (#55717)
  • Better metric organization and external queue metric handling (#55495, #56604)
  • New backpressure policy based on downstream processing capacity (#55463)

🔨 Fixes:

  • Fixed streaming executor to properly drain output queues (#56941)
  • Improved resource management and reservation for operators (#56319, #57123)
  • Fixed retry logic for hash shuffle operations (#57575)
  • Fix split_blocks produce empty blocks (#57085)
  • Initialize datacontext after setting src_fn_name in actor worker (#57117)
  • Fix mongo datasource collStats invocation (#57027)
  • Fixing empty projection handling in ParquetDataSource (#56299)
  • Fix UnboundLocalError when read_parquet with columns and no partitioning (#55820)
  • Fix high memory usage with FileBasedDatasource & ParquetDatasource when using a large number of files (#55978)
  • [llm] Fixed LLM processor deployment with Ray Serve (#57061)
  • [llm] Fixed multimodal image extraction when system prompts are absent (#56435)
  • Ignore metadata for pandas block (#56402)
  • Remove metadata for hashing + truncate warning logs (#56093)

📖 Documentation:

  • Error in ray.data.groupby example in docs. (#57036)
  • Update on ray.data.Dataset.map() type hints. (#52455)
  • Small typo fix. (#56560)
  • Fix a typo. (#56587)
  • Fix documentation for new execution options resource limits assignment. (#56051)
  • Fix broken code snippets in user guides. (#55519)
  • Add Autoscaling Config for Context docs. (#55712)
  • Make object store tuning tips consistent with other pages. (#56705)
  • New example of how to perform batch inference with embedding models (#56027)
Ray Train

🎉 New Features:

  • Local mode support for Ray Train V2
    • Add local mode support to Ray Train v2 (num_workers=0). (#55487)
    • Add PyTorch local mode support for multi-process training with torchrun. (#56218)
  • Async checkpoint and validation for Ray Train
    • Add checkpoint_upload_mode to ray.train.report. (#55637)
    • Add checkpoint_upload_function to ray.train.report. (#56208)
    • Add validate_function and validate_config to ray.train.report. (#56360)
    • Add ray.train.get_all_reported_checkpoints method. (#54555)

💫 Enhancements:

  • Ray Train V2 Migration
    • Implement BaseWorkerGroup for V1/V2 compatibility. (#57151)
  • Train Controller is always actor + fix tune integration to enable this. (#55556)
  • Refactor AcceleratorSetupCallback to use before_init_train_context. (#56509)
  • Move collective implementations to train_fn_utils. (#55689)
  • Ray Train Framework support enhancements
    • Add hf trainer support for dictionary of datasets. (#56484)
    • Add usage tag key for JaxTrainer. (#55887)
  • Add Torch process group shutdown timeout. (#56182)
  • Ray Train disables blocking get inside async warning. (#56757)
  • ThreadRunner captures exceptions from nested threads. (#55756)
  • Abort reconciliation thread catches ray.util.state.get_actor exception. (#56600)
  • Ray Data Integration
    • Minor rework of get_dataset_shard. (#55825)
    • Create a deepcopy of the data context on the split coordinator process. (#56211)
    • Enable debug logging; fix default actor_locality_enabled. (#56632)
  • Refactor call_with_retry into shared library and use it to retry checkpoint upload. (#56608)
  • Remove Placement Group on Train Run Abort. (#56011)

🔨 Fixes:

  • Fix LightGBM v2 callbacks for Tune only usage. (#57042)
  • Ignore tensorflow test for py312. (#56244)
  • Revising test_jax_trainer flaky test. (#56854)
  • Fix test_jax_trainer imports. (#55799)
  • Fix test_jax_trainer::test_minimal_multihost Flaky Test. (#56548)
  • Disable drop_last flag to fix division by zero in torch dataloader baselines. (#56395)
  • Preload a subset of modules for torch dataloader forkserver multiprocessing. (#56343)

📖 Documentation:

  • Add checkpoint_upload_mode to checkpoint docs. (#56860)
  • Add get_all_reported_checkpoints and ReportedCheckpoint to API docs. (#56174)
  • Fix typo for Instantiating in ray train doc. (#55826)

🏗 Architecture refactoring:

  • Release tests for ray train local mode. (#56862)
  • Migrate tune_rllib_connect_test & tune_cloud_long_running_cloud_storage to ray train v2. (#56844)
  • Add v2 multinode persistence release test. (#56856)
  • Attach a quick checkpoint when reporting metrics. (#56718)
  • Upgrade tune_torch_benchmark to v2. (#56804)
  • Move tune_with_frequent_pausing to Ray Train v2 and tune_tests folder. (#56799)
  • Migrate xgboost/lgbm benchmarks to train V2. (#56792)
Ray Tune

🎉 New Features:

  • Trigger Checkpointing via Trial / Tuner Callback. (#55527)

💫 Enhancements:

  • Improve _PBTTrialState for dev/debugging usage. (#56890)
  • Enable Train V2 in Tune unit tests and examples. (#56816)
  • Enable Train v2 in doc examples. (#56820)
  • Reintroduce keras tune callback. (#57121)

🔨 Fixes:

  • Increase tune checkpoint test latency threshold. (#56251)
  • Remove a bunch of low-signal/redundant train/air/tune tests. (#56477)
  • Remove tune_air_oom test. (#57089)
Ray Serve

🎉 New Features:

  • Add tests and DLQ business logic for async inference. (#55608)
  • Foundation work for aggregating metrics on controller. (#55568)
  • Include custom metrics method and report to controller. (#56005)
  • Add post scaling api. (#56135)
  • Introduce deployment rank manager. (#55729)
  • Integrated deployment ranks with deployment state. (#55829)
  • Add rank and world size in replica context. (#55827)
  • Added ssl to ray serve. (#55228)
  • Custom parameter for downscaling to zero. (#56573)
  • Add optional APIType filter to /api/serve/applications/ endpoint. (#56458)
  • Make deployment retry configurable. (#56530)

💫 Enhancements:

  • Aggregate autoscaling metrics on controller. (#56306)
  • Update metrics_utils for future global metrics aggregation in controller. (#55568)
  • Use deployment method in access logs for replicas. (#56829)
  • Cache router metrics. (#55897)
  • Allow same event loop handle shutdown from sync context. (#55551)
  • Additional deps to start with prometheus. (#57155)
  • Require prefix RAY_SERVE_ for env vars + value verification. (#55864)
  • Record queued metrics on timeseries. (#57024)
  • Add throughput opt env var for serve. (#55804)
  • Fix None pending Request. (#54775)
  • Omit unnecessary newlines in the config generated by serve build app:app. (#56609)
  • Expose actor name for target group api. (#56738)

🔨 Fixes:

  • Fix proxy lua dependency in dockerfile. (#57221)
  • Fix non thread safe asyncio task creation in router. (#56124)
  • Fix throughput optimized benchmarks. (#56173)
  • Move ingress validation for multiple fastapi deployment into client. (#56706)
  • Explicitly close choose_replicas_with_backoff async generator. (#56357)
  • Fix buffered logging reusing request context. (#56094)
  • Use default gc frequency for proxy. (#56511)
  • Fixing deployment scoped custom autoscaling. (#56192)

📖 Documentation:

  • Stable links for Ray serve. (#56241)
  • Add document for using fastapi factory pattern in serve. (#56607)
  • Add documentation for async inference (#56453)

🏗 Architecture refactoring:

  • Add microbenchmark for throughput optimized configuration. (#55900)
  • Only checkpoint controller state when it is confirmed that target state has changed (#55848)
  • Proxy Actor Interface. (#56288)
  • Allow ProxyActor to return true/false for health check. (#56660)
Ray Serve/Data LLM

🎉 New Features:

  • Score API Integration for Serve LLM. (#55914)
  • Add start/stop_profile method to LLMServer. (#55920)
  • Add prefix cache hit rate to Serve LLM dashboard. (#55675)
  • Configure aggregation interval for dashboard. (#56591)

💫 Enhancements:

  • Bump vLLM to 0.10.2. (#56535)
  • Vllm bump -> 0.10.1.1. (#56099)
  • Refactor: Improve Deployment Builder Ergonomics and Code Organization. (#57181)
  • Fix build_llm_processor for ServeDeploymentProcessor. (#57061)
  • Allow setting data_parallel_size=1 in engine_kwargs. (#55750)
  • Allow tuple for concurrency arg. (#55867)
  • Fix multimodal image extraction when no system prompt is present. (#56435)
  • Support azure and abfss in LLM config. (#56441)
  • Support custom s3 endpoint when downloading models from remote. (#55458)
  • Skip safetensor file downloads for runai streamer mode. (#55662)
  • Support colocating local DP ranks in DPRankAssigner. (#55720)
  • Adjust LLM engine timing logic. (#55595)
  • Fixed DP DSV3 issues. (#55802)
  • Gracefully return timeouts as HTTPException. (#56264)
  • Remove upstreamed workarounds 1/3. (#54512)

🔨 Fixes:

  • Changed LMCache dependency to use 0.3.3 to avoid regressions in the release test. (#56104)
  • Fix doc test for Working with LLMs guide. (#55917)
  • Fix sglang byod on release. (#55885)

📖 Documentation:

  • Add gpt oss deployment example. (#56400)
  • Add serve llm example to index page + other minor fix. (#56788)
  • Example serve llm deployment. (#55819)
  • Fix serve llm examples. (#56382)
  • Docs: serve llm deployment examples refinement. (#56287)
  • Add example of serving a VLLM model on fractional gpu. (#57197)
  • Add main pytest code snippet to those tests that were missing it. (#57167)
RLlib

🎉 New Features:

  • Add StepFailedRecreateEnv exception. (#55146)

💫 Enhancements:

  • Add tags to envrunner calls, count in flight requests in ActorManager. (#56930, #56953)
  • Add spaces in case only offline data is used. (#56141)
  • Add Footsies environment and tests. (#55041)

🔨 Fixes:

  • Fix failing env step in MultiAgentEnvRunner. (#55567)
  • Fix Metrics/Stats lifetime count and throughput measurement for async remote actors. (#56047)
  • Fixes Implementation of Shared Encoder. (#54571)
  • Fix MetricsLogger/Stats throughput bugs. (#55696)

📖 Documentation:

  • [RLlib] [DOC] Fix documentation typos and grammatical issues in RLlib docs (#56130)
  • Update rllib-env.rst - typo. (#56140)
  • Fixing typo in the RLlib documentation. (#55752)
  • Fix formatting of class references. (#55764)

🏗 Architecture refactoring:

  • Remove checkpoint release tests. (#57105)
  • Remove long_running_apex test. (#57097)
  • LINT: Enable ruff imports for multiple directories in rllib. (#56736)
  • Upgrade g3 to g4 machine for aws release test. (#56248)
Ray Core

🎉 New Features:

  • Alpha release of Ray Direct Transport
    • Support ray.put() and ray.get() with nixl in gpu objects. (#56146)
    • Support using ray.get with nixl to retrieve data from GPU object refs created by remote tasks. (#56559)
    • Support tensor transfer from outside owners of actors. (#56485)
    • Automatically enable tensor transport for the actor if any method specifies one. (#55324)
    • Support cpu tensor transfer with NIXL in GPU Objects. (#55793)
    • Handle multiple transfers of the same object to an actor. (#55628)
    • Support NIXL as tensor transport backend. (#54459)
    • Add a user-facing call to wait for tensor to be freed. (#55076)
    • Always write to GPUObjectStore to avoid _get_tensor_meta() from hanging indefinitely. (#55433)
    • Add warning when GPU object refs passed back to the same actor. (#55639)
    • Avoid triggering a KeyError by the GPU object GC callback for intra-actor communication. (#54556)
  • Enable autoscaler v2 on clusters launched by the cluster launcher. (#55865)
  • Ray Symmetric Run Script and ray symmetric-run command. (#55111, #56497)

💫 Enhancements:

  • Ray Event Export
    • GCS AddEvent support. (#55528)
    • Actor event: add proto schema. (#56221)
    • Node event: add proto schema and send node events to the aggregator. (#56031, #56426)
    • Job event: add schema for driver job event and send job events to the aggregator. (#55032, #55213)
    • Emit actor events to Event aggregator. (#56617)
    • Export node event by default. (#56810)
  • Security
    • Bind ray internal servers to the specified node ip instead of 0.0.0.0. (#55178, #55210, #55298, #55484)
    • Bind dashboard agent http server to localhost in addition to the node ip. (#55910)
    • Bind dashboard agent grpc to specified ip instead of 0.0.0.0. (#55732)
    • Bind runtime env agent and dashboard agent http server to specified ip instead of 0.0.0.0. (#55431)
  • RPC network fault tolerance
    • Making core worker pub sub RPCs fault tolerant. (#56436)
    • Make RequestWorkerLease RPC Fault Tolerant. (#56191)
    • Making ReturnWorkerLease Idempotent. (#56073)
    • Making CancelWorkerLease RPC Fault Tolerant. (#56195)
    • Make Free Objects RPC Fault Tolerant. (#56293)
    • Make PinObjectIDs RPC Fault Tolerant. (#56443)
    • Make Unsubscribe Idempotent. (#57546)
    • Core Worker GetObjStatus GRPC Fault Tolerance. (#54567)
  • Not overriding accelerator id env vars when num_accelerators is 0 or not set. (#54928)
  • Migrate metric collection from opencensus to opentelemetry. (#53098, #53740)
  • Add per worker process group and deprecate process subreaper in favor of cleanup using process group. (#56476)
  • Add node_id validation in NodeAffinitySchedulingStrategy. (#56708)
  • Add io_context metrics to gcs and raylet. (#55762)
  • Modify RedisDelKeyPrefixSync to use the Redis SCAN command instead of KEYS. (#56907)
  • Add error_type to job failures. (#55578)
  • Add PID to structured logs for tasks and actors. (#55176)
  • Log actor name when warning about excess queueing. (#57124)
  • Output the error log on the driver side if the failed task will still retry. (#56472)
  • Prometheus http service discovery API. (#55656)
  • Add node ip in runtime env error message to improve debug observability. (#56837)
  • Fallback unserializable exceptions to their string representation. (#55476)
  • Introduce new exception type for un-pickleable exceptions. (#55878)
  • Improve docs for custom serialization for exceptions + add test. (#56156)
  • Add a warning when returning an object w/ num_returns=0. (#56213)
  • Adding ability to specify availability zones for ray cluster node pools on Azure. (#55532)
  • Query for supported Microsoft.Network/virtualNetworks API versions instead of relying on resource_client.DEFAULT_API_VERSION. (#54874)
  • Loosen Ray self-dependency check to allow matching versions. (#57019)
  • Add support for pip_install_options for pip. (#53551)
  • Proper typing for ObjectRef. (#55566)

🔨 Fixes:

  • Use subscription id from azure profile if not provided in config during AzureNodeProvider init. (#56640)
  • Always create standard public IP addresses (basic sku is deprecated). (#57131)
  • Fix: bug with config key pairs when launching worker nodes. (#57107)
  • If azure cluster launcher keypair doesnt exist create one automatically + doc typo fix. (#54596)
  • Fix "objects_valid" for the case that multiple instances of the same task are storing returns. (#54904)
  • Fix objects_valid check failure with except from BaseException. (#55602)
  • Preserve err type in case of task cancellation due to actor death. (#57538)
  • Fix checking for uv existence during ray_runtime setup. (#54141)
  • Prevent sending SIGTERM after calling Worker::MarkDead. (#54377)
  • Fixed the bug where the head was unable to submit tasks after redis is turned on. (#54267)
  • Fix possible race by checking node cache status instead of just subscription. (#54745)
  • Fix get actor timeout multiplier. (#54525)
  • Use a temporary file to share default worker path in runtime env. (#53653)
  • Fix check fail when task buffer periodical runner runs before RayEvent is initialized. (#55249)
  • Patch grpc with RAY_num_grpc_threads to control grpc thread count. (#54988)
  • Fix HandleRefRemoved thread safety. (#56445)
  • Fix error handling for plasma put errors. (#56070)
  • Fix batching logic in CoreWorkerPlasmaStoreProvider::Get. (#56041)
  • Fix RAY_CHECK failure during shutdown due to plasma store race condition. (#55367)
  • Fix autoscaler RAY_CHECK when GcsAutoscalerStateManager is out of sync with NodeManager. (#57010)
  • Fix bug where inflight requests are not taken into account by retryable. (#57142)
  • A timeout should be set when submitting patch requests for autoscaler. (#56605)
  • Fix the bug in memray regarding the default configuration of -o {output_file_path}. (#56732)
  • Fixed the issue of RemoveActorNameFromRegistry being called repeatedly. (#54955)
  • Fixed an issue where the command executed when use_podman=true and run_env=None was not prefixed with podman exec. (#56619)
  • Fix data race when using async gpu to gpu transfer. (#57112)
  • Retry + Make FreeActorObject idempotent. (#56447)
  • Fix check crash on gpu obj free if driver knows actor is dead. (#56404)
  • Handle system errors with a background monitor thread. (#56513)
  • Fix GPU metrics. (#56009)
  • Don't disconnect worker client on OBOD unless the worker is dead. (#57185)
  • Prevent stale GET request being registered if its lease was cleared. (#56766)
  • Drop messages received after ClientConnection::Close. (#56240)
  • Fix cancel race that leads to RAY_CHECK it->second.submitted_task_ref_count > 0. (#56123)
  • Reorder asyncio actor shutdown to terminate asyncio thread first. (#56827)
  • Fix actor import error message for async actors. (#55722)
  • Allow task manager access with submitter mutex + unify retry. (#56216)
  • Fix bug in restore_from_path such that connector states are also restored on remote EnvRunners. (#54672)
  • Fix S3 access issue in AKS. (#56358)
  • Add S3 public bucket fallback to handle NoCredentialsError. (#56334)
  • Fix ABFSS (Azure Blob File System Secure) protocol support problems during E2E test. (#56188)
  • Ray cluster commands (up, attach, status, etc) updates to work on Windows. (#54982)
  • Update cluster scheduler to handle label selector hard node id constraint. (#56235)

📖 Documentation:

  • Added guide on using type hints with Ray Core. (#55013)
  • Lifecycle of a task. (#55496)
  • Add OSS Document for Task Events. (#56203)
  • Fix Missing Events Issue in Task Events. (#55916)
  • Add docs for asyncio and object mutability. (#56790)
  • Update getting started and set up document for ray on vsphere. (#56954)
  • Docfix - rst annotation showing up in render. (#57104)
  • Add threading requirement to NodeProvider interface. (#56349)
  • Add guidance for matching Ray and Python versions with uv envs. (#56597)
  • Fix documentation typos, grammar, and terminology inconsistencies. (#56066, #56067, #56068, #56069, #56128, #56129, #56130, #56131, #56132, #56272, #56273, #56274, #56275, #56277, #56278, #56279)
  • Update SLURM docs with symmetric-run. (#56775)
  • Update Kueue integration documentation to include RayService & RayCluster support. (#56781)
  • Application Gateway for Containers as ingress to access Ray Cluster. (#56574)
  • Update DLAMI Information in aws.md. (#55702)
Dashboard

💫 Enhancements:

  • Use pynvml for GPU metrics. (#56000)
  • Default dashboard usability improvements. (#55620)
  • Make Ray Train Dashboard Panel Ids Static. (#55559)
  • Small fixes to Metrics Tab for kube-ray clusters. (#57149)
  • Add metadata to indicate full dashboard embedding is supported. (#56077)
  • Use ray node id instead of ip for profilinglink. (#55439)
  • Fix grafana dashboard generation bug. (#56346)
  • Catch OSError when detecting the GPU. (#56158)

🔨 Fixes:

  • Removed references to a deleted Data metrics panel. (#55478)
  • Fix typo in memory_utils and adjust display formatting for clarity. (#56217)
Ray Images

🎉 New Features:

  • Add support for building and publishing ray-extra images. (#56543)
  • Add ray-llm and ray-ml extra images. (#56800)
  • Build ray-extra images for aarch64. (#56818)
  • Add slim image to the image build matrix. (#55723)

💫 Enhancements:

  • Add haproxy binary, for ray serve use. (#56845)
  • Add ~/.local/bin to PATH in slim image. (#56920)
  • Remove slim's dependency on normal bases. (#56544)
  • Add label for ray version and commit. (#56493)
  • Refactor apt package installation. (#55701)
  • Allow using explicit base type. (#56545)
  • Add extra-test stage in image building. (#55725)
  • Add test rules for image building files. (#56554)
  • Add ray-llm image type check. (#56542)
  • Unify label and tag conventions. (#56189)
  • GKE GPU compat paths: PATH, LD_LIBRARY_PATH (temporarily). (#55569)
  • Stop publishing ray-ml images. (#57070)
  • Stop building and releasing x86 osx wheels. (#57077)

📖 Documentation:

  • Update latest Docker dependencies for 2.49.0 release. (#55966)
  • Update latest Docker dependencies for 2.49.2 release. (#56760)
Wheels and images

💫 Enhancements:

  • Use bazel run to generate files required for the wheel and testing (#55957, #56527, #56969, #56004, #55928)
  • Ban click 8.3.0. (#56789)
  • Upgrade protobuf to v4. (#54496)
  • Add adlfs[abfs] into image (#56084)
  • Upgrade boto3 to 1.29.x. (#56363)
  • Upgrading orjson to 3.9.15. (#55972)
  • Update spdlog to 15.3. (#56711)
Thanks!

Thank you to everyone who contributed to this release!

@alexeykudinkin, @richardliaw, @nrghosh, @ljstrnadiii, @Daraan, @kouroshHakha, @Bye-legumes, @kamil-kaczmarek, @jugalshah291, @sampan-s-nayak, @jjyao, @Evelynn-V, @gangsf, @omatthew98, @TimothySeah, @kshanmol, @goutamvenkat-anyscale, @axreldable, @jiangwu300, @simonsays1980, @400Ping, @JasonLi1909, @chuang0221, @weiliango, @Myasuka, @win5923, @liulehui, @khluu, @ok-scale, @eicherseiji, @tianyi-ge, @MengjinYan, @kevin85421, @Yevet, @orangeQWJ, @vie-serendipity, @edoakes, @wyhong3103, @israbbani, @vickytsang, @HassamSheikh, @acrewdson, @czgdp1807, @daiping8, @carolynwang, @thc1006, @jeffreyjeffreywang, @Stack-Attack, @Catch-Bull, @elliot-barn, @Levi080513, @BestVIncent, @dragongu, @jmajety-dev, @jcarlson212, @tohtana, @abrarsheikh, @crypdick, @Yicheng-Lu-llll, @ZacAttack, @justinvyu, @lk-chen, @alanwguo, @mcoder6425, @my-vegetable-has-exploded, @yancanmao, @arcyleung, @rjpower, @codope, @harshit-anyscale, @dayshah, @stephanie-wang, @KaisennHu, @ryanaoleary, @saihaj, @mattip, @rueian, @Kunchd, @pavitrabhalla, @owenowenisme, @Aydin-ab, @gvspraveen, @minerharry, @JackGammack, @jpatra72, @coqian, @zcin, @dstrodtman, @aslonnie, @ahao-anyscale, @GuyStone, @iamjustinhsu, @seanlaii, @ruisearch42, @akyang-anyscale, @ArturNiederfahrenhorst, @bveeramani, @OneSizeFitsQuorum, @xinyuangui2, @sb-hakunamatata, @22quinn, @Sparks0219, @sven1977, @snehachhabria, @dioptre, @nadongjun, @eric-higgins-ai, @marosset, @MatthewCWeston, @pcmoritz, @can-anyscale, @pimdh, @roshankathawate, @matthewdeng, @martinbomio, @GokuMohandas, @alimaazamat, @ali-corpo, @landscapepainter, @Qiaolin-Yu, @vaishdho1, @avigyabb, @srinathk10, @tannerdwood

View originalPermalink
How 2.50.0 went
2.49.2

Ray-2.49.2

There is no difference between 2.49.2 and 2.49.1, though we needed a patch version for other out of band reasons. To fill the awkward blankness, here is a haiku about Ray:

Summit drawing near Ray advances, step by step Scaling without end

View originalPermalink
How 2.49.2 went
2.49.1

Ray-2.49.1

Fixed 2
  • Fix issue where GPU metrics are missing in Ray Dashboard
  • Fix regression in handling very large schemas in Ray Data
  • Ray Dashboard: Fix issue where GPU metrics are missing (#56006)
  • Ray Data: Fixed regression in handling very large schemas (#56058)
View originalPermalink
How 2.49.1 went
2.49.0

Ray-2.49.0

Added 14
  • Wrapped batch indices in a BatchMetadata object to make per-batch metadata explicit
  • Added support for Anti/Semi Join types
  • Introduced an Issue Detection Framework
  • Added an option to enable out-of-order execution for better performance
  • Introduced a StreamingSplit logical operator for DAG rewrite
  • Added a stratify parameter to train_test_split
Changed 5
  • Decoupled actor and node autoscaling; autoscaling now also considers budget
  • Faster hash-shuffle resource usage calculation and more accurate shuffle progress totals
  • Reduced Parquet metadata storage usage
  • map_batches now defaults to row_modification=False and avoids pushing past limit
  • ray.train.get_dataset_shard now lazily configures dataset sharding for better startup behavior
Fixed 1
  • AutoscalingActorPool now properly downscales after execution

Release Highlights

Ray Data:

  • We’ve implemented a variety of performance enhancements, including improved actor/node autoscaling with budget-aware decisions; faster/more accurate shuffle accounting; reduced Parquet metadata footprint; and out-of-order execution for higher throughput.
  • We’ve also implemented anti/semi joins, stratified train_test_split, and added Snowflake connectors.

Ray Core:

  • Performance/robustness cleanups around GCS publish path and raylet internals; simpler OpenTelemetry flagging; new user-facing API to wait for GPU tensor free; plus assorted test/infra tidy-ups

Ray Train:

  • We’ve introduced a new JaxTrainer with SPMD support for TPUs.

Ray Serve:

  • Custom Autoscaling per Deployment Serve now supports user-defined autoscaling policies via AutoscalingContext and AutoscalingPolicy, enabling fine-grained scaling logic at the deployment level. This is part of a large effort where we are adding support for autoscaling based on custom metrics in Serve, see this RFC for more details.
  • Async Inference (Initial Support): Ray Serve introduces asynchronous inference execution, laying the foundation for better throughput and latency in async workloads. Please see this RFC for more details.
  • Major Performance Gains: This version of ray serve brings double digit % performance improvements both in throughput and latency. See release notes for more details.

Ray Serve/Data LLM:

  • We’ve refactored Ray Serve LLM to be fully compatible with the default vllm serve and also now supports vLLM=0.10.
  • We’ve added a prefix cache-aware router with PrefixCacheAffinityRouter for optimized cache utilization; dynamic cache management via reset prefix cache remote methods; enhanced LMCacheConnectorV1 with kv_transfer_config support.

Ray Libraries

Ray Data

🎉 New Features:

  • Wrapped batch indices in a BatchMetadata object to make per-batch metadata explicit. (#55643)
  • Added support for Anti/Semi Join types. (#55272)
  • Introduced an Issue Detection Framework. (#55155)
  • Added an option to enable out-of-order execution for better performance. (#54504)
  • Introduced a StreamingSplit logical operator for DAG rewrite. (#54994)
  • Added a stratify parameter to train_test_split. (#54624)
  • Added Snowflake connectors. (#51429)
  • Updated Hudi integration to support incremental query. (#54301)
  • Added an Actor location tracker. (#54590)
  • Added BundleQueue.has_next. (#54710)
  • Made DEFAULT_OBJECT_STORE_MEMORY_LIMIT_FRACTION configurable. (#54873)
  • Added Expression support & a with_columns API. (#54322)
  • Allocate GPU resources in ResourceManager. (#54445)

💫 Enhancements:

  • Decoupled actor and node autoscaling; autoscaling now also considers budget. (#55673, #54902)
  • Faster hash-shuffle resource usage calculation; more accurate shuffle progress totals. (#55503, #55543)
  • Reduced Parquet metadata storage usage. (#54821)
  • Export API improvements: refresh dataset/operator state, sanitize metadata, and truncate exported metadata. (#55355, #55379, #55216, #54623)
  • Metrics & observability: task metric improvements, external-buffer block-count metric, row-based metrics, clearer operator names in logs, single debug log when aggregators are ready. (#55429, #55022, #54693, #52949, #54483)
  • Dashboard: added “Max Bytes to Read” panel/budget, panels for blocks-per-task and bytes-per-block, and streaming executor duration. (#55024, #55020, #54614)
  • Planner/execution & infra cleanups: ExecutionResources and StatsManager cleanup, planner interface refactor, node trackers init, removed ray.get in _MapWorker ctor, removed target_shuffle_max_block_size. (#54694, #55400, #55018, #54665, #54734, #55158)
  • Behavior/interop tweaks: map_batches defaults to row_modification=False and avoids pushing past limit; limited operator pushdown; prefetch for PandasJSONDatasource; use cloudpickle for Arrow tensor extension ser/des; bumped Arrow to 21.0; schema warning tone change. (#54992, #54457, #54667, #54831, #55426, #54630)
  • Removed randomize-blocks reorder rule for more stable behavior. (#55278)

🔨 Fixes:

  • AutoscalingActorPool now properly downscales after execution. (#55565)
  • StatsManager handles StatsActor loss on disconnect. (#55163)
  • Handle missing chunks key when Databricks UC query returns zero rows. (#54526)
  • Handle empty fragments in sampling when num_row_groups=0. (#54822)
  • Restored handling of PyExtensionType to keep compatibility with previously written datasets. (#55498)
  • Prevent negative resource budget when concurrency exceeds the global limit; fixed resource-manager log calculation. (#54986, #54878)
  • Default write_parquet warning removed; handled unhashable types in OneHotEncoding. (#54864, #54863)
  • Overwrite mode now maps to the correct Arrow behavior for parallel writes. (#55118)
  • Added back from_daft Arrow-version checks. (#54907)
  • Pandas chained in-place assignment warning resolved. (#54486)
  • Test stability/infra: fixed flaky tests, adjusted bounds and sizes, added additional release tests/chaos variants for image workloads, increased join test size, adjusted sorting release test to produce 1 GB blocks. (#55485, #55489, #54806, #55120, #54716, #55402, #54971)

📖 Documentation:

  • Added a user guide for aggregations. (#53568)
  • Added a code snippet in docs for partitioned writes. (#55002)
  • Updated links to Lance documentation. (#54836)
Ray Train

🎉 New Features:

  • Introduced JaxTrainer with SPMD support on TPUs (#55207)

💫 Enhancements:

  • ray.train.get_dataset_shard now lazily configures dataset sharding for better startup behavior (#55230)
  • Clearer worker error logging (#55222)
  • Fail fast when placement group requirements can never be satisfied (#54402)
  • New ControllerError surfaced and handled via failure policy for improved resiliency (#54801, #54833)
  • TrainStateActor periodically checks controller health and aborts when necessary (#53818)

🔨 Fixes:

  • Resolve circular import in ray.train.v2.lightning.lightning_utils (#55668)
  • Fix XGBoost v2 callback behavior (#54787)
  • Suppress a spurious type error (#50994)
  • Reduce test flakiness: remove randomness and bump a data-integration test size (#55315, #55633)

📖 Documentation:

  • New LightGBMTrainer user guide (#54492)
  • Fix code-snippet syntax highlighting (#54909)
  • Minor correction in experiment-tracking guide comment (#54605)

🏗 Architecture refactoring:

  • Public Train APIs routed through TrainFnUtils for consistency (#55226)
  • LoggingManager utility for Train logging (#55121)
  • Convert DEFAULT variables from strings to bools (#55581)
Ray Tune

🎉 New Features:

  • Add video FPS support to WandbLoggerCallback (#53638)

💫 Enhancements:

  • Typing: reset_config now explicitly returns bool (#54581)
  • CheckpointManager supports recording scoring metric only (#54642)

🔨 Fixes:

  • Fix XGBoost v2 callback integration (#54787)
  • Correct type for RunConfig.progress_reporter (#48439)

📖 Documentation:

  • Minor fixes (#55125, #54942)
Ray Serve

🎉 New Features:

  • Async inference support in Ray Serve (initial phase). Provides basic asynchronous inference execution, with follow-up work planned for failed/unprocessed queues and additional tests. #54824
  • Per-deployment custom autoscaling controls. Introduces AutoscalingContext and AutoscalingPolicy classes, enabling user-defined autoscaling strategies at the deployment level. #55253
  • Same event loop router. Adds option to run the Serve router in the same event loop as the proxy, yielding ~17% throughput improvement. #55030

💫 Enhancements:

  • Async get_current_servable_instance(). Converts the FastAPI dependency to async def, removing threadpool overhead and boosting performance: 35% higher RPS and reduced latency. #55457
  • Access log optimization. Cached contexts in request path logging improved request throughput by ~16% with lower average latency. #55166
  • Batching improvements. Default batch wait timeout increased from 0.0s to 0.01s (10ms) to enable meaningful batching. #55126
  • HTTP receive refactor. Cleaned up handling of replica-side HTTP receive tasks. #54543 / #54565
  • Configurable replica router backoff. Added knobs for retry/backoff control when routing to replicas. #54723
  • Autoscaling ergonomics. Marked per-deployment autoscaling metrics push interval config as deprecated for consistency. #55102
  • Health check & env var safety. Introduced warnings for invalid/zero/negative environment variable values, with migration path planned for Ray 2.50.0. #55464, #54944
  • Improved CLI UX. serve config now prints No configuration was found. instead of an empty string. #54767

🔨 Fixes:

  • Removed brittle ray._private dependency usage. #55659
  • HTTP route test fixes. Migrated to get_application_url() to avoid hardcoded URLs, reducing flakiness on Windows. #55623, #54974, #54924, #54911, #54704, #54903, #54882, #54877, #54631, #53933
  • Semaphore bug fix. Corrected race where more workers than allowed could acquire the semaphore. #55147
  • LongPollClient cancellation. Prevented spurious cancellation of listen_for_change. #54832
  • Backpressure error code. gRPC now returns RESOURCE_EXHAUSTED instead of UNAVAILABLE on overload. #54537
  • Logging improvements. Added request IDs to proxy access logs; avoided duplicate shutdown log lines. #54657, #54534
  • Test stability. Various waits, deflakes, and sync fixes across Serve tests. #54794, #54522, #54585

📖 Documentation:

  • Unexpected queuing behavior. Documented quirks in handle request queuing. #54542

🏗 Architecture refactoring:

  • Router/handle internals refactored for clarity and future feature expansion. #55635
  • Model composition benchmarks. Added benchmarking to track performance of common composition patterns. #55549
  • Constants refactor. Utility functions moved out of constants.py for better readability and stricter env var validation. #54944, #55464
  • Ray internals migration. Moved usage, ray_option_utils, and selected constants from _private to _common. #54915, #54578
Ray Serve/Data LLM

🎉 New Features:

  • Prefix cache-aware router with PrefixCacheAffinityRouter for optimized cache utilization. (#55218, #55588)
  • Reset prefix cache remote method for dynamic cache management. (#55658)
  • LMCacheConnectorV1 support for kv_transfer_config to enhance key-value transfer configurations. (#54579)
  • LLMServer and LLMEngine major refactor for 100% vLLM serve frontend compatibility. (#54554)

💫 Enhancements:

  • vLLM engine upgrade to version 0.10.0 with improved performance and compatibility. (#55067)
  • Enhanced error handling for invalid model_id parameters with clearer error messages. (#55589)
  • Improved telemetry handling with better race condition management for push operations. (#55558)
  • Optimized deployment defaults with better configuration values to prevent bottlenecks. (#54696)
  • LoRA workflow improvements with refactored downloading and utility functions. (#54946)
  • LLMServer refactor to synchronous initialization for better reliability. (#54835)
  • Mistral tokenizer support for tekken tokenizer compatibility. (#54666)
  • Smart batching logic that skips batching when batch_interval_ms == 0. (#54751)
  • Dashboard enhancements with improved LLM metrics and monitoring capabilities. (#54797)

🔨 Fixes:

  • Pyright linting corrections for Ray Serve LLM examples. (#55284)
  • Test stability improvements for DeepSeek model and vLLM engine processor tests. (#55401, #55120)
  • Serialization fixes for ChatCompletionRequest tool_calls ValidatorIterator objects. (#55538)

📖 Documentation:

  • Prefix cache router documentation with comprehensive usage examples. (#55218)
  • Multi-LoRA documentation improvements with clearer setup instructions. (#54788)
  • STRICT_PACK strategy FAQ documentation explaining data.llm packing behavior. (#55505)

🏗 Architecture refactoring:

  • Docker image optimizations with UCX and NCCL updates, plus GKE GPU operator compatibility paths. (#54598, #55206)
RLlib

🎉 New Features:

  • Implemented Implicit Q-Learning (IQL). (#55304, #55422)
  • DreamerV3 is now available in PyTorch. (#45463, #55140)
  • Discrete actions support for SAC. (#53982)

💫 Enhancements:

  • Upgraded RLlink protocol for external env/simulator training. (#53550)
  • Performance improvements in Offline RL API through switching to iter_torch_batches. (#54277)
  • Added an example for curriculum learning in Atari Pong. (#55304)

🔨 Fixes:

  • Corrected TensorType handling. (#55694)
  • Fixed a bug with multi-learner setups in Offline RL API. (#55693)
  • Addressed ImportError in Atari examples. (#54967)
  • Fixed some bugs in the docs for IQL and CQL. (#55614)
  • Increased default timesteps on two experiments. (#54185)
  • Fixed TorchMultiCategorical.to_deterministic when having different number of categories and logits with time dimension. (#54414)
  • Added missing documentation for SACConfig's training(). (#53918)
  • Fixed bug in restore_from_path such that connector states are also restored on remote EnvRunners. (#54672)
  • Fixed missing support for config.count_steps_by = "agent_steps". (#54885)
  • Added missing colon to CUBLAS_WORKSPACE_CONFIG. (#53913)
  • Removed rllib_contrib completely from RLlib. (#55182)

🏗 Architecture refactoring:

  • Deprecated TensorFlow support from new API stack. (#55042)
  • Deprecated input/output specs from RLModule. (#55141)
  • Deprecated --enable-new-api-stack flag from all scripts. (#54853, #54702)
Ray Core

🎉 New Features:

💫 Enhancements:

🔨 Fixes:

📖 Documentation:

  • Added guide on using type hints with Ray Core. (#55013)

🏗 Architecture refactoring:

  • Migrate metric collection from opencensus to opentelemetry (#53098, #53740)
Dashboard

💫 Enhancements:

  • Grafana: new Operator filter for Data; Prometheus adds RayNodeType label on for nodes. (#55493, #55192)

🔨 Fixes:

  • Removed references to a deleted Data metrics panel. (#55478)
Ray Images

🎉 New Features:

  • Added cuda 12.6 based images (#55425, #55444)

💫 Enhancements:

  • Upgraded protobuf to v4 (#54496)
Docs

💫 Enhancements:

  • KubeRay docs: added InteractiveMode quick-start details; expanded Core type-hints guidance; Serve LLM example coverage; Data LLM batching FAQ (#55570, #55284)

🔨 Fixes:

  • Various formatting/mis-highlighting and lints across Train/Tune/Serve LLM docs. (#55284, #54763)
Thanks!

Thank you to everyone who contributed to this release! @pavitrabhalla, @Daraan, @Sparks0219, @daiping8, @abrarsheikh, @sven1977, @Toshaksha, @bveeramani, @MengjinYan, @GokuMohandas, @codope, @nadongjun, @SolitaryThinker, @matthewdeng, @elliot-barn, @isimluk, @avibasnet31, @OneSizeFitsQuorum, @Future-Outlier, @marosset, @jackfrancis, @kshanmol, @eicherseiji, @dayshah, @iamjustinhsu, @Qiaolin-Yu, @goutamvenkat-anyscale, @Yicheng-Lu-llll, @yantarou, @rclough, @zcin, @NeilGirdhar, @VarunBhandary, @400Ping, @akshay-anyscale, @vickytsang, @xushiyan, @JasonLi1909, @n-elia, @simonsays1980, @dragongu, @Kishanthan, @ruisearch42, @jectpro7, @TimothySeah, @liulehui, @rueian, @HollowMan6, @akyang-anyscale, @axreldable, @czgdp1807, @alanwguo, @justinvyu, @ok-scale, @my-vegetable-has-exploded, @landscapepainter, @fscnick, @machichima, @mpashkovskii, @ZacAttack, @gvspraveen, @sword865, @lmsh7, @Ziy1-Tan, @rebel-scottlee, @sampan-s-nayak, @coqian, @can-anyscale, @Bye-legumes, @win5923, @MortalHappiness, @angelinalg, @khluu, @aslonnie, @krishnakalyan3, @minosvasilias, @x-tong, @xinyuangui2, @raulchen, @Yangruipis, @edoakes, @kevin85421, @wingkitlee0, @Fokko, @cristianjd, @srinathk10, @owenowenisme, @JoshKarpel, @MengqingCao, @leopardracer, @westonpace, @LeslieWongCV, @VassilisVassiliadis, @crypdick, @alexeykudinkin, @mjacar, @kunling-anyscale, @saihaj, @kouroshHakha, @ema-pe, @markjm, @avigyabb, @dshepelev15, @mauvilsa, @omatthew98, @nrghosh, @ryanaoleary, @Aydin-ab, @lk-chen, @stephanie-wang, @harshit-anyscale, @jjyao, @bullgom, @Yevet, @israbbani

View originalPermalink
How 2.49.0 went
2.48.0

Ray-2.48.0

Added 9
  • Add reading from Delta Lake tables and Unity Catalog integration
  • Enhanced pin_memory support in iter_torch_batches
  • Added broadcast_from_rank_zero and barrier collective operations
  • Enhanced hardware metrics integration with Grafana dashboards
  • Added support for dynamically loading callbacks via environment variables
  • Added RouterConfig field to DeploymentConfig for custom RequestRouter configuration
Changed 9
  • Enhanced handling of mismatched columns and pandas.NA values
  • Improved read_text trailing newline semantics
  • Optimized backpressure handling with policy-based resource management
  • Enhanced write_parquet with support for both partition_by and row limits
  • Improved execution performance for One Hot encoding in preprocessors
  • Improved checkpoint population from before_init_train_context
Fixed 4
  • Fixed map_groups issues
  • Prevented Op fusion for streaming repartition to avoid performance degradation
  • Fixed ActorPool autoscaler scaling up logic
  • Resolved empty dataset repartitioning issues

Release Highlights

  • Ray Data: This release features a new Delta Lake and Unity Catalog integration and performance improvements to various reading/writing operators.
  • Ray Core: Enhanced GPU object support with intra-process communication and improved Autoscaler v2 functionality
  • Ray Train: Improved hardware metrics integration with Grafana and enhanced collective operations support
  • Ray Serve LLM: This release features early proof of concept for prefill-decode disaggregation deployment and LLM-aware request routing such as prefix-cache aware routing.
  • Ray Data LLM: Improved throughput and CPU memory utilization for ray data workers.

Ray Libraries

Ray Data

🎉 New Features:

  • Add reading from Delta Lake tables and Unity Catalog integration (#53701)
  • Enhanced pin_memory support in iter_torch_batches (#53792)
  • Add pin_memory to iter_torch_batches (#53792)

💫 Enhancements:

  • Re-enabled sorting in Ray Data tests with performance improvements (#54475)
  • Enhanced handling of mismatched columns and pandas.NA values (#53861, #53859)
  • Improved read_text trailing newline semantics (#53860)
  • Optimized backpressure handling with policy-based resource management (#54376)
  • Enhanced write_parquet with support for both partition_by and row limits (#53930)
  • Prevent filename collisions on write operations (#53890)
  • Improved execution performance for One Hot encoding in preprocessors (#54022)

🔨 Fixes:

  • Fixing map_groups issues (#54462)
  • Prevented Op fusion for streaming repartition to avoid performance degradation (#54469)
  • Fixed ActorPool autoscaler scaling up logic (#53983)
  • Resolved empty dataset repartitioning issues (#54107)
  • Fixed PyArrow overflow handling in data processing (#53971, #54390)
  • Fixed IcebergDatasink to properly generate individual file uuids (#52956)
  • Avoid OOMs with read_json(..., lines=True) (#54436)
  • Handle HuggingFace parquet dataset resolve URLs (#54146)
  • Fixed BlockMetadata derivation for Read operator (#53908)

📖 Documentation:

  • Updated AggregateFnV2 documentation to clarify finalize method (#53835)
  • Improved preprocessor and vectorizer API documentation
Ray Train

🎉 New Features:

  • Added broadcast_from_rank_zero and barrier collective operations (#54066)
  • Enhanced hardware metrics integration with Grafana dashboards (#53218)
  • Added support for dynamically loading callbacks via environment variables (#54233)

💫 Enhancements:

  • Improved checkpoint population from before_init_train_context (#54453)
  • Enhanced controller state logging and metrics (#52805)
  • Added structured logging environment variable support (#52952)
  • Improved handling of Noop scaling decisions for smoother scaling logic (#53180)
  • Logging of controller state transitions to aid in debugging and analysis (#53344)

🔨 Fixes:

  • Fixed GPU tensor reporting in ray.train.report (#53725)
  • Enhanced move_tensors_to_device utility for complex tensor structures (#53109)
  • Improved worker health check error handling with trace information (#53626)
  • Fixed GPU transfer support for non-contiguous tensors (#52548)
  • Force abort on SIGINT spam and do not abort finished runs (#54188)

📖 Documentation:

  • Updated beginner PyTorch example (#54124)
  • Added documentation for ray.train.collective APIs (#54340)
  • Added a note about PyTorch DataLoader's multiprocessing and forkserver usage (#52924)
  • Fixed various docstring format and indentation issues (#52855, #52878)
  • Added note that ray.train.report API docs should mention optional checkpoint_dir_name (#54391)

🏗 Architecture refactoring:

  • Removed subclass relationship between RunConfig and RunConfigV1 (#54293)
  • Enhanced error handling for finished training runs (#54188)
  • Deduplicated ML doctest runners in CI for efficiency (#53157)
  • Converted isort configuration to Ruff for consistency (#52869)
Ray Tune

💫 Enhancements:

  • Updated test_train_v2_integration to use the correct RunConfig (#52882)

🔨 Fixes:

  • Fixed RayTaskError serialization logic (#54396)
  • Improved experiment restore timeout handling (#53387)

📖 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 RouterConfig field to DeploymentConfig for custom RequestRouter configuration (#53870)
  • Added support for implementing custom request routing algorithms (#53251)

💫 Enhancements:

  • Enhanced FastAPI ingress deployment validation for multiple deployments (#53647)
  • Optimized get_live_deployments performance (#54454)
  • Progress towards making ray.serve.llm compatible with vLLM serve frontend (#54481, #54443, #54440)

🔨 Fixes:

  • Fixed deployment scheduler issues with component scheduling (#54479)
  • Fixed runtime_env validation for py_modules (#53186)
  • Added descriptive error message when deployment name is not found (#45181)

📖 Documentation:

  • Added troubleshooting guide for DeepSeek/multi-node GPU deployment on KubeRay (#54229)
  • Updated the guide on serving models with Triton Server in Ray Serve
  • Added documentation for custom request routing algorithms
  • Added custom request router docs (#53511)

🏗 Architecture refactoring:

  • Remove indirection layers of node initialization (#54481)
  • Incremental refactor of LLMEngine (#54443)
  • Remove random v0 logic from serve endpoints (#54440)
  • Remove usage of internal_api.memory_summary() (#54417)
  • Remove usage of ray._private.state (#54140)
Ray Serve/Data LLM

🎉 New Features

  • Support separate deployment config for PDProxy in PrefixAwareReplicaSet (#53935)
  • Support for prefix-aware request router (#52725)

💫 Enhancements

  • Log engine stats after each batch task is done. (#54360)
  • Decouple max_tasks_in_flight from max_concurrent_batches (#54362)
  • Make llm serve endpoints compatible with vLLM serve frontend, including streaming, tool_code, and health check support (#54440)
  • Remove botocore dependency in Ray Serve LLM (#54156)
  • Update vLLM version to 0.9.2 (#54407)

🔨 Fixes

  • Fix health check in prefill disagg (#53937)
  • Fix doc to only support int concurrency (#54196)
  • Fix vLLM batch test by changing to Pixtral (#53744)
  • Fix pickle error with remote code models in vLLM Ray workloads (#53868)
  • Adaption of the change of vllm.PoolingOutput (#54467)

📖 Documentation

  • Ray serve/lora doc fix (#53553)
  • Add Ray serve/LLM doc (#52832)
  • Add a doc snippet to inform users about existing diffs between vLLM and Ray Serve LLM behavior in some APIs like streaming, tool_code, and health check (#54123)
  • Troubleshooting DeepSeek/multi-node GPU deployment on KubeRay (#54229)

🏗 Architecture refactoring

  • Make llm serve endpoints compatible with vLLM serve frontend, including streaming, tool_code, and health check support (#54490)
  • Prefix-aware scheduler [2/N] Configure PrefixAwareReplicaSet to correctly handle the number of available GPUs for each worker and to ensure efficient GPU utilization in vLLM (#53192)
  • Organize spread out utils.py (#53722)
  • Remove ImageRetriever class and related tests from the LLM serving codebase. (#54018)
  • Return a batch of rows in the udf instead of row by row (#54329)
RLlib

🎉 New Features:

  • Implemented Offline Policy Evaluation (OPE) via Importance Sampling (#53702)
  • Enhanced ConnectorV2 ObservationPreprocessor APIs with multi-agent support (#54209)
  • Add GPU inference to offline evaluation (#52718)

💫 Enhancements:

  • Enhanced MetricsLogger to handle tensors in state management (#53514)
  • Improved env seeding in EnvRunners with deterministic training example rewrite (#54039)
  • Cleanup of meta learning classes and examples (#52680)

🔨 Fixes:

  • Fixed EnvRunner restoration when no local EnvRunner is available (#54091)
  • Fixed shapes in explained_variance for recurrent policies (#54005)
  • Resolved device check issues in Learner implementation (#53706)
  • Enhanced numerical stability in MeanStdFilter (#53484)
  • Fixed weight synching in offline evaluation (#52757)
  • Fixed bug in split_and_zero_pad utility function (#52818)

📖 Documentation:

  • Do-over of examples for connector pipelines (#52604)
  • Remove "new API stack" banner from all RLlib docs pages as it's now the default (#54282)
Ray Core

🎉 New Features:

  • Enhanced GPU object support with intra-process communication (#53798)
  • Integrated single-controller collective APIs with GPU objects (#53720)
  • Added support for ray.get on driver process for GPU objects (#53902)
  • Supporting allreduce on list of input nodes in compiled graphs (#51047)
  • Add single-controller API for ray.util.collective and torch gloo backend (#53319)

💫 Enhancements:

  • Improved autoscaler v2 functionality with cloud instance ID reusing (#54397)
  • Enhanced cluster task manager with better resource management (#54413)
  • Upgraded OpenTelemetry SDK for better observability (#53745)
  • Improved actor scheduling to prevent deadlocks in ordered actors (#54034)
  • Enhanced get_max_resources_from_cluster_config functionality (#54455)
  • Use std::move in cluster task manager constructor (#54413)
  • Improve status messages and add comments about stale seq_no handling (#54470)
  • uv run integration is now enabled by default (#53060)

🔨 Fixes:

  • Fixed race conditions in object eviction and repinning for recovery (#53934)
  • Resolved GCS crash issues on duplicate MarkJobFinished RPCs (#53951)
  • Enhanced actor restart handling on node failures (#54088)
  • Improved reference counting during worker graceful shutdown (#53002)
  • Fix race condition when canceling task that hasn't started yet (#52703)
  • Fix the issue where a valid RestartActor rpc is ignored (#53330)
  • Fixed "Check failed: it->second.num_retries_left == -1" error (#54116)
  • Fix detached actor being unexpectedly killed (#53562)

📖 Documentation:

  • Enhanced troubleshooting guides and API documentation
  • Updated reStructuredText formatting on Resources page (#53882)
  • Fix working code snippets (#52748)
  • Add doc for running KubeRay dashboard (#53830)
  • Add antipattern for nested ray.get (#43184)

🏗 Architecture refactoring:

  • Delete old skipped tests and unused code (#54427)
  • Consolidate TaskManager interface (#54317)
  • Move dependencies of NodeManager to main.cc for better testability (#53782)
  • Use smart pointer in logging.cc (#54351)
  • Delete event_label and unused environment variables (#54378, #54095)
  • Remove actor task path in normal task submitter (#53996)
  • Rename GcsFunctionManager and use fake in test (#53973)
Dashboard

🎉 New Features:

  • Add dynolog for on-demand GPU profiling for Torch training (#53191)

💫 Enhancements:

  • Added TPU usage metrics to reporter agent (#53678)
  • Enhanced GPU profiling manager IP address retrieval (#53807)
  • Improved configurability of Grafana dashboard parameters (#53236)
  • Add configurability of 'orgId' param for requesting Grafana dashboards (#53236)

🔨 Fixes:

  • Fixed Grafana dashboard dropdowns for data and train dashboards (#52752)
  • Resolved daylight savings time issues in dashboard (#52755)
  • Fix retrieving IP address from the GPUProfilingManager on the dashboard agent (#53807)

Docs 🎉 New Features:

  • New end-to-end examples:
    • Multi-modal AI pipeline (#52342)
    • Xgboost tutorial (#52383)
    • Audio transcription and LLM as judge curation (#53189)
    • LLM training and inference (#53415)
    • Scalable video processing (#50965)

💫 Enhancements:

  • Add pydoclint to pre-commit (#52974)
  • Add vale to pre-commit (#53564)

Breaking Changes

  • Removed deprecated ray.workflow package (#53612)
  • Removed deprecated storage parameter from ray.init (#53669)
  • Removed deprecated ray start CLI options (#53675)
  • Removed experimental "array" library (#54105)
  • Remove dask from byod 3.9 deps (#54521)

Dependencies & Build

  • Added uv binary v0.7.19 for improved package management (#54437)
  • Upgraded datasets in release tests (#54425)
  • Enhanced wheel building process with single bazel call optimization (#54476)
  • Fixed uv run parser for handling extra arguments (#54488)
  • Upgrade h11, requests, starlette, jinja2, pyopenssl and cryptography
  • Generate multi-arch image indexes (#52816)
Thanks!

Thank you to everyone who contributed to this release! @kouroshHakha, @davidwagnerkc, @MengjinYan, @minerharry, @simonsays1980, @Myasuka, @noemotiovon, @goutamvenkat-anyscale, @harshit-anyscale, @jugalshah291, @tianyi-ge, @sven1977, @crypdick, @JohnsonKuan, @lk-chen, @richardsliu, @alexeykudinkin, @EagleLo, @soffer-anyscale, @zcin, @AdrienVannson, @nilsmelchert, @raulchen, @jujipotle, @DrehanM, @vigneshka, @Ziy1-Tan, @Blaze-DSP, @ArthurBook, @GokuMohandas, @walkoss, @bveeramani, @edoakes, @omatthew98, @SeanQuant, @CheyuWu, @cszhu, @win5923, @kevin85421, @angelinalg, @iamjustinhsu, @eicherseiji, @kunling-anyscale, @vickytsang, @MortalHappiness, @aslonnie, @psr-ai, @sbhat98, @anyadontfly, @marwan116, @cristianjd, @2niuhe, @codope, @fscnick, @ryanaoleary, @srinathk10, @TimothySeah, @han-steve, @Future-Outlier, @Syulin7, @Qiaolin-Yu, @elliot-barn, @JoshKarpel, @dayshah, @can-anyscale, @ok-scale, @mattip, @SolitaryThinker, @owenowenisme, @nehiljain, @GeneDer, @rnkrtt, @israbbani, @DriverSong, @sinalallsite, @pcmoritz, @akyang-anyscale, @xinyuangui2, @nrghosh, @davidxia, @rueian, @stephanie-wang, @jjyao, @chris-ray-zhang, @czgdp1807, @justinvyu, @Daraan, @landscapepainter, @troychiu, @khluu, @hipudding, @ruisearch42, @robertnishihara, @ArturNiederfahrenhorst, @abrarsheikh, @alanwguo, @HollowMan6, @ran1995data, @matthewdeng

View originalPermalink
How 2.48.0 went
2.47.0

Ray-2.47.0

Added 12
  • Support prefill disaggregation in Ray Serve LLM for production LLM serving use cases
  • Add save modes support to file data sinks
  • Add flattening capability to the Concatenator preprocessor to support output vectorization use cases
  • Support for configuring Ray Train worker actor runtime environments
  • Include Grafana panel data in Ray Train export for improved monitoring
  • Introduce a structured logging environment variable to standardize log formats
Changed 6
  • Re-enable Actor locality-based scheduling with improved algorithms for ranking bundle locations
  • Disable blocking pipeline by default until Actor Pool fully scales up to min actors
  • Improve progress bar and dashboard to show name of partial functions properly
  • The ingress API now accepts a builder function in addition to an ASGI app object
  • Allow setting name_prefix in build_llm_deployment
  • Mitigate the serve.llm streaming overhead by properly batching stream chunks
Fixed 17
  • Make Ray Data from_torch respect Dataset len
  • Fix race condition bug in fault tolerance by disabling on_exit hook
  • Fix move_tensors_to_device utility for the list/tuple[tensor] case
  • Fix ActorPool scaling to avoid scaling down when the input queue is empty
  • Fix internal queues accounting for all Operators with an internal queue
  • Fix backpressure for FileBasedDatasource to prevent potential OOMs for workloads using FileBasedDatasources

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 characters in Serve deployment and application names. (#52702)
  • Added a descriptive error message when a deployment name is not found. (#45181)

📖 Documentation:

  • Updated the guide on serving models with Triton Server in Ray Serve.
  • Added documentation for custom request routing algorithms.
Ray Serve/Data LLM

🎉 New Features:

  • Added initial support for prefill decode disaggregation (#53092)
  • Expose vLLM Metrics to serve.llm API (#52719)
  • Embedding API (#52229)

💫 Enhancements:

  • Allow setting name_prefix in build_llm_deployment (#53316)
  • Minor bug fix for 53144: stop tokens cannot be null (#53288)
  • Add missing repetition_penalty vLLM sampling parameter (#53222)
  • Mitigate the serve.llm streaming overhead by properly batching stream chunks (#52766)
  • Fix test_batch_vllm leaking resources by using larger wait_for_min_actors_s

🔨 Fixes:

  • LLMRouter.check_health() should check LLMServer.check_health() (#53358)
  • Fix runtime passthrough and auto-executor class selection (#53253)
  • Update check_health return type (#53114)
  • Bug fix for duplication of <bos> token (#52853)
  • In stream batching, first part of the stream was always consumed and not streamed back from the router (#52848)
RLlib

🎉 New Features:

  • Add GPU inference to offline evaluation. (#52718)

💫 Enhancements:

  • Do-over of examples for connector pipelines. (#52604)
  • Cleanup of meta learning classes and examples. (#52680)

🔨 Fixes:

  • Fixed weight synching in offline evaluation. (#52757)
  • Fixed bug in split_and_zero_pad utility function (related to complex structures vs simple values or np.arrays). (#52818)
Ray Core

💫 Enhancements:

  • uv run integration is now enabled by default, so you don't need to set the RAY_RUNTIME_ENV_HOOK any more (#53060). If you rely on the previous behavior where uv run only runs the Ray driver but not the workers in the uv environment, you can switch back to the old behavior by setting the RAY_ENABLE_UV_RUN_RUNTIME_ENV=0 environment variable.
  • Record gcs process metrics (#53171)

🔨 Fixes:

  • Improvements for using RuntimeEnv in the Job Submission API. (#52704)
  • Close unused pipe file descriptor of child processes of Raylet (#52700)
  • Fix race condition when canceling task that hasn't started yet (#52703)
  • Implement a thread pool and call the CPython API on all threads within the same concurrency group (#52575)
  • cgraph: Fix execution schedules with collective operations (#53007)
  • cgraph: Fix scalar tensor serialization edge case with serialize_to_numpy_or_scalar (#53160)
  • Fix the issue where a valid RestartActor rpc is ignored (#53330)
  • Fix reference counter crashes during worker graceful shutdown (#53002)
Dashboard

🎉 New Features:

  • train: Add dynolog for on-demand GPU profiling for Torch training (#53191)

💫 Enhancements:

  • Add configurability of 'orgId' param for requesting Grafana dashboards (#53236)

🔨 Fixes:

  • Fix Grafana dashboards dropdowns for data and train dashboard (#52752)
  • Fix dashboard for daylight savings (#52755)
Ray Container Images

💫 Enhancements:

  • Upgrade h11 (#53361), requests, starlette, jinja2 (#52951), pyopenssl and cryptography (#52941)
  • Generate multi-arch image indexes (#52816)
Docs

🎉 New Features:

  • End-to-end example: Entity recognition with LLMs (#52342) - new end-to-end example
  • End-to-end example: xgboost tutorial (#52383)
  • End-to-end tutorial for audio transcription and LLM as judge curation (#53189)

💫 Enhancements:

  • Adds pydoclint to pre-commit (#52974)
Thanks!

Thank you to everyone who contributed to this release!

@NeilGirdhar, @ok-scale, @JiangJiaWei1103, @brandonscript, @eicherseiji, @ktyxx, @MichalPitr, @GeneDer, @rueian, @khluu, @bveeramani, @ArturNiederfahrenhorst, @c8ef, @lk-chen, @alanwguo, @simonsays1980, @codope, @ArthurBook, @kouroshHakha, @Yicheng-Lu-llll, @jujipotle, @aslonnie, @justinvyu, @machichima, @pcmoritz, @saihaj, @wingkitlee0, @omatthew98, @can-anyscale, @nadongjun, @chris-ray-zhang, @dizer-ti, @matthewdeng, @ryanaoleary, @janimo, @crypdick, @srinathk10, @cszhu, @TimothySeah, @iamjustinhsu, @mimiliaogo, @angelinalg, @gvspraveen, @kevin85421, @jjyao, @elliot-barn, @xingyu-long, @LeoLiao123, @thomasdesr, @ishaan-mehta, @noemotiovon, @hipudding, @davidxia, @omahs, @MengjinYan, @dengwxn, @MortalHappiness, @alhparsa, @emmanuel-ferdman, @alexeykudinkin, @KunWuLuan, @dev-goyal, @sven1977, @akyang-anyscale, @GokuMohandas, @raulchen, @abrarsheikh, @edoakes, @JoshKarpel, @bhmiller, @seanlaii, @ruisearch42, @dayshah, @Bye-legumes, @petern48, @richardliaw, @rclough, @israbbani, @jiwq

View originalPermalink
How 2.47.0 went
2.46.0

Ray-2.46.0

Added 6
  • Ray Data now supports hash-shuffle based repartitioning and aggregations
  • Ray Data now supports joins using hash-shuffle
  • Ray Serve LLM is now compatible with vLLM v1
  • Add initial Train Grafana dashboard with built-in metrics for training workloads
  • Offline Evaluation with loss function for Offline RL pipeline, introducing three new callbacks: on_offline_evaluate_start, on_offline_evaluate_end, on_offline_eval_runners_recreated
  • New custom_data attribute for SingleAgentEpisode and MultiAgentEpisode to store custom metrics
Changed 10
  • Add memory attribute to ExecutionResources
  • Support ray_remote_args for read_tfrecords
  • Add PhysicalOperator.min_max_resource_usage_bounds
  • Support num_cpus, memory, concurrency, batch_size for preprocess
  • Support new pyiceberg version
  • Lazily import torch FSDP for ray.train.torch module to improve performance and reduce unnecessary dependencies
Fixed 5
  • Handle Arrow Array null types in to_numpy
  • Fix S3 serialization wrapper compatibility with RetryingPyFileSystem
  • Fix Optimizer to apply rules until plan stabilizes
  • Fix FuseOperators rule to properly handle transformations that drastically change size of the dataset
  • Fix error when no arguments are passed into TorchTrainer

Release Highlights

The 2.46 Ray release comes with a couple core highlights:

  1. Ray Data now supports hash shuffling for repartition and aggregations, along with support for joins. This enables many new data processing workloads to be run on Ray Data. Please give it a try and let us know if you have any feedback!
  2. Ray Serve LLM now supports vLLM v1 to be forward-compatible with upcoming vLLM releases. This also opens up significant performance improvements that come with vLLM's v1 refactor.
  3. There is a new Train Grafana dashboard which provides in-depth metrics on Grafana for better metrics on training workloads.

Ray Libraries

Ray Data

🎉 New Features:

  • Adding support for hash-shuffle based repartitioning and aggregations (#52664)
  • Added support for Joins (using hash-shuffle) (#52728)
  • [LLM] vLLM support upgrades to 0.8.5 (#52344)

💫 Enhancements:

  • Add memory attribute to ExecutionResources (#51127)
  • Support ray_remote_args for read_tfrecords #52450
  • [data.dashboard] Skip reporting internal metrics (#52666)
  • Add PhysicalOperator.min_max_resource_usage_bounds (#52502)
  • Speed up printing the schema (#52612)
  • [data.dashboard] Dataset logger for worker (#52706)
  • Support new pyiceberg version (#51744)
  • Support num_cpus, memory, concurrency, batch_size for preprocess (#52574)

🔨 Fixes:

  • Handle Arrow Array null types in to_numpy (#52572)
  • Fix S3 serialization wrapper compatibility with RetryingPyFileSystem (#52568)
  • Fixing Optimizer to apply rules until plan stabilize; (#52663)
  • Fixing FuseOperators rule to properly handle the case of transformations drastically changing size of the dataset (#52570)

📖 Documentation:

  • [LLM] Improve concurrency settings, improve prompt to achieve better throughput (#52634)
Ray Train

🎉 New Features:

  • Add initial Train Grafana dashboard (#52709)

💫 Enhancements:

  • Lazily import torch FSDP for ray.train.torch module to improve performance and reduce unnecessary dependencies (#52707)
  • Deserialize the user-defined training function directly on workers, improving efficiency (#52684)

🔨 Fixes:

  • Fixed error when no arguments are passed into TorchTrainer (#52693)

📖 Documentation:

  • Added new XGBoostTrainer user guide (#52355)

🏗 Architecture refactoring:

  • Re-enabled isort for python/ray/train to maintain code formatting consistency (#52717)
Ray Tune

📖 Documentation:

  • Fixed typo in Ray Tune PyTorch Lightning docs (#52756)
Ray Serve

💫 Enhancements:

  • [LLM] Refactor LLMServer and LLMEngine to not diverge too much from vllm chat formatting logic (#52597)
  • Bump vllm from 0.8.2 to 0.8.5 in /python (#52344)
  • [LLM] Add router replicas and batch size to llm config (#52655)

🔨 Fixes:

  • Request cancellation not propagating correctly across deployments (#52591)
  • BackpressureError not properly propagated in FastAPI ingress deployments (#52397)
  • Hanging issue when awaiting deployment responses (#52561)
  • [Serve.llm] made Ray Serve LLM compatible with vLLM v1 (#52668)

📖 Documentation:

  • [Serve][LLM] Add doc for deploying DeepSeek (#52592)
RLLib

🎉 New Features:

  • Offline Evaluation with loss function for Offline RL pipeline. Introduces three new callbacks, on_offline_evaluate_start, on_offline_evaluate_end, on_offline_eval_runners_recreated (#52308)

💫 Enhancements:

  • New custom_data attribute for SingleAgentEpisode and MultiAgentEpisode to store custom metrics. Deprecates add|get_temporary_timestep_data() (#52603)

Ray Core

💫 Enhancements:

  • Only get serialization context once for all .remote args (#52690)
  • Add grpc server success and fail count metric (#52711)

🔨 Fixes:

  • Fix open leak for plasma store memory (shm/fallback) by workers (#52622)
  • Assure closing of unused pipe for dashboard subprocesses (#52678)
  • Expand protection against dead processes in reporter agent (#52657)
  • [cgraph] Separate metadata and data in cross-node shared memory transport (#52619)
  • Fix JobID check for detached actor tasks (#52405)
  • Fix potential log loss of tail_job_logs (#44709)

🏗 Architecture refactoring:

  • Cancel tasks when an owner dies instead of checking if an owner is dead during scheduling (#52516)
  • Unify GcsAioClient and GcsClient (#52735)
  • Remove worker context dependency from the task receiver (#52740)
Dashboard

🎉 New Features:

  • Ray Train Grafana Dashboard added with a few built-in metrics. More to come.
Thanks!

Thank you to everyone who contributed to this release! @kevin85421, @edoakes, @wingkitlee0, @alexeykudinkin, @chris-ray-zhang, @sophie0730, @zcin, @raulchen, @matthewdeng, @abrarsheikh, @popojk, @Jay-ju, @ruisearch42, @eicherseiji, @lk-chen, @justinvyu, @dayshah, @kouroshHakha, @NeilGirdhar, @omatthew98, @ishaan-mehta, @davidxia, @ArthurBook, @GeneDer, @srinathk10, @dependabot[bot], @JoshKarpel, @aslonnie, @khluu, @can-anyscale, @israbbani, @saihaj, @MortalHappiness, @alanwguo, @bveeramani, @iamjustinhsu, @Ziy1-Tan, @xingyu-long, @simonsays1980, @fscnick, @chuang0221, @sven1977, @jjyao

View originalPermalink
How 2.46.0 went
2.45.0

Ray-2.45.0

Added 10
  • Support with_tensor_transport(transport='shm') in cgraph
  • Support reduce scatter and all gather collective for GPU communicator in compiled graph
  • Add ClickHouse sink via Dataset.write_clickhouse()
  • Support ray_remote_args_fn in Dataset.groupby().map_groups() to set per-group runtime env and resource hints
  • Expose Dataset.name and set_name as public API for easier lineage tracking
  • Allow async callable classes in Dataset.flat_map()
Changed 3
  • Make Object Store Fallback Directory configurable
  • Split dashboard single process into multiple processes to improve stability and avoid interference between different heads
  • Improve performance of sorting and sort-shuffle based operations by more than 5x
Fixed 7
  • Make sure KillActor RPC with force_kill=True can actually kill the threaded actor
  • Do not remove idle nodes for upcoming placement groups in Autoscaler
  • Prevent threaded actors from getting stuck forever when receiving two exit signals
  • Fix illegal memory access of cgraph when used in PP
  • Avoid resubmitted actor tasks from hanging indefinitely
  • Fix interleaved placement group creation process due to node failure
  • Flush task events in CoreWorker::Shutdown instead of CoreWorker::Disconnect

Ray Core

💫 Enhancements

  • Make Object Store Fallback Directory configurable (#51189).
  • [cgraph] Support with_tensor_transport(transport='shm') (#51872).
  • [cgraph] Support reduce scatter and all gather collective for GPU communicator in compiled graph (#50624).

🔨 Fixes

  • Make sure KillActor RPC with force_kill=True can actually kill the threaded actor (#51414).
  • [Autoscaler] Do not remove idle nodes for upcoming placement groups (#51122).
  • Threaded actors get stuck forever if they receive two exit signals (#51582).
  • [cgraph] Fix illegal memory access of cgraph when used in PP (#51734).
  • Avoid resubmitted actor tasks from hanging indefinitely (#51904).
  • Fix interleaved placement group creation process due to node failure (#52202).
  • Flush task events in CoreWorker::Shutdown instead of CoreWorker::Disconnect (#52374).

🏗 Architecture refactoring

Ray Libraries

Ray Data

🎉 New Features

  • New ClickHouse sink via Dataset.write_clickhouse() (#50377)
  • Support ray_remote_args_fn in Dataset.groupby().map_groups() to set per-group runtime env and resource hints (#51236)
  • Expose Dataset.name / set_name as a public API for easier lineage tracking (#51076)
  • Allow async callable classes in Dataset.flat_map() (#51180)
  • Introduce Ruleset abstraction for rule-based query optimisation (#51558)
  • Add seamless conversion from Daft DataFrame to Ray Dataset (#51531)
  • Improved support for line-delimited JSONL reading in read_json() (#52083)
  • Provide Dataset.export_metadata() for schema & stats snapshots (#52227)

💫 Enhancements

  • Improved performance of sorting and sort-shuffle based operations (by more than 5x in benchmarks) (#51943)
  • Metrics: number of map-actor workers alive / pending / restarting (#51082)
  • Continuous memory-usage polling per map task (#51324)
  • Auto-tune map-task memory based on output size (#51536)
  • More informative back-pressure progress bar (#51697)
  • Faster RefBundle.get_cached_location() lookup (#52097)
  • Speed-up for PandasBlock.size_bytes() (#52510)
  • Expanded BlockColumnAccessor utilities and ops (#51326, #51571)

🔨 Fixes

  • Correct MapTransformFn.__eq__ equality check (#51434)
  • Persist unresolved wildcard paths in FileBasedDataSource (#51424)
  • Repair Hugging Face dynamic-module loading on workers (#51488)
  • Prevent HTTP URLs from being expanded by _expand_paths (#50178)
  • Fix Databricks host-URL parsing in Delta datasource (#49926)
  • Restore reproducibility of Dataset.random_sample() (#51401)
  • Correct RandomAccessDataset.multiget() return values (#51421)
  • Ensure executor shutdown after schema fetch to avoid leaked actors (#52379)
  • Repair streaming shutdown regression (#52509)
  • Honour minimum resource reservation in ResourceManager (#52226)

📖 Documentation

  • Clarified shuffle-section wording (#51289)
  • Documented concurrency semantics in API reference (#51963)
  • Updated Ray Data guides for the 2.45 release (#52082)
Ray Train

🎉 New Features

  • Fold v2.LightGBMTrainer API into the public trainer class as an alternate constructor (#51265).

💫 Enhancements

  • Use the user-defined function name as the training thread name (#52514).
  • Upgrade LightGBM to version 4.6.0 (#52410).
  • Adjust test size further for better results (#52283).
  • Log errors raised by workers during training (#52223).
  • Add worker group setup finished log to track progress (#52120).
  • Change test_telemetry to medium size (#52178).
  • Improve dataset name observability for better tracking (#52059).
  • Differentiate between train v1 and v2 export data for clarity (#51728).
  • Include scheduling status detail to improve debugging (#51480).
  • Move train library usage check to Trainer initialization (#50966).

🔨 Fixes

  • Separate OutputSplitter._locality_hints from actor_locality_enabled and locality_with_output (#52005).
  • Fix print redirection to handle new lines correctly (#51542).
  • Mark RunAttempt workers as dead after completion to avoid stale states (#51540).
  • Fix setup_wandb rank_zero_only logic (#52381).

📖 Documentation

  • Add links to the Train v2 migration guide in the Train API pages (#51924).

🏗 Architecture refactoring

  • Replace AMD device environment variable with HIP_VISIBLE_DEVICES (#51104).
  • Remove unnecessary string literal splits (#47360).
Ray Tune

📖 Documentation

  • Improve Tune documentation structure (#51684).
  • Fix syntax errors in Ray Tune example pbt_ppo_example.ipynb (#51626).
Ray Serve

🎉 New Features

  • Add request timeout sec for gRPC (#52276).
  • [Serve.llm] ray.llm support custom accelerators (#51359).

💫 Enhancements

  • Improve Serve deploy ignore behavior (#49336).
  • [Serve.llm] Telemetry GPU type fallback to cluster hardware when unspecified (#52003).

🔨 Fixes

  • Fix multiplex fallback logic during burst requests (#51389).
  • Don't stop retrying replicas when a deployment is scaling back up from zero (#51600).
  • Remove RAY_SERVE_ENABLE_QUEUE_LENGTH_CACHE flag (#51649).
  • Remove RAY_SERVE_EAGERLY_START_REPLACEMENT_REPLICAS flag (#51722).
  • Unify request cancellation errors (#51768).
  • Catch timeout error when checking if proxy is dead (#52002).
  • Suppress cancelled errors in proxy (#52423).
  • [Serve.llm] Fix loading model from remote storage and add docs (#51617).
  • [Serve.llm] Fix ServeReplica deployment failure for DeepSeek (#51989).
  • [Serve.llm] Check GPUType enum value rather than enum itself (#52037).
  • [Serve.llm] Fix inconsistent v0/v1 config passed to vLLM (#52185).
  • [Serve.llm] Fix V0/V1 auto-resolution more broadly (#52357).
  • [Serve.llm] Fix getting prompt limit for input-too-long error (#52315).

📖 Documentation

  • Update deployment status docs (#51610).
  • Update engine kwargs in LoRA instructions (#52203).
  • Remove outdated docs about request retries (#52438).
  • [Serve.llm] Add gen config related doc (#51572).
  • [Serve.llm] Fix loading model from remote storage and add docs (#51617).
  • [Serve.llm] Update Ray Serve LLM docs (#51867).
  • [Serve.llm] Update model_source doc (#52054).
  • [Serve.llm] Add doc example on using tokenizer_pool_size (#52356).
  • [Serve.llm] Add API links (#52384).
RLlib

🎉 New Features

💫 Enhancements

  • Offline RL:
    • Add configuration parameter ignore_final_observation and automatic episode ID generation (#52107).
    • BC performance improvements and adjustments to new Learner.update logic (#51425).
  • Better handling of tensors in MetricsLogger and Stats (#52334).
  • Make min/max env steps per evaluation sample call configurable for duration="auto" (#51637).
  • Access to all episode chunks in EnvRunner callback on_episode_end (#52252).

🔨 Fixes

🏗 Architecture refactoring

  • Remove local EnvRunner (optional) (#52091).
Dashboard

💫 Enhancements

  • [Core/Dashboard] Add CPU and memory metrics for subprocesses (#52208).

🔨 Fixes

  • [Observability] Fix metrics in the core Grafana dashboard to sum by labels (#51894).
  • [Dashboard] Remove millisecond padding in DurationText component (#52395).
  • [Core][Dashboard-Agent] Surface the root cause of job submission failure when the dashboard agent fails to launch HTTP server (#51869).

Many thanks to all those who contributed to this release! @samhallam-reverb, @vickytsang, @anyadontfly, @zhaoch23, @bryant1410, @khluu, @akyang-anyscale, @angelinalg, @RocketRider, @wingkitlee0, @robertnishihara, @liuxsh9, @KepingYan, @SumanthRH, @emmanuel-ferdman, @ashwinsnambiar, @ArturNiederfahrenhorst, @KPCOFGS, @Bye-legumes, @400Ping, @dayshah, @aslonnie, @justinvyu, @rugggg, @zhiqiwangebay, @comaniac, @thusoy, @JDarDagran, @chuang0221, @davidxia, @tnixon, @israbbani, @win5923, @leibovitzgil, @simonsays1980, @machichima, @VamshikShetty, @zcin, @lk-chen, @abrarsheikh, @edoakes, @alexeykudinkin, @ruisearch42, @tespent, @jecsand838, @sijieamoy, @can-anyscale, @JonDum, @jyakaranda, @nadongjun, @d-miketa, @MortalHappiness, @kevin85421, @Ziy1-Tan, @matthewdeng, @crypdick, @hongpeng-guo, @richardliaw, @Qiaolin-Yu, @bhmiller, @soffer-anyscale, @kenchung285, @nishi-t, @Drice1999, @ryanaoleary, @chris-ray-zhang, @MengjinYan, @saihaj, @jjyao, @jaganmolleti7, @iamjustinhsu, @fscnick, @pcmoritz, @Jay-ju, @westonpace, @han-steve, @GeneDer, @denadai2, @thomasdesr, @jaychia, @raulchen, @omatthew98, @srinathk10, @alanwguo, @rueian, @akshay-anyscale, @bveeramani, @dentiny, @dhakshin32, @kouroshHakha, @sven1977

View originalPermalink
How 2.45.0 went
2.44.1

Ray-2.44.1

There is no difference between 2.44.1 and 2.44.0, though we needed a patch version for other out of band reasons. To fill the awkward blankness, here is a haiku about Ray:

Under screen-lit skies A ray of bliss in each patch Joy at any scale

View originalPermalink
How 2.44.1 went
2.44.0

Ray-2.44.0

Added 7
  • Ray Compiled Graph (beta) with less than 50us system overhead for repeatedly executed task graphs and native GPU-GPU communication via NCCL
  • Iceberg write support through pyiceberg in Ray Data
  • LoRA support and structured outputs enhancements to Ray Data LLM
  • State export API in Ray Train
  • Faster bulk imperative Serve Application deploys
  • Gen-config for Ray Serve LLM
  • Dataset/operator state, progress, and total metrics in Ray Data
Changed 9
  • Make chunk combination threshold configurable in Ray Data
  • Store average memory use per task in OpRuntimeMetrics
  • Avoid unnecessary conversion to Numpy when creating Arrow/Pandas blocks
  • Add append-mode API for preprocessors with vectorizers and hashers now outputting a single column instead of 1 column per feature
  • Fold v2.XGBoostTrainer API into the public trainer class as an alternate constructor
  • Create a default ScalingConfig if one is not provided to the trainer
Fixed 3
  • Fix Map Operators to avoid unconditionally overriding generator's back-pressure configuration
  • Fix filter expr equating negative numbers in Ray Data
  • Fix StandardScaler to handle NaN stats in Ray Data
Deprecated 1
  • Ray Workflows library has been deprecated and will be removed in a future version of Ray

Release Highlights

  • This release features Ray Compiled Graph (beta). Ray Compiled Graph gives you a classic Ray Core-like API, but with (1) less than 50us system overhead for workloads that repeatedly execute the same task graph; and (2) native support for GPU-GPU communication via NCCL. Ray Compiled Graph APIs simplify high-performance multi-GPU workloads such as LLM inference and training. The beta release refines the API, enhances stability, and adds or improves features like visualization, profiling and experimental GPU compute/computation overlap. For more information, refer to Ray documentation: https://docs.ray.io/en/latest/ray-core/compiled-graph/ray-compiled-graph.html
  • The experimental Ray Workflows library has been deprecated and will be removed in a future version of Ray. Ray Workflows has been marked experimental since its inception and hasn’t been maintained due to the Ray team focusing on other priorities. If you are using Ray Workflows, we recommend pinning your Ray version to 2.44.

Ray Libraries

Ray Data

🎉 New Features:

  • Add Iceberg write support through pyiceberg (#50590)
  • [LLM] Various feature enhancements to Ray Data LLM, including LoRA support #50804 and structured outputs #50901

💫 Enhancements:

  • Add dataset/operator state, progress, total metrics (#50770)
  • Make chunk combination threshold configurable (#51200)
  • Store average memory use per task in OpRuntimeMetrics (#51126)
  • Avoid unnecessary conversion to Numpy when creating Arrow/Pandas blocks (#51238)
  • Append-mode API for preprocessors -- #50848, #50847, #50642, #50856, #50584. Note that vectorizers and hashers now output a single column instead 1 column per feature. In the near future, we will be graduating preprocessors to beta.

🔨 Fixes:

  • Fixing Map Operators to avoid unconditionally overriding generator's back-pressure configuration (#50900)
  • Fix filter expr equating negative numbers (#50932)
  • Fix error message for override_num_blocks when reading from a HuggingFace Dataset (#50998)
  • Make num_blocks in repartition optional (#50997)
  • Always pin the seed when doing file-based random shuffle (#50924)
  • Fix StandardScaler to handle NaN stats (#51281)
Ray Train

🎉 New Features:

  • Implement state export API (#50622, #51085, #51177)

💫 Enhancements:

  • Folded v2.XGBoostTrainer API into the public trainer class as an alternate constructor (#50045)
  • Created a default ScalingConfig if one is not provided to the trainer (#51093)
  • Improved TrainingFailedError message (#51199)
  • Utilize FailurePolicy factory (#51067)

🔨 Fixes:

  • Fixed trainer import deserialization when captured within a Ray task (#50862)
  • Fixed serialize import test for Python 3.12 (#50963)
  • Fixed RunConfig deprecation message in Tune being emitted in trainer.fit usage (#51198)

📖 Documentation:

  • [Train V2] Updated API references (#51222)
  • [Train V2] Updated persistent storage guide (#51202)
  • [Train V2] Updated user guides for metrics, checkpoints, results, and experiment tracking (#51204)
  • [Train V2] Added updated Train + Tune user guide (#51048)
  • [Train V2] Added updated fault tolerance user guide (#51083)
  • Improved HF Transformers example (#50896)
  • Improved Train DeepSpeed example (#50906)
  • Use correct mean and standard deviation norm values in image tutorials (#50240)

🏗 Architecture refactoring:

  • Deprecated Torch AMP wrapper utilities (#51066)
  • Hid private functions of train context to avoid abuse (#50874)
  • Removed ray storage dependency and deprecated RAY_STORAGE env var configuration option (#50872)
  • Moved library usage tests out of core (#51161)
Ray Tune

📖 Documentation:

  • Various improvements to Tune Pytorch CIFAR tutorial (#50316)
  • Various improvements to the Ray Tune XGBoost tutorial (#50455)
  • Various enhancements to Tune Keras example (#50581)
  • Minor improvements to Hyperopt tutorial (#50697)
  • Various improvements to LightGBM tutorial (#50704)
  • Fixed non-runnable Optuna tutorial (#50404)
  • Added documentation for Asynchronous HyperBand Example in Tune (#50708)
  • Replaced reuse actors example with a fuller demonstration (#51234)
  • Fixed broken PB2/RLlib example (#51219)
  • Fixed typo and standardized equations across the two APIs (#51114)
  • Improved PBT example (#50870)
  • Removed broken links in documentation (#50995, #50996)

🏗 Architecture refactoring:

  • Removed ray storage dependency and deprecated RAY_STORAGE env var configuration option (#50872)
  • Moved library usage tests out of core (#51161)
Ray Serve

🎉 New Features:

  • Faster bulk imperative Serve Application deploys (#49168)
  • [LLM] Add gen-config (#51235)

💫 Enhancements:

  • Clean up shutdown behavior of serve (#51009)
  • Add additional_log_standard_attrs to serve logging config (#51144)
  • [LLM] remove asyncache and cachetools from dependencies (#50806)
  • [LLM] remove backoff dependency (#50822)
  • [LLM] Remove asyncio_timeout from ray[llm] deps on python<3.11 (#50815)
  • [LLM] Made JSON validator a singleton and jsonref packages lazy imported (#50821)
  • [LLM] Reuse AutoscalingConfig and DeploymentConfig from Serve (#50871)
  • [LLM] Use pyarrow FS for cloud remote storage interaction (#50820)
  • [LLM] Add usage telemetry for serve.llm (#51221)

🔨 Fixes:

  • Exclude redirects from request error count (#51130)
  • [LLM] Fix the wrong device_capability issue in vllm on quantized models (#51007)
  • [LLM] add gen-config related data file to the package (#51347)

📖 Documentation:

  • [LLM] Fix quickstart serve LLM docs (#50910)
  • [LLM] update build_openai_app to include yaml example (#51283)
  • [LLM] remove old vllm+serve doc (#51311)
RLlib

💫 Enhancements:

  • APPO/IMPALA accelerate:
    • LearnerGroup should not pickle remote functions on each update-call; Refactor LearnerGroup and Learner APIs. (#50665)
    • EnvRunner sync enhancements. (#50918)
    • Various other speedups: #51302, #50923, #50919, #50791
  • Unify namings for actor managers' outstanding in-flight requests metrics. (#51159)
  • Add timers to env step, forward pass, and complete connector pipelines runs. (#51160)

🔨 Fixes:

  • Multi-agent env vectorization:
    • Fix MultiAgentEnvRunner env check bug. (#50891)
    • Add single_action_space and single_observation_space to VectorMultiAgentEnv. (#51096)
  • Other fixes: #51255, #50920, #51369

📖 Documentation:

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Enhanced uv support (#51233)

💫 Enhancements:

  • Made infeasible task errors much more obvious (#45909)
  • Log rotation for workers, runtime env agent, and dashboard agent (#50759, #50877, #50909)
  • Support customizing gloo timeout (#50223)
  • Support torch profiling in Compiled Graph (#51022)
  • Change default tensor deserialization in Compiled Graph (#50778)
  • Use current node id if no node is specified on ray drain-node (#51134)

🔨 Fixes:

  • Fixed an issue where the raylet continued to have high CPU overhead after a job was terminated (#49999).
  • Fixed compiled graph buffer release issues (#50434)
  • Improved logic for ray.wait on object store objects (#50680)
  • Ray metrics performing validation the same validation as Prometheus for invalid names (#40586)
  • Make executor a long-running Python thread (#51016)
  • Fix plasma client memory leak (#51051)
  • Fix using ray.actor.exit_actor() from within an async background thread (#49451)
  • Fix UV hook to support Ray Job submission (#51150)
  • Fix resource leakage after ray job is finished (#49999)
  • Use the correct way to check whether an actor task is running (#51158)
  • Controllably destroy CUDA events in GPUFuture’s (Compiled Graph) (#51090)
  • Avoid creating a thread pool with 0 threads (#50837)
  • Fix the logic to calculate the number of workers based on the TPU version (#51227)

📖 Documentation:

  • Updated error message and anti-pattern when forking new processes in worker processes (#50705)
  • Compiled Graph API Documentation (#50754)
  • Doc for nsight and torch profile for Compiled Graph (#51037)
  • Compiled Graph Troubleshooting Doc (#51030)
  • Completion of of Compiled Graph Docs (#51206)
  • Updated jemalloc profiling doc (#51031)
  • Add information about standard Python logger attributes (#51038)
  • Add description for named placement groups to require a namespace (#51285)
  • Deprecation warnings for Ray Workflows and cluster-wide storage (#51309)
Ray Clusters

🎉 New Features:

  • Add cuda 12.8 images (#51210)

💫 Enhancements:

  • Add Pod names to the output of ray status -v (#51192)

🔨 Fixes:

  • Fix autoscaler v1 crash from infeasible strict spread placement groups (#39691)

🏗 Architecture refactoring:

  • Refactor autoscaler v2 log formatting (#49350)
  • Update yaml example for CoordinatorSenderNodeProvider (#51292)
Dashboard

🎉 New Features:

  • Discover TPU logs on the Ray Dashboard (#47737)

🔨 Fixes:

  • Return the correct error message when trying to kill non-existent actors (#51341)

Many thanks to all those who contributed to this release! @crypdick, @rueian, @justinvyu, @MortalHappiness, @CheyuWu, @GeneDer, @dayshah, @lk-chen, @matthewdeng, @co63oc, @win5923, @sven1977, @akshay-anyscale, @ShaochenYu-YW, @gvspraveen, @bveeramani, @jakac, @VamshikShetty, @raulchen, @PaulFenton, @elimelt, @comaniac, @qinyiyan, @ruisearch42, @nadongjun, @AndyUB, @israbbani, @hongpeng-guo, @laysfire, @alexeykudinkin, @Drice1999, @harborn, @scottsun94, @abrarsheikh, @martinbomio, @MengjinYan, @HollowMan6, @orcahmlee, @kenchung285, @csy1204, @noemotiovon, @jujipotle, @davidxia, @kevin85421, @hcc429, @edoakes, @kouroshHakha, @omatthew98, @alanwguo, @farridav, @aslonnie, @simonsays1980, @pcmoritz, @terraflops1048576, @JoshKarpel, @SumanthRH, @sijieamoy, @zcin, @can-anyscale, @akyang-anyscale, @angelinalg, @saihaj, @jjyao, @anmscale, @ryanaoleary, @dentiny, @jimmyxie-figma, @stephanie-wang, @khluu, @maofagui

View originalPermalink
How 2.44.0 went
2.43.0

Ray-2.43.0

Added 5
  • New module ray.data.llm for batch inference with large language models, featuring vLLMEngineProcessorConfig and HttpRequestProcessorConfig abstractions (alpha)
  • New module ray.serve.llm for serving large language models
  • Ray Train V2 available for testing with RAY_TRAIN_V2_ENABLED=1 environment variable
  • Integration with uv run for specifying Python dependencies for Ray cluster drivers and workers
  • Support class constructor args for filter()
Changed 6
  • Implement accurate memory accounting for UnionOperator
  • Implement accurate memory accounting for all-to-all operations
  • Persist ParquetDatasource metadata
  • Pass executor as an argument to ExecutionCallback
  • Replace AggregateFn with AggregateFnV2
  • Add state tracking to train v2 to make run status, run attempts, and training worker metadata observable
Fixed 3
  • Avoid memory leak with pyarrow.infer_type on datetime arrays
  • Fix parquet partition cols to support tensors types
  • Fix aggregation protocol to be appropriately associative

Highlights

  • This release features new modules in Ray Serve and Ray Data for integration with large language models, marking the first step of addressing #50639. Existing Ray Data and Ray Serve have limited support for LLM deployments, where users have to manually configure and manage the underlying LLM engine. In this release, we offer APIs for both batch inference and serving of LLMs within Ray in ray.data.llm and ray.serve.llm. See the below notes for more details. These APIs are marked as alpha -- meaning they may change in future releases without a deprecation period.
  • Ray Train V2 is available to try starting in Ray 2.43! Run your next Ray Train job with the RAY_TRAIN_V2_ENABLED=1 environment variable. See the migration guide for more information.
  • A new integration with uv run that allows easily specifying Python dependencies for both driver and workers in a consistent way and enables quick iterations for development of Ray applications (#50160, 50462), check out our blog post

Ray Libraries

Ray Data

🎉 New Features:

  • Ray Data LLM: We are introducing a new module in Ray Data for batch inference with LLMs (currently marked as alpha). It offers a new Processor abstraction that interoperates with existing Ray Data pipelines. This abstraction can be configured two ways:
    • Using the vLLMEngineProcessorConfig, which configures vLLM to load model replicas for high throughput model inference
    • Using the HttpRequestProcessorConfig, which sends HTTP requests to an OpenAI-compatible endpoint for inference.
    • Documentation for these features can be found here.
  • Implement accurate memory accounting for UnionOperator (#50436)
  • Implement accurate memory accounting for all-to-all operations (#50290)

💫 Enhancements:

  • Support class constructor args for filter() (#50245)
  • Persist ParquetDatasource metadata. (#50332)
  • Rebasing ShufflingBatcher onto try_combine_chunked_columns (#50296)
  • Improve warning message if required dependency isn't installed (#50464)
  • Move data-related test logic out of core tests directory (#50482)
  • Pass executor as an argument to ExecutionCallback (#50165)
  • Add operator id info to task+actor (#50323)
  • Abstracting common methods, removing duplication in ArrowBlockAccessor, PandasBlockAccessor (#50498)
  • Warn if map UDF is too large (#50611)
  • Replace AggregateFn with AggregateFnV2, cleaning up Aggregation infrastructure (#50585)
  • Simplify Operator.repr (#50620)
  • Adding in TaskDurationStats and on_execution_step callback (#50766)
  • Print Resource Manager stats in release tests (#50801)

🔨 Fixes:

  • Fix invalid escape sequences in grouped_data.py docstrings (#50392)
  • Deflake test_map_batches_async_generator (#50459)
  • Avoid memory leak with pyarrow.infer_type on datetime arrays (#50403)
  • Fix parquet partition cols to support tensors types (#50591)
  • Fixing aggregation protocol to be appropriately associative (#50757)

📖 Documentation:

  • Remove "Stable Diffusion Batch Prediction with Ray Data" example (#50460)
Ray Train

🎉 New Features:

  • Ray Train V2 is available to try starting in Ray 2.43! Run your next Ray Train job with the RAY_TRAIN_V2_ENABLED=1 environment variable. See the migration guide for more information.

💫 Enhancements:

  • Add a training ingest benchmark release test (#50019, #50299) with a fault tolerance variant (#50399)
  • Add telemetry for Trainer usage in V2 (#50321)
  • Add pydantic as a ray[train] extra install (#46682)
  • Add state tracking to train v2 to make run status, run attempts, and training worker metadata observable (#50515)

🔨 Fixes:

  • Increase doc test parallelism (#50326)
  • Disable TF test for py312 (#50382)
  • Increase test timeout to deflake (#50796)

📖 Documentation:

  • Add missing xgboost pip install in example (#50232)

🏗 Architecture refactoring:

Ray Tune

🔨 Fixes:

  • Fix worker node failure test (#50109)

📖 Documentation:

  • Update all doc examples off of ray.train imports (#50458)
  • Update all ray/tune/examples off of ray.train imports (#50435)
  • Fix typos in persistent storage guide (#50127)
  • Remove Binder notebook links in Ray Tune docs (#50621)

🏗 Architecture refactoring:

  • Update RLlib to use ray.tune imports instead of ray.air and ray.train (#49895)
Ray Serve

🎉 New Features:

  • Ray Serve LLM: We are introducing a new module in Ray Serve to easily integrate open source LLMs in your Ray Serve deployment, currently marked as alpha. This opens up a powerful capability of composing complex applications with multiple LLMs, which is a use case in emerging applications like agentic workflows. Ray Serve LLM offers a couple core components, including:
    • VLLMService: A prebuilt deployment that offers a full-featured vLLM engine integration, with support for features such as LoRA multiplexing and multimodal language models.
    • LLMRouter: An out-of-the-box OpenAI compatible model router that can route across multiple LLM deployments.
    • Documentation can be found at https://docs.ray.io/en/releases-2.43.0/serve/llm/overview.html

💫 Enhancements:

  • Add required_resources to REST API (#50058)

🔨 Fixes:

  • Fix batched requests hanging after cancellation (#50054)
  • Properly propagate backpressure error (#50311)
RLlib

🎉 New Features:

  • Added env vectorization support for multi-agent (new API stack). (#50437)

💫 Enhancements:

  • APPO/IMPALA various acceleration efforts. Reached 100k ts/sec on Atari benchmark with 400 EnvRunners and 16 (multi-node) GPU Learners: #50760, #50162, #50249, #50353, #50368, #50379, #50440, #50477, #50527, #50528, #50600, #50309
  • Offline RL:
    • Remove all weight synching to eval_env_runner_group from the training steps. (#50057)
    • Enable single-learner/multi-learner GPU training. (#50034)
    • Remove reference to MARWILOfflinePreLearner in OfflinePreLearner docstring. (#50107)
    • Add metrics to multi-agent replay buffers. (#49959)

🔨 Fixes:

  • Fix SPOT preemption tolerance for large AlgorithmConfig: Pass by reference to RolloutWorker (#50688)
  • on_workers/env_runners_recreated callback would be called twice. (#50172)
  • default_resource_request: aggregator actors missing in placement group for local Learner. (#50219, #50475)

📖 Documentation:

  • Docs re-do (new API stack):
    • Rewrite/enhance "getting started" rst page. (#49950)
    • Remove rllib-models.rst and fix broken html links. (#49966, #50126)

Ray Core and Ray Clusters

Ray Core

💫 Enhancements:

  • [Core] Enable users to configure python standard log attributes for structured logging (#49871)
  • [Core] Prestart worker with runtime env (#49994)
  • [compiled graphs] Support experimental_compile(_default_communicator=comm) (#50023)
  • [Core] ray.util.Queue Empty and Full exceptions extend queue.Empty and Full (#50261)
  • [Core] Initial port of Ray to Python 3.13 (#47984)

🔨 Fixes:

  • [Core] Ignore stale ReportWorkerBacklogRequest (#50280)
  • [Core] Fix check failure due to negative available resource (#50517)
Ray Clusters

📖 Documentation:

  • Update the KubeRay docs to v1.3.0.
Ray Dashboard

🎉 New Features:

  • Additional filters for job list page (#50283)

Thanks

Thank you to everyone who contributed to this release! 🥳 @liuxsh9, @justinrmiller, @CheyuWu, @400Ping, @scottsun94, @bveeramani, @bhmiller, @tylerfreckmann, @hefeiyun, @pcmoritz, @matthewdeng, @dentiny, @erictang000, @gvspraveen, @simonsays1980, @aslonnie, @shorbaji, @LeoLiao123, @justinvyu, @israbbani, @zcin, @ruisearch42, @khluu, @kouroshHakha, @sijieamoy, @SergeCroise, @raulchen, @anson627, @bluenote10, @allenyin55, @martinbomio, @rueian, @rynewang, @owenowenisme, @Betula-L, @alexeykudinkin, @crypdick, @jujipotle, @saihaj, @EricWiener, @kevin85421, @MengjinYan, @chris-ray-zhang, @SumanthRH, @chiayi, @comaniac, @angelinalg, @kenchung285, @tanmaychimurkar, @andrewsykim, @MortalHappiness, @sven1977, @richardliaw, @omatthew98, @fscnick, @akyang-anyscale, @cristianjd, @Jay-ju, @spencer-p, @win5923, @wxsms, @stfp, @letaoj, @JDarDagran, @jjyao, @srinathk10, @edoakes, @vincent0426, @dayshah, @davidxia, @DmitriGekhtman, @GeneDer, @HYLcool, @gameofby, @can-anyscale, @ryanaoleary, @eddyxu

View originalPermalink
How 2.43.0 went
2.42.1

Ray-2.42.1

Fixed 1
  • Incorrect assertion in Ray Data
Ray Data

🔨 Fixes:

  • Fixes incorrect assertion (#50210)
View originalPermalink
How 2.42.1 went
2.42.0

Ray-2.42.0

Added 4
  • Add read_audio and read_video for Ray Data
  • Add Train v2 user-facing callback interface in Ray Train
  • Add TuneReportCallback for propagating intermediate Train results to Tune
  • Add metrics to replay buffers in RLlib
Changed 10
  • Optimize multi-column groupbys in Ray Data
  • Include Ray user-agent in BigQuery client construction
  • Cache metrics in replica and report on an interval in Ray Serve
  • Cache expensive calls to inspect.signature in Ray Serve
  • Remove extra pickle serialization for gRPCRequest in Ray Serve
  • Implement shared LongPollClient for Routers in Ray Serve
Fixed 5
  • Fix bug that made read tasks non-deterministic in Ray Data
  • Fix batched requests hanging after request cancellation bug in Ray Serve
  • Re-introduce mixin-replay-buffer pass for old API stack IMPALA/APPO even if replay-ratio=0
  • Fix MetricsLogger race conditions in RLlib
  • Fix APPO/IMPALA bug for greater than 1 Learner actor in RLlib
Deprecated 1
  • Deprecate num_rows_per_file in favor of min_rows_per_file in Ray Data

Ray Libraries

Ray Data

🎉 New Features:

  • Added read_audio and read_video (#50016)

💫 Enhancements:

  • Optimized multi-column groupbys (#45667)
  • Included Ray user-agent in BigQuery client construction (#49922)

🔨 Fixes:

  • Fixed bug that made read tasks non-deterministic (#49897)

🗑️ Deprecations:

  • Deprecated num_rows_per_file in favor of min_rows_per_file (#49978)
Ray Train

💫 Enhancements:

  • Add Train v2 user-facing callback interface (#49819)
  • Add TuneReportCallback for propagating intermediate Train results to Tune (#49927)
Ray Tune

📖 Documentation:

  • Fix BayesOptSearch docs (#49848)
Ray Serve

💫 Enhancements:

  • Cache metrics in replica and report on an interval (#49971)
  • Cache expensive calls to inspect.signature (#49975)
  • Remove extra pickle serialization for gRPCRequest (#49943)
  • Shared LongPollClient for Routers (#48807)
  • DeploymentHandle API is now stable (#49840)

🔨 Fixes:

  • Fix batched requests hanging after request cancellation bug (#50054)
RLlib

💫 Enhancements:

  • Add metrics to replay buffers. (#49822)
  • Enhance node-failure tolerance (new API stack). (#50007)
  • MetricsLogger cleanup throughput logic. (#49981)
  • Split AddStates... connectors into 2 connector pieces (AddTimeDimToBatchAndZeroPad and AddStatesFromEpisodesToBatch) (#49835)

🔨 Fixes:

  • Old API stack IMPALA/APPO: Re-introduce mixin-replay-buffer pass, even if replay-ratio=0 (fixes a memory leak). (#49964)
  • Fix MetricsLogger race conditions. (#49888)
  • APPO/IMPALA: Bug fix for > 1 Learner actor. (#49849)

📖 Documentation:

  • New MetricsLogger API rst page. (#49538)
  • Move "new API stack" info box right below page titles for better visibility. (#49921)
  • Add example script for how to log custom metrics in training_step(). (#49976)
  • Enhance/redo autoregressive action distribution example. (#49967)
  • Make the "tiny CNN" example RLModule run with APPO (by implementing TargetNetAPI) (#49825)

Ray Core and Ray Clusters

Ray Core

💫 Enhancements:

  • Only get single node info rather then all when needed (#49727)
  • Introduce with_tensor_transport API (#49753)

🔨 Fixes:

  • Fix tqdm manager thread safe #50040
Ray Clusters

🔨 Fixes:

  • Fix token expiration for ray autoscaler (#48481)

Thanks

Thank you to everyone who contributed to this release! 🥳 @wingkitlee0, @saihaj, @win5923, @justinvyu, @kevin85421, @edoakes, @cristianjd, @rynewang, @richardliaw, @LeoLiao123, @alexeykudinkin, @simonsays1980, @aslonnie, @ruisearch42, @pcmoritz, @fscnick, @bveeramani, @mattip, @till-m, @tswast, @ujjawal-khare, @wadhah101, @nikitavemuri, @akshay-anyscale, @srinathk10, @zcin, @dayshah, @dentiny, @LydiaXwQ, @matthewdeng, @JoshKarpel, @MortalHappiness, @sven1977, @omatthew98

View originalPermalink
How 2.42.0 went
2.41.0

Ray-2.41.0

Added 11
  • 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
Changed 7
  • 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
Fixed 2
  • 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
Deprecated 1
  • 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_cols in write_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 ValueError when the data sort key is None (#48969)
  • Provide more messages when webdataset format is error (#48643)
  • Upgrade Arrow version from 17 to 18 (#48448)
  • Update hudi version to 0.2.0 (#48875)
  • webdataset: expand JSON objects into individual samples (#48673)
  • Support passing kwargs to map tasks. (#49208)
  • Add ExecutionCallback interface (#49205)
  • Add seed for read files (#49129)
  • Make select_columns and rename_columns use 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.0 behaviour in _create_possibly_ragged_ndarray (#48064)
  • Fix DataContext sealing for multiple datasets. (#49096)
  • Fix to_tf for List types (#49139)
  • Fix type mismatch error while mapping nullable column (#49405)
  • Datasink: support passing write results to on_write_completes (#49251)
  • Fix groupby hang when value contains np.nan (#49420)
  • Fix bug where file_extensions doesn'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_params implementation (#49019)
Ray Tune

🎉 New Features:

  • Update optuna_search to 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.dumps for faster serialization from proxy to replica (#49539)

🔨 Fixes:

  • Handle nested ‘=’ in serve run arguments (#49719)
  • Fix bug when ray.init() is called multiple times with different runtime_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 SampleBatch data and fully compressed observations. (#48699)
    • Add option to customize OfflineData. (#49015)
    • Enable offline training without specifying an environment. (#49041)
    • Various fixes: #48309, #49194, #49195
  • APPO/IMPALA acceleration (new API stack):
    • Add support for AggregatorActors per 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)
  • 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 RLModule page. (#49387)
    • New AlgorithmConfig page and redo package_ref page 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_created callback to SingleAgentEnvRunner. (#49487)
  • Fix train_batch_size_per_learner problems. (#49715)
  • Various other fixes: #48540, #49363, #49418, #49191

🏗 Architecture refactoring:

  • RLModule: Introduce Default[algo]RLModule classes (#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_name and actor_name in 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.nvtx profiling (#49392)

🔨 Fixes:

  • autoscaler: Health check logs are not visible in the autoscaler container's stdout (#48905)
  • Only publish WORKER_OBJECT_EVICTION when 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 .whl file (#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 DaemonSet and 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_HEADERS env for carrying additional headers to Prometheus (#49353)
  • Document about the RAY_PROMETHEUS_HEADERS env for carrying additional headers to Prometheus (#49700)

🏗 Architecture refactoring:

  • Move memray dependency 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!

View originalPermalink
How 2.41.0 went
2.40.0

Ray-2.40.0

Added 3
  • Add read_hudi function to Ray Data
  • Add initial version of local_testing_mode to Ray Serve
  • Add uv runtime env support to Ray Core
Changed 3
  • Improve performance of DelegatingBlockBuilder
  • Improve memory accounting of pandas blocks
  • Handle multiple changed objects per LongPollHost.listen_for_change RPC in Ray Serve
Fixed 10
  • Fix bug where you can't specify a schema with write_parquet
  • Fix bug where to_pandas errors if your dataset contains Arrow and pandas blocks
  • Fix bug where map_groups doesn't work with pandas data
  • Fix bug where write_parquet errors if your data contains nullable fields
  • Fix bug where "Iteration Blocked Time" charts looks incorrect
  • Fix bug where unique fails with null values
Deprecated 4
  • Deprecate read_parquet_bulk
  • Deprecate iter_tf_batches
  • Deprecate meta_provider parameter of read functions
  • Deprecate to_torch

Ray Libraries

Ray Data

🎉 New Features:

💫 Enhancements:

🔨 Fixes:

🗑️ Deprecations:

Ray Train

🔨 Fixes:

  • Fix StartTracebackWithWorkerRank serialization (#48548)

📖 Documentation:

  • Add example for fine-tuning Llama3.1 with AWS Trainium (#48768)
Ray Tune

🔨 Fixes:

  • Remove the clear_checkpoint function during Trial restoration error handling. (#48532)
Ray Serve

🎉 New Features:

  • Initial version of local_testing_mode (#48477)

💫 Enhancements:

  • Handle multiple changed objects per LongPollHost.listen_for_change RPC (#48803)
  • Add more nuanced checks for http proxy status errors (#47896)
  • Improve replica access log messages to include HTTP status info and better resemble standard log format (#48819)
  • Propagate replica constructor error to deployment status message and print num retries left (#48531)

🔨 Fixes:

  • Pending requests that are cancelled before they were assigned to a replica now also return a serve.RequestCancelledError (#48496)
RLlib

💫 Enhancements:

  • Release test enhancements. (#45803, #48681)
  • Make opencv-python-headless default over opencv-python (#48776)
  • Reverse learner queue behavior of IMPALA/APPO (consume oldest batches first, instead of newest, BUT drop oldest batches if queue full). (#48702)

🔨 Fixes:

  • Fix torch scheduler stepping and reporting. (#48125)
  • Fix accumulation of results over n training_step calls within same iteration (new API stack). (#48136)
  • Various other fixes: #48563, #48314, #48698, #48869.

📖 Documentation:

  • Upgrade examples script overview page (new API stack). (#48526)
  • Enable RLlib + Serve example in CI and translate to new API stack. (#48687)

🏗 Architecture refactoring:

  • Switch new API stack on by default, APPO, IMPALA, BC, MARWIL, and CQL. (#48516, #48599)
  • Various APPO enhancements (new API stack): Circular buffer (#48798), minor loss math fixes (#48800), target network update logic (#48802), smaller cleanups (#48844).
  • Remove rllib_contrib from repo. (#48565)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

💫 Enhancements:

  • [CompiledGraphs] Refine schedule visualization (#48594)

🔨 Fixes:

  • [CompiledGraphs] Don't persist input_nodes in _CollectiveOperation to avoid wrong understanding about DAGs (#48463)
  • [Core] Fix Ascend NPU discovery to support 8+ cards per node (#48543)
  • [Core] Make Placement Group Wildcard and Indexed Resource Assignments Consistent (#48088)
  • [Core] Stop the GRPC server before Shut down the Object Store (#48572)
Ray Clusters

🔨 Fixes:

  • [KubeRay]: Fix ConnectionError on Autoscaler CR lookups in K8s clusters with custom DNS for Kubernetes API. (#48541)
Dashboard

💫 Enhancements:

  • Add global UTC timezone button in navbar with local storage (#48510)
  • Add memory graphs optimized for OOM debugging (#48530)
  • Improve tasks/actors metric naming and add graph for running tasks (#48528) add actor pid to dashboard (#48791)

🔨 Fixes:

  • Fix Placement Group Table table cells overflow (#47323)
  • Fix Rows Outputted being zero on Ray Data Dashboard (#48745)
  • fix confusing dataset operator name (#48805)

Thanks

Thanks to all those who contributed to this release! @rynewang, @rickyyx, @bveeramani, @marwan116, @simonsays1980, @dayshah, @dentiny, @KepingYan, @mimiliaogo, @kevin85421, @SeaOfOcean, @stephanie-wang, @mohitjain2504, @azayz, @xushiyan, @richardliaw, @can-anyscale, @xingyu-long, @kanwang, @aslonnie, @MortalHappiness, @jjyao, @SumanthRH, @matthewdeng, @alexeykudinkin, @sven1977, @raulchen, @andrewsykim, @zcin, @nadongjun, @hongpeng-guo, @miguelteixeiraa, @saihaj, @khluu, @ArturNiederfahrenhorst, @ryanaoleary, @ltbringer, @pcmoritz, @JoshKarpel, @akyang-anyscale, @frances720, @BeingGod, @edoakes, @Bye-legumes, @Superskyyy, @liuxsh9, @MengjinYan, @ruisearch42, @scottjlee, @angelinalg

View originalPermalink
How 2.40.0 went
2.39.0

Ray-2.39.0

Added 7
  • Cancelled requests now return a serve.RequestCancelledError
  • Exposed application source in app details model
  • Add off-policy'ness metric to new API stack
  • Validate episodes before adding them to the buffer
  • Support all reduce collective in aDAG
  • Add visualization of compiled graphs
  • Support asyncio.gather on multiple CompiledDAGFutures
Changed 4
  • Marked num_rows_per_file parameter of write APIs as experimental
  • Dataset.count() now uses a Count logical operator
  • Upgrade to gymnasium==1.0.0 with support for new API for vector env resets
  • The distributed debugger can now be used without having to set RAY_DEBUG=1
Fixed 7
  • Fixed InvalidObjectError edge case with Dataset.split()
  • Made Concatenator preserve order of concatenated columns
  • transform_batch no longer fails on missing columns
  • Safely check if the storage filesystem is pyarrow.fs.S3FileSystem
  • Basic HTTP deployments will now return "Internal Server Error" instead of a traceback to match FastAPI behavior
  • Fixed an issue where high values of max_ongoing_requests couldn't be reached due to an interaction with core's max_concurrency
  • Fixed an edge case where pending requests were not canceled properly
Removed 2
  • Removed long-deprecated set_progress_bars
  • Removed deprecated API to set route_prefix per-deployment

Ray Libraries

Ray Data

🔨 Fixes:

📖 Documentation:

🏗 Architecture refactoring:

🗑 Deprecations:

Ray Train

🔨 Fixes:

  • Safely check if the storage filesystem is pyarrow.fs.S3FileSystem (#48216)
Ray Tune

🔨 Fixes:

  • Safely check if the storage filesystem is pyarrow.fs.S3FileSystem (#48216)
Ray Serve

💫 Enhancements:

🔨 Fixes:

📖 Documentation:

RLlib

💫 Enhancements:

  • Upgrade to gymnasium==1.0.0 (support new API for vector env resets). (#48443, #45328)
  • Add off-policy'ness metric to new API stack. (#48227)
  • Validate episodes before adding them to the buffer. (#48083)

📖 Documentation:

  • New example script for custom metrics on EnvRunners (using MetricsLogger API on the new stack). (#47969)
  • Do-over: New RLlib index page. (#48285, #48442)
  • Do-over: Example script for AutoregressiveActionsRLM. (#47972)

🏗 Architecture refactoring:

  • New API stack on by default for PPO. (#48284)
  • Change config.fault_tolerance default behavior (from recreate_failed_env_runners=False to True). (#48286)

🔨 Fixes:

Ray Core

🎉 New Features:

  • [CompiledGraphs] Support all reduce collective in aDAG (#47621)
  • [CompiledGraphs] Add visualization of compiled graphs (#47958)

💫 Enhancements:

  • [Distributed Debugger] The distributed debugger can now be used without having to set RAY_DEBUG=1, see https://github.com/ray-project/ray/pull/48301 and https://docs.ray.io/en/latest/ray-observability/ray-distributed-debugger.html. If you want to restore the previous behavior and use the CLI based debugger, you need to set RAY_DEBUG=legacy.
  • [Core] Add more infos to each breakpoint for ray debug CLI (#48202)
  • [Core] Add demands info to GCS debug state (#48115)
  • [Core] Add PENDING_ACTOR_TASK_ARGS_FETCH and PENDING_ACTOR_TASK_ORDERING_OR_CONCURRENCY TaskStatus (#48242)
  • [Core] Add metrics ray_io_context_event_loop_lag_ms. (#47989)
  • [Core] Better log format when show the disk size (#46869)
  • [CompiledGraphs] Support asyncio.gather on multiple CompiledDAGFutures (#47860)
  • [CompiledGraphs] Raise an exception if a leaf node is found during compilation (#47757)

🔨 Fixes:

  • [Core] Posts CoreWorkerMemoryStore callbacks onto io_context to fix deadlock (#47833)
Dashboard

🔨 Fixes:

  • [Dashboard] Reworking dashboard_max_actors_to_cache to RAY_maximum_gcs_destroyed_actor_cached_count (#48229)

Thanks

Many thanks to all those who contributed to this release!

@akyang-anyscale, @rkooo567, @bveeramani, @dayshah, @martinbomio, @khluu, @justinvyu, @slfan1989, @alexeykudinkin, @simonsays1980, @vigneshka, @ruisearch42, @rynewang, @scottjlee, @jjyao, @JoshKarpel, @win5923, @MengjinYan, @MortalHappiness, @ujjawal-khare-27, @zcin, @ccoulombe, @Bye-legumes, @dentiny, @stephanie-wang, @LeoLiao123, @dengwxn, @richo-anyscale, @pcmoritz, @sven1977, @omatthew98, @GeneDer, @srinathk10, @can-anyscale, @edoakes, @kevin85421, @aslonnie, @jeffreyjeffreywang, @ArturNiederfahrenhorst

View originalPermalink
How 2.39.0 went
2.38.0

Ray-2.38.0

Added 5
  • Add Dataset.rename_columns
  • Add basic structured logging to Ray Data
  • Add partitioning parameter to read_parquet
  • Enable cloud checkpointing in RLlib
  • CompiledGraphs: support multi readers in multi node when DAG is created from an actor
Changed 12
  • Add SERVICE_UNAVAILABLE to list of retried transient errors
  • Re-phrase the streaming executor current usage string
  • Remove ray.kill in ActorPoolMapOperator
  • Simplify and consolidate progress bar outputs
  • Allow specifying both num_cpus and num_gpus for map APIs
  • Allow specifying insertion index when registering custom plan optimization Rules
Fixed 3
  • Fix bug where Ray Data incorrectly emits progress bar warning
  • Yield remaining results from async map_batches
  • Fix event loop mismatch with async map

Ray Libraries

Ray Data

🎉 New Features:

  • Add Dataset.rename_columns (#47906)
  • Basic structured logging (#47210)

💫 Enhancements:

  • Add partitioning parameter to read_parquet (#47553)
  • Add SERVICE_UNAVAILABLE to list of retried transient errors (#47673)
  • Re-phrase the streaming executor current usage string (#47515)
  • Remove ray.kill in ActorPoolMapOperator (#47752)
  • Simplify and consolidate progress bar outputs (#47692)
  • Refactor OpRuntimeMetrics to support properties (#47800)
  • Refactor plan_write_op and Datasinks (#47942)
  • Link PhysicalOperator to its LogicalOperator (#47986)
  • Allow specifying both num_cpus and num_gpus for map APIs (#47995)
  • Allow specifying insertion index when registering custom plan optimization Rules (#48039)
  • Adding in better framework for substituting logging handlers (#48056)

🔨 Fixes:

  • Fix bug where Ray Data incorrectly emits progress bar warning (#47680)
  • Yield remaining results from async map_batches (#47696)
  • Fix event loop mismatch with async map (#47907)
  • Make sure num_gpus provide to Ray Data is appropriately passed to ray.remote call (#47768)
  • Fix unequal partitions when grouping by multiple keys (#47924)
  • Fix reading multiple parquet files with ragged ndarrays (#47961)
  • Removing unneeded test case (#48031)
  • Adding in better json checking in test logging (#48036)
  • Fix bug with inserting custom optimization rule at index 0 (#48051)
  • Fix logging output from write_xxx APIs (#48096)

📖 Documentation:

  • Add docs section for Ray Data progress bars (#47804)
  • Add reference to parquet predicate pushdown (#47881)
  • Add tip about how to understand map_batches format (#47394)
Ray Train

🏗 Architecture refactoring:

  • Remove deprecated mosaic and sklearn trainer code (#47901)
Ray Tune

🔨 Fixes:

  • Fix WandbLoggerCallback to reuse actors upon restore (#47985)
Ray Serve

🔨 Fixes:

  • Stop scheduling task early when requests have been canceled (#47847)
RLlib

🎉 New Features:

  • Enable cloud checkpointing. (#47682)

💫 Enhancements:

  • PPO on new API stack now shuffles batches properly before each epoch. (#47458)
  • Other enhancements: #47705, #47501, #47731, #47451, #47830, #47970, #47157

🔨 Fixes:

  • Fix spot node preemption problem (RLlib now run stably with EnvRunner workers on spot nodes) (#47940)
  • Fix action masking example. (#47817)
  • Various other fixes: #47973, #46721, #47914, #47880, #47304, #47686

🏗 Architecture refactoring:

  • Switch on new API stack by default for SAC and DQN. (#47217)
  • Remove Tf support on new API stack for PPO/IMPALA/APPO (only DreamerV3 on new API stack remains with tf now). (#47892)
  • Discontinue support for "hybrid" API stack (using RLModule + Learner, but still on RolloutWorker and Policy) (#46085)
  • RLModule (new API stack) refinements: #47884, #47885, #47889, #47908, #47915, #47965, #47775

📖 Documentation:

  • Add new API stack migration guide. (#47779)
  • New API stack example script: BC pre training, then PPO finetuning using same RLModule class. (#47838)
  • New API stack: Autoregressive actions example. (#47829)
  • Remove old API stack connector docs entirely. (#47778)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • CompiledGraphs: support multi readers in multi node when DAG is created from an actor (#47601)

💫 Enhancements:

  • Add a flag to raise exception for out of band serialization of ObjectRef (#47544)
  • Store each GCS table in its own Redis Hash (#46861)
  • Decouple create worker vs pop worker request. (#47694)
  • Add metrics for GCS jobs (#47793)

🔨 Fixes:

  • Fix broken dashboard cluster page when there are dead nodes (#47701)
  • Fix the ray_tasks{State="PENDING_ARGS_FETCH"} metric counting (#47770)
  • Separate the attempt_number with the task_status in memory summary and object list (#47818)
  • Fix object reconstruction hang on arguments pending creation (#47645)
  • Fix check failure: sync_reactors_.find(reactor->GetRemoteNodeID()) == sync_reactors_.end() (#47861)
  • Fix check failure RAY_CHECK(it != current_tasks_.end()); (#47659)

📖 Documentation:

  • KubeRay docs: Add docs for YuniKorn Gang scheduling #47850
Dashboard

💫 Enhancements:

  • Performance improvements for large scale clusters (#47617)

🔨 Fixes:

  • Placement group and required resources not showing correctly in dashboard (#47754)

Thanks

Many thanks to all those who contributed to this release! @GeneDer, @rkooo567, @dayshah, @saihaj, @nikitavemuri, @bill-oconnor-anyscale, @WeichenXu123, @can-anyscale, @jjyao, @edoakes, @kekulai-fredchang, @bveeramani, @alexeykudinkin, @raulchen, @khluu, @sven1977, @ruisearch42, @dentiny, @MengjinYan, @Mark2000, @simonsays1980, @rynewang, @PatricYan, @zcin, @sofianhnaide, @matthewdeng, @dlwh, @scottjlee, @MortalHappiness, @kevin85421, @win5923, @aslonnie, @prithvi081099, @richardsliu, @milesvant, @omatthew98, @Superskyyy, @pcmoritz

View originalPermalink
How 2.38.0 went
2.37.0

Ray-2.37.0

Added 8
  • Allow control of some serve configuration via env vars
  • Add restart-failed-env option to EnvRunners
  • Add episode sampling to EpisodeReplayBuffer
  • Add SelfSupervisedLossAPI for RLModules that bring their own loss
  • Add InferenceOnlyAPI
  • Allow custom NCCL group for aDAG
  • Support buffered input for aDAG
  • Support multi node multi reader for aDAG
Changed 9
  • Simplify custom metadata provider API
  • Change counts of metrics to rates of metrics
  • Refactor custom optimizer rules
  • Update run status and add stack trace to TrainRunInfo
  • Faster detection of dead replicas
  • Store episodes in state form for offline RL
Fixed 4
  • Throw exception for non-streaming HF datasets with override_num_blocks argument
  • Remove ineffective retry code in plan_read_op
  • Fix incorrect pending task size if outputs are empty
  • Fix component id logging field

Ray Libraries

Ray Data

💫 Enhancements:

  • Simplify custom metadata provider API (#47575)
  • Change counts of metrics to rates of metrics (#47236)
  • Throw exception for non-streaming HF datasets with "override_num_blocks" argument (#47559)
  • Refactor custom optimizer rules (#47605)

🔨 Fixes:

  • Remove ineffective retry code in plan_read_op (#47456)
  • Fix incorrect pending task size if outputs are empty (#47604)
Ray Train

💫 Enhancements:

  • Update run status and add stack trace to TrainRunInfo (#46875)
Ray Serve

💫 Enhancements:

  • Allow control of some serve configuration via env vars (#47533)
  • [serve] Faster detection of dead replicas (#47237)

🔨 Fixes:

  • [Serve] fix component id logging field (#47609)
RLlib

💫 Enhancements:

  • New API stack:
    • Add restart-failed-env option to EnvRunners. (#47608)
    • Offline RL: Store episodes in state form. (#47294)
    • Offline RL: Replace GAE in MARWILOfflinePreLearner with GeneralAdvantageEstimation connector in learner pipeline. (#47532)
    • Off-policy algos: Add episode sampling to EpisodeReplayBuffer. (#47500)
    • RLModule APIs: Add SelfSupervisedLossAPI for RLModules that bring their own loss and InferenceOnlyAPI. (#47581, #47572)
Ray Core

💫 Enhancements:

  • [aDAG] Allow custom NCCL group for aDAG (#47141)
  • [aDAG] support buffered input (#47272)
  • [aDAG] Support multi node multi reader (#47480)
  • [Core] Make is_gpu, is_actor, root_detached_id fields late bind to workers. (#47212)
  • [Core] Reconstruct actor to run lineage reconstruction triggered actor task (#47396)
  • [Core] Optimize GetAllJobInfo API for performance (#47530)

🔨 Fixes:

  • [aDAG] Fix ranks ordering for custom NCCL group (#47594)
Ray Clusters

📖 Documentation:

  • [KubeRay] add a guide for deploying vLLM with RayService (#47038)

Thanks

Many thanks to all those who contributed to this release! @ruisearch42, @andrewsykim, @timkpaine, @rkooo567, @WeichenXu123, @GeneDer, @sword865, @simonsays1980, @angelinalg, @sven1977, @jjyao, @woshiyyya, @aslonnie, @zcin, @omatthew98, @rueian, @khluu, @justinvyu, @bveeramani, @nikitavemuri, @chris-ray-zhang, @liuxsh9, @xingyu-long, @peytondmurray, @rynewang

View originalPermalink
How 2.37.0 went
2.36.1

Ray-2.36.1

Fixed 2
  • Fix broken dashboard cluster page when there are dead nodes
  • Fix broken dashboard worker page
Ray Core

🔨 Fixes:

  • Fix broken dashboard cluster page when there are dead nodes (#47701)
  • Fix broken dashboard worker page (#47714)
View originalPermalink
How 2.36.1 went
2.36.0

Ray-2.36.0

Added 8
  • Allow user-defined Exception to be caught in Ray Data
  • Decouple device-related modules and add Huawei NPU support to Ray Train
  • Setup default serve logger
  • Add CQL algorithm to new API stack in RLlib
  • Enable GPU and multi-GPU support for DQN/SAC/CQL in new API stack
  • Add torch.compile config options to old API stack
  • Add kwargs to torch.nn.parallel.DistributedDataParallel
  • Add PREPARED state for placement groups in GCS for better fault tolerance
Changed 3
  • Remove limit on number of tasks launched per scheduling step in Ray Data
  • Mark proxy as unready when its routers are aware of zero replicas in Ray Serve
  • Enhance offline RL in new API stack
Fixed 8
  • Display pending actors separately in the progress bar and not count them towards running resources
  • Fix bug where arrow_parquet_args aren't used
  • Skip empty JSON files in read_json()
  • Remove remote call for initializing Datasource in read_datasource()
  • Update TORCH_NCCL_ASYNC_ERROR_HANDLING env var
  • Allow get_serve_logs_dir to run outside of Ray's context
  • Fix large batch size for synchronous algos after EnvRunner failures
  • Fix ray_unintentional_worker_failures_total to only count unintentional worker failures
Removed 1
  • Remove support for nested DeploymentResponses

Ray Libraries

Ray Data

💫 Enhancements:

  • Remove limit on number of tasks launched per scheduling step (#47393)
  • Allow user-defined Exception to be caught. (#47339)

🔨 Fixes:

  • Display pending actors separately in the progress bar and not count them towards running resources (#46384)
  • Fix bug where arrow_parquet_args aren't used (#47161)
  • Skip empty JSON files in read_json() (#47378)
  • Remove remote call for initializing Datasource in read_datasource() (#47467)
  • Remove dead from_*_operator modules (#47457)
  • Release test fixes
  • Add AWS ACCESS_DENIED as retryable exception for multi-node Data+Train benchmarks (#47232)
  • Get AWS credentials with boto (#47352)
  • Use worker node instead of head node for read_images_comparison_microbenchmark_single_node release test (#47228)

📖 Documentation:

  • Add docstring to explain Dataset.deserialize_lineage (#47203)
  • Add a comment explaining the bundling behavior for map_batches with default batch_size (#47433)
Ray Train

💫 Enhancements:

  • Decouple device-related modules and add Huawei NPU support to Ray Train (#44086)

🔨 Fixes:

  • Update TORCH_NCCL_ASYNC_ERROR_HANDLING env var (#47292)

📖 Documentation:

  • Add missing Train public API reference (#47134)
Ray Tune

📖 Documentation:

  • Add missing Tune public API references (#47138)
Ray Serve

💫 Enhancements:

  • Mark proxy as unready when its routers are aware of zero replicas (#47002)
  • Setup default serve logger (#47229)

🔨 Fixes:

  • Allow get_serve_logs_dir to run outside of Ray's context (#47224)
  • Use serve logger name for logs in serve (#47205)

📖 Documentation:

  • [HPU] [Serve] [experimental] Add vllm HPU support in vllm example (#45893)

🏗 Architecture refactoring:

  • Remove support for nested DeploymentResponses (#47209)
RLlib

🎉 New Features:

  • New API stack: Add CQL algorithm. (#47000, #47402)
  • New API stack: Enable GPU and multi-GPU support for DQN/SAC/CQL. (#47179)

💫 Enhancements:

  • New API stack: Offline RL enhancements: #47195, #47359
  • Enhance new API stack stability: #46324, #47196, #47245, #47279
  • Fix large batch size for synchronous algos (e.g. PPO) after EnvRunner failures. (#47356)
  • Add torch.compile config options to old API stack. (#47340)
  • Add kwargs to torch.nn.parallel.DistributedDataParallel (#47276)
  • Enhanced CI stability: #47197, #47249

📖 Documentation:

  • New API stack example scripts:
    • Float16 training example script. (#47362)
    • Mixed precision training example script (#47116)
    • ModelV2 -> RLModule wrapper for migrating to new API stack. (#47425)
  • Remove "new API stack experimental" hint from docs. (#47301)

🏗 Architecture refactoring:

  • Remove 2nd Learner ConnectorV2 pass from PPO (#47401)
  • Add separate learning rates for policy and alpha to SAC. (#47078)

🔨 Fixes:

Ray Core

💫 Enhancements:

🔨 Fixes:

  • Fix ray_unintentional_worker_failures_total to only count unintentional worker failures (#47368)
  • Fix runtime env race condition when uploading the same package concurrently (#47482)
Dashboard

🔨 Fixes:

  • Performance optimizations for dashboard backend logic (#47392) (#47367) (#47160) (#47213)
  • Refactor to simplify dashboard backend logic (#47324)
Docs

💫 Enhancements:

  • Add sphinx-autobuild and documentation for make local (#47275): Speed up of local docs builds with make local.
  • Add Algolia search to docs (#46477)
  • Update PyTorch Mnist Training doc for KubeRay 1.2.0 (#47321)
  • Life-cycle of documentation policy of Ray APIs

Thanks

Many thanks to all those who contributed to this release! @GeneDer, @Bye-legumes, @nikitavemuri, @kevin85421, @MortalHappiness, @LeoLiao123, @saihaj, @rmcsqrd, @bveeramani, @zcin, @matthewdeng, @raulchen, @mattip, @jjyao, @ruisearch42, @scottjlee, @can-anyscale, @khluu, @aslonnie, @rynewang, @edoakes, @zhanluxianshen, @venkatram-dev, @c21, @allenyin55, @alexeykudinkin, @snehakottapalli, @BitPhinix, @hongchaodeng, @dengwxn, @liuxsh9, @simonsays1980, @peytondmurray, @KepingYan, @bryant1410, @woshiyyya, @sven1977

View originalPermalink
How 2.36.0 went
2.35.0

Ray-2.35.0

Added 3
  • Add support for reading from Iceberg in Ray Data
  • Add failure retry logic for read_lance in Ray Data
  • Add hardware stats in Ray Train
Changed 9
  • pip install ray[all] will no longer include ray[cpp] and the ray-cpp package; use pip install ray[cpp-all] to install everything including ray-cpp
  • Upgrade supported Arrow version from 16 to 17
  • Various progress bar UX improvements in Ray Data
  • Try get size_bytes from metadata and consolidate metadata methods in Ray Data
  • Improve warning message when read task is large in Ray Data
  • Extend API to enable passing sample weights via ray.dataset.to_tf
Fixed 8
  • Change type of DataContext.retried_io_errors from tuple to list in Ray Data
  • Change pickling log level from warning to debug in Ray Data
  • Add validation for shuffle arg in Ray Data
  • Fix validation bug when size=0 in ActorPoolStrategy in Ray Data
  • Fix exception in async map in Ray Data
  • Fix wrong metrics group for Object Store Memory metrics on Ray Data Dashboard
  • Handle errors in SplitCoordinator when generating a new epoch in Ray Data
  • Fix WandB metric overlap after restore from checkpoint in Tune
Deprecated 1
  • Deprecate passing arguments that contain DeploymentResponses in nested objects to downstream deployment handle calls in Ray Serve

Notice: Starting from this release, pip install ray[all] will not include ray[cpp], and will not install the respective ray-cpp package. To install everything that includes ray-cpp, one can use pip install ray[cpp-all] instead.

Ray Libraries

Ray Data

🎉 New Features:

  • Upgrade supported Arrow version from 16 to 17 (#47034)
  • Add support for reading from Iceberg (#46889)

💫 Enhancements:

  • Various Progress Bar UX improvements (#46816, #46801, #46826, #46692, #46699, #46974, #46928, #47029, #46924, #47120, #47095, #47106)
  • Try get size_bytes from metadata and consolidate metadata methods (#46862)
  • Improve warning message when read task is large (#46942)
  • Extend API to enable passing sample weights via ray.dataset.to_tf (#45701)
  • Add a parameter to allow overriding LanceDB scanner options (#46975)
  • Add failure retry logic for read_lance (#46976)
  • Clarify warning for reading old Parquet data (#47049)
  • Move datasource implementations to _internal subpackage (#46825)
  • Handle logs from tensor extensions (#46943)

🔨 Fixes:

  • Change type of DataContext.retried_io_errors from tuple to list (#46884)
  • Make Parquet tests more robust and expose Parquet logic (#46944)
  • Change pickling log level from warning to debug (#47032)
  • Add validation for shuffle arg (#47055)
  • Fix validation bug when size=0 in ActorPoolStrategy (#47072)
  • Fix exception in async map (#47110)
  • Fix wrong metrics group for Object Store Memory metrics on Ray Data Dashboard (#47170)
  • Handle errors in SplitCoordinator when generating a new epoch (#47176)

📖 Documentation:

  • Auto-gen GroupedData api (#46925)
  • Fix signature of Rule.plan (#47094)
Ray Train

💫 Enhancements:

  • [train] Updates to support xgboost==2.1.0 (#46667)
  • [train] Add hardware stats (#46719)
Ray Tune

🔨 Fixes:

  • [RLlib; Tune] Fix WandB metric overlap after restore from checkpoint. (#46897)
Ray Serve

💫 Enhancements:

  • Improved handling of replica death and replica unavailability in deployment handle routers before controller restarts replica (#47008)
  • Eagerly create routers in proxy for better GCS fault tolerance (#47031)
  • Immediately send ping in router when receiving new replica set (#47053)

🏗 Architecture refactoring:

  • Deprecate passing arguments that contain DeploymentResponses in nested objects to downstream deployment handle calls (#46806)
RLlib

🎉 New Features:

  • Offline RL on the new API stack:
    • Record offline data (#46818, #47046, #47133, #47155) and support to directly read from episodes. (#46865)
    • RLUnplugged example. (#46792)
    • Progress on BC/MARWIL migration: #44970, #47154, #46799
    • Progress on CQL migration: #46969, #47105

💫 Enhancements:

  • Add ObservationPreprocessor (ConnectorV2). (#47077)

🔨 Fixes:

  • New API stack: Fix IMPALA/APPO + LSTM for single- and multi-GPU. (#47132, #47158)
  • Various bug fixes: #46898, #47047, #46963, #47021, #46897
  • Add more control to Algorithm.add_module/policy methods. (#46932, #46836)

📖 Documentation:

  • Example scripts for new API stack:
    • Curiosity (inverse dynamics model-based) RLModule example. (#46841)
    • Add example script for Env with protobuf observation space. (#47071)
  • New API stack documentation:
    • Cleanup old API stack docs (rllib-dev.rst). (#47172)
    • Episodes (SingleAgentEpisode). (#46985)
    • Redo rllib-algorithms.rst page. (#46916)

🏗 Architecture refactoring:

  • Rename MultiAgent...RLModule... into MultiRL...Module for more generality. (#46840)
  • Add learner_only flag to RLModuleConfig/Spec and simplify creation of RLModule specs from algo-config. (#46900)
Ray Core

💫 Enhancements:

  • Emit total lineage bytes metrics (#46725)
  • Adding accelerator type H100 (#46823)
  • More structured logging in core worker (#46906)
  • Change all callbacks to move to save copies. (#46971)
  • Add ray[adag] option to pip install (#47009)

🔨 Fixes:

  • Fix dashboard process reporting on windows (#45578)
  • Fix Ray-on-Spark cluster crashing bug when user cancels cell execution (#46899)
  • Fix PinExistingReturnObject segfault by passing owner_address (#46973)
  • Fix raylet CHECK failure from runtime env creation failure. (#46991)
  • Fix typo in memray command (#47006)
  • [ADAG] Fix for asyncio outputs (#46845)

📖 Documentation:

  • Clarify behavior of placement_group_capture_child_tasks in docs (#46885)
  • Update ray.available_resources() docstring (#47018)

🏗 Architecture refactoring:

  • Async APIs for the New GcsClient. (#46788)
  • Replace GCS stubs in the dashboard to use NewGcsAioClient. (#46846)
Dashboard

💫 Enhancements:

  • Polish and minor improvements to the Serve page (#46811)

🔨 Fixes:

  • Fix CPU/GPU/RAM not being reported correctly on Windows (#44578)
Docs

💫 Enhancements:

  • Add more information about developer tooling for docs contributions (#46636), including esbonio section

🔨 Fixes:

  • Use PyData Sphinx theme version switcher (#46936)

Thanks

Many thanks to all those who contributed to this release! @simonsays1980, @bveeramani, @tungh2, @zcin, @xingyu-long, @WeichenXu123, @aslonnie, @MaxVanDijck, @can-anyscale, @galenhwang, @omatthew98, @matthewdeng, @raulchen, @sven1977, @shrekris-anyscale, @deepyaman, @alexeykudinkin, @stephanie-wang, @kevin85421, @ruisearch42, @hongchaodeng, @khluu, @alanwguo, @hongpeng-guo, @saihaj, @Superskyyy, @tespent, @slfan1989, @justinvyu, @rynewang, @nikitavemuri, @amogkam, @mattip, @dev-goyal, @ryanaoleary, @peytondmurray, @edoakes, @venkatajagannath, @jjyao, @cristianjd, @scottjlee, @Bye-legumes

View originalPermalink
How 2.35.0 went
2.34.0

Release 2.34.0 Notes

Added 4
  • Add better support for UDF returns from list of datetime objects
  • Initial design for Ray-Data based offline RL Algos on new API stack
  • Add user-defined schemas for data loading
  • Make data pipeline better configurable and tuneable for users
Changed 3
  • Move DQN into the TargetNetworkAPI
  • Cleanup, rename, clarify: Algorithm.workers/evaluation_workers, local_worker(), etc.
  • Add new python GcsClient binding
Fixed 3
  • Remove read task warning if size bytes not set in metadata
  • Sort workers by node ID rather than by node IP
  • Rename all np.product usage to np.prod for numpy compatibility
Removed 1
  • Remove dead RayDatasetSpec
Deprecated 1
  • Deprecate RLModuleWithTargetNetworksInterface

Ray Libraries

Ray Data

💫 Enhancements:

  • Add better support for UDF returns from list of datetime objects (#46762)

🔨 Fixes:

  • Remove read task warning if size bytes not set in metadata (#46765)

📖 Documentation:

  • Fix read_tfrecords() docstring to display tfx-bsl tip (#46717)
  • Update Dataset.zip() docs (#46757)
Ray Train

🔨 Fixes:

  • Sort workers by node ID rather than by node IP (#46163)

🏗 Architecture refactoring:

  • Remove dead RayDatasetSpec (#46764)
RLlib

🎉 New Features:

  • Offline RL support on new API stack:
    • Initial design for Ray-Data based offline RL Algos (on new API stack). (#44969)
    • Add user-defined schemas for data loading. (#46738)
    • Make data pipeline better configurable and tuneable for users. (#46777)

💫 Enhancements:

  • Move DQN into the TargetNetworkAPI (and deprecate RLModuleWithTargetNetworksInterface). (#46752)

🔨 Fixes:

  • Numpy version fix: Rename all np.product usage to np.prod (#46317)

📖 Documentation:

  • Examples for new API stack: Add 2 (count-based) curiosity examples. (#46737)
  • Remove RLlib CLI from docs (soon to be deprecated and replaced by python API). (#46724)

🏗 Architecture refactoring:

  • Cleanup, rename, clarify: Algorithm.workers/evaluation_workers, local_worker(), etc.. (#46726)

Ray Core

🏗 Architecture refactoring:

  • New python GcsClient binding (#46186)

Many thanks to all those who contributed to this release! @KyleKoon, @ruisearch42, @rynewang, @sven1977, @saihaj, @aslonnie, @bveeramani, @akshay-anyscale, @kevin85421, @omatthew98, @anyscalesam, @MaxVanDijck, @justinvyu, @simonsays1980, @can-anyscale, @peytondmurray, @scottjlee

View originalPermalink
How 2.34.0 went
2.33.0

Ray-2.33.0

Added 2
  • Add read API for reading Databricks table with Delta Sharing
  • Add support for objects to Arrow blocks
Changed 10
  • Add last exception to error message when GCS connection fails in ray.init()
  • Change offsets to int64 and change to LargeList for ArrowTensorArray
  • Prevent from_pandas from combining input blocks
  • Update Dataset.count() to avoid unnecessarily keeping BlockRefs in-memory
  • Use Set to fix inefficient iteration over Arrow table columns
  • Add AWS Error UNKNOWN to list of retried write errors
Fixed 7
  • Add object back to memory store when object recovery is skipped
  • Task status should start with PENDING_ARGS_AVAIL when retry
  • Fix ObjectFetchTimedOutError
  • Make working_dir support files created before 1980
  • Allow full path in conda runtime env
  • Fix worker launch time formatting in state api
  • Replace lambda mutable default arguments in Ray Data
Deprecated 1
  • Deprecate Dataset.get_internal_block_refs()

Ray Libraries

Ray Core

💫 Enhancements:

  • Add "last exception" to error message when GCS connection fails in ray.init() (#46516)

🔨 Fixes:

  • Add object back to memory store when object recovery is skipped (#46460)
  • Task status should start with PENDING_ARGS_AVAIL when retry (#46494)
  • Fix ObjectFetchTimedOutError (#46562)
  • Make working_dir support files created before 1980 (#46634)
  • Allow full path in conda runtime env. (#45550)
  • Fix worker launch time formatting in state api (#43516)
Ray Data

🎉 New Features:

  • Deprecate Dataset.get_internal_block_refs() (#46455)
  • Add read API for reading Databricks table with Delta Sharing (#46072)
  • Add support for objects to Arrow blocks (#45272)

💫 Enhancements:

  • Change offsets to int64 and change to LargeList for ArrowTensorArray (#45352)
  • Prevent from_pandas from combining input blocks (#46363)
  • Update Dataset.count() to avoid unnecessarily keeping BlockRefs in-memory (#46369)
  • Use Set to fix inefficient iteration over Arrow table columns (#46541)
  • Add AWS Error UNKNOWN to list of retried write errors (#46646)
  • Always print traceback for internal exceptions (#46647)
  • Allow unknown estimate of operator output bundles and ProgressBar totals (#46601)
  • Improve filesystem retry coverage (#46685)

🔨 Fixes:

  • Replace lambda mutable default arguments (#46493)

📖 Documentation:

  • Auto-generate Dataset API documentation (#46557)
  • Update outdated ExecutionPlan docstring (#46638)
Ray Train

💫 Enhancements:

  • Update run status and actor status for train runs. (#46395)

🔨 Fixes:

  • Replace lambda default arguments (#46576)

📖 Documentation:

  • Add MNIST training using KubeRay doc page (#46123)
  • Add example of pre-training Llama model on Intel Gaudi (#45459)
  • Fix tensorflow example by using ScalingConfig (#46565)
Ray Tune

🔨 Fixes:

  • Replace lambda default arguments (#46596)
Ray Serve

🎉 New Features:

  • Fully deprecate target_num_ongoing_requests_per_replica and max_concurrent_queries, respectively replaced by max_ongoing_requests and target_ongoing_requests (#46392 and #46427)
  • Configure the task launched by the controller to build an application with Serve’s logging config (#46347)
RLlib

💫 Enhancements:

  • Moving sampling coordination for batch_mode=complete_episodes to synchronous_parallel_sample. (#46321)
  • Enable complex action spaces with stateful modules. (#46468)

🏗 Architecture refactoring:

  • Enable multi-learner setup for hybrid stack BC. (#46436)
  • Introduce Checkpointable API for RLlib components and subcomponents. (#46376)

🔨 Fixes:

  • Replace Mapping typehint with Dict: #46474

📖 Documentation:

  • More example scripts for new API stack: Two separate optimizers (w/ different learning rates). (#46540) and custom loss function. (#46445)
Dashboard

🔨 Fixes:

  • Task end time showing the incorrect time (#46439)
  • Events Table rows having really bad spacing (#46701)
  • UI bugs in the serve dashboard page (#46599)

Thanks

Many thanks to all those who contributed to this release!

@alanwguo, @hongchaodeng, @anyscalesam, @brucebismarck, @bt2513, @woshiyyya, @terraflops1048576, @lorenzoritter, @omrishiv, @davidxia, @cchen777, @nono-Sang, @jackhumphries, @aslonnie, @JoshKarpel, @zjregee, @bveeramani, @khluu, @Superskyyy, @liuxsh9, @jjyao, @ruisearch42, @sven1977, @harborn, @saihaj, @zcin, @can-anyscale, @veekaybee, @chungen04, @WeichenXu123, @GeneDer, @sergey-serebryakov, @Bye-legumes, @scottjlee, @rynewang, @kevin85421, @cristianjd, @peytondmurray, @MortalHappiness, @MaxVanDijck, @simonsays1980, @mjovanovic9999

View originalPermalink
How 2.33.0 went
2.32.0

Ray-2.32.0

Added 4
  • aDAG Developer Preview: Ray accelerated DAGs with Ray Core-like API and extensibility to pre-compile execution paths across pre-allocated resources
  • Support async callable classes in map_batches()
  • APPO on new API stack with EnvRunners
  • Added customizable refresh frequency for metrics on Ray Dashboard
Changed 12
  • Optimize ServeController.get_app_config()
  • Change default for max and target ongoing requests
  • Integrate Ray Serve with Ray structured logging
  • Allow configuring handle cache size and controller max concurrency
  • Optimize DeploymentDetails.deployment_route_prefix_not_set()
  • Allow env setup logger encoding
Fixed 4
  • Ensure InputDataBuffer doesn't free block references
  • MapOperator.num_active_tasks should exclude pending actors
  • Fix progress bars being displayed as partially completed in Jupyter notebooks
  • Decrement lineage ref count of an actor when the actor task return object reference is deleted

Highlight: aDAG Developer Preview

This is a new Ray Core specific feature called Ray accelerated DAGs (aDAGs).

  • aDAGs give you a Ray Core-like API but with extensibility to pre-compile execution paths across pre-allocated resources on a Ray Cluster to possible benefits for optimization on throughput and latency. Some practical examples include:
    • Up to 10x lower task execution time on single-node.
    • Native support for GPU-GPU communication, via NCCL.
  • This is still very early, but please reach out on #ray-core on Ray Slack to learn more!

Ray Libraries

Ray Data

💫 Enhancements:

  • Support async callable classes in map_batches() (#46129)

🔨 Fixes:

  • Ensure InputDataBuffer doesn't free block references (#46191)
  • MapOperator.num_active_tasks should exclude pending actors (#46364)
  • Fix progress bars being displayed as partially completed in Jupyter notebooks (#46289)

📖 Documentation:

  • Fix docs: read_api.py docstring (#45690)
  • Correct API annotation for tfrecords_datasource (#46171)
  • Fix broken links in README and in ray.data.Dataset (#45345)
Ray Train

📖 Documentation:

  • Update PyTorch Data Ingestion User Guide (#45421)
Ray Serve

💫 Enhancements:

  • Optimize ServeController.get_app_config() (#45878)
  • Change default for max and target ongoing requests (#45943)
  • Integrate with Ray structured logging (#46215)
  • Allow configuring handle cache size and controller max concurrency (#46278)
  • Optimize DeploymentDetails.deployment_route_prefix_not_set() (#46305)
RLlib

🎉 New Features:

  • APPO on new API stack (w/ EnvRunners). (#46216)

💫 Enhancements:

  • Stability: APPO, SAC, and DQN activate multi-agent learning tests (#45542, #46299)
  • Make Tune trial ID available in EnvRunners (and callbacks). (#46294)
  • Add env- and agent_steps to custom evaluation function. (#45652)
  • Remove default-metrics from Algorithm (tune does NOT error anymore if any stop-metric is missing). (#46200)

🔨 Fixes:

  • Various bug fixes: #45542

📖 Documentation:

  • Example for new API stack: Offline RL (BC) training on single-agent, while evaluating w/ multi-agent setup. (#46251)
  • Example for new API stack: Custom RLModule with an LSTM. (#46276)

Ray Core

🎉 New Features:

  • aDAG Developer Preview.

💫 Enhancements:

  • Allow env setup logger encoding (#46242)
  • ray list tasks filter state and name on GCS side (#46270)
  • Log ray version and ray commit during GCS start (#46341)

🔨 Fixes:

  • Decrement lineage ref count of an actor when the actor task return object reference is deleted (#46230)
  • Fix negative ALIVE actors metric and introduce IDLE state (#45718)
  • psutil process attr num_fds is not available on Windows (#46329)
Dashboard

🎉 New Features:

  • Added customizable refresh frequency for metrics on Ray Dashboard (#44037)

💫 Enhancements:

  • Upgraded to MUIv5 and React 18 (#45789)

🔨 Fixes:

  • Fix for multi-line log items breaking log viewer rendering (#46391)
  • Fix for UI inconsistency when a job submission creates more than one Ray job. (#46267)
  • Fix filtering by job id for tasks API not filtering correctly. (#45017)
Docs

🔨 Fixes:

  • Re-enabled automatic cross-reference link checking for Ray documentation, with Sphinx nitpicky mode (#46279)
  • Enforced naming conventions for public and private APIs to maintain accuracy, starting with Ray Data API documentation (#46261)

📖 Documentation:

  • Upgrade Python 3.12 support to alpha, marking the release of the Ray wheel to PyPI and conducting a sanity check of the most critical tests.

Thanks

Many thanks to all those who contributed to this release!

@stephanie-wang, @MortalHappiness, @aslonnie, @ryanaoleary, @jjyao, @jackhumphries, @nikitavemuri, @woshiyyya, @JoshKarpel, @ruisearch42, @sven1977, @alanwguo, @GeneDer, @saihaj, @raulchen, @liuxsh9, @khluu, @cristianjd, @scottjlee, @bveeramani, @zcin, @simonsays1980, @SumanthRH, @davidxia, @can-anyscale, @peytondmurray, @kevin85421

View originalPermalink
How 2.32.0 went
2.31.0

Ray-2.31.0

Added 4
  • Added documentation for dataset.Schema
  • Add API for Ray Train run stats
  • IMPALA runs on the new API stack with EnvRunners and ConnectorV2s
  • SAC/DQN: Prioritized multi-agent episode replay buffer
Changed 3
  • Missing stopping criterion should not error, just warn
  • Optimize DeploymentStateManager.get_deployment_statuses
  • Automatically infer worker path when starting worker in container
Fixed 6
  • Fixed bug where preserve_order doesn't work with file reads
  • Fix logging error on passing traceback object into exc_info
  • Run __del__ even if constructor is still in-progress
  • On GCS restart, destroy not forget the unused workers, fixing PG leaks
  • Cancel lease requests before returning a PG bundle
  • Fix boost fiber stack overflow

Ray Libraries

Ray Data

🔨 Fixes:

  • Fixed bug where preserve_order doesn’t work with file reads (#46135)

📖 Documentation:

  • Added documentation for dataset.Schema (#46170)
Ray Train

💫 Enhancements:

  • Add API for Ray Train run stats (#45711)
Ray Tune

💫 Enhancements:

  • Missing stopping criterion should not error (just warn). (#45613)

📖 Documentation:

  • Fix broken references in Ray Tune documentation (#45233)
Ray Serve

WARNING: the following default values will change in Ray 2.32:

  • Default for max_ongoing_requests will change from 100 to 5.
  • Default for target_ongoing_requests will change from 1 to 2.

💫 Enhancements:

  • Optimize DeploymentStateManager.get_deployment_statuses (#45872)

🔨 Fixes:

  • Fix logging error on passing traceback object into exc_info (#46105)
  • Run del even if constructor is still in-progress (#45882)
  • Spread replicas with custom resources in torch tune serve release test (#46093)
  • [1k release test] don't run replicas on head node (#46130)

📖 Documentation:

  • Remove todo since issue is fixed (#45941)
RLlib

🎉 New Features:

  • IMPALA runs on the new API stack (with EnvRunners and ConnectorV2s). (#42085)
  • SAC/DQN: Prioritized multi-agent episode replay buffer. (#45576)

💫 Enhancements:

  • New API stack stability: Add systematic CI learning tests for all possible combinations of: [PPO|IMPALA] + [1CPU|2CPU|1GPU|2GPU] + [single-agent|multi-agent]. (#46162, #46161)

📖 Documentation:

  • New API stack: Example script for action masking (#46146)
  • New API stack: PyFlight example script cleanup (#45956)
  • Old API stack: Enhanced ONNX example (+LSTM). (#43592)

Ray Core and Ray Clusters

Ray Core

💫 Enhancements:

  • [runtime-env] automatically infer worker path when starting worker in container (#42304)

🔨 Fixes:

  • On GCS restart, destroy not forget the unused workers. Fixing PG leaks. (#45854)
  • Cancel lease requests before returning a PG bundle (#45919)
  • Fix boost fiber stack overflow (#46133)

Thanks

Many thanks to all those who contributed to this release!

@jjyao, @kevin85421, @vincent-pli, @khluu, @simonsays1980, @sven1977, @rynewang, @can-anyscale, @richardsliu, @jackhumphries, @alexeykudinkin, @bveeramani, @ruisearch42, @shrekris-anyscale, @stephanie-wang, @matthewdeng, @zcin, @hongchaodeng, @ryanaoleary, @liuxsh9, @GeneDer, @aslonnie, @peytondmurray, @Bye-legumes, @woshiyyya, @scottjlee, @JoshKarpel

View originalPermalink
How 2.31.0 went
2.30.0

Ray-2.30.0

Added 2
  • Create internal request id to track request objects
  • Alpha release of job level logging configuration allowing users to configure user logging in logfmt format with logging context
Changed 8
  • Improve fractional CPU/GPU formatting
  • Use sampled fragments to estimate Parquet reader batch size
  • Refactor ParquetDatasource and metadata fetching logic
  • Refactor planner.py
  • Change the behavior of a missing stopping criterion metric to warn instead of raising an error
  • Enhance env-rendering callback
  • Integrate amdsmi in AMDAcceleratorManager
  • Parse out json logs in Dashboard
Fixed 3
  • Fix EMA stats without window that would lead to infinite list memory leak in MetricsLogger API
  • Fix the C++ GcsClient Del not respecting del_by_prefix
  • Fix exit handling of FiberState threads

Ray Libraries

Ray Data

💫 Enhancements:

  • Improve fractional CPU/GPU formatting (#45673)
  • Use sampled fragments to estimate Parquet reader batch size (#45749)
  • Refactoring ParquetDatasource and metadata fetching logic (#45728, #45727, #45733, #45734, #45767)
  • Refactor planner.py (#45706)
Ray Tune

💫 Enhancements:

  • Change the behavior of a missing stopping criterion metric to warn instead of raising an error. This enables the use case of reporting different sets of metrics on different iterations (ex: a separate set of training and validation metrics). (#45613)
Ray Serve

💫 Enhancements:

  • Create internal request id to track request objects (#45761)
RLLib

💫 Enhancements:

🔨 Fixes:

📖 Documentation:

  • Re-do examples overview page (new API stack): #45382
    • PyFlyt QuadX WayPoints example #44758, #45956
    • RLModule inference on new API stack (#45831, #45845)
    • How to resume a tune.Tuner.fit() experiment from checkpoint. (#45681)
    • Custom RLModule (tiny CNN): #45774
    • Connector examples docstrings (#45864)
  • Old API stack examples: #43592, #45829
Ray Core

🎉 New Features:

  • Alpha release of job level logging configuration: users can now config the user logging to be logfmt format with logging context attached. (#45344)

💫 Enhancements:

  • Integrate amdsmi in AMDAcceleratorManager (#44572)

🔨 Fixes:

  • Fix the C++ GcsClient Del not respecting del_by_prefix (#45604)
  • Fix exit handling of FiberState threads (#45834)
Dashboard

💫 Enhancements:

  • Parse out json logs (#45853)

Many thanks to all those who contributed to this release: @liuxsh9, @peytondmurray, @pcmoritz, @GeneDer, @saihaj, @khluu, @aslonnie, @yucai, @vickytsang, @can-anyscale, @bthananjeyan, @raulchen, @hongchaodeng, @x13n, @simonsays1980, @peterghaddad, @kevin85421, @rynewang, @angelinalg, @jjyao, @BenWilson2, @jackhumphries, @zcin, @chris-ray-zhang, @c21, @shrekris-anyscale, @alanwguo, @stephanie-wang, @Bye-legumes, @sven1977, @WeichenXu123, @bveeramani, @nikitavemuri

View originalPermalink
How 2.30.0 went
2.24.0

Ray-2.24.0

Added 5
  • Allow user to configure timeout for actor pool
  • Add override_num_blocks to from_pandas and perform auto-partition
  • Add support for multi-agent off-policy algorithms (DQN and SAC) in the new API
  • Config option for APPO/IMPALA to change number of GPU-loader threads
  • Ray c++ backend structured logging
Changed 6
  • Upgrade Arrow version to 16 in CI
  • Record more telemetry for newly added datasources
  • Improve excessive syncing warning
  • Clean up Serve proxy files
  • Improve node death observability
  • Clarify that num_rows_per_file is not strict
Fixed 6
  • Avoid pickling LanceFragment when creating read tasks for Lance
  • DreamerV3 on tf bug fix to run again with tf==2.11.1
  • Various MetricsLogger bug fixes
  • Fix worker crash when getting actor name from runtime context
  • Log dedup should not dedup number only lines
  • Move Job package uploading to another thread to unblock the event loop
Deprecated 1
  • Deprecate TUNE_RESULT_DIR, RAY_AIR_LOCAL_CACHE_DIR, and local_dir

Ray Libraries

Ray Data

🎉 New Features:

  • Allow user to configure timeout for actor pool (#45508)
  • Add override_num_blocks to from_pandas and perform auto-partition (#44937)
  • Upgrade Arrow version to 16 in CI (#45565)

💫 Enhancements:

  • Clarify that num_rows_per_file isn't strict (#45529)
  • Record more telemetry for newly added datasources (#45647)
  • Avoid pickling LanceFragment when creating read tasks for Lance (#45392)
Ray Train

📖 Documentation:

  • [HPU] Add example of Stable Diffusion fine-tuning and serving on Intel Gaudi (#45217)
  • [HPU] Add example of Llama-2 fine-tuning on Intel Gaudi (#44667)
Ray Tune

🏗 Architecture refactoring:

  • Improve excessive syncing warning and deprecate TUNE_RESULT_DIR, RAY_AIR_LOCAL_CACHE_DIR, local_dir (#45210)
Ray Serve

💫 Enhancements:

  • Clean up Serve proxy files (#45486)

📖 Documentation:

  • vllm example to serve llm models (#45430)
RLLib

💫 Enhancements:

  • DreamerV3 on tf: Bug fix, so it can run again with tf==2.11.1 (2.11.0 is not available anymore) (#45419); Added weekly release test for DreamerV3.
  • Added support for multi-agent off-policy algorithms (DQN and SAC) in the new (#45182)
  • Config option for APPO/IMPALA to change number of GPU-loader threads (#45467)

🔨 Fixes:

  • Various MetricsLogger bug fixes (#45543, #45585, #45575)
  • Other fixes: #45588, #45617, #45517, #45465

📖 Documentation:

  • Example script for new API stack: How-to restore 1 of n agents from a checkpoint. (#45462)
  • Example script for new API stack: Autoregressive action module. #45525
Ray Core

💫 Enhancements:

  • Improve node death observability (#45320, #45357, #45533, #45644, #45497)
  • Ray c++ backend structured logging (#44468)

🔨 Fixes:

  • Fix worker crash when getting actor name from runtime context (#45194)
  • log dedup should not dedup number only lines (#45385)

📖 Documentation:

  • Improve doc for --object-store-memory to describe how the default value is set (#45301)
Dashboard

🔨 Fixes:

  • Move Job package uploading to another thread to unblock the event loop. (#45282)

Many thanks to all those who contributed to this release: @maxliuofficial, @simonsays1980, @GeneDer, @dudeperf3ct, @khluu, @justinvyu, @andrewsykim, @Catch-Bull, @zcin, @bveeramani, @rynewang, @angelinalg, @matthewdeng, @jjyao, @kira-lin, @harborn, @hongchaodeng, @peytondmurray, @aslonnie, @timkpaine, @982945902, @maxpumperla, @stephanie-wang, @ruisearch42, @alanwguo, @can-anyscale, @c21, @Atry, @KamenShah, @sven1977, @raulchen

View originalPermalink
How 2.24.0 went
2.23.0

Ray-2.23.0

Added 2
  • Add support for using GPUs with map_groups
  • Add support for using actors with map_groups
Changed 5
  • Refine exception handling from arrow data conversion
  • Examples and tuned_examples learning test for new API stack are now self-executable and support WandB
  • Add runtime env started logs to job driver
  • ray.util.collective support torch.bfloat16
  • Better propagate node death information
Fixed 7
  • Fix Ray databricks UC reader with dynamic Databricks notebook scope token
  • Fix bug where you can't return objects and array from UDF
  • Fix bug where map_groups triggers execution during input validation
  • Fix PB2 scheduler error resulting from trying to sort by Trial objects
  • Log application unhealthy errors at error level instead of warning level
  • Fix result dict spam with duplicate and deprecated keys in top level
  • Fix worker process leaks after job finishes

Ray Libraries

Ray Data

🎉 New Features:

  • Add support for using GPUs with map_groups (#45305)
  • Add support for using actors with map_groups (#45310)

💫 Enhancements:

  • Refine exception handling from arrow data conversion (#45294)

🔨 Fixes:

  • Fix Ray databricks UC reader with dynamic Databricks notebook scope token (#45153)
  • Fix bug where you can't return objects and array from UDF (#45287 )
  • Fix bug where map_groups triggers execution during input validation (#45314)
Ray Tune

🔨 Fixes:

  • [tune] Fix PB2 scheduler error resulting from trying to sort by Trial objects (#45161)
Ray Serve

🔨 Fixes:

  • Log application unhealthy errors at error level instead of warning level (#45211)
RLLib

💫 Enhancements:

  • Examples and tuned_examples learning test for new API stack are now “self-executable” (don’t require a third-party script anymore to run them). + WandB support. (#45023)

🔨 Fixes:

  • Fix result dict “spam” (duplicate, deprecated keys, e.g. “sampler_results” dumped into top level). (#45330)

📖 Documentation:

  • Add example for training with fractional GPUs on new API stack. (#45379)
  • Cleanup examples folder and remove deprecated sub directories. (#45327)
Ray Core

💫 Enhancements:

  • [Logs] Add runtime env started logs to job driver (#45255)
  • ray.util.collective support torch.bfloat16 (#39845)
  • [Core] Better propagate node death information (#45128)

🔨 Fixes:

  • [Core] Fix worker process leaks after job finishes (#44214)

Many thanks to all those who contributed to this release: @hongchaodeng, @khluu, @antoni-jamiolkowski, @ameroyer, @bveeramani, @can-anyscale, @WeichenXu123, @peytondmurray, @jackhumphries, @kevin85421, @jjyao, @robcaulk, @rynewang, @scottsun94, @swang, @GeneDer, @zcin, @ruisearch42, @aslonnie, @angelinalg, @raulchen, @ArthurBook, @sven1977, @wuxibin89

View originalPermalink
How 2.23.0 went
2.22.0

Ray-2.22.0

Added 2
  • Add function to dynamically generate ray_remote_args for Map APIs
  • Allow manually setting resource limits for training jobs
Changed 5
  • Introduce abstract interface for data autoscaling
  • Add debugging info for SplitCoordinator
  • Update RayTrainReportCallback to only save checkpoints on rank 0 for XGBoost and LightGBM
  • Improve log viewer so line numbers do not get selected when copying text
  • Improve log viewer to avoid unnecessary re-rendering which causes text selection to clear
Fixed 4
  • Don't show AllToAllOperator progress bar if the disable flag is set
  • Don't load Arrow PyExtensionType by default
  • Don't raise batch size error if num_gpus=0
  • Fix the cpu percentage metrics for dashboard process

Ray Libraries

Ray Data

🎉 New Features:

  • Add function to dynamically generate ray_remote_args for Map APIs (#45143)
  • Allow manually setting resource limits for training jobs (#45188)

💫 Enhancements:

  • Introduce abstract interface for data autoscaling (#45002)
  • Add debugging info for SplitCoordinator (#45226)

🔨 Fixes:

  • Don’t show AllToAllOperator progress bar if the disable flag is set (#45136)
  • Don't load Arrow PyExtensionType by default (#45084)
  • Don't raise batch size error if num_gpus=0 (#45202)
Ray Train

💫 Enhancements:

  • [XGBoost][LightGBM] Update RayTrainReportCallback to only save checkpoints on rank 0 (#45083)

Ray Core

🔨 Fixes:

  • Fix the cpu percentage metrics for dashboard process (#45124)
Dashboard

💫 Enhancements:

  • Improvements to log viewer so line numbers do not get selected when copying text.
  • Improvements to the log viewer to avoid unnecessary re-rendering which causes text selection to clear.

Many thanks to all those who contributed to this release: @justinvyu, @simonsays1980, @chris-ray-zhang, @kevin85421, @angelinalg, @rynewang, @brycehuang30, @alanwguo, @jjyao, @shaikhismail, @khluu, @can-anyscale, @bveeramani, @jrosti, @WeichenXu123, @MortalHappiness, @raulchen, @scottjlee, @ruisearch42, @aslonnie, @alexeykudinkin

View originalPermalink
How 2.22.0 went
2.21.0

Ray-2.21.0

Added 2
  • Add read_lance API to read Lance Dataset
  • New MetricsLogger API now fully functional on the new API stack, working inside Learner classes and loss functions
Changed 4
  • Allow methods to pass type @serve.batch type hint
  • Allow configuring Serve control loop interval
  • Rename WorkerSet to EnvRunnerGroup, DEFAULT_POLICY_ID to DEFAULT_MODULE_ID, config.rollouts() to config.env_runners()
  • Change behavior of EnvRunnerGroup.foreach_worker methods to mark_healthy=True and healthy_only=True as new defaults
Fixed 11
  • Retry RaySystemError application errors
  • Fix bug with controller failing to recover for autoscaling deployments
  • Fix control+c after serve run doesn't shutdown serve components
  • Fix lightweight update max ongoing requests
  • Fix get_state() and from_state() methods in SingleAgent and MultiAgentEpisodes
  • Fix torch global_norm clipping overflow problem
Removed 1
  • Remove deprecated ray.air.callbacks modules

Ray Libraries

Ray Data

🎉 New features:

  • Add read_lance API to read Lance Dataset (#45106)

🔨 Fixes:

  • Retry RaySystemError application errors (#45079)

📖 Documentation:

  • Fix broken references in data documentation (#44956)
Ray Train

📖 Documentation:

  • Fix broken links in Train documentation (#44953)
Ray Tune

📖 Documentation:

  • Update Hugging Face example to add reference (#42771)

🏗 Architecture refactoring:

  • Remove deprecated ray.air.callbacks modules (#45104)
Ray Serve

💫 Enhancements:

  • Allow methods to pass type @serve.batch type hint (#45004)
  • Allow configuring Serve control loop interval (#45063)

🔨 Fixes:

  • Fix bug with controller failing to recover for autoscaling deployments (#45118)
  • Fix control+c after serve run doesn't shutdown serve components (#45087)
  • Fix lightweight update max ongoing requests (#45006)
RLlib

🎉 New Features:

  • New MetricsLogger API now fully functional on the new API stack (working now also inside Learner classes, i.e. loss functions). (#44995, #45109)

💫 Enhancements:

  • Renamings and cleanups (toward new API stack and more consistent naming schemata): WorkerSet -> EnvRunnerGroup, DEFAULT_POLICY_ID -> DEFAULT_MODULE_ID, config.rollouts() -> config.env_runners(), etc.. (#45022, #44920)
  • Changed behavior of EnvRunnerGroup.foreach_worker… methods to new defaults: mark_healthy=True (used to be False) and healthy_only=True (used to be False). (#44993)
  • Fix get_state()/from_state() methods in SingleAgent- and MultiAgentEpisodes. (#45012)

🔨 Fixes:

📖 Documentation:

  • Example scripts using the MetricsLogger for env rendering and recording w/ WandB: #45073, #45107

Ray Core

🔨 Fixes:

  • Fix ray.init(logging_format) argument is ignored (#45037)
  • Handle unserializable user exception (#44878)
  • Fix dashboard process event loop blocking issues (#45048, #45047)
Dashboard

🔨 Fixes:

  • Fix Nodes page sorting not working correctly.
  • Add back “actors per page” UI control in the actors page.

Many thanks to all those who contributed to this release: @rynewang, @can-anyscale, @scottsun94, @bveeramani, @ceddy4395, @GeneDer, @zcin, @JoshKarpel, @nikitavemuri, @stephanie-wang, @jackhumphries, @matthewdeng, @yash97, @simonsays1980, @peytondmurray, @evalaiyc98, @c21, @alanwguo, @shrekris-anyscale, @kevin85421, @hongchaodeng, @sven1977, @st--, @khluu

View originalPermalink
How 2.21.0 went
2.20.0

Ray-2.20.0

Added 4
  • Track Train Run Info with TrainStateActor
  • Introduce MetricsLogger, a unified API for logging custom metrics and stats in all of RLlib's components
  • Introduce inference-only (slim) mode for RLModules that run inside an EnvRunner
  • Add MultiAgentEpisodeReplayBuffer for new API stack in preparation for multi-agent support
Changed 12
  • Deduplicate repeated schema during ParquetDatasource metadata prefetching
  • Update map_groups implementation to better handle large outputs
  • Add default behavior to false for creating directories on S3 writes
  • Make internal UDF names more descriptive
  • Make name a required argument for AggregateFn
  • Setup XGBoost CommunicatorContext automatically
Fixed 3
  • Fix memory leak in handles for autoscaling deployments when RAY_SERVE_COLLECT_AUTOSCALING_METRICS_ON_HANDLE=1
  • Fix task submission never returning when network partition happens
  • Fix incorrect use of SSH port forward option
Deprecated 1
  • Deprecate prefetch_batches argument of iter_rows and change default value

Ray Libraries

Ray Data

💫 Enhancements:

  • Dedupe repeated schema during ParquetDatasource metadata prefetching (#44750)
  • Update map_groups implementation to better handle large outputs (#44862)
  • Deprecate prefetch_batches arg of iter_rows and change default value (#44982)
  • Adding in default behavior to false for creating dirs on s3 writes (#44972)
  • Make internal UDF names more descriptive (#44985)
  • Make name a required argument for AggregateFn (#44880)

📖 Documentation:

  • Add key concepts to and revise "Data Internals" page (#44751)
Ray Train

💫 Enhancements:

  • Setup XGBoost CommunicatorContext automatically (#44883)
  • Track Train Run Info with TrainStateActor (#44585)

📖 Documentation:

  • Add documentation for accelerator_type (#44882)
  • Update Ray Train example titles (#44369)
Ray Tune

💫 Enhancements:

  • Remove trial table when running Ray Train in a Jupyter notebook (#44858)
  • Clean up temporary checkpoint directories for class Trainables (ex: RLlib) (#44366)

📖 Documentation:

  • Fix minor doc format issues (#44865)
  • Remove outdated ScalingConfig references (#44918)
Ray Serve

💫 Enhancements:

  • Handle push metric interval is now configurable with environment variable RAY_SERVE_HANDLE_METRIC_PUSH_INTERVAL_S (#32920)
  • Improve performance of developer API serve.get_app_handle (#44812)

🔨 Fixes:

  • Fix memory leak in handles for autoscaling deployments (the leak happens when
  • RAY_SERVE_COLLECT_AUTOSCALING_METRICS_ON_HANDLE=1) (#44877)
RLlib

🎉 New Features:

  • Introduce MetricsLogger, a unified API for users of RLlib to log custom metrics and stats in all of RLlib’s components (Algorithm, EnvRunners, and Learners). Rolled out for new API stack for Algorithm (training_step) and EnvRunners (custom callbacks). Learner (custom loss functions) support in progress. #44888, #44442
  • Introduce “inference-only” (slim) mode for RLModules that run inside an EnvRunner (and thus don’t require value-functions or target networks): #44797

💫 Enhancements:

  • MultiAgentEpisodeReplayBuffer for new API stack (preparation for multi-agent support of SAC and DQN): #44450
  • AlgorithmConfig cleanup and renaming of properties and methods for better consistency/transparency: #44896

🔨 Fixes:

Ray Core and Ray Clusters

💫 Enhancements:

  • Report GCS internal pubsub buffer metrics and cap message size (#44749)

🔨 Fixes:

  • Fix task submission never return when network partition happens (#44692)
  • Fix incorrect use of ssh port forward option. (#44973)
  • Make sure dashboard will exit if grpc server fails (#44928)
  • Make sure dashboard agent will exit if grpc server fails (#44899)

Thanks @can-anyscale, @hongchaodeng, @zcin, @marwan116, @khluu, @bewestphal, @scottjlee, @andrewsykim, @anyscalesam, @MortalHappiness, @justinvyu, @JoshKarpel, @woshiyyya, @rynewang, @Abirdcfly, @omatthew98, @sven1977, @marcelocarmona, @rueian, @mattip, @angelinalg, @aslonnie, @matthewdeng, @abizjakpro, @simonsays1980, @jjyao, @terraflops1048576, @hongpeng-guo, @stephanie-wang, @bw-matthew, @bveeramani, @ruisearch42, @kevin85421, @Tongruizhe

Many thanks to all those who contributed to this release!

View originalPermalink
How 2.20.0 went
2.12.0

Ray-2.12.0

Added 4
  • Store Ray Data logs in special subdirectory
  • Add in `local_read` option to `from_torch`
  • Support of images and video logging in WandB
  • Example script to pre-train an `RLModule` in single-agent fashion, then bring checkpoint into multi-agent setup and continue training
Changed 3
  • Remove spammy log for "new output engine"
  • Better support and separation-of-concerns for `model_config_dict` in new API stack
  • More example scripts got translated from the old- to the new API stack including Curriculum learning and custom-gym-env
Fixed 4
  • Fix the config to disable progress bar
  • Disable gathering the full state dict in `RayFSDPStrategy` for `lightning>2.1`
  • Fix getting attributes on stdout during Serve logging redirect
  • Fix GetAllJobInfo `is_running_tasks` is not returning the correct value when driver starts ray

Ray Libraries

Ray Data

🎉 New Features:

  • Store Ray Data logs in special subdirectory (#44743)

💫 Enhancements:

  • Add in local_read option to from_torch (#44752)

🔨 Fixes:

  • Fix the config to disable progress bar (#44342)

📖 Documentation:

  • Clarify deprecated Datasource docstrings (#44790)
Ray Train

🔨 Fixes:

  • Disable gathering the full state dict in RayFSDPStrategy for lightning>2.1 (#44569)
Ray Tune

💫 Enhancements:

  • Remove spammy log for "new output engine" (#44824)
  • Enable isort (#44693)
Ray Serve

🔨 Fixes:

  • [Serve] fix getting attributes on stdout during Serve logging redirect (#44787)
RLlib

🎉 New Features:

  • Support of images and video logging in WandB (env rendering example script for the new API stack coming up). (#43356)

💫 Enhancements:

  • Better support and separation-of-concerns for model_config_dict in new API stack. (#44263)
  • Added example script to pre-train an RLModule in single-agent fashion, then bring checkpoint into multi-agent setup and continue training. (#44674)
  • More examples scripts got translated from the old- to the new API stack: Curriculum learning, custom-gym-env, etc..: (#44706, #44707, #44735, #44841)
Ray Core and Ray Clusters

🔨 Fixes:

  • Fix GetAllJobInfo is_running_tasks is not returning the correct value when driver starts ray (#44459)

Thanks

Many thanks to all those who contributed to this release! @can-anyscale, @hongpeng-guo, @sven1977, @zcin, @shrekris-anyscale, @liuxsh9, @jackhumphries, @GeneDer, @woshiyyya, @simonsays1980, @omatthew98, @andrewsykim, @n30111, @architkulkarni, @bveeramani, @aslonnie, @alexeykudinkin, @WeichenXu123, @rynewang, @matthewdeng, @angelinalg, @c21

View originalPermalink
How 2.12.0 went
2.11.0

Ray-2.11.0

Added 3
  • Support reading Avro files with ray.data.read_avro
  • Add experimental support for AWS Trainium (Neuron)
  • Add experimental support for Intel HPU
Changed 4
  • Pin ipywidgets==7.7.2 to enable Data progress bars in VSCode Web
  • Change log level for ignored exceptions
  • Change Parquet encoding ratio lower bound from 2 to 1
  • Add support for new style lightning import
Fixed 9
  • Fix throughput time calculations for metrics
  • Fix nested ragged numpy.ndarray
  • Fix Ray debugger incompatibility caused by trimmed error stack trace
  • Fix ScalingConfig(accelerator_type) to request an appropriate resource amount
  • Fix maximum recursion issue when serializing exceptions
  • Remove base config deepcopy when initializing the trainer actor
Removed 3
  • Remove deprecated BatchPredictor
  • Remove scikit-optimize search algorithm
  • Remove batch_queue_cls parameter from the @serve.batch decorator
Deprecated 1
  • Log a deprecation warning for local_dir and related environment variables

Release Highlights

  • [data] Support reading Avro files with ray.data.read_avro
  • [train] Added experimental support for AWS Trainium (Neuron) and Intel HPU.

Ray Libraries

Ray Data

🎉 New Features:

  • Support reading Avro files with ray.data.read_avro (#43663)

💫 Enhancements:

  • Pin ipywidgets==7.7.2 to enable Data progress bars in VSCode Web (#44398)
  • Change log level for ignored exceptions (#44408)

🔨 Fixes:

  • Change Parquet encoding ratio lower bound from 2 to 1 (#44470)
  • Fix throughput time calculations for metrics (#44138)
  • Fix nested ragged numpy.ndarray (#44236)
  • Fix Ray debugger incompatibility caused by trimmed error stack trace (#44496)

📖 Documentation:

  • Update "Data Loading and Preprocessing" doc (#44165)
  • Move imports into TFPRedictor in batch inference example (#44434)
Ray Train

🎉 New Features:

  • Add experimental support for AWS Trainium (Neuron) (#39130)
  • Add experimental support for Intel HPU (#43343)

💫 Enhancements:

  • Log a deprecation warning for local_dir and related environment variables (#44029)
  • Enforce xgboost>=1.7 for XGBoostTrainer usage (#44269)

🔨 Fixes:

  • Fix ScalingConfig(accelerator_type) to request an appropriate resource amount (#44225)
  • Fix maximum recursion issue when serializing exceptions (#43952)
  • Remove base config deepcopy when initializing the trainer actor (#44611)

🏗 Architecture refactoring:

  • Remove deprecated BatchPredictor (#43934)
Ray Tune

💫 Enhancements:

  • Add support for new style lightning import (#44339)
  • Log a deprecation warning for local_dir and related environment variables (#44029)

🏗 Architecture refactoring:

  • Remove scikit-optimize search algorithm (#43969)
Ray Serve

🔨 Fixes:

  • Dynamically-created applications will no longer be deleted when a config is PUT via the REST API (#44476).
  • Fix _to_object_ref memory leak (#43763)
  • Log warning to reconfigure max_ongoing_requests if max_batch_size is less than max_ongoing_requests (#43840)
  • Deployment fails to start with ModuleNotFoundError in Ray 3.10 (#44329)
    • This was fixed by reverting the original core changes on the sys.path behavior. Revert "[core] If there's working_dir, don't set _py_driver_sys_path." (#44435)
  • The batch_queue_cls parameter is removed from the @serve.batch decorator (#43935)
RLlib

🎉 New Features:

  • New API stack: DQN Rainbow is now available for single-agent (#43196, #43198, #43199)
  • PrioritizedEpisodeReplayBuffer is available for off-policy learning using the EnvRunner API (SingleAgentEnvRunner) and supports random n-step sampling (#42832, #43258, #43458, #43496, #44262)

💫 Enhancements:

  • Restructured examples/ folder; started moving example scripts to the new API stack (#44559, #44067, #44603)
  • Evaluation do-over: Deprecate enable_async_evaluation option (in favor of existing evaluation_parallel_to_training setting). (#43787)
  • Add: module_for API to MultiAgentEpisode (analogous to policy_for API of the old Episode classes). (#44241)
  • All rllib_contrib old stack algorithms have been removed from rllib/algorithms (#43656)

🔨 Fixes:

📖 Documentation:

Ray Core and Ray Clusters

🎉 New Features:

  • Added Ray check-open-ports CLI for checking potential open ports to the public (#44488)

💫 Enhancements:

  • Support nodes sharing the same spilling directory without conflicts. (#44487)
  • Create two subclasses of RayActorError to distinguish between actor died (ActorDiedError) and actor temporarily unavailable (ActorUnavailableError) cases.

🔨 Fixes:

  • Fixed the ModuleNotFound issued introduced in 2.10 (#44435)
  • Fixed an issue where agent process is using too much CPU (#44348)
  • Fixed race condition in multi-threaded actor creation (#44232)
  • Fixed several streaming generator bugs (#44079, #44257, #44197)
  • Fixed an issue where user exception raised from tasks cannot be subclassed (#44379)
Dashboard

💫 Enhancements:

  • Add serve controller metrics to serve system dashboard page (#43797)
  • Add Serve Application rows to Serve top-level deployments details page (#43506)
  • [Actor table page enhancements] Include "NodeId", "CPU", "Memory", "GPU", "GRAM" columns in the actor table page. Add sort functionality to resource utilization columns. Enable searching table by "Class" and "Repr". (#42588) (#42633) (#42788)

🔨 Fixes:

  • Fix default sorting of nodes in Cluster table page to first be by "Alive" nodes, then head nodes, then alphabetical by node ID. (#42929)
  • Fix bug where the Serve Deployment detail page fails to load if the deployment is in "Starting" state (#43279)
Docs

💫 Enhancements:

  • Landing page refreshes its look and feel. (#44251)

Thanks

Many thanks to all those who contributed to this release!

@aslonnie, @brycehuang30, @MortalHappiness, @astron8t-voyagerx, @edoakes, @sven1977, @anyscalesam, @scottjlee, @hongchaodeng, @slfan1989, @hebiao064, @fishbone, @zcin, @GeneDer, @shrekris-anyscale, @kira-lin, @chappidim, @raulchen, @c21, @WeichenXu123, @marian-code, @bveeramani, @can-anyscale, @mjd3, @justinvyu, @jackhumphries, @Bye-legumes, @ashione, @alanwguo, @Dreamsorcerer, @KamenShah, @jjyao, @omatthew98, @autolisis, @Superskyyy, @stephanie-wang, @simonsays1980, @davidxia, @angelinalg, @architkulkarni, @chris-ray-zhang, @kevin85421, @rynewang, @peytondmurray, @zhangyilun, @khluu, @matthewdeng, @ruisearch42, @pcmoritz, @mattip, @jerome-habana, @alexeykudinkin

View originalPermalink
How 2.11.0 went
2.10.0

Ray-2.10.0

Added 12
  • Ray Data becomes generally available with stability improvements in streaming execution, reading and writing data, better tasks concurrency control, and debuggability improvement with dashboard, logging and metrics visualization
  • New API Stack officially announced as alpha for PPO and SAC in RLlib
  • Added default autoscaling policy set via num_replicas="auto" in Serve
  • Added support for active load shedding via max_queued_requests in Serve
  • Added replica queue length caching to the DeploymentHandle scheduler in Serve
  • Autoscaler v2 is in alpha for Kuberay with improved observability and stability
Changed 7
  • Renamed max_concurrent_queries to max_ongoing_requests in Serve
  • Renamed target_num_ongoing_requests_per_replica to target_ongoing_requests in Serve
  • Renamed downscale_smoothing_factor to downscaling_factor in Serve
  • Renamed upscale_smoothing_factor to upscaling_factor in Serve
  • max_ongoing_requests (max_concurrent_queries) is now strictly enforced in Serve
  • Revamped XGBoostTrainer and LightGBMTrainer to no longer depend on xgboost_ray and lightgbm_ray
  • Refactored local staging directory to remove the need for local_dir and RAY_AIR_LOCAL_CACHE_DIR in Train/Tune
Fixed 1
  • Fix deadlocks caused by Dataset.streaming_split for job hanging

Release Highlights

Ray 2.10 release brings important stability improvements and enhancements to Ray Data, with Ray Data becoming generally available (GA).

  • [Data] Ray Data becomes generally available with stability improvements in streaming execution, reading and writing data, better tasks concurrency control, and debuggability improvement with dashboard, logging and metrics visualization.
  • [RLlib] “New API Stack” officially announced as alpha for PPO and SAC.
  • [Serve] Added a default autoscaling policy set via num_replicas=”auto” (#42613).
  • [Serve] Added support for active load shedding via max_queued_requests (#42950).
  • [Serve] Added replica queue length caching to the DeploymentHandle scheduler (#42943).
    • This should improve overhead in the Serve proxy and handles.
    • max_ongoing_requests (max_concurrent_queries) is also now strictly enforced (#42947).
    • If you see any issues, please report them on GitHub and you can disable this behavior by setting: RAY_SERVE_ENABLE_QUEUE_LENGTH_CACHE=0.
  • [Serve] Renamed the following parameters. Each of the old names will be supported for another release before removal.
    • max_concurrent_queries -> max_ongoing_requests
    • target_num_ongoing_requests_per_replica -> target_ongoing_requests
    • downscale_smoothing_factor -> downscaling_factor
    • upscale_smoothing_factor -> upscaling_factor
  • [Core] Autoscaler v2 is in alpha and can be tried out with Kuberay. It has improved observability and stability compared to v1.
  • [Train] Added support for accelerator types via ScalingConfig(accelerator_type).
  • [Train] Revamped the XGBoostTrainer and LightGBMTrainer to no longer depend on xgboost_ray and lightgbm_ray. A new, more flexible API will be released in a future release.
  • [Train/Tune] Refactored local staging directory to remove the need for local_dir and RAY_AIR_LOCAL_CACHE_DIR.

Ray Libraries

Ray Data

🎉 New Features:

  • Streaming execution stability improvement to avoid memory issue, including per-operator resource reservation, streaming generator output buffer management, and better runtime resource estimation (#43026, #43171, #43298, #43299, #42930, #42504)
  • Metadata read stability improvement to avoid AWS transient error, including retry on application-level exception, spread tasks across multiple nodes, and configure retry interval (#42044, #43216, #42922, #42759).
  • Allow tasks concurrency control for read, map, and write APIs (#42849, #43113, #43177, #42637)
  • Data dashboard and statistics improvement with more runtime metrics for each components (#43790, #43628, #43241, #43477, #43110, #43112)
  • Allow to specify application-level error to retry for actor task (#42492)
  • Add num_rows_per_file parameter to file-based writes (#42694)
  • Add DataIterator.materialize (#43210)
  • Skip schema call in DataIterator.to_tf if tf.TypeSpec is provided (#42917)
  • Add option to append for Dataset.write_bigquery (#42584)
  • Deprecate legacy components and classes (#43575, #43178, #43347, #43349, #43342, #43341, #42936, #43144, #43022, #43023)

💫 Enhancements:

  • Restructure stdout logging for better readability (#43360)
  • Add a more performant way to read large TFRecord datasets (#42277)
  • Modify ImageDatasource to use Image.BILINEAR as the default image resampling filter (#43484)
  • Reduce internal stack trace output by default (#43251)
  • Perform incremental writes to Parquet files (#43563)
  • Warn on excessive driver memory usage during shuffle ops (#42574)
  • Distributed reads for ray.data.from_huggingface (#42599)
  • Remove Stage class and related usages (#42685)
  • Improve stability of reading JSON files to avoid PyArrow errors (#42558, #42357)

🔨 Fixes:

  • Turn off actor locality by default (#44124)
  • Normalize block types before internal multi-block operations (#43764)
  • Fix memory metrics for OutputSplitter (#43740)
  • Fix race condition issue in OpBufferQueue (#43015)
  • Fix early stop for multiple Limit operators. (#42958)
  • Fix deadlocks caused by Dataset.streaming_split for job hanging (#42601)

📖 Documentation:

  • Revamp Ray Data documentation for GA (#44006, #44007, #44008, #44098, #44168, #44093, #44105)
Ray Train

🎉 New Features:

  • Add support for accelerator types via ScalingConfig(accelerator_type) for improved worker scheduling (#43090)

💫 Enhancements:

  • Add a backend-specific context manager for train_func for setup/teardown logic (#43209)
  • Remove DEFAULT_NCCL_SOCKET_IFNAME to simplify network configuration (#42808)
  • Colocate Trainer with rank 0 Worker for to improve scheduling behavior (#43115)

🔨 Fixes:

  • Enable scheduling workers with memory resource requirements (#42999)
  • Make path behavior OS-agnostic by using Path.as_posix over os.path.join (#42037)
  • [Lightning] Fix resuming from checkpoint when using RayFSDPStrategy (#43594)
  • [Lightning] Fix deadlock in RayTrainReportCallback (#42751)
  • [Transformers] Fix checkpoint reporting behavior when get_latest_checkpoint returns None (#42953)

📖 Documentation:

  • Enhance docstring and user guides for train_loop_config (#43691)
  • Clarify in ray.train.report docstring that it is not a barrier (#42422)
  • Improve documentation for prepare_data_loader shuffle behavior and set_epoch (#41807)

🏗 Architecture refactoring:

  • Simplify XGBoost and LightGBM Trainer integrations. Implemented XGBoostTrainer and LightGBMTrainer as DataParallelTrainer. Removed dependency on xgboost_ray and lightgbm_ray. (#42111, #42767, #43244, #43424)
  • Refactor local staging directory to remove the need for local_dir and RAY_AIR_LOCAL_CACHE_DIR. Add isolation between driver and distributed worker artifacts so that large files written by workers are not uploaded implicitly. Results are now only written to storage_path, rather than having another copy in the user’s home directory (~/ray_results). (#43369, #43403, #43689)
  • Split overloaded ray.train.torch.get_device into another get_devices API for multi-GPU worker setup (#42314)
  • Refactor restoration configuration to be centered around storage_path (#42853, #43179)
  • Deprecations related to SyncConfig (#42909)
  • Remove deprecated preprocessor argument from Trainers (#43146, #43234)
  • Hard-deprecate MosaicTrainer and remove SklearnTrainer (#42814)
Ray Tune

💫 Enhancements:

  • Increase the minimum number of allowed pending trials for faster auto-scaleup (#43455)
  • Add support to TBXLogger for logging images (#37822)
  • Improve validation of Experiment(config) to handle RLlib AlgorithmConfig (#42816, #42116)

🔨 Fixes:

  • Fix reuse_actors error on actor cleanup for function trainables (#42951)
  • Make path behavior OS-agnostic by using Path.as_posix over os.path.join (#42037)

📖 Documentation:

  • Minor documentation fixes (#42118, #41982)

🏗 Architecture refactoring:

  • Refactor local staging directory to remove the need for local_dir and RAY_AIR_LOCAL_CACHE_DIR. Add isolation between driver and distributed worker artifacts so that large files written by workers are not uploaded implicitly. Results are now only written to storage_path, rather than having another copy in the user’s home directory (~/ray_results). (#43369, #43403, #43689)
  • Deprecations related to SyncConfig and chdir_to_trial_dir (#42909)
  • Refactor restoration configuration to be centered around storage_path (#42853, #43179)
  • Add back NevergradSearch (#42305)
  • Clean up invalid checkpoint_dir and reporter deprecation notices (#42698)
Ray Serve

🎉 New Features:

  • Added support for active load shedding via max_queued_requests (#42950).
  • Added a default autoscaling policy set via num_replicas=”auto” (#42613).

🏗 API Changes:

  • Renamed the following parameters. Each of the old names will be supported for another release before removal.
    • max_concurrent_queries to max_ongoing_requests
    • target_num_ongoing_requests_per_replica to target_ongoing_requests
    • downscale_smoothing_factor to downscaling_factor
    • upscale_smoothing_factor to upscaling_factor
  • WARNING: the following default values will change in Ray 2.11:
    • Default for max_ongoing_requests will change from 100 to 5.
    • Default for target_ongoing_requests will change from 1 to 2.

💫 Enhancements:

  • Add RAY_SERVE_LOG_ENCODING env to set the global logging behavior for Serve (#42781).
  • Config Serve's gRPC proxy to allow large payload (#43114).
  • Add blocking flag to serve.run() (#43227).
  • Add actor id and worker id to Serve structured logs (#43725).
  • Added replica queue length caching to the DeploymentHandle scheduler (#42943).
    • This should improve overhead in the Serve proxy and handles.
    • max_ongoing_requests (max_concurrent_queries) is also now strictly enforced (#42947).
    • If you see any issues, please report them on GitHub and you can disable this behavior by setting: RAY_SERVE_ENABLE_QUEUE_LENGTH_CACHE=0.
  • Autoscaling metrics (tracking ongoing and queued metrics) are now collected at deployment handles by default instead of at the Serve replicas (#42578).
    • This means you can now set max_ongoing_requests=1 for autoscaling deployments and still upscale properly, because requests queued at handles are properly taken into account for autoscaling.
    • You should expect deployments to upscale more aggressively during bursty traffic, because requests will likely queue up at handles during bursts of traffic.
    • If you see any issues, please report them on GitHub and you can switch back to the old method of collecting metrics by setting the environment variable RAY_SERVE_COLLECT_AUTOSCALING_METRICS_ON_HANDLE=0
  • Improved the downscaling behavior of smoothing_factor for low numbers of replicas (#42612).
  • Various logging improvements (#43707, #43708, #43629, #43557).
  • During in-place upgrades or when replicas become unhealthy, Serve will no longer wait for old replicas to gracefully terminate before starting new ones (#43187). New replicas will be eagerly started to satisfy the target number of healthy replicas.
    • This new behavior is on by default and can be turned off by setting RAY_SERVE_EAGERLY_START_REPLACEMENT_REPLICAS=0

🔨 Fixes:

  • Fix deployment route prefix override by default route prefix from serve run cli (#43805).
  • Fixed a bug causing batch methods to hang upon cancellation (#42593).
  • Unpinned FastAPI dependency version (#42711).
  • Delay proxy marking itself as healthy until it has routes from the controller (#43076).
  • Fixed an issue where multiplexed deployments could go into infinite backoff (#43965).
  • Silence noisy KeyError on disconnects (#43713).
  • Fixed the prometheus counter metrics emitted as gauge bug (#43795, #43901).
    • All the serve counter metrics are emitted as counters with _total suffix. The old gauge metrics are still emitted for compatibility.

📖 Documentation:

  • Update serve logging config docs (#43483).
  • Added documentation for max_replicas_per_node (#42743).
RLlib

🎉 New Features:

💫 Enhancements:

  • Old API Stack cleanups:
    • Move SampleBatch column names (e.g. SampleBatch.OBS) into new class (Columns). (#43665)
    • Remove old exec_plan API code. (#41585)
    • Introduce OldAPIStack decorator (#43657)
    • RLModule API: Add functionality to define kernel and bias initializers via config. (#42137)
  • Learner/LearnerGroup APIs:
    • Replace Learner/LearnerGroup specific config classes (e.g. LearnerHyperparameters) with AlgorithmConfig. (#41296)
    • Learner/LearnerGroup: Allow updating from Episodes. (#41235)
  • In preparation of DQN on the new API stack: (#43199, #43196)

🔨 Fixes:

  • New API Stack bug fixes: Fix policy_to_train logic (#41529), fix multi-APU for PPO on the new API stack. (#44001), Issue 40347: (#42090)
  • Other fixes: MultiAgentEnv would NOT call env.close() on a failed sub-env (#43664), Issue 42152 (#43317), issue 42396: (#43316), issue 41518 (#42011), issue 42385 (#43313)

📖 Documentation:

  • New API Stack examples: Self-play and league-based self-play (#43276), MeanStdFilter (for both single-agent and multi-agent) (#43274), Prev-actions/prev-rewards for multi-agent (#43491)
  • Other docs fixes and enhancements: (#43438, #41472, #42117, #43458)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Autoscaler v2 is in alpha and can be tried out with Kuberay.
  • Introduced subreaper to prevent leaks of sub-processes created by user code. (#42992)

💫 Enhancements:

  • Ray state api get_task() now accepts ObjectRef (#43507)
  • Add an option to disable task tracing for task/actor (#42431)
  • Improved object transfer throughput. (#43434)
  • Ray client now compares the Ray and Python version for compatibility with the remote Ray cluster. (#42760)

🔨 Fixes:

  • Fixed several bugs for streaming generator (#43775, #43772, #43413)
  • Fixed Ray counter metrics emitted as gauge bug (#43795)
  • Fixed a bug where empty resource task doesn’t work with placement group (#43448)
  • Fixed a bug where CPU resource is not released for a blocked worker inside placement group (#43270)
  • Fixed GCS crashes when PG commit phase failed due to node failure (#43405)
  • Fixed a bug where Ray memory monitor prematurely kill tasks (#43071)
  • Fixed placement group resource leak (#42942)
  • Upgraded cloudpickle to 3.0 which fixes the incompatibility with dataclasses (#42730)

📖 Documentation:

  • Updated the doc for Ray accelerators support (#41849)
Ray Clusters

💫 Enhancements:

  • [spark] Add heap_memory param for setup_ray_cluster API, and change default value of per ray worker node config, and change default value of ray head node config for global Ray cluster (#42604)
  • [spark] Add global mode for ray on spark cluster (#41153)

🔨 Fixes:

  • [VSphere] Only deploy ovf to first host of cluster (#42258)

Thanks

Many thanks to all those who contributed to this release!

@ronyw7, @xsqian, @justinvyu, @matthewdeng, @sven1977, @thomasdesr, @veryhannibal, @klebster2, @can-anyscale, @simran-2797, @stephanie-wang, @simonsays1980, @kouroshHakha, @Zandew, @akshay-anyscale, @matschaffer-roblox, @WeichenXu123, @matthew29tang, @vitsai, @Hank0626, @anmyachev, @kira-lin, @ericl, @zcin, @sihanwang41, @peytondmurray, @raulchen, @aslonnie, @ruisearch42, @vszal, @pcmoritz, @rickyyx, @chrislevn, @brycehuang30, @alexeykudinkin, @vonsago, @shrekris-anyscale, @andrewsykim, @c21, @mattip, @hongchaodeng, @dabauxi, @fishbone, @scottjlee, @justina777, @surenyufuz, @robertnishihara, @nikitavemuri, @Yard1, @huchen2021, @shomilj, @architkulkarni, @liuxsh9, @Jocn2020, @liuyang-my, @rkooo567, @alanwguo, @KPostOffice, @woshiyyya, @n30111, @edoakes, @y-abe, @martinbomio, @jiwq, @arunppsg, @ArturNiederfahrenhorst, @kevin85421, @khluu, @JingChen23, @masariello, @angelinalg, @jjyao, @omatthew98, @jonathan-anyscale, @sjoshi6, @gaborgsomogyi, @rynewang, @ratnopamc, @chris-ray-zhang, @ijrsvt, @scottsun94, @raychen911, @franklsf95, @GeneDer, @madhuri-rai07, @scv119, @bveeramani, @anyscalesam, @zen-xu, @npuichigo

View originalPermalink
How 2.10.0 went
2.9.3

Ray-2.9.3

Changed 1
  • Bump up task failure logs to warnings to make sure failures could be troubleshooted
Fixed 5
  • Fix protobuf breaking change by adding a compat layer
  • Fix placement group leaks
  • Skip schema call in to_tf if tf.TypeSpec is provided
  • Skip recording memory spilled stats when get_memory_info_reply is failed
  • Fix DeploymentStateManager qualifying replicas as running prematurely

This patch release contains fixes for Ray Core, Ray Data, and Ray Serve.

Ray Core

🔨 Fixes:

  • Fix protobuf breaking change by adding a compat layer. (#43172)
  • Bump up task failure logs to warnings to make sure failures could be troubleshooted (#43147)
  • Fix placement group leaks (#42942)

Ray Data

🔨 Fixes:

  • Skip schema call in to_tf if tf.TypeSpec is provided (#42917)
  • Skip recording memory spilled stats when get_memory_info_reply is failed (#42824)

Ray Serve

🔨 Fixes:

  • Fixing DeploymentStateManager qualifying replicas as running prematurely (#43075)

Thanks

Many thanks to all those who contributed to this release!

@rynewang, @GeneDer, @alexeykudinkin, @edoakes, @c21, @rkooo567

View originalPermalink
How 2.9.3 went
2.9.2

Ray-2.9.2

Changed 1
  • Improve stability and accuracy for Data+Train benchmark
Fixed 9
  • Fix out of disk test on release branch
  • Fix failing huggingface test
  • Fix deadlocks caused by streaming_split
  • Fix locality config not being respected in DataConfig
  • Add retry for _sample_fragment during ParquetDatasource._estimate_files_encoding_ratio()
  • Skip recording memory spilled stats when get_memory_info_reply is failed

This patch release contains fixes for Ray Core, Ray Data, and Ray Serve.

Ray Core

🔨 Fixes:

Ray Data

🔨 Fixes:

Ray Serve

🔨 Fixes:

Thanks

Many thanks to all those who contributed to this release!

@c21, @raulchen, @can-anyscale, @edoakes, @peytondmurray, @scottjlee, @aslonnie, @architkulkarni, @GeneDer, @Zandew, @sihanwang41

View originalPermalink
How 2.9.2 went
2.9.1

Ray-2.9.1

Added 2
  • Add debugpy as the ray debugger
  • Add exponential backoff for queue_len_response_deadline_s
Changed 1
  • Enable setting queue length response deadline via environment variable
Fixed 5
  • Fix task events profile events per task leak
  • Make sure redis sync context and async context connect to the same redis instance
  • Retry write if error during file clean up
  • Improve handling the websocket server disconnect scenario
  • Fix pydantic config documentation

This patch release contains fixes for Ray Core, Ray Data, and Ray Serve.

Ray Core

🔨 Fixes:

  • Adding debupgy as the ray debugger (#42311)
  • Fix task events profile events per task leak (#42248)
  • Make sure redis sync context and async context connect to the same redis instance (#42040)

Ray Data

🔨 Fixes:

  • [Data] Retry write if error during file clean up (#42326)

Ray Serve

🔨 Fixes:

  • Improve handling the websocket server disconnect scenario (#42130)
  • Fix pydantic config documentation (#42216)
  • Address issues under high network delays:
    • Enable setting queue length response deadline via environment variable (#42001)
    • Add exponential backoff for queue_len_response_deadline_s (#42041)
View originalPermalink
How 2.9.1 went
2.9.0

Ray-2.9.0

Added 14
  • Add Ray Dashboard page for Ray Data to monitor real-time execution metrics
  • Make streaming generator officially a public API for writing streaming applications on top of Ray via Python generator API
  • Add experimental support for Intel GPU accelerators
  • Add experimental support for Intel Gaudi Accelerators
  • Add experimental support for Huawei Ascend NPU accelerators
  • Add concurrency argument to Ray Data map-like APIs to replace ComputeStrategy
Changed 3
  • Upgrade Ray Train support for spot node preemption to handle preemption node failures differently than application errors
  • Make Ray compatible with Pydantic versions <2.0.0 and >=2.5.0
  • Support PyArrow 14.0.1 in Ray Data
Removed 3
  • Remove Legacy Trainers from Ray Train
  • Delete legacy TuneClient and TuneServer APIs from Ray Tune
  • Delete legacy Searchers from Ray Tune
Security 1
  • Fix security vulnerabilities in Ray Dashboard (CVE-2023-6019, CVE-2023-6020, CVE-2023-6021, CVE-2023-48022, CVE-2023-48023)

Release Highlights

  • This release contains fixes for the Ray Dashboard. Additional context can be found here: https://www.anyscale.com/blog/update-on-ray-cves-cve-2023-6019-cve-2023-6020-cve-2023-6021-cve-2023-48022-cve-2023-48023 
  • 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 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 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:

💫 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 delete temporary directory (#41033)

🔨 Fixes:

  • Update config dataclass repr to check against None (#40851)
  • Add a barrier in Lightning RayTrainReportCallback to ensure synchronous reporting. (#40875)
  • Restore Tuner and Results properly from moved storage path (#40647)

📖 Documentation:

  • Improve torch, lightning quickstarts and migration guides + fix torch restoration example (#41843)
  • Clarify error message when trying to use local storage for multi-node distributed training and checkpointing (#41844)
  • Copy edits and adding links to docstrings (#39617)
  • Fix the missing ray module import in PyTorch Guide (#41300)
  • Fix typo in lightning_mnist_example.ipynb (#40577)
  • Fix typo in deepspeed.rst (#40320)

🏗 Architecture refactoring:

  • Remove Legacy Trainers (#41276)
Ray Tune

🎉 New Features:

  • Support reading Result from cloud storage (#40622)

💫 Enhancements:

  • Skip incrementing failure counter on preemption node died failures (#41285)

🔨 Fixes:

  • Restore Tuner and Results properly from moved storage path (#40647)

📖 Documentation:

  • Remove low value Tune examples and references to them  (#41348)
  • Clarify when to use MLflowLoggerCallback and setup_mlflow (#37854)

🏗 Architecture refactoring:

  • Delete legacy TuneClient/TuneServer APIs (#41469)
  • Delete legacy Searchers (#41414)
  • Delete legacy persistence utilities (air.remote_storage, etc.) (#40207)
Ray Serve

🎉 New Features:

  • Introduce logging config so that users can set different logging parameters for different applications & deployments.
  • Added gRPC context object into gRPC deployments for user to set custom code and details back to the client.
  • Introduce a runtime environment feature that allows running applications in different containers with different images. This feature is experimental and a new guide can be found in the Serve docs.

💫 Enhancements:

  • Explicitly handle gRPC proxy task cancellation when the client dropped a request to not waste compute resources. 
  • Enable async __del__ in the deployment to execute custom clean up steps.
  • Make Ray Serve compatible with Pydantic versions <2.0.0 and >=2.5.0.

🔨 Fixes:

  • Fixed gRPC proxy streaming request latency metrics to include the entire lifecycle of the request, including the time to consume the generator.
  • Fixed gRPC proxy timeout request status from CANCELLED to DEADLINE_EXCEEDED.
  • Fixed previously Serve shutdown spamming log files with logs for each event loop to only log once on shutdown.
  • Fixed issue during batch requests when a request is dropped, the batch loop will be killed and not processed any future requests.
  • Updating replica log filenames to only include POSIX-compliant characters (removed the “#” character).
  • Replicas will now be gracefully shut down after being marked unhealthy due to health check failures instead of being force killed.
    • This behavior can be toggled using the environment variable RAY_SERVE_FORCE_STOP_UNHEALTHY_REPLICAS=1, but this is planned to be removed in the near future. If you rely on this behavior, please file an issue on github.
RLlib

🎉 New Features:

  • New API stack (in progress):
    • New MultiAgentEpisode class introduced. Basis for upcoming multi-agent EnvRunner, which will replace RolloutWorker APIs. (#40263, #40799)
    • PPO runs with new SingleAgentEnvRunner (w/o Policy/RolloutWorker APIs). CI learning tests added. (#39732, #41074, #41075)
    • By default: PPO reverted to use old API stack by default, for now. Pending feature-completion of new API stack (incl. multi-agent, RNN support, new EnvRunners, etc..). (#40706)
  • Old API stack:
    • APPO/IMPALA: Enable using 2 separate optimizers for policy and vs (and 2 learning rates) on the old API stack. (#40927)
    • Added on_workers_recreated callback to Algorithm, which is triggered after workers have failed and been restarted. (#40354)

💫 Enhancements:

  • Old API stack and rllib_contrib cleanups: #40939, #40744, #40789, #40444, #37271

🔨 Fixes:

  • Restoring from a checkpoint from an older wheel (where AlgorithmConfig.rl_module_spec was NOT a “@property” yet) breaks when trying to load from this checkpoint. (#41157)
  • SampleBatch slicing crashes when using tf + SEQ_LENS + zero-padding. (#40905)
  • Other fixes: #39978, #40788, #41168, #41204

📖 Documentation:

  • Updated codeblocks in RLlib. (#37271)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Streaming generator 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 for details. 
    • As part of the change, num_returns=”dynamic” is planning to be deprecated, and its return type is changed from ObjectRefGenerator -> “DynamicObjectRefGenerator”
  • Add experimental accelerator support for new hardwares.
    • Add experimental support for Intel GPU (#38553)
    • Add experimental support for Intel Gaudi Accelerators (#40561)
    • Add experimental support for Huawei Ascend NPU (#41256)
  • Add the initial support to run MPI based code on top of Ray.(#40917, #41349)

💫 Enhancements:

  • Optimize next/anext performance for streaming generator (#41270)
  • Make the number of connections and thread number of the object manager client tunable. (#41421)
  • Add __ray_call__ default actor method (#41534)

🔨 Fixes:

  • Fix NullPointerException cause by raylet id is empty when get actor info in java worker (#40560)
  • Fix a bug where SIGTERM is ignored to worker processes (#40210)
  • Fix mmap file leak. (#40370)
  • Fix the lifetime issue in Plasma server client releasing object. (#40809)
  • Upgrade grpc from 1.50.2 to 1.57.1 to include security fixes (#39090)
  • Fix the bug where two head nodes are shown from ray list nodes (#40838)
  • Fix the crash when the GCS address is not valid. (#41253)
  • Fix the issue of unexpectedly high socket usage in ray core worker processes. (#41121)
  • Make worker_process_setup_hook work with strings instead of Python functions (#41479)
Ray Clusters

💫 Enhancements:

  • Stability improvements for the vSphere cluster launcher
  • Better CLI output for cluster launcher

🔨 Fixes:

  • Fixed run_init for TPU command runner

📖Documentation:

  • Added missing steps and simplified YAML in top-level clusters quickstart
  • Clarify that job entrypoints run on the head node by default and how to override it
Dashboard

💫 Enhancements:

  • Improvements to the Ray Data Dashboard
    • Added Ray Data-specific overview on jobs page, including a table view with Dataset-level metrics
    • Added operator-level metrics granularity to drill down on Dataset operators
    • Added additional metrics for monitoring iteration over Datasets

Docs

🎉 New Features:

  • Updated to Sphinx version 7.1.2. Previously, the docs build used Sphinx 4.3.2. Upgrading to a recent version provides a more modern user experience while fixing many long standing issues. Let us know how you like the upgrade or any other docs issues on your mind, on the Ray Slack #docs channel.

Thanks

Many thanks to all those who contributed to this release!

@justinvyu, @zcin, @avnishn, @jonathan-anyscale, @shrekris-anyscale, @LeonLuttenberger, @c21, @JingChen23, @liuyang-my, @ahmed-mahran, @huchen2021, @raulchen, @scottjlee, @jiwq, @z4y1b2, @jjyao, @JoshTanke, @marxav, @ArturNiederfahrenhorst, @SongGuyang, @jerome-habana, @rickyyx, @rynewang, @batuhanfaik, @can-anyscale, @allenwang28, @wingkitlee0, @angelinalg, @peytondmurray, @rueian, @KamenShah, @stephanie-wang, @bryanjuho, @sihanwang41, @ericl, @sofianhnaide, @RaffaGonzo, @xychu, @simonsays1980, @pcmoritz, @aslonnie, @WeichenXu123, @architkulkarni, @matthew29tang, @larrylian, @iycheng, @hongchaodeng, @rudeigerc, @rkooo567, @robertnishihara, @alanwguo, @emmyscode, @kevin85421, @alexeykudinkin, @michaelhly, @ijrsvt, @ArkAung, @mattip, @harborn, @sven1977, @liuxsh9, @woshiyyya, @hahahannes, @GeneDer, @vitsai, @Zandew, @evalaiyc98, @edoakes, @matthewdeng, @bveeramani

View originalPermalink
How 2.9.0 went
2.8.1

Ray-2.8.1

Changed 1
  • Migrate Logs page to use state api
Fixed 1
  • Prevent state API from reading files outside the Ray log directory

Release Highlights

The Ray 2.8.1 patch release contains fixes for the Ray Dashboard.

Additional context can be found here: https://www.anyscale.com/blog/update-on-ray-cves-cve-2023-6019-cve-2023-6020-cve-2023-6021-cve-2023-48022-cve-2023-48023

Ray Dashboard

🔨 Fixes:

[core][state][log] Cherry pick changes to prevent state API from reading files outside the Ray log directory (#41520) [Dashboard] Migrate Logs page to use state api. (#41474) (#41522)

View originalPermalink
How 2.8.1 went
2.8.0

Ray-2.8.0

Added 10
  • Add support for shuffling input files in Ray Data
  • Support streaming read of PyTorch dataset
  • Add BigQuery datasource for Ray Data
  • Add Databricks table and SQL datasource for Ray Data
  • Add inverse transform functionality to LabelEncoder
  • Add function arg params to Dataset.map and Dataset.flat_map
Changed 6
  • Update PyTorch Lightning import path to support both pytorch_lightning and lightning
  • Propagate driver DataContext to RayTrainWorkers
  • The Serve REST API is now accessible through the dashboard port which defaults to 8265
  • Hard deprecate DatasetPipeline
  • Remove BulkExecutor code path
  • Remove legacy iteration code path in Ray Data
Fixed 3
  • Fix child process leak issue from Ray worker that leaks GPU memory
  • Fix job page excessive loading time issue when Ray HA cluster restarts a head node
  • Fix bug where _StatsActor errors with PandasBlock
Removed 2
  • Remove deprecated Ray Serve 1.x APIs including Deployment.deploy, Deployment.delete, and Deployment.get_handle
  • Move 24 algorithms into rllib_contrib
Deprecated 6
  • Python 3.7 support is officially deprecated from Ray
  • Deprecate previously experimental DAG API for deployment graphs in Ray Serve
  • Deprecate single-application config file format in Ray Serve
  • Deprecate accessing the Serve REST API through the dashboard agent port
  • Deprecate LightningTrainer, AccelerateTrainer, TransformersTrainer
  • Deprecate legacy DatasetConfig in Ray Train

Release Highlights

This release features stability improvements and API clean-ups across the Ray libraries.

  • In Ray Serve, we are deprecating the previously experimental DAG API for deployment graphs. Model composition will be supported through deployment handles providing more flexibility and stability. The previously deprecated Ray Serve 1.x APIs have also been removed. We’ve also added a new Java APIs that aligns with the Ray Serve 2.x APIs. More API changes in the release notes below.
  • In RLlib, we’ve moved 24 algorithms into rllib_contrib (still available within RLlib for Ray 2.8).
  • We’ve added support for PyTorch-compatible input files shuffling for Ray Data. This allows users to randomly shuffle input files for better model training accuracy. This release also features new Ray Data datasources for Databricks and BigQuery.
  • On the Ray Dashboard, we’ve added new metrics for Ray Data in the Metrics tab. This allows users to monitor Ray Data workload including real time metrics of cluster memory, CPU, GPU, output data size, etc. See the doc for more details.
  • Ray Core now supports profiling GPU tasks or actors using Nvidia Nsight. See the documentation for instructions.
  • We fixed 2 critical bugs raised by many kuberay / ML library users, including a child process leak issue from Ray worker that leaks the GPU memory (#40182) and an job page excessive loading time issue when Ray HA cluster restarts a head node (#40742)
  • Python 3.7 support is officially deprecated from Ray.

Ray Libraries

Ray Data

🎉 New Features:

  • Add support for shuffling input files (#40154)
  • Support streaming read of PyTorch dataset (#39554)
  • Add BigQuery datasource (#37380)
  • Add Databricks table / SQL datasource (#39852)
  • Add inverse transform functionality to LabelEncoder (#37785)
  • Add function arg params to Dataset.map and Dataset.flat_map (#40010)

💫Enhancements:

  • Hard deprecate DatasetPipeline (#40129)
  • Remove BulkExecutor code path (#40200)
  • Deprecate extraneous Dataset parameters and methods (#40385)
  • Remove legacy iteration code path (#40013)
  • Implement streaming output backpressure (#40387)
  • Cap op concurrency with exponential ramp-up (#40275)
  • Store ray dashboard metrics in _StatsActor (#40118)
  • Slice output blocks to respect target block size (#40248)
  • Drop columns before grouping by in Dataset.unique() (#40016)
  • Standardize physical operator runtime metrics (#40173)
  • Estimate blocks for limit and union operator (#40072)
  • Store bytes spilled/restored after plan execution (#39361)
  • Optimize sample_boundaries in SortTaskSpec (#39581)
  • Optimization to reduce ArrowBlock building time for blocks of size 1 (#38833)

🔨 Fixes:

  • Fix bug where _StatsActor errors with PandasBlock (#40481)
  • Remove deprecated do_write (#40422)
  • Improve error message when reading HTTP files (#40462)
  • Add flag to skip get_object_locations for metrics (#39884)
  • Fall back to fetch files info in parallel for multiple directories (#39592)
  • Replace deprecated .pieces with updated .fragments (#39523)
  • Backwards compatibility for Preprocessor that have been fit in older versions (#39173)
  • Removing unnecessary data copy in convert_udf_returns_to_numpy (#39188)
  • Do not eagerly free root RefBundles (#39016)

📖Documentation:

  • Remove out-of-date Data examples (#40127)
  • Remove unused and outdated source examples (#40271)
Ray Train

🎉 New Features:

  • Add initial support for scheduling workers on neuron_cores (#39091)

💫Enhancements:

  • Update PyTorch Lightning import path to support both pytorch_lightning and lightning (#39841, #40266)
  • Propagate driver DataContext to RayTrainWorkers (#40116)

🔨 Fixes:

  • Fix error propagation for as_directory if to_directory fails (#40025)

📖Documentation:

  • Update checkpoint hierarchy documentation for RayTrainReportCallbacks. (#40174)
  • Update Lightning RayDDPStrategy docstring (#40376)

🏗 Architecture refactoring:

  • Deprecate LightningTrainer, AccelerateTrainer, `TransformersTrainer (#40163)
  • Clean up legacy persistence mode code paths (#39921, #40061, #40069, #40168)
  • Deprecate legacy DatasetConfig (#39963)
  • Remove references to DatasetPipeline (#40159)
  • Enable isort (#40172)
Ray Tune

💫Enhancements:

  • Separate storage checkpoint index bookkeeping (#39927, #40003)
  • Raise an error if Tuner.restore() is called on an instance (#39676) 🏗 Architecture refactoring:
  • Clean up legacy persistence mode code paths (#39918, #40061, #40069, #40168, #40175, #40192, #40181, #40193)
  • Migrate TuneController tests (#39704)
  • Remove TuneRichReporter (#40169)
  • Remove legacy Ray Client tests (#40415)
Ray Serve

💫Enhancements:

  • The single-app configuration format for the Serve Config (i.e. the Serve Config without the ‘applications’ field) has been deprecated in favor of the new configuration format. Both single-app configuration and DAG API will be removed in 2.9.
  • The Serve REST API is now accessible through the dashboard port, which defaults to 8265.
  • Accessing the Serve REST API through the dashboard agent port (default 52365) is deprecated. The support will be removed in a future version.
  • Ray job error tracebacks are now logged in the job driver log for easier access when jobs fail during start up.
  • Deprecated single-application config file
  • Deprecated DAG API: InputNode and DAGDriver
  • Removed deprecated Deployment 1.x APIs: Deployment.deploy(), Deployment.delete(), Deployment.get_handle()
  • Removed deprecated 1.x API: serve.get_deployment and serve.list_deployments
  • New Java API supported (aligns with Ray Serve 2.x API)

🔨 Fixes:

  • The dedicated_cpu and detached options in serve.start() have been fully disallowed.
  • Error will be raised when users pass invalid gRPC service functions and fail early.
  • The proxy’s readiness check now uses a linear backoff to avoid getting stuck in an infinite loop if it takes longer than usual to start.
  • grpc_options on serve.start() was only allowing a gRPCOptions object in Ray 2.7.0. Dictionaries are now allowed to be used asgrpc_options in the serve.start() call.
RLlib

💫Enhancements:

  • rllib_contrib algorithms (A2C, A3C, AlphaStar #36584, AlphaZero #36736, ApexDDPG #36596, ApexDQN #36591, ARS #36607, Bandits #36612, CRR #36616, DDPG, DDPPO #36620, Dreamer(V1), DT #36623, ES #36625, LeelaChessZero #36627, MA-DDPG #36628, MAML, MB-MPO #36662, PG #36666, QMix #36682, R2D2, SimpleQ #36688, SlateQ #36710, and TD3 #36726) all produce warnings now if used. See here for more information on the rllib_contrib efforts. (36620, 36628, 3
  • Provide msgpack checkpoint translation utility to convert checkpoint into msgpack format for being able to move in between python versions (#38825).

🔨 Fixes:

  • Issue 35440 (JSON output writer should include INFOS #39632)
  • Issue 39453 (PettingZoo wrappers should use correct multi-agent dict spaces #39459)
  • Issue 39421 (Multi-discrete action spaces not supported in new stack #39534)
  • Issue 39234 (Multi-categorical distribution bug #39464) #39654, #35975, #39552, #38555

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Python 3.7 support is officially deprecated from Ray.
  • Supports profiling GPU tasks or actors using Nvidia Nsight. See the doc for instructions.
  • Ray on spark autoscaling is officially supported from Ray 2.8. See the REP for more details. 💫Enhancements:
  • IDLE node information in detail is available from ray status -v (#39638)
  • Adding a new accelerator to Ray is simplified with a new accelerator interface. See the in-flight REP for more details (#40286).
  • Typing_extensions is removed from a dependency requirement because Python 3.7 support is deprecated. (#40336)
  • Ray state API supports case insensitive match. (#34577)
  • ray start --runtime-env-agent-port is officially supported. (#39919)
  • Driver exit code is available fromjob info (#39675)

🔨 Fixes:

  • Fixed a worker leak when Ray is used with placement group because Ray didn’t handle SIGTERM properly (#40182)
  • Fixed an issue job page loading takes a really long time when Ray HA cluster restarts a head node (#40431)
  • [core] loosen the check on release object (#39570)
  • [Core] ray init sigterm (#39816)
  • [Core] Non Unit Instance fractional value fix (#39293)
  • [Core]: Enable get_actor_name for actor runtime context (#39347)
  • [core][streaming][python] Fix asyncio.wait coroutines args deprecated warnings #40292

📖Documentation:

Ray Clusters

💫Enhancements:

  • Enable GPU support for vSphere cluster launcher (#40667)

📖Documentation:

  • Setup RBAC by KubeRay Helm chart
  • KubeRay upgrade documentation
  • RayService high availability

🔨 Fixes:

  • Assorted fixes for vSphere cluster launcher (#40487, #40516, #40655)
Dashboard

🎉 New Features:

  • New metrics for ray data can be found in the Metrics tab. 🔨 Fixes:
  • Fix bug where download log button did not download all logs for actors.
Thanks

Many thanks to all who contributed to this release!

@scottjlee, @chappidim, @alexeykudinkin, @ArturNiederfahrenhorst, @stephanie-wang, @chaowanggg, @peytondmurray, @maxpumperla, @arvind-chandra, @iycheng, @JalinWang, @matthewdeng, @wfangchi, @z4y1b2, @alanwguo, @Zandew, @kouroshHakha, @justinvyu, @yuanchen8911, @vitsai, @hongchaodeng, @allenwang28, @caozy623, @ijrsvt, @omus, @larrylian, @can-anyscale, @joncarter1, @ericl, @lejara, @jjyao, @Ox0400, @architkulkarni, @edoakes, @raulchen, @bveeramani, @sihanwang41, @WeichenXu123, @zcin, @Codle, @dimakis, @simonsays1980, @cadedaniel, @angelinalg, @luv003, @JingChen23, @xwjiang2010, @rynewang, @Yicheng-Lu-llll, @scrivy, @michaelhly, @shrekris-anyscale, @xxnwj, @avnishn, @woshiyyya, @aslonnie, @amogkam, @krfricke, @pcmoritz, @liuyang-my, @jonathan-anyscale, @rickyyx, @scottsun94, @richardliaw, @rkooo567, @stefanbschneider, @kevin85421, @c21, @sven1977, @GeneDer, @matthew29tang, @RocketRider, @LaynePeng, @samhallam-reverb, @scv119, @huchen2021

View originalPermalink
How 2.8.0 went
2.7.1

Ray-2.7.1

Added 2
  • Add an `application` tag to the `ray_serve_num_http_requests` metric
  • Add a new user guide for the vSphere cluster launcher
Changed 1
  • Improve cluster page UI in Dashboard
Fixed 10
  • Fix a bug where no data shows up on the `Error QPS per Application` panel in the Ray Dashboard
  • DreamerV3: Enable support for continuous actions
  • Fix a bug where setting a local storage path on Windows errors
  • Fix a broken `Trial.node_ip` property
  • Fix a segfault when a streaming generator and actor cancel is used together
  • Fix autoscaler SDK accidentally initializing a ray worker leading to leaked driver showing up in the dashboard

Release Highlights

  • Ray Serve:
    • Added an application tag to the ray_serve_num_http_error_requests metric
    • Fixed a bug where no data shows up on the Error QPS per Application panel in the Ray Dashboard
  • RLlib:
    • DreamerV3: Bug fix enabling support for continuous actions.
  • Ray Train:
    • Fix a bug where setting a local storage path on Windows errors (#39951)
  • Ray Tune:
    • Fix a broken Trial.node_ip property (#40028)
  • Ray Core:
    • Fixes a segfault when a streaming generator and actor cancel is used together
    • Fix autoscaler sdk accidentally initialize ray worker leading to leaked driver showing up in the dashboard.
    • Added a new user guide and fixes for the vSphere cluster launcher.
    • Fixed a bug where ray start would occasionally fail with ValueError: acceleratorType should match v(generation)-(cores/chips).
  • Dashboard:
    • Improvement on cluster page UI
    • Fix a bug that overview page UI will crash

Ray Libraries

Ray Serve

🔨 Fixes:

  • Fixed a bug where no data shows up on the Error QPS per Application panel in the Ray Dashboard
RLlib

🔨 Fixes:

  • DreamerV3: Bug fix enabling support for continuous actions (39751).

Ray Core and Ray Clusters

🔨 Fixes:

  • Fixed Ray cluster stability on a high latency environment

Thanks

Many thanks to all those who contributed to this release!

@chaowanggg, @allenwang28, @shrekris-anyscale, @GeneDer, @justinvyu, @can-anyscale, @edoakes, @architkulkarni, @rkooo567, @rynewang, @rickyyx, @sven1977

View originalPermalink
How 2.7.1 went
2.7.0

Ray-2.7.0

Added 15
  • Ray Serve and Ray Train PyTorch support are now generally available
  • Introduce new backwards-compatible DeploymentHandle API in Ray Serve to unify various existing Handle APIs
  • Add high performant gRPC proxy to Ray Serve to serve gRPC requests
  • Consolidate various PyTorch-based trainers into TorchTrainer in Ray Train
  • Introduce new train.Checkpoint API providing consolidated way of interacting with remote and local storage
  • Add initial integrations with TPUs and AWS accelerators in Ray Core to natively detect these devices and schedule tasks/actors onto them
Changed 4
  • Rebrand Ray AI Runtime (AIR) to Ray AI Libraries and consolidate the ray.air namespace into ray.data, ray.train, and ray.tune
  • Read data with multi-threading for FileBasedDataSource in Ray Data
  • Add partition_filter parameter to read_parquet
  • Move away from LightningTrainer in favor of TorchTrainer as the recommended way of running distributed PyTorch Lightning
Deprecated 1
  • Ray Train Preprocessors and Predictors are deprecated in favor of Ray Data

Release Highlights

Ray 2.7 release brings important stability improvements and enhancements to Ray libraries, with Ray Train and Ray Serve becoming generally available. Ray 2.7 is accompanied with a GA release of KubeRay.

  • Following user feedback, we are rebranding “Ray AI Runtime (AIR)” to “Ray AI Libraries”. Without reducing any of the underlying functionality of the original Ray AI runtime vision as put forth in Ray 2.0, the underlying namespace (ray.air) is consolidated into ray.data, ray.train, and ray.tune. This change reduces the friction for new machine learning (ML) practitioners to quickly understand and leverage Ray for their production machine learning use cases.
  • With this release, Ray Serve and Ray Train’s Pytorch support are becoming Generally Available -- indicating that the core APIs have been marked stable and that both libraries have undergone significant production hardening.
  • In Ray Serve, we are introducing a new backwards-compatible DeploymentHandle API to unify various existing Handle APIs, a high performant gRPC proxy to serve gRPC requests through Ray Serve, along with various stability and usability improvements.
  • In Ray Train, we are consolidating various Pytorch-based trainers into the TorchTrainer, reducing the amount of refactoring work new users needed to scale existing training scripts. We are also introducing a new train.Checkpoint API, which provides a consolidated way of interacting with remote and local storage, along with various stability and usability improvements.
  • In Ray Core, we’ve added initial integrations with TPUs and AWS accelerators, enabling Ray to natively detect these devices and schedule tasks/actors onto them. Ray Core also officially now supports actor task cancellation and has an experimental streaming generator that supports streaming response to the caller.

Take a look at our refreshed documentation and the Ray 2.7 migration guide and let us know your feedback!

Ray Libraries

Ray AIR

🏗 Architecture refactoring:

  • Ray AIR namespace: We are sunsetting the "Ray AIR" concept and namespace (#39516, #38632, #38338, #38379, #37123, #36706, #37457, #36912, #37742, #37792, #37023). The changes follow the proposal outlined in this REP.
  • Ray Train Preprocessors, Predictors: We now recommend using Ray Data instead of Preprocessors (#38348, #38518, #38640, #38866) and Predictors (#38209).
Ray Data

🎉 New Features:

  • In this release, we’ve integrated the Ray Core streaming generator API by default, which allows us to reduce memory footprint throughout the data pipeline (#37736).
  • Avoid unnecessary data buffering between Read and Map operator (zero-copy fusion) (#38789)
  • Add Dataset.write_images to write images (#38228)
  • Add Dataset.write_sql() to write SQL databases (#38544)
  • Support sort on multiple keys (#37124)
  • Support reading and writing JSONL file format (#37637)
  • Support class constructor args for Dataset.map() and flat_map() (#38606)
  • Implement streamed read from Hugging Face Dataset (#38432)

💫Enhancements:

  • Read data with multi-threading for FileBasedDataSource (#39493)
  • Optimization to reduce ArrowBlock building time for blocks of size 1 (#38988)
  • Add partition_filter parameter to read_parquet (#38479)
  • Apply limit to Dataset.take() and related methods (#38677)
  • Postpone reader.get_read_tasks until execution (#38373)
  • Lazily construct metadata providers (#38198)
  • Support writing each block to a separate file (#37986)
  • Make iter_batches an Iterable (#37881)
  • Remove default limit on Dataset.to_pandas() (#37420)
  • Add Dataset.to_dask() parameter to toggle consistent metadata check (#37163)
  • Add Datasource.on_write_start (#38298)
  • Remove support for DatasetDict as input into from_huggingface() (#37555)

🔨 Fixes:

  • Backwards compatibility for Preprocessor that have been fit in older versions (#39488)
  • Do not eagerly free root RefBundles (#39085)
  • Retry open files with exponential backoff (#38773)
  • Avoid passing local_uri to all non-Parquet data sources (#38719)
  • Add ctx parameter to Datasource.write (#38688)
  • Preserve block format on map_batches over empty blocks (#38161)
  • Fix args and kwargs passed to ActorPool map_batches (#38110)
  • Add tif file extension to ImageDatasource (#38129)
  • Raise error if PIL can't load image (#38030)
  • Allow automatic handling of string features as byte features during TFRecord serialization (#37995)
  • Remove unnecessary file system wrapping (#38299)
  • Remove _block_udf from FileBasedDatasource reads (#38111)

📖Documentation:

  • Standardize API references (#37015, #36980, #37007, #36982, etc)
Ray Train

🤝 API Changes

  • Ray Train and Ray Tune Checkpoints: Introduced a new train.Checkpoint class that unifies interaction with remote storage such as S3, GS, and HDFS. The changes follow the proposal in [REP35] Consolidated persistence API for Ray Train/Tune (#38452, #38481, #38581, #38626, #38864, #38844)
  • Ray Train with PyTorch Lightning: Moving away from the LightningTrainer in favor of the TorchTrainer as the recommended way of running distributed PyTorch Lightning. The changes follow the proposal outlined in [REP37] [Train] Unify Torch based Trainers on the TorchTrainer API (#37989)
  • Ray Train with Hugging Face Transformers/Accelerate: Moving away from the TransformersTrainer/AccelerateTrainer in favor of the TorchTrainer as the recommended way of running distributed Hugging Face Transformers and Accelerate. The changes follow the proposal outlined in [REP37] [Train] Unify Torch based Trainers on the TorchTrainer API (#38083, #38295)
  • Deprecated preprocessor arg to Trainer (#38640)
  • Removed deprecated Result.log_dir (#38794)

💫Enhancements:

  • Various improvements and fixes for the console output of Ray Train and Tune (#37572, #37571, #37570, #37569, #37531, #36993)
  • Raise actionable error message for missing dependencies (#38497)
  • Use posix paths throughout library code (#38319)
  • Group consecutive workers by IP (#38490)
  • Split all Ray Datasets by default (#38694)
  • Add static Trainer methods for getting tree-based models (#38344)
  • Don't set rank-specific local directories for Train workers (#38007)

🔨 Fixes:

  • Fix trainer restoration from S3 (#38251)

🏗 Architecture refactoring:

  • Updated internal usage of the new Checkpoint API (#38853, #38804, #38697, #38695, #38757, #38648, #38598, #38617, #38554, #38586, #38523, #38456, #38507, #38491, #38382, #38355, #38284, #38128, #38143, #38227, #38141, #38057, #38104, #37888, #37991, #37962, #37925, #37906, #37690, #37543, #37475, #37142, #38855, #38807, #38818, #39515, #39468, #39368, #39195, #39105, #38563, #38770, #38759, #38767, #38715, #38709, #38478, #38550, #37909, #37613, #38876, #38868, #38736, #38871, #38820, #38457)

📖Documentation:

  • Restructured the Ray Train documentation to make it easier to find relevant content (#37892, #38287, #38417, #38359)
  • Improved examples, references, and navigation items (#38049, #38084, #38108, #37921, #38391, #38519, #38542, #38541, #38513, #39510, #37588, #37295, #38600, #38582, #38276, #38686, #38537, #38237, #37016)
  • Removed outdated examples (#38682, #38696, #38656, #38374, #38377, #38441, #37673, #37657, #37067)
Ray Tune

🤝 API Changes

  • Ray Train and Ray Tune Checkpoints: Introduced a new train.Checkpoint class that unifies interaction with remote storage such as S3, GS, and HDFS. The changes follow the proposal in [REP35] Consolidated persistence API for Ray Train/Tune (#38452, #38481, #38581, #38626, #38864, #38844)
  • Removed deprecated Result.log_dir (#38794)

💫Enhancements:

  • Various improvements and fixes for the console output of Ray Train and Tune (#37572, #37571, #37570, #37569, #37531, #36993)
  • Raise actionable error message for missing dependencies (#38497)
  • Use posix paths throughout library code (#38319)
  • Improved the PyTorchLightning integration (#38883, #37989, #37387, #37400)
  • Improved the XGBoost/LightGBM integrations (#38558, #38828)

🔨 Fixes:

  • Fix hyperband r calculation and stopping (#39157)
  • Replace deprecated np.bool8 (#38495)
  • Miscellaneous refactors and fixes (#38165, #37506, #37181, #37173)

🏗 Architecture refactoring:

  • Updated internal usages of the new Checkpoint API (#38853, #38804, #38697, #38695, #38757, #38648, #38598, #38617, #38554, #38586, #38523, #38456, #38507, #38491, #38382, #38355, #38284, #38128, #38143, #38227, #38141, #38057, #38104, #37888, #37991, #37962, #37925, #37906, #37690, #37543, #37475, #37142, #38855, #38807, #38818, #39515, #39468, #39368, #39195, #39105, #38563, #38770, #38759, #38767, #38715, #38709, #38478, #38550, #37909, #37613, #38876, #38868, #38736, #38871, #38820, #38457)
  • Removed legacy TrialRunner/Executor (#37927)
Ray Serve

🎉 New Features:

  • Added keep_alive_timeout_s to Serve config file to allow users to configure HTTP proxy’s duration to keep idle connections alive when no requests are ongoing.
  • Added gRPC proxy to serve gRPC requests through Ray Serve. It comes with feature parity with HTTP while offering better performance. Also, replaces the previous experimental gRPC direct ingress.
  • Ray 2.7 introduces a new DeploymentHandle API that will replace the existing RayServeHandle and RayServeSyncHandle APIs in a future release. You are encouraged to migrate to the new API to avoid breakages in the future. To opt in, either use handle.options(use_new_handle_api=True) or set the global environment variable export RAY_SERVE_ENABLE_NEW_HANDLE_API=1. See https://docs.ray.io/en/latest/serve/model_composition.html for more details.
  • Added a new API get_app_handle that gets a handle used to send requests to an application. The API uses the new DeploymentHandle API.
  • Added a new developer API get_deployment_handle that gets a handle that can be used to send requests to any deployment in any application.
  • Added replica placement group support.
  • Added a new API serve.status which can be used to get the status of proxies and Serve applications (and their deployments and replicas). This is the pythonic equivalent of the CLI serve status.
  • A --reload option has been added to the serve run CLI.
  • Support X-Request-ID in http header

💫Enhancements:

🔨 Fixes:

📖Documentation:

  • Added docs for how to use keep_alive_timeout_s in the Serve config file.
  • Added usage and examples for serving gRPC requests through Serve’s gRPC proxy.
  • Added example for passing deployment handle responses by reference.
  • Added a Ray Serve Autoscaling guide to the Ray Serve docs that goes over basic configurations and autoscaling examples. Also added an Advanced Ray Serve Autoscaling guide that goes over more advanced configurations and autoscaling examples.
  • Added docs explaining how to debug memory leaks in Serve.
  • Added docs that explain how Serve cancels disconnected requests and how to handle those disconnections.
RLlib

🎉 New Features:

  • In Ray RLlib, we have implemented Google’s new DreamerV3, a sample-efficient, model-based, and hyperparameter hassle-free algorithm. It solves a wide variety of challenging reinforcement learning environments out-of-the-box (e.g. the MineRL diamond challenge), for arbitrary observation- and action-spaces as well as dense and sparse reward functions.

💫Enhancements:

  • Added support for Gymnasium 0.28.1 (#35698)
  • Dreamer V3 tuned examples and support for “XL” Dreamer models (#38461)
  • Added an action masking example for RL Modules (#38095)

🔨 Fixes:

  • Multiple fixes to DreamerV3 (#37979) (#38259) (#38461) (#38981)
  • Fixed TorchBinaryAutoregressiveDistribution.sampled_action_logp() returning probs not log probs. (#37240)
  • Fix a bug in Multi-Categorical distribution. It should use logp and not log_p. (#36814)
  • Index tensors in slate epsilon greedy properly so SlateQ does not fail on multiple GPUs (#37481)
  • Removed excessive deprecation warnings in exploration related files (#37404)
  • Fixed missing agent index in policy input dict on environment reset (#37544)

📖Documentation:

  • Added docs for DreamerV3 (#37978)
  • Added docs on torch.compile usage (#37252)
  • Added docs for the Learner API (#37729)
  • Improvements to Catalogs and RL Modules docs + Catalogs improvements (#37245)
  • Extended our metrics and callbacks example to showcase how to do custom summarisation on custom metrics (#37292)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Actor task cancelation is officially supported.
  • The experimental streaming generator is now available. It means the yielded output is sent to the caller before the task is finished and overcomes the limitation from num_returns="dynamic" generator. The API could be used by specifying num_returns="streaming". The API has been used for Ray data and Ray serve to support streaming use cases. See the test script to learn how to use the API. The documentation will be available in a few days.

💫Enhancements:

  • Minimal Ray installation pip install ray doesn't require the Python grpcio dependency anymore.
  • [Breaking change] ray job submit now exits with 1 if the job fails instead of 0. To get the old behavior back, you may use ray job submit ... || true . (#38390)
  • [Breaking change] get_assigned_resources in pg will return the name of the original resources instead of formatted name (#37421)
  • [Breaking change] Every env var specified via ${ENV_VAR} now can be replaced. Previous versions only supported limited number of env vars. (#36187)
  • [Java] Update Guava package (#38424)
  • [Java] Update Jackson Databind XML Parsing (#38525)
  • [Spark] Allow specifying CPU / GPU / Memory resources for head node of Ray cluster on spark (#38056)

🔨 Fixes:

  • [Core] Internal gRPC version is upgraded from 1.46.6 to 1.50.2, which fixes the memory leak issue
  • [Core] Bind jemalloc to raylet and GCS (#38644) to fix memory fragmentation issue
  • [Core] Previously, when a ray is started with ray start --node-ip-address=..., the driver also had to specify ray.init(_node_ip_address). Now Ray finds the node ip address automatically. (#37644)
  • [Core] Child processes of workers are cleaned up automatically when a raylet dies (#38439)
  • [Core] Fix the issue where there are lots of threads created when using async actor (#37949)
  • [Core] Fixed a bug where tracing did not work when an actor/task was defined prior to calling ray.init: https://github.com/ray-project/ray/issues/26019
  • Various other bug fixes
    • [Core] loosen the check on release object (#39570)
    • [Core][agent] fix the race condition where the worker process terminated during the get_all_workers call #37953
    • [Core]Fix PG leakage caused by GCS restart when PG has not been successfully remove after the job died (#35773)
    • [Core]Fix internal_kv del api bug in client proxy mode (#37031)
    • [Core] Pass logs through if sphinx-doctest is running (#36306)
    • [Core][dashboard] Make intentional ray system exit from worker exit non task failing (#38624)
    • [Core][dashboard] Add worker pid to task info (#36941)
    • [Core] Use 1 thread for all fibers for an actor scheduling queue. (#37949)
    • [runtime env] Fix Ray hangs when nonexistent conda environment is specified #28105 (#34956)
Ray Clusters

💫Enhancements:

  • New Cluster Launcher for vSphere #37815
  • TPU pod support for cluster launcher #37934

📖Documentation:

Thanks

Many thanks to all those who contributed to this release!

@simran-2797, @can-anyscale, @akshay-anyscale, @c21, @EdwardCuiPeacock, @rynewang, @volks73, @sven1977, @alexeykudinkin, @mattip, @Rohan138, @larrylian, @DavidYoonsik, @scv119, @alpozcan, @JalinWang, @peterghaddad, @rkooo567, @avnishn, @JoshKarpel, @tekumara, @zcin, @jiwq, @nikosavola, @seokjin1013, @shrekris-anyscale, @ericl, @yuxiaoba, @vymao, @architkulkarni, @rickyyx, @bveeramani, @SongGuyang, @jjyao, @sihanwang41, @kevin85421, @ArturNiederfahrenhorst, @justinvyu, @pleaseupgradegrpcio, @aslonnie, @kukushking, @94929, @jrosti, @MattiasDC, @edoakes, @PRESIDENT810, @cadedaniel, @ddelange, @alanwguo, @noahjax, @matthewdeng, @pcmoritz, @richardliaw, @vitsai, @Michaelvll, @tanmaychimurkar, @smiraldr, @wfangchi, @amogkam, @crypdick, @WeichenXu123, @darthhexx, @angelinalg, @chaowanggg, @GeneDer, @xwjiang2010, @peytondmurray, @z4y1b2, @scottsun94, @chappidim, @jovany-wang, @jaidisido, @krfricke, @woshiyyya, @Shubhamurkade, @ijrsvt, @scottjlee, @kouroshHakha, @allenwang28, @raulchen, @stephanie-wang, @iycheng

View originalPermalink
How 2.7.0 went
2.6.3

Ray-2.6.3

Added 1
  • Add Learner API documentation for RLlib
Fixed 3
  • Fix memory leak from the end of object stream object in streaming generators
  • Fix serve run help message
  • Decrement ray_serve_deployment_queued_queries when client disconnects

The Ray 2.6.3 patch release contains fixes for Ray Serve, and Ray Core streaming generators.

Ray Core

🔨 Fixes:

  • [Core][Streaming Generator] Fix memory leak from the end of object stream object #38152 (#38206)
Ray Serve

🔨 Fixes:

  • [Serve] Fix serve run help message (#37859) (#38018)
  • [Serve] Decrement ray_serve_deployment_queued_queries when client disconnects (#37965) (#38020)
RLib

📖 Documentation:

  • [RLlib][docs] Learner API Docs (#37729) (#38137)
View originalPermalink
How 2.6.3 went
2.6.2

Ray-2.6.2

Fixed 4
  • Pass logs through if sphinx-doctest is running
  • Pick GCP cluster launcher tests and fix
  • Apply request_timeout_s from Serve config to the cluster
  • Fix pyarrow lazy import

The Ray 2.6.2 patch release contains a critical fix for ray's logging setup, as well fixes for Ray Serve, Ray Data, and Ray Job.

Ray Core

🔨 Fixes:

  • [Core] Pass logs through if sphinx-doctest is running (#36306) (#37879)
  • [cluster-launcher] Pick GCP cluster launcher tests and fix (#37797)
Ray Serve

🔨 Fixes:

  • [Serve] Apply request_timeout_s from Serve config to the cluster (#37884) (#37903)
Ray Air

🔨 Fixes:

  • [air] fix pyarrow lazy import (#37670) (#37883)
View originalPermalink
How 2.6.2 went
2.6.1

Ray-2.6.1

Fixed 3
  • Fix cluster launcher failing to start multi-node clusters in Ray 2.6.0
  • Fix autoscaler env variable overwrite not being usable if the command itself uses the env variable
  • Fix Serve enum to_proto compatibility with Python 3.11

The Ray 2.6.1 patch release contains a critical fix for cluster launcher, and compatibility update for Ray Serve protobuf definition with python 3.11, as well doc improvements.

⚠️ Cluster launcher in Ray 2.6.0 fails to start multi-node clusters. Please update to 2.6.1 if you plan to use 2.6.0 cluster launcher.

Ray Core

🔨 Fixes:

  • [core][autoscaler] Fix env variable overwrite not able to be used if the command itself uses the env #37675
Ray Serve

🔨 Fixes:

  • [serve] Cherry-pick Serve enum to_proto fixes for Python 3.11 #37660
Ray Air

📖Documentation:

  • [air][doc] Update docs to reflect head node syncing deprecation #37475
View originalPermalink
How 2.6.1 went
2.6.0

Ray-2.6.0

Added 7
  • Support for HTTP streaming response and WebSockets is now enabled by default in Ray Serve
  • Ray Serve @serve.batch-decorated methods can now stream responses
  • Support for restoring Results from local trial directories
  • New streaming integration of Ray Data and Ray Train allowing streaming data ingestion for model training and per-epoch data preprocessing
  • Add Dataset.unique() method
  • Add option for parallelizing post-collation data batch operations in DataIterator.iter_batches()
  • LightningTrainer support for DeepSpeedStrategy
Changed 6
  • Users are now required to provide cloud storage or NFS path for distributed training or tuning jobs instead of a local path
  • Enable execution optimizer by default in Ray Data
  • Enforce strict mode batch format for DataIterator.iter_batches()
  • Spread map task stages by default for arg size <50MB
  • Unify Lightning and AIR CheckpointConfig
  • Add support for custom pipeline class in TransformersPredictor
Fixed 3
  • Fix infinite recursion in log redirection
  • Remove temporary checkpoint directories after restore
  • Fix bug in execution for actor re-use
Removed 2
  • Remove ray.data.range_arrow()
  • Remove deprecated mlflow and wandb integrations
Deprecated 2
  • DatasetPipeline API is deprecated in favor of Dataset with streaming execution
  • BatchPredictor is deprecated

Release Highlights

  • Serve: Better streaming support -- In this release, Support for HTTP streaming response and WebSockets is now on by default. Also, @serve.batch-decorated methods can stream responses.
  • Train and Tune: Users are now expected to provide cloud storage or NFS path for distributed training or tuning jobs instead of a local path. This means that results written to different worker machines will not be directly synced to the head node. Instead, this will raise an error telling you to switch to one of the recommended alternatives: cloud storage or NFS. Please see https://github.com/ray-project/ray/issues/37177 if you have questions.
  • Data: We are introducing a new streaming integration of Ray Data and Ray Train. This allows streaming data ingestion for model training, and enables per-epoch data preprocessing. The DatasetPipeline API is also being deprecated in favor of Dataset with streaming execution.
  • RLlib: Public alpha release for the new multi-gpu Learner API that is less complex and more powerful compared to our previous solution (blogpost). This is used under PPO algorithm by default.

Ray Libraries

Ray AIR

🎉 New Features:

  • Added support for restoring Results from local trial directories. (#35406)

💫 Enhancements:

  • [Train/Tune] Disable Train/Tune syncing to head node (#37142)
  • [Train/Tune] Introduce new console output progress reporter for Train and Tune (#35389, #36154, #36072, #35770, #36764, #36765, #36156, #35977)
  • [Train/Data] New Train<>Data streaming integration (#35236, #37215, #37383)

🔨 Fixes:

  • Pass on KMS-related kwargs for s3fs (#35938)
  • Fix infinite recursion in log redirection (#36644)
  • Remove temporary checkpoint directories after restore (#37173)
  • Removed actors that haven't been started shouldn't be tracked (#36020)
  • Fix bug in execution for actor re-use (#36951)
  • Cancel pg.ready() task for pending trials that end up reusing an actor (#35748)
  • Add case for Dict[str, np.array] batches in DummyTrainer read bytes calculation (#36484)

📖 Documentation:

  • Remove experimental features page, add github issue instead (#36950)
  • Fix batch format in dreambooth example (#37102)
  • Fix Checkpoint.from_checkpoint docstring (#35793)

🏗 Architecture refactoring:

  • Remove deprecated mlflow and wandb integrations (#36860, #36899)
  • Move constants from tune/results.py to air/constants.py (#35404)
  • Clean up a few checkpoint related things. (#35321)
Ray Data

🎉 New Features:

  • New streaming integration of Ray Data and Ray Train. This allows streaming data ingestion for model training, and enables per-epoch data preprocessing. (#35236)
  • Enable execution optimizer by default (#36294, #35648, #35621, #35952)
  • Deprecate DatasetPipeline (#35753)
  • Add Dataset.unique() (#36655, #36802)
  • Add option for parallelizing post-collation data batch operations in DataIterator.iter_batches() (#36842) (#37260)
  • Enforce strict mode batch format for DataIterator.iter_batches() (#36686)
  • Remove ray.data.range_arrow() (#35756)

💫 Enhancements:

  • Optimize block prefetching (#35568)
  • Enable isort for data directory (#35836)
  • Skip writing a file for an empty block in Dataset.write_datasource() (#36134)
  • Remove shutdown logging from StreamingExecutor (#36408)
  • Spread map task stages by default for arg size <50MB (#36290)
  • Read->SplitBlocks to ensure requested read parallelism is always met (#36352)
  • Support partial execution in Dataset.schema() with new execution plan optimizer (#36740)
  • Propagate iter stats for Dataset.streaming_split() (#36908)
  • Cache the computed schema to avoid re-executing (#37103)

🔨 Fixes:

  • Support sub-progress bars on AllToAllOperators with optimizer enabled (#34997)
  • Fix DataContext not propagated properly for Dataset.streaming_split() operator
  • Fix edge case in empty bundles with Dataset.streaming_split() (#36039)
  • Apply Arrow table indices mapping on HuggingFace Dataset prior to reading into Ray Data (#36141)
  • Fix issues with combining use of Dataset.materialize() and Dataset.streaming_split() (#36092)
  • Fix quadratic slowdown when locally shuffling tensor extension types (#36102)
  • Make sure progress bars always finish at 100% (#36679)
  • Fix wrong output order of Dataset.streaming_split() (#36919)
  • Fix the issue that StreamingExecutor is not shutdown when the iterator is not fully consumed (#36933)
  • Calculate stage execution time in StageStatsSummary from BlockMetadata (#37119)

📖 Documentation:

  • Standardize Data API ref (#36432, #36937)
  • Docs for working with PyTorch (#36880)
  • Split "Consuming data" guide (#36121)
  • Revise "Loading data" (#36144)
  • Consolidate Data user guides (#36439)

🏗 Architecture refactoring:

  • Remove simple blocks representation (#36477)
Ray Train

🎉 New Features:

  • LightningTrainer support DeepSpeedStrategy (#36165)

💫 Enhancements:

  • Unify Lightning and AIR CheckpointConfig (#36368)
  • Add support for custom pipeline class in TransformersPredictor (#36494)

🔨 Fixes:

  • Fix Deepspeed device ranks check in Lightning 2.0.5 (#37387)
  • Clear stale lazy checkpointing markers on all workers. (#36291)

📖 Documentation:

  • Migrate Ray Train code-block to testcode. (#36483)

🏗 Architecture refactoring:

  • Deprecate BatchPredictor (#36947, #37178)
Ray Tune

🔨 Fixes:

  • Optuna: Update distributions to use new APIs (#36704)
  • BOHB: Fix nested bracket processing (#36568)
  • Hyperband: Fix scheduler raising an error for good PENDING trials (#35338)
  • Fix param space placeholder injection for numpy/pandas objects (#35763)
  • Fix result restoration with Ray Client (#35742)
  • Fix trial runner/controller whitelist attributes (#35769)

📖 Documentation:

  • Remove missing example from Tune "Other examples" (#36691)

🏗 Architecture refactoring:

  • Remove tune/automl (#35557)
  • Remove hard-deprecated modules from structure refactor (#36984)
  • Remove deprecated mlflow and wandb integrations (#36860, #36899)
  • Move constants from tune/results.py to air/constants.py (#35404)
  • Deprecate redundant syncing related parameters (#36900)
  • Deprecate legacy modules in ray.tune.integration (#35160)
Ray Serve

💫 Enhancements:

  • Support for HTTP streaming response and WebSockets is now on by default.
  • @serve.batch-decorated methods can stream responses.
  • @serve.batch settings can be reconfigured dynamically.
  • Ray Serve now uses “power of two random choices” routing. This improves enforcement of max_concurrent_queries and tail latencies under load.

🔨 Fixes:

  • Fixed the bug previously unable to use a custom module named after “utils”.
  • Fixed serve downscaling issue by adding a new draining state to the http proxy. This helps http proxies to not take new requests when there are no replicas on the node and prevents interruption on the ongoing requests when the node is downscaled. Also, enables downscaling to happen when the requests use Ray’s object store which is blocking downscaling of the node.
  • Fixed non-atomic shutdown logic. Serve shutdown will be run in the background and not require the client to wait for the shutdown to complete. And won’t be interrupted when the client is force killed.
RLlib

🎉 New Features:

  • Public alpha release for the new multi-gpu Learner API that is less complex and more powerful than the old training stack (blogpost). This is used under PPO algorithm by default.
  • Added RNN support on the new RLModule API
  • Added TF-version of DreamerV3 (link). The comprehensive results will be published soon.
  • Added support for torch 2.x compile method in sampling from environment

💫 Enhancements:

  • Added an Example on how to do pretraining with BC and then continuing finetuning with PPO (example)
  • RLlib deprecation Notices (algorithm/, evaluation/, execution/, models/jax/) (#36826)
  • Enable eager_tracing=True by default. (#36556)

🔨 Fixes:

  • Fix bug in Multi-Categorical distribution. It should use logp and not log_p. (#36814)
  • Fix LSTM + Connector bug: StateBuffer restarting states on every in_eval() call. (#36774)

🏗 Architecture refactoring:

  • Multi-GPU Learner API
Ray Core

🎉 New Features:

  • [Core][Streaming Generator] Cpp interfaces and implementation (#35291)
  • [Core][Streaming Generator] Streaming Generator. Support Core worker APIs + cython generator interface. (#35324)
  • [Core][Streaming Generator] Streaming Generator. E2e integration (#35325)
  • [Core][Streaming Generator] Support async actor and async generator interface. (#35584)
  • [Core][Streaming Generator] Streaming Generator. Support the basic retry/lineage reconstruction (#35768)
  • [Core][Streaming Generator] Allow to raise an exception to avoid check failures. (#35766)
  • [Core][Streaming Generator] Fix a reference leak when a stream is deleted with out of order writes. (#35591)
  • [Core][Streaming Generator] Fix a reference leak when pinning requests are received after refs are consumed. (#35712)
  • [Core][Streaming Generator] Handle out of order report when retry (#36069)
  • [Core][Streaming Generator] Make it compatible with wait (#36071)
  • [Core][Streaming Generator] Remove busy waiting (#36070)
  • [Core][Autoscaler v2] add test for node provider (#35593)
  • [Core][Autoscaler v2] add unit tests for NodeProviderConfig (#35590)
  • [Core][Autoscaler v2] test ray-installer (#35875)
  • [Core][Autoscaler v2] fix too many values to unpack (expected 2) bug (#36231)
  • [Core][Autoscaler v2] Add idle time information to Autoscaler endpoint. (#36918)
  • [Core][Autoscaler v2] Cherry picks change to Autoscaler intereface (#37407)
  • [Core][Autoscaler v2] Fix idle time duration when node resource is not updated periodically (#37121) (#37175)
  • [Core][Autoscaler v2] Fix pg id serialization with hex rather than binary for cluster state reporting #37132 (#37176)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Add instance id to ray [3/x] (#35649)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Add node type name to ray (#36714)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Add placement group's gang resource requests handling [4/x] (#35970)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Handle ReportAutoscalingState (#36768)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Interface [1/x] (#35549)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Node states and resource requests [2/x] (#35596)
  • [Core][Autoscaler v2] GCS Autoscaler V2: Support Autoscaler.sdk.request_resources [5/x] (#35846)
  • [Core][Autoscaler v2] Ray status interface [1/x] (#36894)
  • [Core][Autoscaler v2] Remove usage of grpcio from Autoscaler SDK (#36967)
  • [Core][Autoscaler v2] Update Autoscaler proto for default enum value (#36962)
  • [Core][Autoscalerv2] Update Autoscaler.proto / instance_manager.proto dependency (#36116)

💫 Enhancements:

  • [Core] Make some grpcio imports lazy (#35705)
  • [Core] Only instantiate gcs channels on driver (#36389)
  • [Core] Port GcsSubscriber to Cython (#35094)
  • [Core] Print out warning every 1s when sched_cls_id is greater than 100 (#35629)
  • [Core] Remove attrs dependency (#36270)
  • [Core] Remove dataclasses requirement (#36218)
  • [Core] Remove grpcio from Ray minimal dashboard (#36636)
  • [Core] Remove grpcio import from usage_lib (#36542)
  • [Core] remove import thread (#36293)
  • [Core] Remove Python grpcio from check_health (#36304)
  • [Core] Retrieve the token from GCS server [4/n] (#37003) (#37294)
  • [Core] Retry failed redis request (#35249)
  • [Core] Sending ReportWorkerFailure after the process died. (#35320)
  • [Core] Serialize auto-inits (#36127)
  • [Core] Support auto-init ray for get_runtime_context() (#35903)
  • [Core] Suppress harmless ObjectRefStreamEndOfStreamError when using asyncio (#37062) (#37200)
  • [Core] Unpin grpcio and make Ray run on mac M1 out of the box (#35932)
  • [Core] Add a better error message for health checking network failures (#36957) (#37366)
  • [Core] Add ClusterID to ClientCallManager [2/n] (#36526)
  • [Core] Add ClusterID token to GCS server [3/n] (#36535)
  • [Core] Add ClusterID token to GRPC server [1/n] (#36517)
  • [Core] Add extra metrics for workers (#36973)
  • [Core] Add get_worker_id() to runtime context (#35967)
  • [Core] Add logs for Redis leader discovery for observability. (#36108)
  • [Core] Add metrics for object size distribution in object store (#37005) (#37110)
  • [Core] Add resource idle time to resource report from node. (#36670)
  • [Core] Check that temp_dir must be absolute path. (#36431)
  • [Core] Clear CPU affinity for worker processes (#36816)
  • [Core] Delete object spilling dead code path. (#36286)
  • [Core] Don't drop rpc status in favor of reply status (#35530)
  • [Core] Feature flag actor task logs with off by default (#35921)
  • [Core] Graceful handling of returning bundles when node is removed (#34726)
  • [Core] Graceful shutdown in TaskEventBuffer destructor (#35857)
  • [Core] Guarantee the ordering of put ActorTaskSpecTable and ActorTable (#35683)
  • [Core] Introduce fail_on_unavailable option for hard NodeAffinitySchedulingStrategy (#36718)
  • [Core] Make “import” ray work without grpcio (#35737)
  • [Core][dashboard] Add task name in task log magic token (#35377)
  • [Core][deprecate run_function_on_all_workers 3/n] delete run_function_on_all_workers (#30895)
  • [Core][devex] Move ray/util build targets to separate build files (#36598)
  • [Core][logging][ipython] Fix log buffering when consecutive runs within ray log dedup window (#37134) (#37174)
  • [Core][Logging] Switch worker_setup_hook to worker_process_setup_hook (#37247) (#37463)
  • [Core][Metrics] Use Autoscaler-emitted metrics for pending/active/failed nodes. (#35884)
  • [Core][state] Record file offsets instead of logging magic token to track task log (#35572)
  • [CI] [Minimal install] Check python version in minimal install (#36887)
  • [CI] second try of fixing vllm example in CI #36712
  • [CI] skip vllm_example #36665
  • [CI][Core] Add more visbility into state api stress test (#36465)
  • [CI][Doc] Add windows 3.11 wheel support in doc and CI #37297 (#37302)
  • [CI][py3.11] Build python wheels on mac os for 3.11 (#36185)
  • [CI][python3.11] windows 3.11 wheel build
  • [CI][release] Add mac 3.11 wheels to release scripts (#36396)
  • [CI] Update state api scale test (#35543)
  • [Release Test] Fix dask on ray 1tb sort failure. (#36905)
  • [Release Test] Make the cluster name unique for cluster launcher release tests (#35801)
  • [Test] Deflakey gcs fault tolerance test in mac os (#36471)
  • [Test] Deflakey pubsub integration_test (#36284)
  • [Test] Change instance type to r5.8xlarge for dask_on_ray_1tb_sort (#37321) (#37409)
  • [Test] Move generators test to large (#35747)
  • [Test][Core] Handled the case where memories is empty for dashboard test (#35979)

🔨 Fixes:

  • [Core] Fix GCS FD usage increase regression. (#35624)
  • [Core] Fix issues with worker churn in WorkerPool (#36766)
  • [Core] Fix proctitle for generator tasks (#36928)
  • [Core] Fix ray.timeline() (#36676)
  • [Core] Fix raylet memory leak in the wrong setup. (#35647)
  • [Core] Fix test_no_worker_child_process_leaks (#35840)
  • [Core] Fix the GCS crash when connecting to a redis cluster with TLS (#36916)
  • [Core] Fix the race condition where grpc requests are handled while c… (#37301)
  • [Core] Fix the recursion error when async actor has lots of deserialization. (#35494)
  • [Core] Fix the segfault from Opencensus upon shutdown (#36906) (#37311)
  • [Core] Fix the unnecessary logs (#36931) (#37313)
  • [Core] Add a special head node resource and use it to pin the serve controller to the head node (#35929)
  • [Core] Add debug log for serialized object size (#35992)
  • [Core] Cache schema and test (#37103) (#37201)
  • [Core] Fix 'ray stack' on macOS (#36100)
  • [Core] Fix a wrong metrics setup link from the doc. (#37312) (#37367)
  • [Core] Fix lint (#35844)(#36739)
  • [Core] Fix literalinclude path (#35660)
  • [Core] Fix microbenchmark (#35823)
  • [Core] Fix single_client_wait_1k perf regression (#35614)
  • [Core] Get rid of shared_ptr for GcsNodeManager (#36738)
  • [Core] Remove extra step in M1 installation instructions (#36029)
  • [Core] Remove unnecessary AsyncGetResources in NodeManager::NodeAdded (#36412)
  • [Core] Unskip test_Autoscaler_shutdown_node_http_everynode (#36420)
  • [Core] Unskip test_get_release_wheel_url for mac (#36430)

📖 Documentation:

  • [Doc] Clarify that session can also mean a ray cluster (#36422)
  • [Doc] Fix doc build on M1 (#35689)
  • [Doc] Fix documentation failure due to typing_extensions (#36732)
  • [Doc] Make doc code snippet testable [3/n] (#35407)
  • [Doc] Make doc code snippet testable [4/n] (#35506)
  • [Doc] Make doc code snippet testable [5/n] (#35562)
  • [Doc] Make doc code snippet testable [7/n] (#36960)
  • [Doc] Make doc code snippet testable [8/n] (#36963)
  • [Doc] Some instructions on how to size the head node (#36429)
  • [Doc] Fix doc for runtime-env-auth (#36421)
  • [Doc][dashboard][state] Promote state api and dashboard usage in Core user guide. (#35760)
  • [Doc][python3.11] Update mac os wheels built link (#36379)
  • [Doc] [typo] Rename acecelerators.md to accelerators.md (#36500)

Many thanks to all those who contributed to this release!

@ericl, @ArturNiederfahrenhorst, @sihanwang41, @scv119, @aslonnie, @bluecoconut, @alanwguo, @krfricke, @frazierprime, @vitsai, @amogkam, @GeneDer, @jovany-wang, @gjoliver, @simran-2797, @rkooo567, @shrekris-anyscale, @kevin85421, @angelinalg, @maxpumperla, @kouroshHakha, @Yard1, @chaowanggg, @justinvyu, @fantow, @Catch-Bull, @cadedaniel, @ckw017, @hora-anyscale, @rickyyx, @scottsun94, @XiaodongLv, @SongGuyang, @RocketRider, @stephanie-wang, @inpefess, @peytondmurray, @sven1977, @matthewdeng, @ijrsvt, @MattiasDC, @richardliaw, @bveeramani, @rynewang, @woshiyyya, @can-anyscale, @omus, @eax-anyscale, @raulchen, @larrylian, @Deegue, @Rohan138, @jjyao, @iycheng, @akshay-anyscale, @edoakes, @zcin, @dmatrix, @bryant1410, @WanNJ, @architkulkarni, @scottjlee, @JungeAlexander, @avnishn, @harisankar95, @pcmoritz, @wuisawesome, @mattip

View originalPermalink
How 2.6.0 went
2.5.1

Ray-2.5.1

Added 1
  • Build Python wheels on Mac OS for Python 3.11
Fixed 3
  • Don't error on eventual success when running with auto-recovery in Ray Train
  • Fix a bug that can cause undefined behavior when clusters attempt to scale up aggressively in Autoscaler
  • Fix mypy error where module "ray" does not explicitly export attribute "remote"

The Ray 2.5.1 patch release adds wheels for MacOS for Python 3.11. It also contains fixes for multiple components, along with fixes for our documentation.

Ray Train

🔨 Fixes:

  • Don't error on eventual success when running with auto-recovery (#36266)
Ray Core

🎉 New Features:

  • Build Python wheels on Mac OS for Python 3.11 (#36373)

🔨 Fixes:

  • [Autoscaler] Fix a bug that can cause undefined behavior when clusters attempt to scale up aggressively. (#36241)
  • Fix mypy error: Module "ray" does not explicitly export attribute "remote" (#36356)
View originalPermalink
How 2.5.1 went
2.5.0

Ray-2.5.0

Added 10
  • Support for checkpointing distributed models in Ray Train
  • PyTorch Lightning FSDP support in LightningTrainer to enable training large models on Ray Train
  • Support for streaming responses and model multiplexing in Ray Serve and Core for LLM applications
  • Support for multi-GPU training in RLlib
  • Enable lightweight resource broadcasting feature in Ray Core to improve reliability and scalability
  • Add column API to Dataset
Changed 6
  • Enable strict mode by default in Ray Data, requiring schemas for all Datasets and removing support for standalone Python objects
  • Set default batch format to NumPy in Ray Data for better performance in batch inference
  • Add RunConfig.storage_path to replace SyncConfig.upload_dir and RunConfig.local_dir
  • Use Ray storage URI as default storage path if configured
  • Use wait based prefetcher by default in Ray Data
  • Require compute spec to be explicitly spelled out
Fixed 4
  • Fix bugs in handling of nested ndarrays and other complex object types
  • Fix backpressure handling when reading directly from input datasource
  • Fix backpressure handling of queued actor pool tasks
  • Fix row count after applying filter

The Ray 2.5 release features focus on a number of enhancements and improvements across the Ray ecosystem, including:

  • Training LLMs with Ray Train: New support for checkpointing distributed models, and Pytorch Lightning FSDP to enable training large models on Ray Train’s LightningTrainer
  • LLM applications with Ray Serve & Core: New support for streaming responses and model multiplexing
  • Improvements to Ray Data: In 2.5, strict mode is enabled by default. This means that schemas are required for all Datasets, and standalone Python objects are no longer supported. Also, the default batch format is fixed to NumPy, giving better performance for batch inference.
  • RLlib enhancements: New support for multi-gpu training, along with ray-project/rllib-contrib to contain the community contributed algorithms
  • Core enhancements: Enable new feature of lightweight resource broadcasting to improve reliability and scalability. Add many enhancements for Core reliability, logging, scheduler, and worker process.

Ray Libraries

Ray AIR

💫Enhancements:

  • Experiment restore stress tests (#33706)
  • Context-aware output engine
    • Add parameter columns to status table (#35388)
    • Context-aware output engine: Add docs, experimental feature docs, prepare default on (#35129)
    • Fix trial status at end (more info + cut off) (#35128)
    • Improve leaked mentions of Tune concepts (#35003)
    • Improve passed time display (#34951)
    • Use flat metrics in results report, use Trainable._progress_metrics (#35035)
    • Print experiment information at experiment start (#34952)
    • Print single trial config + results as table (#34788)
    • Print out worker ip for distributed train workers. (#33807)
    • Minor fix to print configuration on start. (#34575)
    • Check air_verbosity against None. (#33871)
    • Better wording for empty config. (#33811)
  • Flatten config and metrics before passing to mlflow (#35074)
  • Remote_storage: Prefer fsspec filesystems over native pyarrow (#34663)
  • Use filesystem wrapper to exclude files from upload (#34102)
  • GCE test variants for air_benchmark and air_examples (#34466)
  • New storage path configuration
    • Add RunConfig.storage_path to replace SyncConfig.upload_dir and RunConfig.local_dir. (#33463)
    • Use Ray storage URI as default storage path, if configured [no_early_kickoff] (#34470)
    • Move to new storage_path API in tests and examples (#34263)

🔨 Fixes:

  • Store unflattened metrics in _TrackedCheckpoint (#35658) (#35706)
  • Fix test_tune_torch_get_device_gpu race condition (#35004)
  • Deflake test_e2e_train_flow.py (#34308)
  • Pin deepspeed version for now to unblock ci. (#34406)
  • Fix AIR benchmark configuration link failure. (#34597)
  • Fix unused config building function in lightning MNIST example.

📖Documentation:

  • Change doc occurrences of ray.data.Dataset to ray.data.Datastream (#34520)
  • DreamBooth example: Fix code for batch size > 1 (#34398)
  • Synced tabs in AIR getting started (#35170)
  • New Ray AIR link for try it out (#34924)
  • Correctly Render the Enumerate Numbers in convert_torch_code_to_ray_air (#35224)
Ray Data Processing

🎉 New Features:

  • Implement Strict Mode and enable it by default.
  • Add column API to Dataset (#35241)
  • Configure progress bars via DataContext (#34638)
  • Support using concurrent actors for ActorPool (#34253)
  • Add take_batch API for collecting data in the same format as iter_batches and map_batches (#34217)

💫Enhancements:

  • Improve map batches error message for strict mode migration (#35368)
  • Improve docstring and warning message for from_huggingface (#35206)
  • Improve notebook widget display (#34359)
  • Implement some operator fusion logic for the new backend (#35178 #34847)
  • Use wait based prefetcher by default (#34871)
  • Implement limit physical operator (#34705 #34844)
  • Require compute spec to be explicitly spelled out #34610
  • Log a warning if the batch size is misconfigured in a way that would grossly reduce parallelism for actor pool. (#34594)
  • Add alias parameters to the aggregate function, and add quantile fn (#34358)
  • Improve repr for Arrow Table and pandas types (#34286 #34502)
  • Defer first block computation when reading a Datasource with schema information in metadata (#34251)
  • Improve handling of KeyboardInterrupt (#34441)
  • Validate aggregation key in Aggregate LogicalOperator (#34292)
  • Add usage tag for which block formats are used (#34384)
  • Validate sort key in Sort LogicalOperator (#34282)
  • Combine_chunks before chunking pyarrow.Table block into batches (#34352)
  • Use read stage name for naming Data-read tasks on Ray Dashboard (#34341)
  • Update path expansion warning (#34221)
  • Improve state initialization for ActorPoolMapOperator (#34037)

🔨 Fixes:

  • Fix ipython representation (#35414)
  • Fix bugs in handling of nested ndarrays (and other complex object types) (#35359)
  • Capture the context when the dataset is first created (#35239)
  • Cooperatively exit producer threads for iter_batches (#34819)
  • Autoshutdown executor threads when deleted (#34811)
  • Fix backpressure when reading directly from input datasource (#34809)
  • Fix backpressure handling of queued actor pool tasks (#34254)
  • Fix row count after applying filter (#34372)
  • Remove unnecessary setting of global logging level to INFO when using Ray Data (#34347)
  • Make sure the tf and tensor iteration work in dataset pipeline (#34248)
  • Fix '_unwrap_protocol' for Windows systems (#31296)

📖Documentation:

  • Add batch inference object detection example (#35143)
  • Refine batch inference doc (#35041)
Ray Train

🎉 New Features:

  • Experimental support for distributed checkpointing (#34709)

💫Enhancements:

  • LightningTrainer: Enable prog bar (#35350)
  • LightningTrainer enable checkpoint full dict with FSDP strategy (#34967)
  • Support FSDP Strategy for LightningTrainer (#34148)

🔨 Fixes:

  • Fix HuggingFace -> Transformers wrapping logic (#35276, #35284)
  • LightningTrainer always resumes from the latest AIR checkpoint during restoration. (#35617) (#35791)
  • Fix lightning trainer devices setting (#34419)
  • TorchCheckpoint: Specifying pickle_protocol in torch.save() (#35615) (#35790)

📖Documentation:

  • Improve visibility of Trainer restore and stateful callback restoration (#34350)
  • Fix rendering of diff code-blocks (#34355)
  • LightningTrainer Dolly V2 FSDP Fine-tuning Example (#34990)
  • Update LightningTrainer MNIST example. (#34867)
  • LightningTrainer Advanced Example (#34082, #34429)

🏗 Architecture refactoring:

  • Restructure ray.train HuggingFace modules (#35270) (#35488)
  • rename _base_dataset to _base_datastream (#34423)
Ray Tune

🎉 New Features:

  • Ray Tune's new execution path is now enabled per default (#34840, #34833)

💫Enhancements:

  • Make `Tuner.restore(trainable=...) a required argument (#34982)
  • Enable tune.ExperimentAnalysis to pull experiment checkpoint files from the cloud if needed (#34461)
  • Add support for nested hyperparams in PB2 (#31502)
  • Release test for durable multifile checkpoints (#34860)
  • GCE variants for remaining Tune tests (#34572)
  • Add tune frequent pausing release test. (#34501)
  • Add PyArrow to ray[tune] dependencies (#34397)
  • Fix new execution backend for BOHB (#34828)
  • Add tune frequent pausing release test. (#34501)

🔨 Fixes:

  • Set config on trial restore (#35000)
  • Fix test_tune_torch_get_device_gpu race condition (#35004)
  • Fix a typo in tune/execution/checkpoint_manager state serialization. (#34368)
  • Fix tune_scalability_network_overhead by adding --smoke-test. (#34167)
  • Fix lightning_gpu_tune_.* release test (#35193)

📖Documentation:

  • Fix Tune tutorial (#34660)
  • Fix typo in Tune restore guide (#34247)

🏗 Architecture refactoring:

  • Use Ray-provided tabulate package (#34789)
Ray Serve

🎉 New Features:

  • Add support for json logging format.(#35118)
  • Add experimental support for model multiplexing.(#35399, #35326)
  • Added experimental support for HTTP StreamingResponses. (#35720)
  • Add support for application builders & arguments (#34584)

💫Enhancements:

  • Add more bucket size for histogram metrics. (#35242).
  • Add route information into the custom metrics. (#35246)
  • Add HTTPProxy details to Serve Dashboard UI (#35159)
  • Add status_code to http qps & latency (#35134)
  • Stream Serve logs across different drivers (#35070)
  • Add health checking for http proxy actors (#34944)
  • Better surfacing of errors in serve status (#34773)
  • Enable TLS on gRPCIngress if RAY_USE_TLS is on (#34403)
  • Wait until replicas have finished recovering (with timeout) to broadcast LongPoll updates (#34675)
  • Replace ClassNode and FunctionNode with Application in top-level Serve APIs (#34627)

🔨 Fixes:

  • Set app_msg to empty string by default (#35646)
  • Fix dead replica counts in the stats. (#34761)
  • Add default app name (#34260)
  • gRPC Deployment schema check & minor improvements (#34210)

📖Documentation:

  • Clean up API reference and various docstrings (#34711)
  • Clean up RayServeHandle and RayServeSyncHandle docstrings & typing (#34714)
RLlib

🎉 New Features:

  • Migrating approximately ~25 of the 30 algorithms from RLlib into rllib_contrib. You can review the REP here. This release we have covered A3C and MAML.
  • The APPO / IMPALA and PPO are all moved to the new Learner and RLModule stack.
  • The RLModule now supports Checkpointing.(#34717 #34760)

💫Enhancements:

  • Introduce experimental larger than GPU train batch size feature for torch (#34189)
  • Change occurences of "_observation_space_in_preferred_format" to "_obs_space_in_preferred_format" (#33907)
  • Add a flag to allow disabling initialize_loss_from_dummy_batch logit. (#34208)
  • Remove check specs from default Model forward code path to improve performance (#34877)
  • Remove some specs from encoders to smoothen dev experience (#34911)

🔨 Fixes:

  • Fix MultiCallbacks class: To be used only with utility function that returns a class to use in the config. (#33863)
  • Fix test backward compatibility test for RL Modules (#33857)
  • Don't serialize config in Policy states (unless needed for msgpack-type checkpoints). (#33865)
  • DM control suite wrapper fix: dtype of obs needs to be pinned to float32. (#33876)
  • In the Json_writer convert all non string keys to keys (#33896)
  • Fixed a bug with kl divergence calculation of torch.Dirichlet distribution within RLlib (#34209)
  • Change broken link in parameter_noise.py (#34231)
  • Fixed bug in restoring a gpu trained algorithm (#35024)
  • Fix IMPALA/APPO when using multi GPU setup and Multi-Agent Env (#35120)

📖Documentation:

  • Add examples and docs for Catalog (#33898)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Support both sync and async actor generator interface. (#35584 #35708 #35324 #35656 #35803 #35794 #35707)

💫Enhancements:

  • [Scheduler] Introduce spill_on_unavailable option for soft NodeAffinitySchedulingStrategy (#34224)
  • [Data] Use wait based prefetcher by default (#34871)
  • [Reliability] During GCS restarts, grpc based resource broadcaster should only add ALIVE nodes during initialization (#35349)
  • [Reliability] Guarantee the ordering of put ActorTaskSpecTable and ActorTable (#35683) (#35718)
  • [Reliability] Graceful handling of returning bundles when node is removed (#34726) (#35542)
  • [Reliability] Task backend - marking tasks failed on worker death (#33818)
  • [Reliability] Task backend - Add worker dead info to failed tasks when job exits. (#34166)
  • [Logging] Make ray.get(timeout=0) to throw timeout error (#35126)
  • [Logging] Provide good error message if the factional resource precision is beyond 0.0001 (#34590)
  • [Logging] Add debug logs to show UpdateResourceUsage rpc source (#35062)
  • [Logging] Add actor_id as an attribute of RayActorError when the actor constructor fails (#34958)
  • [Logging] Worker startup hook (#34738)
  • [Worker] Partially addresses ray child process leaks by killing all child processes in the CoreWorker shutdown sequence. (#33976)
  • [Worker] Change worker niceness in job submission environment (#34727)
  • Shorten the membership checking time to 5 seconds. (#34769)
  • [Syncer] Remove spammy logs. (#34654)
  • [Syncer] Delete disconnected node view in ray syncer when connection is broken. (#35312)
  • [Syncer] Turn on ray syncer again. (#35116)
  • [Syncer] Start ray syncer reconnection after a delay (#35115)
  • Serialize requests in the redis store client. (#35123)
  • Reduce self alive check from 60s to 5s. (#34992)
  • Add object owner and copy metrics to node stats (#35119)
  • Start the synchronization connection after receiving all nodes info. (#34645)
  • Improve the workflow finding Redis leader. (#34108)
  • Make execute_after accept chrono (#35099)
  • Lazy import autoscaler + don't import opentelemetry unless setup hook (#33964)

🔨 Fixes:

  • [pubsub] Handle failures when publish fails. (#33115)
  • Convert gcs port read from env variable from str to int (#34482)
  • Fix download_wheels.sh wheel urls (#34616)
  • Fix ray start command output (#34081)
  • Fetch_local once for each object ref (#34884)
  • Combine_chunks before chunking pyarrow.Table block into batches (#34352)
  • Replace deprecated usage of get_runtime_context().node_id (#34874)
  • Fix std::move without std namespace (#34149)
  • Fix the recursion error when an async actor has lots of deserialization. (#35494) (#35532)
  • Fix async actor shutdown issue when exit_actor is used (#32407)
  • [Event] Fix incorrect event timestamp (#34402)
  • [Metrics] Fix shared memory is not displayed properly (#34301)
  • Fix GCS FD usage increase regression. (#35624) (#35738)
  • Fix raylet memory leak in the wrong setup. (#35647) (#35673)
  • Retry failed redis request (#35249) (#35481)
  • Add more messages when accessing a dead actor. (#34697)
  • Fix the placement group stress test regression. (#34192)
  • Mark Raylet unhealthy if GCS can't recognize it. (#34087)
  • Remove multiple core workers in one process 2/n (#34942)
  • Remove python 3.6 support (#34373 #34416)

📖Documentation:

  • Make doc code snippet testable (#35274 #35057)
  • Revamp ray core api reference [1/n] (#34428)
  • Add Ray core fault tolerance guide for GCS and node (#33446)
  • Ray Debugging Doc Part 1 (OOM) (#34309)
  • Rewrite the placement group documentation (#33518)
Ray Clusters

💫Enhancements:

  • [Docker] [runtime env] Bump boto3 version from 1.4.8 to 1.26.82, add pyOpenSSL and cryptography (#33273)
  • [Jobs] Fix race condition in supervisor actor creation and add timeout for pending jobs (#34223)
  • [Release test] [Cluster launcher] Add gcp minimal and full cluster launcher release test (#34878)
  • [Release test] [Cluster launcher] Add release test for aws example-full.yaml (#34487)

📖Documentation:

  • [runtime env] Clarify conditions for local pip and conda requirements files (#34071)
  • [KubeRay] Provide GKE instructions in KubeRay example (#33339)
  • [KubeRay] Update KubeRay doc for release v0.5.0 (#34178)
Dashboard

💫Enhancements:

  • Feature flag task logs recording (#34056)
  • Fix log proxy not loading non test/plain files. (#33870)
  • [no_early_kickoff] Make dashboard address connectable from remote nodes when not set to 127.0.0.1 (localhost) (#35027)
  • [state][job] Supporting job listing(getting) and logs from state API (#35124)
  • [state][ci] Fix stress_test_state_api_scale (#35332)
  • [state][dashboard][log] Fix subdirectory log getting (#35283)
  • [state] Push down filtering to GCS for listing/getting task from state api (#35109)(#34433)
  • [state] Task log - Improve log tailing from log_client and support tailing from offsets [2/4] (#28188)
  • [state] Use --err flag to query stderr logs from worker/actors instead of --suffix=err (#34300)
  • [state][no_early_kickoff] Make state api return results that are strongly typed (#34297)
  • [state] Efficient get/list actors with filters on some high-cardinality fields (#34348)
  • [state] Fix list nodes test in test_state_api.py (#34349)
  • [state] Add head node flag is_head_node to state API and GcsNodeInfo (#34299)
  • Make actor tasks' name default to <actor_repr>.<task_name> (#35371)
  • Task backend GC policy - worker update [1/3] (#34896)
  • [state] Support task logs from state API (#35101)
Known Issues
  • A bug in the Autoscaler can cause undefined behaviour when clusters attempt to scale up aggressively. This is fixed in following releases, as well as post-release on the 2.5.0 branch (#36482).

Many thanks to all those who contributed to this release!

@vitsai, @XiaodongLv, @justinvyu, @Dan-Yeh, @dependabot[bot], @alanwguo, @grimreaper, @yiwei00000, @pomcho555, @ArturNiederfahrenhorst, @maxpumperla, @jjyao, @ijrsvt, @sven1977, @Yard1, @pcmoritz, @c21, @architkulkarni, @jbedorf, @amogkam, @ericl, @jiafuzha, @clarng, @shrekris-anyscale, @matthewdeng, @gjoliver, @jcoffi, @edoakes, @ethanabrooks, @iycheng, @Rohan138, @angelinalg, @Linniem, @aslonnie, @zcin, @wuisawesome, @Catch-Bull, @woshiyyya, @avnishn, @jjyyxx, @jianoaix, @bveeramani, @sihanwang41, @scottjlee, @YQ-Wang, @mattip, @can-anyscale, @xwjiang2010, @fedassembly, @joncarter1, @robin-anyscale, @rkooo567, @DACUS1995, @simran-2797, @ProjectsByJackHe, @zen-xu, @ashahab, @larrylian, @kouroshHakha, @raulchen, @sofianhnaide, @scv119, @nathan-az, @kevin85421, @rickyyx, @Sahar-E, @krfricke, @chaowanggg, @peytondmurray, @cadedaniel

View originalPermalink
How 2.5.0 went
2.4.0

Ray-2.4.0

Added 15
  • Introduce LightningTrainer to scale PyTorch Lightning on Ray
  • Release AccelerateTrainer to run HuggingFace Accelerate and DeepSpeed on Ray
  • Add examples for GPT-J fine-tuning with Microsoft DeepSpeed and Ray Train
  • Add examples for GPT-J-6B batch prediction with Ray Data
  • Add examples for GPT-J-6B serving with Ray Serve
  • Add examples for Stable Diffusion Dreambooth fine-tuning with Ray Train
Changed 4
  • Make Preprocessor.transform lazy by default
  • Make BatchPredictor lazy
  • Enhance logging and metrics for Serve applications
  • Replace ray_lightning integration with LightningTrainer for latest PyTorch Lightning compatibility
Deprecated 1
  • Ray 2.4 is the last version that supports Python 3.6

Ray 2.4 - Generative AI and LLM support

Over the last few months, we have seen a flurry of innovative activity around generative AI models and large language models (LLM). To continue our effort to ensure Ray provides a pivotal compute substrate for generative AI workloads and addresses the challenges (as explained in our blog series), we have invested engineering efforts in this release to ensure that these open source LLM models and workloads are accessible to the open source community and performant with Ray.

This release includes new examples for training, batch inference, and serving with your own LLM.

Generative AI and LLM Examples
Ray Train enhancements
  • We're introducing the LightningTrainer, allowing you to scale your PyTorch Lightning on Ray. As part of our continued effort for seamless integration and ease of use, we have enhanced and replaced our existing ray_lightning integration, which was widely adopted, with the latest changes to Pytorch Lighting.
  • we’re releasing an AccelerateTrainer, allowing you to run HuggingFace Accelerate and DeepSpeed on Ray with minimal code changes. This Trainer integrates with the rest of the Ray ecosystem—including the ability to run distributed hyperparameter tuning with each trial being a distributed training job.
Ray Data highlights
  • Streaming execution is enabled by default, providing users with a more efficient data processing pipeline that can handle larger datasets and minimize memory consumption. Check out the docs here: (doc)
    • Note that this means data output may no longer preserve the original order in more cases. To retain the original ordering properties of Ray Data prior to 2.4, you can set the config ray.data.DatasetContext.get_current().execution_options.preserve_order = True.
  • We've implemented asynchronous batch prefetching of Dataset.iter_batches (doc), improving performance by fetching data in parallel while the main thread continues processing, thus reducing waiting time.
  • Support reading SQL databases (doc), enabling users to seamlessly integrate relational databases into their Ray Data workflows.
  • Introduced support for reading WebDataset (doc), a common format for high-performance deep learning training jobs.
Ray Serve highlights
  • Multi-app CLI & REST API support is now available, allowing users to manage multiple applications with different configurations within a single Ray Serve deployment. This simplifies deployment and scaling processes for users with multiple applications. (doc)
  • Enhanced logging and metrics for Serve applications, giving users better visibility into their application's performance and facilitating easier debugging and monitoring. (doc)
Other enhancements

Ray Libraries

Ray AIR

💫Enhancements:

  • Add nightly test for alpa opt 30b inference. (#33419)
  • Add a sanity checking release test for Alpa and ray nightly. (#32995)
  • Add TorchDetectionPredictor (#32199)
  • Add artifact_location, run_name to MLFlow integration (#33641)
  • Add *path properties to Result and ResultGrid (#33410)
  • Make Preprocessor.transform lazy by default (#32872)
  • Make BatchPredictor lazy (#32510, #32796)
  • Use a configurable ray temp directory for the TempFileLock util (#32862)
  • Add collate_fn to iter_torch_batches (#32412)
  • Allow users to pass Callable[[torch.Tensor], torch.Tensor] to TorchVisionTransform (#32383)
  • Automatically move DatasetIterator torch tensors to correct device (#31753)

🔨 Fixes:

  • Fix use_gpu with HuggingFacePredictor (#32333)
  • Make Keras Callback raise DeprecationWarning (#33775)
  • Pin framework to tf in AIR rl offline trainer example (#33750)
  • Fix test_tracked_actor (#33075)
  • Label Checkpoint.from_checkpoint as developer API (#33094)
  • Don't make lock files when moving dirs (#32924)
  • avoid inconsistency of create filesystem from uri for hdfs case (#30611)
  • Fix DatasetIterator backwards compability (#32526)
  • Fix CountVectorizer failing with big data (#32351)
  • Fix NoneType error loading TorchCheckpoint through from_uri. (#32386)
  • Fix dtype type hint in DLPredictor methods (#32198)
  • Allow None in set_preprocessor (#33088)

📖Documentation:

  • Add dreambooth example + release test (#33025)
  • GPT-J fine tuning with DeepSpeed example (#33090)
  • GPT-J Serving Example (#33114)
  • Add object detection example (#31553)
  • Add computer vision guide (#32885)
  • Add Pytorch ResNet batch prediction example (#32470)
  • Large model inference examples (#32874)
  • Add data ingestion clarification for AIR converting existing pytorch code example (#32058)
  • Add BatchPredictor.from_checkpoint to docs (#32877)
  • Fix wording of Many model training guidance (#32319)
  • Add required dependencies for batch prediction notebook (#33897)
  • Added link to preprocessors in Ray AIR Key Concepts page (#33526)
  • Rewording in analyze_tuning_results.ipynb (#32671)

🏗 Architecture refactoring:

  • Deprecations for 2.4 (#33765)
  • Deprecate TensorflowCheckpoint.get_model model_definition parameter (#33776)
Ray Data Processing

🎉 New Features:

  • Enable streaming execution by default (#32493)
  • Support asynchronous batch prefetching of Dataset.iter_batches() (#33620)
  • Introduce Dataset.materialize() API (#34184)
  • Add Dataset.streaming_split() API (#32991)
  • Support reading SQL databases with ray.data.read_sql() (#33353)
  • Support reading WebDataset with ray.data.read_webdataset() (#33336)
  • Allow generator UDFs for Dataset.map_batches() and flat_map() (#32767)
  • Add collate_fn to Dataset.iter_torch_batches() (#32412)
  • Add support for ignore_missing_paths in reading Datasource (#33126)

💫Enhancements:

  • Deprecate Dataset.lazy() (#33812)
  • Deprecate Dataset.dataset_format() (#33437)
  • Deprecate Dataset.fully_executed() and Dataset.is_fully_executed() (#33342)
  • Deprecate Datasource.do_write() (#32015)
  • Add iter_rows to DatasetIterator (#33180)
  • Support optional tf_schema parameter in read_tfrecords() and write_tfrecords() (#32857)
  • Add Dataset.iter_batches(batch_format=None) support, which will yield batches in the current batch format with zero copies (#33562)
  • Add meta_provider parameter into read_images (#33791)
  • Add missing passthrough args to Dataset.read_images() (#32942)
  • Allow read_binary_files(output_arrow_format=True) to return Arrow format (#33780)
  • Improve performance of DefaultFileMetaProvider (#33117)
  • Improved naming of Ray Data map tasks for dashboard (#32585)
  • Support different numbers of blocks/rows per block in Dataset.zip() (#32795)
  • No preserve order by default for streaming execution (#32300)
  • Make write an operator as part of the execution plan (#32015)
  • Optimize metadata creation for RangeDatasource (#33712)
  • Add telemetry for Ray Data (#32896)
  • Make BatchPredictor lazy (#32510)
  • Make Preprocessor.transform lazy by default (#32872)
  • Allow users to pass Callable[[torch.Tensor], torch.Tensor] to TorchVisionTransform (#32383)
  • Automatically move DatasetIterator torch tensors to correct device (#31753)
  • Promote _create_strict_ragged_ndarray to public API (#31975)
  • Add support for string tensor columns in ArrowTensorArray and ArrowVariableShapedTensorArray (#32143)

🔨 Fixes:

  • Data layer performance/bug fixes and tweaks (#32744)
  • Clean up RAY_DATASET_FORCE_LOCAL_METADATA flag (#32483)
  • Fix Datasource write_results type (#33936)
  • Add objects GC in dataset iterator (#34030, #34141)
  • Fix to_pandas failure on datasets returned by from_spark() (#32968)
  • Fix zip stage to preserve order when executing the other side (#33649)
  • Fix _get_read_tasks to use NodeAffinitySchedulingStrategy (#33212)
  • Guard against using ipywidgets in google colab (#32841)
  • Fix from_items parallelism to create the expected number of blocks (#32821)
  • Always preserve order for the BulkExecutor (#32437)

📖Documentation:

  • Fix Ragged Tensor Documentation (#33029)
Ray Train

🎉 New Features:

  • The LightningTrainer has been revamped
    • [Doc] LightningTrainer end-2-end starter example [no_early_kickoff] (#33494)
    • Lightning Trainer Release tests + docstring sample test (#33323)
    • Support metric logging and checkpointing for LightningTrainer (#33183)
    • Add LightningTrainer to support Pytorch Lightning DDP training <Part 1>. (#33161)
    • Add LightningPredictor to support batch prediction (#33196)
    • Support metric logging and checkpointing for LightningTrainer (#33183)
  • Implement AccelerateTrainer (#33269)
  • Add Trainer.restore API for train experiment-level fault tolerance (#31920)
  • Ray Train telemetry to collect the AIR trainer type (#33277)

💫Enhancements:

  • Recommend Trainer.restore on errors raised by trainer.fit() (#33610)
  • Improve lazy checkpointing (#32233)
  • Sort CUDA_VISIBLE_DEVICES (#33159)
  • Support returning multiple devices in train.torch.get_device() (#32893)
  • Set torch.distributed env vars (#32450)
  • Use the actual task name being executed for _RayTrainWorker__execute. (#33065)

🔨 Fixes:

  • Fix the import path for LightningTrainer to be compatible with Pytorch Lightning 2.0. (#34033)
  • Pin framework to tf in AIR rl offline trainer example (#33750)
  • Fix HF Trainer with DatasetIterator, handle device_map (#32955)
  • Fix failing test_torch_trainer (#32963)
  • Deflake test_gpu by sorting the devices (#33002)
  • (Bandaid) Mitigate OOMs on checkpointing (#33089)
  • Empty cache on the correct device (#33603)

📖Documentation:

  • [Doc] Improve AIR Lightning APIs and docstrings (#33895)
  • Update quickstart example to use dataloader (#33050)
  • add intro content from training module (#32088)
  • Add back important Ray Train integration methods (for Torch/TF) (#32551)
  • Restructure API reference (#32360)
  • Add Pytorch ResNet finetuning starter example (#32936)

🏗 Architecture refactoring:

  • Hard deprecate Backend encode_data/decode_data (#33784)
Ray Tune

🎉 New Features:

  • Add new experimental execution path
    • Add TuneController (#33499)
    • Refactor TrialRunner to separate out executor calls (#33448)
    • Move trainable_kwargs generation to trial.py (#33249)
    • Move experiment state/checkpoint/resume management into a separate file (#32457)
    • Cache ready futures in RayTrialExecutor (#32093)
    • Use generic _ObjectCache for actor reuse (#33045)
    • Event manager part 2: Implementation (#31811)
  • Add new experimental output format
    • Add new console output code path (behind feature flag) (#33609)
    • Fix new output path with new execution path (#33880)
    • Fix OrderedDict import. (#33709)
    • Fix Ray Tune output v2 failures (#33697)
    • Update wording to "Logical Resource Usage". (#33312)
    • clean up tune/train result output (#32234)
    • Add unit test to experimental/output.py (#33767)
  • Ray Tune Telemetry to collect entrypoint and searchers/scheduler usage (#33740)

💫Enhancements:

  • Experiment restore/resume
    • Allow re-specifying param space in Tuner.restore (#32317)
    • Replace reference values in a config dict with placeholders (#31927)
    • Add Tuner.can_restore(path) utility for checking if an experiment exists at a path/uri (#32003)
    • Update Tuner.restore usage to prepare for trainable becoming a required arg (#32912)
    • Fix resuming from cloud storage (+ test) (#32504)
  • Syncing to cloud storage
    • Sync trial artifacts to cloud (#32334)
    • Fix ensure directory in bucket path sync (#33692)
    • Sync less often and only wait at end of experiment (#32155)
    • Unrevert "Add more comprehensive support for remote_checkpoint_dir w/ url params (#32479)" (#32576)
    • Use on_experiment_end hook for the final wait of SyncCallback sync processes (#33390)
    • Cleanup path-related properties in experiment classes (#33370)
    • Update trainable remote_checkpoint_dir upon actor reuse (#32420)
    • Add use_threads=False in pyarrow syncing (#32256)
  • Better support for multi-tenancy
    • Prefix global object registry with job ID to avoid conflicts in multi tenancy (#33095)
    • Add test for multi-tenancy workaround and documentation to FAQ (#32560)
    • release test for nested air (tune) oom (#31768)
  • Fault tolerance improvements
    • Add Tune worker fault tolerance test (#33473)
    • Improve logging, unify trial retry logic, improve trial restore retry test. (#32242)
  • Integrations
    • [wandb] Wait for WandbLoggerCallback actors to finish uploading to wandb on experiment end (#33174)
    • [air] Aim logger (#32041)

🔨 Fixes:

  • ExperimentAnalysis: Ignore empty checkpoints but don't fail (#33770)
  • TrialRunner checkpointing shouldn't fail if ray.data.Dataset w/o lineage captured in trial config (#33565)
  • Evict object cache for actor re-use when search ended (#33593)
  • Raise warning (not an exception) if metadata file not found in checkpoint (#33123)
  • remove deep copy in trial.__getstate__ (#32624)
  • Fix "ValueError: I/O operation on closed file" (#31269)

📖Documentation:

  • Restructure API reference (#32311)
  • Don't recommend tune.run API in logging messages when using the Tuner (#33642)
  • Split "Tune stopping and resuming" into two user guides (#33495)
  • Remove Ray Client references from Tune and Train docs/examples (#32299)
  • Add tune checkpoint user guide. (#33145)
  • improve log_to_file doc. (#32128)
  • Fix broken Tune links to overview and intergration (#32442)

🏗 Architecture refactoring:

  • Deprecation cycle
    • Hard deprecate Tune MLflow/W&B mixin/callbacks (#33782)
    • Fix two tests after structure refactor deprecation (#32517)
    • Remove deprecated Resources class (#32490)
    • Structure refactor: Raise on import of old modules (#32486)
Ray Serve

🎉 New Features:

  • Multi-app supports CLI and REST API.(#33347, #33490, #33300, #33216, #33013)

💫Enhancements:

  • Add telemetry for lightweight config updates (#34039)
  • Deployment & replica info automatically exist in user customized metrics.(33451)
  • Add route and request id in the ray serve log entry.(33365)
  • Add telemetry for common Serve usage patterns (#33505)
  • Add log_to_stderr option to logger and improve internal logging (#33597)
  • Make http retries tunable (#32532)
  • Extend configurable HTTP options (#33160)
  • Prevent mixing single/multi-app config deployment (#33340)
  • Expose FastAPI docs path (#32863)
  • Add http request latency (#32839)

🔨 Fixes:

  • Recover the pending actors during the controller failures (#33890)
  • Fix tensorarray to numpy conversion (#34115)
  • Allow app rename when redeploying config (#33385)
  • Fix traceback string for RayTaskErrors when deploying serve app (#33120)

📖Documentation:

  • Add serve example documentation for object detection, stable diffusion and (#33164)
RLlib

🎉 New Features:

  • RLModule API is available in Alpha. See details here. PPO has been migrated to this API but in a limited mode.
  • Catalog API is revamped to be consistent with RLModule. See details here.

💫Enhancements:

  • Default framework is now torch instead of tf. (#33603)
  • Hard deprecate the old rllib/agent folder (#33242)

🔨 Fixes:

  • [RLlib] Don't serialize config in Policy states (unless needed for msgpack-type checkpoints). (#33865)
  • [RLlib] Fix MultiCallbacks class: To be used only with utility function that returns a class to use in the config. (#33863)
  • [RLlib] DM control suite wrapper fix: dtype of obs needs to be pinned to float32. (#33876)
  • [RLlib] Fix apex dqn deprecated add_batch call (#33814)
  • [RLlib] AlgorithmConfig.update_from_dict needs to work for MultiCallbacks. (#33796)
  • [RLlib] Add dist_inputs to action sampler fn returns in TorchPolicyV2 (#33795)

📖Documentation:

  • Rewritten the API documentation for better discoverability.
    • [RLlib][Docs] Restructure RLModule API page (#33363)
    • [RLlib][Docs] Restructure Replay buffer API page (#33359)
    • [RLlib][Docs] Restructure Utils API page (#33358)
    • [RLlib][Docs] Restructure Sampler's API page (#33357)
    • [RLlib][Docs] Restructure Modelv2's API page (#33356)
    • [RLlib][Docs] Restructure Algorithm's API page (#33345)
    • [RLlib][Docs] Restructure Policy's API page (#33344)
  • [RLlib] Fix Getting Started example never returning (#33140)
Ray Core

🎉 New Features:

  • Ray officially support scale to up to 2000 nodes. See scalability envelope for more details.
  • Ray introduces an experimental API RAY_preload_python_modules to preload Python modules before tasks or actors are scheduled. This will eventually reduce startup time of Ray workloads that import large libraries. Please try it out and share feedback in #ray-preload-modules-feedback in the Ray Slack. To enable, configure the modules to preload via RAY_preload_python_modules=torch,tensorflow when starting Ray.

💫Enhancements:

  • Mark raylet unhealthy if GCS can't recognize it. (#34216)
  • Improve the workflow finding Redis leader.(#34183)
  • Improve Redis related observability when failed. (#33842)
  • Improve the serialization error for tasks, actors and ray.put (#33660)
  • Experimental preload_python_modules flag for preloading modules in default_worker (#33572)
  • Remove actor deletion upon job termination (#31019)
  • Better support per worker gpu usage from the cluster view. (#33515)
  • Task backend - Profile events capping (#33321)
  • Fifo worker killing policy (#33430)
  • Write ray address even if ray node is started with --block (#32961)
  • Turn on light weight resource broadcasting. (#32625)
  • Add opt-in flag for Windows and OSX clusters, update ray start output to match docs (#32409)

🔨 Fixes:

  • Fix arm64 wheels builds ((#34320)
  • Fix ray start command output(#34273)
  • Partially address Ray child process leaks by killing all child processes in the CoreWorker shutdown sequence. (#34181)
  • Ignore resource usage update from unknown node (#33619)
  • Fix keepalive in grpc client #33986
  • Autosummary class by default (#32983)
  • Fix non default dashboard_agent_listen_port not used when connected to the node (#33834)
  • Allow using local wheels to run release tests. (#32739)
  • Fix the error message when storage is not set. (#33581)
  • Fixing lint issue in benchmark_worker_startup (#33440)
  • Pin json-schema < 4.18 (#33412)
  • Fix demand leak when worker failed (#31175)
  • Remove some usage of deprecated runtime context apis (#33236)
  • Remove dead SchedulingResources class (#33250)
  • Release lock before sleeping (#33221)
  • Remove asyncio.ensure_future call in run_async_func_in_event_loop(#32932)
  • Upgrade gtest to 1.13 (#32858)
  • Update OpenCensus (#32553)
  • Remove usage_lib.LibUsageRecorder (#32806)
  • Fix the race condition in the new resource broadcasting. (#32798)
  • Task backend - disable verbose print. (#32764)
  • Building py37+cu118 and using cu116 in default ray-ml image (#32636)
  • Do not set flushing thread niceness for task backend #32439
  • Fix gRPC callback API destruction issues. (#32151)
  • Fix comments and a corner case in #32302 (#32323)
  • Script to compare perf metrics between releases (#32290)

📖Documentation:

  • Rewrite the placement group documentation (#34302)
  • Add tips of writing fault tolerant Ray applications (#32191)
  • Removed docs referring to ray client. (#32209)
  • Improve the streaming_split pydoc (#33424)
  • Add doc link for logs dedup (#33879)
Ray Clusters

💫Enhancements:

  • Added end to end release tests for example AWS cluster launcher YAML files (#32670)
Dashboard

🎉 New Features:

  • Ray serve releases its own dedicated dashboard! See the documentation for more details.
  • You can now access the error messages from every task and actor from the Ray dashboard.
  • Better out of memory debugging support. See the out of memory troubleshooting guide for more details.

🔨 Fixes:

  • Add the OOM failure graph (#34129)
  • Improve the existing OOM metrics (#33453)
  • Task backend - increase worker side GC limit to 100k (#33563)
  • Add device index to the GPU metrics (#33328)
  • Hide failed nodes by default. (#33455)
  • Add worker startup & initialization time to state API + use it for many_tasks (#31916)
  • Fix per component metrics bugs. (#33450)
  • Fix the incorrect object store size from dashboard vs metrics

Many thanks to all those who contributed to this release!

@zjf2012, @christy, @fyrestone, @avnishn, @scottjlee, @sijieamoy, @jjyao, @sven1977, @jamesclark-Zapata, @cadedaniel, @jovany-wang, @pcmoritz, @MaskRay, @csivanich, @augray, @wuisawesome, @Wendi-anyscale, @maxpumperla, @shawnpanda, @DmitriGekhtman, @yuduber, @gjoliver, @ju2ez, @clarkzinzow, @brycehuang30, @iycheng, @justinvyu, @dmatrix, @edoakes, @tmbdev, @scottsun94, @jianoaix, @cool-RR, @prrajput1199, @amogkam, @ckw017, @alanwguo, @architkulkarni, @chaowanggg, @AmeerHajAli, @stephanie-wang, @bewestphal, @matthew29tang, @dbczumar, @sihanwang41, @ericl, @soumitrak, @matthewdeng, @Catch-Bull, @peytondmurray, @XiaodongLv, @bveeramani, @YQ-Wang, @Linniem, @ProjectsByJackHe, @woshiyyya, @c21, @shrekris-anyscale, @zcin, @Yard1, @can-anyscale, @kouroshHakha, @robertnishihara, @richardliaw, @krfricke, @shomilj, @ArturNiederfahrenhorst, @ijrsvt, @GokuMohandas, @jbedorf, @xwjiang2010, @anydayeol, @clarng, @davidxia, @rickyyx, @Siraj-Qazi, @kira-lin, @scv119, @chengscott, @angelinalg, @rkooo567, @rshin, @deanwampler, @gramhagen, @larrylian, @WeichenXu123, @simonsays1980

View originalPermalink
How 2.4.0 went
2.3.1

Ray-2.3.1

Changed 2
  • Support different number of blocks/rows per block in zip()
  • Revert serve run to use Ray Client instead of Ray Jobs
Fixed 4
  • Fix issue with max_concurrent_queries being ignored when autoscaling
  • Write Ray address even if Ray node is started with --block
  • Fix Ray on Spark running on layered virtualenv python environment
  • Fix disk metric showing double the actual value

The Ray 2.3.1 patch release contains fixes for multiple components:

Ray Data Processing
Ray Serve
Ray Core
Dashboard
View originalPermalink
How 2.3.1 went
2.3.0

Ray-2.3.0

Added 9
  • Streaming backend for Ray Datasets in Developer Preview for terabyte-scale ML inference and training workloads
  • New Information Architecture for Ray dashboard organized around user personas and workflows in Beta
  • Ray-on-Spark is now available in Preview to launch Ray clusters on Databricks and Spark clusters
  • Add set_preprocessor method to Checkpoint
  • Introduce DatasetIterator
  • Add per-epoch preprocessor
Changed 8
  • Rename Keras callback and its parameters to be more descriptive
  • Rename WandB save_checkpoints to upload_checkpoints
  • Rename DLPredictor.call_model tensor parameter to inputs
  • Lazy execution by default for Ray Datasets
  • Introduce streaming execution backend
  • Use Ray actors instead of multiprocessing for WandbLoggerCallback
  • Change default NCCL_SOCKET_IFNAME to blacklist veth
  • Change ScalingConfig to be optional for DataParallelTrainers if already in Tuner param_space
Fixed 2
  • Fix and improve support for HDFS remote storage
  • Fix Imputer failing with categorical dtype
Deprecated 1
  • Deprecate MlflowTrainableMixin in favor of setup_mlflow() function

Release Highlights

  • The streaming backend for Ray Datasets is in Developer Preview. It is designed to enable terabyte-scale ML inference and training workloads. Please contact us if you'd like to try it out on your workload, or you can find the preview guide here: https://docs.google.com/document/d/1BXd1cGexDnqHAIVoxTnV3BV0sklO9UXqPwSdHukExhY/edit
  • New Information Architecture (Beta): We’ve restructured the Ray dashboard to be organized around user personas and workflows instead of entities.
  • Ray-on-Spark is now available (Preview)!: You can launch Ray clusters on Databricks and Spark clusters and run Ray applications. Check out the documentation to learn more.

Ray Libraries

Ray AIR

💫Enhancements:

  • Add set_preprocessor method to Checkpoint (#31721)
  • Rename Keras callback and its parameters to be more descriptive (#31627)
  • Deprecate MlflowTrainableMixin in favor of setup_mlflow() function (#31295)
  • W&B
    • Have train_loop_config logged as a config (#31901)
    • Allow users to exclude config values with WandbLoggerCallback (#31624)
    • Rename WandB save_checkpoints to upload_checkpoints (#31582)
    • Add hook to get project/group for W&B integration (#31035, 31643)
    • Use Ray actors instead of multiprocessing for WandbLoggerCallback (#30847)
    • Update WandbLoggerCallback example (#31625)
  • Predictor
    • Place predictor kwargs in object store (#30932)
    • Delegate BatchPredictor stage fusion to Datasets (#31585)
    • Rename DLPredictor.call_model tensor parameter to inputs (#30574)
    • Add use_gpu to HuggingFacePredictor (#30945)
  • Checkpoints
    • Various Checkpoint improvements (#30948)
    • Implement lazy checkpointing for same-node case (#29824)
    • Automatically strip "module." from state dict (#30705)
    • Allow user to pass model to TensorflowCheckpoint.get_model (#31203)

🔨 Fixes:

  • Fix and improve support for HDFS remote storage. (#31940)
  • Use specified Preprocessor configs when using stream API. (#31725)
  • Support nested Chain in BatchPredictor (#31407)

📖Documentation:

  • Restructure API References (#32535)
  • API Deprecations (#31777, #31867)
  • Various fixes to docstrings, documentation, and examples (#30782, #30791)

🏗 Architecture refactoring:

  • Use NodeAffinitySchedulingPolicy for scheduling (#32016)
  • Internal resource management refactor (#30777, #30016)
Ray Data Processing

🎉 New Features:

  • Lazy execution by default (#31286)
  • Introduce streaming execution backend (#31579)
  • Introduce DatasetIterator (#31470)
  • Add per-epoch preprocessor (#31739)
  • Add TorchVisionPreprocessor (#30578)
  • Persist Dataset statistics automatically to log file (#30557)

💫Enhancements:

  • Async batch fetching for map_batches (#31576)
  • Add informative progress bar names to map_batches (#31526)
  • Provide an size bytes estimate for mongodb block (#31930)
  • Add support for dynamic block splitting to actor pool (#31715)
  • Improve str/repr of Dataset to include execution plan (#31604)
  • Deal with nested Chain in BatchPredictor (#31407)
  • Allow MultiHotEncoder to encode arrays (#31365)
  • Allow specify batch_size when reading Parquet file (#31165)
  • Add zero-copy batch API for ds.map_batches() (#30000)
  • Text dataset should save texts in ArrowTable format (#30963)
  • Return ndarray dicts for single-column tabular datasets (#30448)
  • Execute randomize_block_order eagerly if it's the last stage for ds.schema() (#30804)

🔨 Fixes:

  • Don't drop first dataset when peeking DatasetPipeline (#31513)
  • Handle np.array(dtype=object) constructor for ragged ndarrays (#31670)
  • Emit warning when starting Dataset execution with no CPU resources available (#31574)
  • Fix the bug of eagerly clearing up input blocks (#31459)
  • Fix Imputer failing with categorical dtype (#31435)
  • Fix schema unification for Datasets with ragged Arrow arrays (#31076)
  • Fix Discretizers transforming ignored cols (#31404)
  • Fix to_tf when the input feature_columns is a list. (#31228)
  • Raise error message if user calls Dataset.iter (#30575)

📖Documentation:

  • Refactor Ray Data API documentation (#31204)
  • Add seealso to map-related methods (#30579)
Ray Train

🎉 New Features:

  • Add option for per-epoch preprocessor (#31739)

💫Enhancements:

  • Change default NCCL_SOCKET_IFNAME to blacklist veth (#31824)
  • Introduce DatasetIterator for bulk and streaming ingest (#31470)
  • Clarify which RunConfig is used when there are multiple places to specify it (#31959)
  • Change ScalingConfig to be optional for DataParallelTrainers if already in Tuner param_space (#30920)

🔨 Fixes:

  • Use specified Preprocessor configs when using stream API. (#31725)
  • Fix off-by-one AIR Trainer checkpoint ID indexing on restore (#31423)
  • Force GBDTTrainer to use distributed loading for Ray Datasets (#31079)
  • Fix bad case in ScalingConfig->RayParams (#30977)
  • Don't raise TuneError on fail_fast="raise" (#30817)
  • Report only once in SklearnTrainer (#30593)
  • Ensure GBDT PGFs match passed ScalingConfig (#30470)

📖Documentation:

  • Restructure API References (#32535)
  • Remove Ray Client references from Train docs/examples (#32321)
  • Various fixes to docstrings, documentation, and examples (#29463, #30492, #30543, #30571, #30782, #31692, #31735)

🏗 Architecture refactoring:

  • API Deprecations (#31763)
Ray Tune

💫Enhancements:

  • Improve trainable serialization error (#31070)
  • Add support for Nevergrad optimizer with extra parameters (#31015)
  • Add timeout for experiment checkpoint syncing to cloud (#30855)
  • Move validate_upload_dir to Syncer (#30869)
  • Enable experiment restore from moved cloud uri (#31669)
  • Save and restore stateful callbacks as part of experiment checkpoint (#31957)

🔨 Fixes:

  • Do not default to reuse_actors=True when mixins are used (#31999)
  • Only keep cached actors if search has not ended (#31974)
  • Fix best trial in ProgressReporter with nan (#31276)
  • Make ResultGrid return cloud checkpoints (#31437)
  • Wait for final experiment checkpoint sync to finish (#31131)
  • Fix CheckpointConfig validation for function trainables (#31255)
  • Fix checkpoint directory assignment for new checkpoints created after restoring a function trainable (#31231)
  • Fix AxSearch save and nan/inf result handling (#31147)
  • Fix AxSearch search space conversion for fixed list hyperparameters (#31088)
  • Restore searcher and scheduler properly on Tuner.restore (#30893)
  • Fix progress reporter sort_by_metric with nested metrics (#30906)
  • Don't raise TuneError on fail_fast="raise" (#30817)
  • Fix duplicate printing when trial is done (#30597)

📖Documentation:

  • Restructure API references (#32449)
  • Remove Ray Client references from Tune docs/examples (#32321)
  • Various fixes to docstrings, documentation, and examples (#29581, #30782, #30571, #31045, #31793, #32505)

🏗 Architecture refactoring:

  • Deprecate passing a custom trial executor (#31792)
  • Move signal handling into separate method (#31004)
  • Update staged resources in a fixed counter for faster lookup (#32087)
  • Rename overwrite_trainable argument in Tuner restore to trainable (#32059)
Ray Serve

🎉 New Features:

  • Serve python API to support multi application (#31589)

💫Enhancements:

  • Add exponential backoff when retrying replicas (#31436)
  • Enable Log Rotation on Serve (#31844)
  • Use tasks/futures for asyncio.wait (#31608)
  • Change target_num_ongoing_requests_per_replica to positive float (#31378)

🔨 Fixes:

  • Upgrade deprecated calls (#31839)
  • Change Gradio integration to take a builder function to avoid serialization issues (#31619)
  • Add initial health check before marking a replica as RUNNING (#31189)

📖Documentation:

  • Document end-to-end timeout in Serve (#31769)
  • Document Gradio visualization (#28310)
RLlib

🎉 New Features:

  • Gymnasium is now supported. (Notes)
  • Connectors are now activated by default (#31693, 30388, 31618, 31444, 31092)
  • Contribution of LeelaChessZero algorithm for playing chess in a MultiAgent env. (#31480)

💫Enhancements:

  • [RLlib] Error out if action_dict is empty in MultiAgentEnv. (#32129)
  • [RLlib] Upgrade tf eager code to no longer use experimental_relax_shapes (but reduce_retracing instead). (#29214)
  • [RLlib] Reduce SampleBatch counting complexity (#30936)
  • [RLlib] Use PyTorch vectorized max() and sum() in SampleBatch.init when possible (#28388)
  • [RLlib] Support multi-gpu CQL for torch (tf already supported). (#31466)
  • [RLlib] Introduce IMPALA off_policyness test with GPU (#31485)
  • [RLlib] Properly serialize and restore StateBufferConnector states for policy stashing (#31372)
  • [RLlib] Clean up deprecated concat_samples calls (#31391)
  • [RLlib] Better support MultiBinary spaces by treating Tuples as superset of them in ComplexInputNet. (#28900)
  • [RLlib] Add backward compatibility to MeanStdFilter to restore from older checkpoints. (#30439)
  • [RLlib] Clean up some signatures for compute_actions. (#31241)
  • [RLlib] Simplify logging configuration. (#30863)
  • [RLlib] Remove native Keras Models. (#30986)
  • [RLlib] Convert PolicySpec to a readable format when converting to_dict(). (#31146)
  • [RLlib] Issue 30394: Add proper __str__() method to PolicyMap. (#31098)
  • [RLlib] Issue 30840: Option to only checkpoint policies that are trainable. (#31133)
  • [RLlib] Deprecate (delete) contrib folder. (#30992)
  • [RLlib] Better behavior if user does not specify stopping condition in RLLib CLI. (#31078)
  • [RLlib] PolicyMap LRU cache enhancements: Swap out policies (instead of GC'ing and recreating) + use Ray object store (instead of file system). (#29513)
  • [RLlib] AlgorithmConfig.overrides() to replace multiagent->policies->config and evaluation_config dicts. (#30879)
  • [RLlib] deprecation_warning(.., error=True) should raise ValueError, not DeprecationWarning. (#30255)
  • [RLlib] Add gym.spaces.Text serialization. (#30794)
  • [RLlib] Convert MultiAgentBatch to SampleBatch in offline_rl.py. (#30668)
  • [RLlib; Tune] Make Algorithm.train() return Tune-style config dict (instead of AlgorithmConfig object). (#30591)

🔨 Fixes:

  • [RLlib] Fix waterworld example and test (#32117)
  • [RLlib] Change Waterworld v3 to v4 and reinstate indep. MARL test case w/ pettingzoo. (#31820)
  • [RLlib] Fix OPE checkpointing. Save method name in configuration dict. (#31778)
  • [RLlib] Fix worker state restoration. (#31644)
  • [RLlib] Replace ordinary pygame imports by try_import_..(). (#31332)
  • [RLlib] Remove crude VR checks in agent collector. (#31564)
  • [RLlib] Fixed the 'RestoreWeightsCallback' example script. (#31601)
  • [RLlib] Issue 28428: QMix not working w/ GPUs. (#31299)
  • [RLlib] Fix using yaml files with empty stopping conditions. (#31363)
  • [RLlib] Issue 31174: Move all checks into AlgorithmConfig.validate() (even simple ones) to avoid errors when using tune hyperopt objects. (#31396)
  • [RLlib] Fix tensorflow_probability imports. (#31331)
  • [RLlib] Issue 31323: BC/MARWIL/CQL do work with multi-GPU (but config validation prevents them from running in this mode). (#31393)
  • [RLlib] Issue 28849: DT fails with num_gpus=1. (#31297)
  • [RLlib] Fix PolicyMap.__del__() to also remove a deleted policy ID from the internal deque. (#31388)
  • [RLlib] Use get_model_v2() instead of get_model() with MADDPG. (#30905)
  • [RLlib] Policy mapping fn can not be called with keyword arguments. (#31141)
  • [RLlib] Issue 30213: Appending RolloutMetrics to sampler outputs should happen after(!) all callbacks (such that custom metrics for last obs are still included). (#31102)
  • [RLlib] Make convert_to_torch tensor adhere to docstring. (#31095)
  • [RLlib] Fix convert to torch tensor (#31023)
  • [RLlib] Issue 30221: random policy does not handle nested spaces. (#31025)
  • [RLlib] Fix crashing remote envs example (#30562)
  • [RLlib] Recursively look up the original space from obs_space (#30602)

📖Documentation:

  • [RLlib; docs] Change links and references in code and docs to "Farama foundation's gymnasium" (from "OpenAI gym"). (#32061)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Task Events Backend: Ray aggregates all submitted task information to provide better observability (#31840, #31761, #31278, #31247, #31316, #30934, #30979, #31207, #30867, #30829, #31524, #32157). This will back up features like task state API, advanced progress bar, and Ray timeline.

💫Enhancements:

  • Remote generator now works for ray actors and ray clients (#31700, #31710).
  • Revamp default scheduling strategy, improve worker startup performance up to 8x for embarrassingly parallel workloads (#31934, #31868).
  • Worker code clean up and allow workers lazy bind to jobs (#31836, #31846, #30349, #31375).
  • A single Ray cluster can scale up to 2000 nodes and 20k actors(#32131, #30131, #31939, #30166, #30460, #30563).
  • Out-of-memory prevention enhancement is now GA with more robust worker killing policies and better user experiences (#32217, #32361, #32219, #31768, #32107, #31976, #31272, #31509, #31230).

🔨 Fixes:

  • Improve garbage collection upon job termination (#32127, #31155)
  • Fix opencensus protobuf bug (#31632)
  • Support python 3.10 for runtime_env conda (#30970)
  • Fix crashes and memory leaks (#31640, #30476, #31488, #31917, #30761, #31018)

📖Documentation:

  • Deprecation (#31845, #31140, #31528)
Ray Clusters

🎉 New Features:

  • Ray-on-Spark is now available as Preview! (#28771, #31397, #31962)

💫Enhancements:

  • [observability] Better memory formatting for ray status and autoscaler (#32337)
  • [autoscaler] Add flag to disable periodic cluster status log. (#31869)

🔨 Fixes:

  • [observability][autoscaler] Ensure pending nodes is reset to 0 after scaling (#32085)
  • Make ~/.bashrc optional in cluster launcher commands (#32393)

📖Documentation:

  • Improvements to job submission
  • Remove references to Ray Client
Dashboard

🎉 New Features:

  • New Information Architecture (beta): We’ve restructured the Ray dashboard to be organized around user personas and workflows instead of entities. For developers, the jobs and actors tab will be most useful. For infrastructure engineers, the cluster tab may be more valuable.
  • Advanced progress bar: Tasks visualization that allow you to see the progress of all your ray tasks
  • Timeline view: We’ve added a button to download detailed timeline data about your ray job. Then, one can click a link and use the perfetto open-source visualization tool to visualize the timeline data.
  • More metadata tables. You can now see placement groups, tasks, actors, and other information related to your jobs.

📖Documentation:

  • We’ve restructured the documentation to make the dashboard documentation more prominent
  • We’ve improved the documentation around setting up Prometheus and Grafana for metrics.

Many thanks to all those who contributed to this release!

@minerharry, @scottsun94, @iycheng, @DmitriGekhtman, @jbedorf, @krfricke, @simonsays1980, @eltociear, @xwjiang2010, @ArturNiederfahrenhorst, @richardliaw, @avnishn, @WeichenXu123, @Capiru, @davidxia, @andreapiso, @amogkam, @sven1977, @scottjlee, @kylehh, @yhna940, @rickyyx, @sihanwang41, @n30111, @Yard1, @sriram-anyscale, @Emiyalzn, @simran-2797, @cadedaniel, @harelwa, @ijrsvt, @clarng, @pabloem, @bveeramani, @lukehsiao, @angelinalg, @dmatrix, @sijieamoy, @simon-mo, @jbesomi, @YQ-Wang, @larrylian, @c21, @AndreKuu, @maxpumperla, @architkulkarni, @wuisawesome, @justinvyu, @zhe-thoughts, @matthewdeng, @peytondmurray, @kevin85421, @tianyicui-tsy, @cassidylaidlaw, @gvspraveen, @scv119, @kyuyeonpooh, @Siraj-Qazi, @jovany-wang, @ericl, @shrekris-anyscale, @Catch-Bull, @jianoaix, @christy, @MisterLin1995, @kouroshHakha, @pcmoritz, @csko, @gjoliver, @clarkzinzow, @SongGuyang, @ckw017, @ddelange, @alanwguo, @Dhul-Husni, @Rohan138, @rkooo567, @fzyzcjy, @chaokunyang, @0x2b3bfa0, @zoltan-fedor, @Chong-Li, @crypdick, @jjyao, @emmyscode, @stephanie-wang, @starpit, @smorad, @nikitavemuri, @zcin, @tbukic, @ayushthe1, @mattip

View originalPermalink
How 2.3.0 went
2.2.0

Ray-2.2.0

Added 10
  • Ray Jobs API is now generally available for submitting locally developed applications to a remote Ray Cluster
  • Add NumPy first path for Torch and TensorFlow Predictors in Ray AIR
  • Add select_columns() to select a subset of columns in Ray Data
  • Add write_tfrecords() to write TFRecord files in Ray Data
  • Support MongoDB data source in Ray Data
  • Add from_torch() to create dataset from Torch dataset in Ray Data
Changed 3
  • Ray Dashboard now shows CPU flame graphs of Ray workers and new metrics for memory usage
  • Out-Of-Memory (OOM) Monitor is now enabled by default
  • Ray Data dynamic block splitting is now enabled by default to address out-of-memory and performance issues with large files
Fixed 5
  • Fix MLflow database integrity error in Ray AIR
  • Fix ResourceChangingScheduler dropping PlacementGroupFactory args in Ray AIR
  • Fix bug passing 'raise' to FailureConfig in Ray AIR
  • Fix reserved CPU warning if no CPUs are used in Ray AIR
  • Fix iter_batches() to not return empty batch in Ray Data
Deprecated 2
  • Deprecate Wandb mixin in Ray AIR
  • Deprecate Checkpoint.to_object_ref and Checkpoint.from_object_ref in Ray AIR

Release Highlights

Ray 2.2 is a stability-focused release, featuring stability improvements across many Ray components.

  • Ray Jobs API is now GA. The Ray Jobs API allows you to submit locally developed applications to a remote Ray Cluster for execution. It simplifies the experience of packaging, deploying, and managing a Ray application.
  • Ray Dashboard has received a number of improvements, such as the ability to see cpu flame graphs of your Ray workers and new metrics for memory usage.
  • The Out-Of-Memory (OOM) Monitor is now enabled by default. This will increase the stability of memory-intensive applications on top of Ray.
  • [Ray Data] we’ve heard numerous users report that when files are too large, Ray Data can have out-of-memory or performance issues. In this release, we’re enabling dynamic block splitting by default, which will address the above issues by avoiding holding too much data in memory.

Ray Libraries

Ray AIR

🎉 New Features:

  • Add a NumPy first path for Torch and TensorFlow Predictors (#28917)

💫Enhancements:

  • Suppress "NumPy array is not writable" error in torch conversion (#29808)
  • Add node rank and local world size info to session (#29919)

🔨 Fixes:

  • Fix MLflow database integrity error (#29794)
  • Fix ResourceChangingScheduler dropping PlacementGroupFactory args (#30304)
  • Fix bug passing 'raise' to FailureConfig (#30814)
  • Fix reserved CPU warning if no CPUs are used (#30598)

📖Documentation:

  • Fix examples and docs to specify batch_format in BatchMapper (#30438)

🏗 Architecture refactoring:

  • Deprecate Wandb mixin (#29828)
  • Deprecate Checkpoint.to_object_ref and Checkpoint.from_object_ref (#30365)
Ray Data Processing

🎉 New Features:

  • Support all PyArrow versions released by Apache Arrow (#29993, #29999)
  • Add select_columns() to select a subset of columns (#29081)
  • Add write_tfrecords() to write TFRecord files (#29448)
  • Support MongoDB data source (#28550)
  • Enable dynamic block splitting by default (#30284)
  • Add from_torch() to create dataset from Torch dataset (#29588)
  • Add from_tf() to create dataset from TensorFlow dataset (#29591)
  • Allow to set batch_size in BatchMapper (#29193)
  • Support read/write from/to local node file system (#29565)

💫Enhancements:

  • Add include_paths in read_images() to return image file path (#30007)
  • Print out Dataset statistics automatically after execution (#29876)
  • Cast tensor extension type to opaque object dtype in to_pandas() and to_dask() (#29417)
  • Encode number of dimensions in variable-shaped tensor extension type (#29281)
  • Fuse AllToAllStage and OneToOneStage with compatible remote args (#29561)
  • Change read_tfrecords() output from Pandas to Arrow format (#30390)
  • Handle all Ray errors in task compute strategy (#30696)
  • Allow nested Chain preprocessors (#29706)
  • Warn user if missing columns and support str exclude in Concatenator (#29443)
  • Raise ValueError if preprocessor column doesn't exist (#29643)

🔨 Fixes:

  • Support custom resource with remote args for random_shuffle() (#29276)
  • Support custom resource with remote args for random_shuffle_each_window() (#29482)
  • Add PublicAPI annotation to preprocessors (#29434)
  • Tensor extension column concatenation fixes (#29479)
  • Fix iter_batches() to not return empty batch (#29638)
  • Change map_batches() to fetch input blocks on-demand (#29289)
  • Change take_all() to not accept limit argument (#29746)
  • Convert between block and batch correctly for map_groups() (#30172)
  • Fix stats() call causing Dataset schema to be unset (#29635)
  • Raise error when batch_format is not specified for BatchMapper (#30366)
  • Fix ndarray representation of single-element ragged tensor slices (#30514)

📖Documentation:

  • Improve map_batches() documentation about execution model and UDF pickle-ability requirement (#29233)
  • Improve to_tf() docstring (#29464)
Ray Train

🎉 New Features:

  • Added MosaicTrainer (#29237, #29620, #29919)

💫Enhancements:

  • Fast fail upon single worker failure (#29927)
  • Optimize checkpoint conversion logic (#29785)

🔨 Fixes:

  • Propagate DatasetContext to training workers (#29192)
  • Show correct error message on training failure (#29908)
  • Fix prepare_data_loader with enable_reproducibility (#30266)
  • Fix usage of NCCL_BLOCKING_WAIT (#29562)

📖Documentation:

  • Deduplicate Train examples (#29667)

🏗 Architecture refactoring:

  • Hard deprecate train.report (#29613)
  • Remove deprecated Train modules (#29960)
  • Deprecate old prepare_model DDP args #30364
Ray Tune

🎉 New Features:

  • Make Tuner.restore work with relative experiment paths (#30363)
  • Tuner.restore from a local directory that has moved (#29920)

💫Enhancements:

  • with_resources takes in a ScalingConfig (#30259)
  • Keep resource specifications when nesting with_resources in with_parameters (#29740)
  • Add trial_name_creator and trial_dirname_creator to TuneConfig (#30123)
  • Add option to not override the working directory (#29258)
  • Only convert a BaseTrainer to Trainable once in the Tuner (#30355)
  • Dynamically identify PyTorch Lightning Callback hooks (#30045)
  • Make remote_checkpoint_dir work with query strings (#30125)
  • Make cloud checkpointing retry configurable (#30111)
  • Sync experiment-checkpoints more often (#30187)
  • Update generate_id algorithm (#29900)

🔨 Fixes:

  • Catch SyncerCallback failure with dead node (#29438)
  • Do not warn in BayesOpt w/ Uniform sampler (#30350)
  • Fix ResourceChangingScheduler dropping PGF args (#30304)
  • Fix Jupyter output with Ray Client and Tuner (#29956)
  • Fix tests related to TUNE_ORIG_WORKING_DIR env variable (#30134)

📖Documentation:

  • Add user guide for analyzing results (using ResultGrid and Result) (#29072)
  • Tune checkpointing and Tuner restore docfix (#29411)
  • Fix and clean up PBT examples (#29060)
  • Fix TrialTerminationReporter in docs (#29254)

🏗 Architecture refactoring:

  • Remove hard deprecated SyncClient/Syncer (#30253)
  • Deprecate Wandb mixin, move to setup_wandb() function (#29828)
Ray Serve

🎉 New Features:

  • Guard for high latency requests (#29534)
  • Java API Support (blog)

💫Enhancements:

  • Serve K8s HA benchmarking (#30278)
  • Add method info for http metrics (#29918)

🔨 Fixes:

  • Fix log format error (#28760)
  • Inherit previous deployment num_replicas (29686)
  • Polish serve run deploy message (#29897)
  • Remove calling of get_event_loop from python 3.10
RLlib

🎉 New Features:

  • Fault tolerant, elastic WorkerSets: An asynchronous Ray Actor manager class is now used inside all of RLlib’s Algorithms, adding fully flexible fault tolerance to rollout workers and workers used for evaluation. If one or more workers (which are Ray actors) fails - e.g. due to a SPOT instance going down - the RLlib Algorithm will now flexibly wait it out and periodically try to recreate the failed workers. In the meantime, only the remaining healthy workers are used for sampling and evaluation. (#29938, #30118, #30334, #30252, #29703, #30183, #30327, #29953)

💫Enhancements:

  • RLlib CLI: A new and enhanced RLlib command line interface (CLI) has been added, allowing for automatically downloading example configuration files, python-based config files (defining an AlgorithmConfig object to use), better interoperability between training and evaluation runs, and many more. For a detailed overview of what has changed, check out the new CLI documentation. (#29204, #29459, #30526, #29661, #29972)
  • Checkpoint overhaul: Algorithm checkpoints and Policy checkpoints are now more cohesive and transparent. All checkpoints are now characterized by a directory (with files and maybe sub-directories), rather than a single pickle file; Both Algorithm and Policy classes now have a utility static method (from_checkpoint()) for directly instantiating instances from a checkpoint directory w/o knowing the original configuration used or any other information (having the checkpoint is sufficient). For a detailed overview, see here. (#28812, #29772, #29370, #29520, #29328)
  • A new metric for APPO/IMPALA/PPO has been added that measures off-policy’ness: The difference in number of grad-updates the sampler policy has received thus far vs the trained policy’s number of grad-updates thus far. (#29983)

🏗 Architecture refactoring:

  • AlgorithmConfig classes: All of RLlib’s Algorithms, RolloutWorkers, and other important classes now use AlgorithmConfig objects under the hood, instead of python config dicts. It is no longer recommended (however, still supported) to create a new algorithm (or a Tune+RLlib experiment) using a python dict as configuration. For more details on how to convert your scripts to the new AlgorithmConfig design, see here. (#29796, #30020, #29700, #29799, #30096, #29395, #29755, #30053, #29974, #29854, #29546, #30042, #29544, #30079, #30486, #30361)
  • Major progress was made on the new Connector API and making sure it can be used (tentatively) with the “config.rollouts(enable_connectors=True)” flag. Will be fully supported, across all of RLlib’s algorithms, in Ray 2.3. (#30307, #30434, #30459, #30308, #30332, #30320, #30383, #30457, #30446, #30024, #29064, #30398, #29385, #30481, #30241, #30285, #30423, #30288, #30313, #30220, #30159)
  • Progress was made on the upcoming RLModule/RLTrainer/RLOptimizer APIs. (#30135, #29600, #29599, #29449, #29642)

🔨 Fixes:

  • Various bug fixes: #25925, #30279, #30478, #30461, #29867, #30099, #30185, #29222, #29227, #29494, #30257, #29798, #30176, #29648, #30331

📖Documentation:

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

💫Enhancements:

  • The Ray Jobs API has graduated from Beta to GA. This means Ray Jobs will maintain API backward compatibility.
  • Run Ray job entrypoint commands (“driver scripts”) on worker nodes by specifying entrypoint_num_cpus, entrypoint_num_gpus, or entrypoint_resources. (#28564, #28203)
  • (Beta) OpenAPI spec for Ray Jobs REST API (#30417)
  • Improved Ray health checking mechanism. The fix will reduce the frequency of GCS marking raylets fail mistakenly when it is overloaded. (#29346, #29442, #29389, #29924)

🔨 Fixes:

  • Various fixes for hanging / deadlocking (#29491, #29763, #30371, #30425)
  • Set OMP_NUM_THREADS to num_cpus required by task/actors by default (#30496)
  • set worker non recyclable if gpu is envolved by default (#30061)

📖Documentation:

  • General improvements of Ray Core docs, including design patterns and tasks.
Ray Clusters

💫Enhancements:

  • Stability improvements for Ray Autoscaler / KubeRay Operator integration. (#29933 , #30281, #30502)
Dashboard

🎉 New Features:

  • Additional improvements from the default metrics dashboard. We now have actor, placement group, and per component memory usage breakdown. You can see details from the doc.
  • New profiling feature using py-spy under the hood. You can click buttons to see stack trace or cpu flame graphs of your workers.
  • Autoscaler and job events are available from the dashboard. You can also access the same data using ray list cluster-events.

🔨 Fixes:

  • Stability improvements from the dashboard
  • Dashboard now works at large scale cluster! It is tested with 250 nodes and 10K+ actors (which matches the Ray scalability envelope).
    • Smarter api fetching logic. We now wait for the previous API to finish before sending a new API request when polling for new data.
    • Fix agent memory leak and high CPU usage.

💫Enhancements:

  • General improvements to the progress bar. You can now see progress bars for each task name if you drill into the job details.
  • More metadata is available in the jobs and actors tables.
  • There is now a feedback button embedded into the dashboard. Please submit any bug reports or suggestions!

Many thanks to all those who contributed to this release!

@shrekris-anyscale, @rickyyx, @scottjlee, @shogohida, @liuyang-my, @matthewdeng, @wjrforcyber, @linusbiostat, @clarkzinzow, @justinvyu, @zygi, @christy, @amogkam, @cool-RR, @jiaodong, @EvgeniiTitov, @jjyao, @ilee300a, @jianoaix, @rkooo567, @mattip, @maxpumperla, @ericl, @cadedaniel, @bveeramani, @rueian, @stephanie-wang, @lcipolina, @bparaj, @JoonHong-Kim, @avnishn, @tomsunelite, @larrylian, @alanwguo, @VishDev12, @c21, @dmatrix, @xwjiang2010, @thomasdesr, @tiangolo, @sokratisvas, @heyitsmui, @scv119, @pcmoritz, @bhavika, @yzs981130, @andraxin, @Chong-Li, @clarng, @acxz, @ckw017, @krfricke, @kouroshHakha, @sijieamoy, @iycheng, @gjoliver, @peytondmurray, @xcharleslin, @DmitriGekhtman, @andreichalapco, @vitrioil, @architkulkarni, @simon-mo, @ArturNiederfahrenhorst, @sihanwang41, @pabloem, @sven1977, @avivhaber, @wuisawesome, @jovany-wang, @Yard1

View originalPermalink
How 2.2.0 went
2.1.0

Ray-2.1.0

Added 17
  • Ray Datasets read_images() API for loading image data
  • Ray Datasets read_tfrecords() API to read TFRecord files
  • Numpy-based API for user-defined functions in Preprocessor
  • Ray Serve support for gRPC endpoint (alpha release)
  • RLlib decision transformer (DT) algorithm
  • RLlib on_episode_created() callback hook
Changed 3
  • Auto-enable GPU for Predictors
  • Deprecate Checkpoint.to_object_ref and Checkpoint.from_object_ref
  • Deprecate legacy train/tune functions in favor of Session

Release Highlights

  • Ray AI Runtime (AIR)
    • Better support for Image-based workloads.
      • Ray Datasets read_images() API for loading data.
      • Numpy-based API for user-defined functions in Preprocessor.
    • Ability to read TFRecord input.
      • Ray Datasets read_tfrecords() API to read TFRecord files.
  • Ray Serve:
    • Add support for gRPC endpoint (alpha release). Instead of using an HTTP server, Ray Serve supports gRPC protocol and users can bring their own schema for their use case.
  • RLlib:
    • Introduce decision transformer (DT) algorithm.
    • New hook for callbacks with on_episode_created().
    • Learning rate schedule to SimpleQ and PG.
  • Ray Core:
    • Ray OOM prevention (alpha release).
    • Support dynamic generators as task return values.
  • Dashboard:
    • Time series metrics support.
    • Export configuration files can be used in Prometheus or Grafana instances.
    • New progress bar in job detail view.

Ray Libraries

Ray AIR

💫Enhancements:

  • Improve readability of training failure output (#27946, #28333, #29143)
  • Auto-enable GPU for Predictors (#26549)
  • Add ability to create TorchCheckpoint from state dict (#27970)
  • Add ability to create TensorflowCheckpoint from saved model/h5 format (#28474)
  • Add attribute to retrieve URI from Checkpoint (#28731)
  • Add all allowable types to WandB Callback (#28888)

🔨 Fixes:

  • Handle nested metrics properly as scoring attribute (#27715)
  • Fix serializability of Checkpoints (#28387, #28895, #28935)

📖Documentation:

  • Miscellaneous updates to documentation and examples (#28067, #28002, #28189, #28306, #28361, #28364, #28631, #28800)

🏗 Architecture refactoring:

  • Deprecate Checkpoint.to_object_ref and Checkpoint.from_object_ref (#28318)
  • Deprecate legacy train/tune functions in favor of Session (#28856)
Ray Data Processing

🎉 New Features:

  • Add read_images (#29177)
  • Add read_tfrecords (#28430)
  • Add NumPy batch format to Preprocessor and BatchMapper (#28418)
  • Ragged tensor extension type (#27625)
  • Add KBinsDiscretizer Preprocessor (#28389)

💫Enhancements:

  • Simplify to_tf interface (#29028)
  • Add metadata override and inference in Dataset.to_dask() (#28625)
  • Prune unused columns before aggregate (#28556)
  • Add Dataset.default_batch_format (#28434)
  • Add partitioning parameter to read_ functions (#28413)
  • Deprecate "native" batch format in favor of "default" (#28489)
  • Support None partition field name (#28417)
  • Re-enable Parquet sampling and add progress bar (#28021)
  • Cap the number of stats kept in StatsActor and purge in FIFO order if the limit exceeded (#27964)
  • Customized serializer for Arrow JSON ParseOptions in read_json (#27911)
  • Optimize groupby/mapgroups performance (#27805)
  • Improve size estimation of image folder data source (#27219)
  • Use detached lifetime for stats actor (#25271)
  • Pin _StatsActor to the driver node (#27765)
  • Better error message for partition filtering if no file found (#27353)
  • Make Concatenator deterministic (#27575)
  • Change FeatureHasher input schema to expect token counts (#27523)
  • Avoid unnecessary reads when truncating a dataset with ds.limit() (#27343)
  • Hide tensor extension from UDFs (#27019)
  • Add repr to AIR classes (#27006)

🔨 Fixes:

  • Add upper bound to pyarrow version check (#29674) (#29744)
  • Fix map_groups to work with different output type (#29184)
  • read_csv not filter out files by default (#29032)
  • Check columns when adding rows to TableBlockBuilder (#29020)
  • Fix the peak memory usage calculation (#28419)
  • Change sampling to use same API as read Parquet (#28258)
  • Fix column assignment in Concatenator for Pandas 1.2. (#27531)
  • Doing partition filtering in reader constructor (#27156)
  • Fix split ownership (#27149)

📖Documentation:

  • Clarify dataset transformation. (#28482)
  • Update map_batches documentation (#28435)
  • Improve docstring and doctest for read_parquet (#28488)
  • Activate dataset doctests (#28395)
  • Document using a different separator for read_csv (#27850)
  • Convert custom datetime column when reading a CSV file (#27854)
  • Improve preprocessor documentation (#27215)
  • Improve limit() and take() docstrings (#27367)
  • Reorganize the tensor data support docs (#26952)
  • Fix nyc_taxi_basic_processing notebook (#26983)
Ray Train

🎉 New Features:

  • Add FullyShardedDataParallel support to TorchTrainer (#28096)

💫Enhancements:

  • Add rich notebook repr for DataParallelTrainer (#26335)
  • Fast fail if training loop raises an error on any worker (#28314)
  • Use torch.encode_data with HorovodTrainer when torch is imported (#28440)
  • Automatically set NCCL_SOCKET_IFNAME to use ethernet (#28633)
  • Don't add Trainer resources when running on Colab (#28822)
  • Support large checkpoints and other arguments (#28826)

🔨 Fixes:

  • Fix and improve HuggingFaceTrainer (#27875, #28154, #28170, #28308, #28052)
  • Maintain dtype info in LightGBMPredictor (#28673)
  • Fix prepare_model (#29104)
  • Fix train.torch.get_device() (#28659)

📖Documentation:

  • Clarify LGBM/XGB Trainer documentation (#28122)
  • Improve Hugging Face notebook example (#28121)
  • Update Train API reference and docs (#28192)
  • Mention FSDP in HuggingFaceTrainer docs (#28217)

🏗 Architecture refactoring:

  • Improve Trainer modularity for extensibility (#28650)
Ray Tune

🎉 New Features:

  • Add Tuner.get_results() to retrieve results after restore (#29083)

💫Enhancements:

  • Exclude files in sync_dir_between_nodes, exclude temporary checkpoints (#27174)
  • Add rich notebook output for Tune progress updates (#26263)
  • Add logdir to W&B run config (#28454)
  • Improve readability for long column names in table output (#28764)
  • Add functionality to recover from latest available checkpoint (#29099)
  • Add retry logic for restoring trials (#29086)

🔨 Fixes:

  • Re-enable progress metric detection (#28130)
  • Add timeout to retry_fn to catch hanging syncs (#28155)
  • Correct PB2’s beta_t parameter implementation (#28342)
  • Ignore directory exists errors to tackle race conditions (#28401)
  • Correctly overwrite files on restore (#28404)
  • Disable pytorch-lightning multiprocessing per default (#28335)
  • Raise error if scheduling an empty PlacementGroupFactory#28445
  • Fix trial cleanup after x seconds, set default to 600 (#28449)
  • Fix trial checkpoint syncing after recovery from other node (#28470)
  • Catch empty hyperopt search space, raise better Tuner error message (#28503)
  • Fix and optimize sample search algorithm quantization logic (#28187)
  • Support tune.with_resources for class methods (#28596)
  • Maintain consistent Trial/TrialRunner state when pausing and resuming trial with PBT (#28511)
  • Raise better error for incompatible gcsfs version (#28772)
  • Ensure that exploited in-memory checkpoint is used by trial with PBT (#28509)
  • Fix Tune checkpoint tracking for minimizing metrics (#29145)

📖Documentation:

  • Miscelleanous documentation fixes (#27117, #28131, #28210, #28400, #28068, #28809)
  • Add documentation around trial/experiment checkpoint (#28303)
  • Add basic parallel execution guide for Tune (#28677)
  • Add example PBT notebook (#28519)

🏗 Architecture refactoring:

  • Store SyncConfig and CheckpointConfig in Experiment and Trial (#29019)
Ray Serve

🎉 New Features:

  • Added gRPC direct ingress support [alpha version] (#28175)
  • Serve cli can provide kubernetes formatted output (#28918)
  • Serve cli can provide user config output without default value (#28313)

💫Enhancements:

  • Enrich more benchmarks
  • image objection with resnet50 mode with image preprocessing (#29096)
  • gRPC vs HTTP inference performance (#28175)
  • Add health check metrics to reflect the replica health status (#29154)

🔨 Fixes:

  • Fix memory leak issues during inference (#29187)
  • Fix unexpected http options omit warning when using serve cli to start the ray serve (#28257)
  • Fix unexpected long poll exceptions (#28612)

📖Documentation:

  • Add e2e fault tolerance instructions (#28721)
  • Add Direct Ingress instructions (#29149)
  • Bunch of doc improvements on “dev workflow”, “custom resources”, “serve cli” etc (#29147, #28708, #28529, #28527)
RLlib

🎉 New Features:

  • Decision Transformer (DT) Algorithm added (#27890, #27889, #27872, #27829).
  • Callbacks now have a new hook on_episode_created(). (#28600)
  • Added learning rate schedule to SimpleQ and PG. (#28381)

💫Enhancements:

  • Soft target network update is now supported by all off-policy algorithms (e.g DQN, DDPG, etc.) (#28135)
  • Stop RLlib from "silently" selecting atari preprocessors. (#29011)
  • Improved offline RL and off-policy evaluation performance (#28837, #28834, #28593, #28420, #28136, #28013, #27356, #27161, #27451).
  • Escalated old deprecation warnings to errors (#28807, #28795, #28733, #28697).
  • Others: #27619, #27087.

🔨 Fixes:

  • Various bug fixes: #29077, #28811, #28637, #27785, #28703, #28422, #28405, #28358, #27540, #28325, #28357, #28334, #27090, #28133, #27981, #27980, #26666, #27390, #27791, #27741, #27424, #27544, #27459, #27572, #27255, #27304, #26629, #28166, #27864, #28938, #28845, #28588, #28202, #28201, #27806

📖Documentation:

  • Connectors. (#27528)
  • Training step API. (#27344)
  • Others: #28299, #27460
Ray Workflows

🔨 Fixes:

  • Fixed the object loss due to driver exit (#29092)
  • Change the name in step to task_id (#28151)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Ray OOM prevention feature alpha release! If your Ray jobs suffer from OOM issues, please give it a try.
  • Support dynamic generators as task return values. (#29082 #28864 #28291)

💫Enhancements:

  • Fix spread scheduling imbalance issues (#28804 #28551 #28551)
  • Widening range of grpcio versions allowed (#28623)
  • Support encrypted redis connection. (#29109)
  • Upgrade redis from 6.x to 7.0.5. (#28936)
  • Batch ScheduleAndDispatchTasks calls (#28740)

🔨 Fixes:

  • More robust spilled object deletion (#29014)
  • Fix the initialization/destruction order between reference_counter_ and node change subscription (#29108)
  • Suppress the logging error when python exits and actor not deleted (#27300)
  • Mark run_function_on_all_workers as deprecated until we get rid of this (#29062)
  • Remove unused args for default_worker.py (#28177)
  • Don't include script directory in sys.path if it's started via python -m (#28140)
  • Handling edge cases of max_cpu_fraction argument (#27035)
  • Fix out-of-band deserialization of actor handle (#27700)
  • Allow reuse of cluster address if Ray is not running (#27666)
  • Fix a uncaught exception upon deallocation for actors (#27637)
  • Support placement_group=None in PlacementGroupSchedulingStrategy (#27370)

📖Documentation:

  • Ray 2.0 white paper is published.
  • Revamp ray core docs (#29124 #29046 #28953 #28840 #28784 #28644 #28345 #28113 #27323 #27303)
  • Fix cluster docs (#28056 #27062)
  • CLI Reference Documentation Revamp (#27862)
Ray Clusters

💫Enhancements:

  • Distinguish Kubernetes deployment stacks (#28490)

📖Documentation:

  • State intent to remove legacy Ray Operator (#29178)
  • Improve KubeRay migration notes (#28672)
  • Add FAQ for cluster multi-tenancy support (#29279)
Dashboard

🎉 New Features:

  • Time series metrics are now built into the dashboard
  • Ray now exports some default configuration files which can be used for your Prometheus or Grafana instances. This includes default metrics which show common information important to your Ray application.
  • New progress bar is shown in the job detail view. You can see how far along your ray job is.

🔨 Fixes:

  • Fix to prometheus exporter producing a slightly incorrect format.
  • Fix several performance issues and memory leaks

📖Documentation:

  • Added additional documentation on the new time series and the metrics page

Many thanks to all those who contributed to this release!

@sihanwang41, @simon-mo, @avnishn, @MyeongKim, @markrogersjr, @christy, @xwjiang2010, @kouroshHakha, @zoltan-fedor, @wumuzi520, @alanwguo, @Yard1, @liuyang-my, @charlesjsun, @DevJake, @matteobettini, @jonathan-conder-sm, @mgerstgrasser, @guidj, @JiahaoYao, @Zyiqin-Miranda, @jvanheugten, @aallahyar, @SongGuyang, @clarng, @architkulkarni, @Rohan138, @heyitsmui, @mattip, @ArturNiederfahrenhorst, @maxpumperla, @vale981, @krfricke, @DmitriGekhtman, @amogkam, @richardliaw, @maldil, @zcin, @jianoaix, @cool-RR, @kira-lin, @gramhagen, @c21, @jiaodong, @sijieamoy, @tupui, @ericl, @anabranch, @se4ml, @suquark, @dmatrix, @jjyao, @clarkzinzow, @smorad, @rkooo567, @jovany-wang, @edoakes, @XiaodongLv, @klieret, @rozsasarpi, @scottsun94, @ijrsvt, @bveeramani, @chengscott, @jbedorf, @kevin85421, @nikitavemuri, @sven1977, @acxz, @stephanie-wang, @PaulFenton, @WangTaoTheTonic, @cadedaniel, @nthai, @wuisawesome, @rickyyx, @artemisart, @peytondmurray, @pingsutw, @olipinski, @davidxia, @stestagg, @yaxife, @scv119, @mwtian, @yuanchi2807, @ntlm1686, @shrekris-anyscale, @cassidylaidlaw, @gjoliver, @ckw017, @hakeemta, @ilee300a, @avivhaber, @matthewdeng, @afarid, @pcmoritz, @Chong-Li, @Catch-Bull, @justinvyu, @iycheng

View originalPermalink
How 2.1.0 went
2.0.1

Ray-2.0.1

Added 2
  • Allow host and port in Serve config
  • RLlib evaluation supports asynchronous rollout
Changed 4
  • Upgrade grpcio version to 1.32
  • Upgrade redis version to 7.0.5
  • Increase RPC timeout for dashboard
  • Replace deprecated name option with task_id in Workflows
Fixed 7
  • Fix segfault when using runtime environments
  • Set correct path when using python -m
  • Fix autoscaling for 0 CPU head node
  • Allow code in private remote Git URIs to be imported in Serve
  • Fix hang during checkpoint synchronization in Tune
  • Fix trial restoration from different IP in Tune
  • Fix custom synchronizer serialization in Tune

The Ray 2.0.1 patch release contains dependency upgrades and fixes for multiple components:

  • Upgrade grpcio version to 1.32 (#28025)
  • Upgrade redis version to 7.0.5 (#28936)
  • Fix segfault when using runtime environments (#28409)
  • Increase RPC timeout for dashboard (#28330)
  • Set correct path when using python -m (#28140)
  • [Autoscaler] Fix autoscaling for 0 CPU head node (#26813)
  • [Serve] Allow code in private remote Git URIs to be imported (#28250)
  • [Serve] Allow host and port in Serve config (#27026)
  • [RLlib] Evaluation supports asynchronous rollout (single slow eval worker will not block the overall evaluation progress). (#27390)
  • [Tune] Fix hang during checkpoint synchronization (#28155)
  • [Tune] Fix trial restoration from different IP (#28470)
  • [Tune] Fix custom synchronizer serialization (#28699)
  • [Workflows] Replace deprecated name option with task_id (#28151)
View originalPermalink
How 2.0.1 went
2.0.0

Ray-2.0.0

Added 16
  • Ray AIR, a scalable and unified toolkit for ML applications, is now in Beta
  • Ray now supports natively shuffling 100TB or more of data with the Ray Datasets library
  • KubeRay, a toolkit for running Ray on Kubernetes, is now in Beta
  • Ray Serve's Deployment Graph API is a new and easier way to build, test, and deploy an inference graph of deployments
  • BatchPredictors now have support for scalable inference on GPUs
  • All Predictors can now be constructed from pre-trained models
Changed 4
  • ray.ml is renamed to ray.air
  • ray.ml.preprocessors have been moved to ray.data
  • ray.ml.trainers have been moved to ray.train
  • ray.ml.predictors has been moved to ray.train

Release Highlights

Ray 2.0 is an exciting release with enhancements to all libraries in the Ray ecosystem. With this major release, we take strides towards our goal of making distributed computing scalable, unified, and open.

Towards these goals, Ray 2.0 features new capabilities for unifying the machine learning (ML) ecosystem, improving Ray's production support, and making it easier than ever for ML practitioners to use Ray's libraries.

Highlights:

  • Ray AIR, a scalable and unified toolkit for ML applications, is now in Beta.
  • ​​Ray now supports natively shuffling 100TB or more of data with the Ray Datasets library.
  • KubeRay, a toolkit for running Ray on Kubernetes, is now in Beta. This replaces the legacy Python-based Ray operator.
  • Ray Serve’s Deployment Graph API is a new and easier way to build, test, and deploy an inference graph of deployments. This is released as Beta in 2.0.

A migration guide for all the different libraries can be found here: Ray 2.0 Migration Guide.

Ray Libraries

Ray AIR

Ray AIR is now in beta. Ray AIR builds upon Ray’s libraries to enable end-to-end machine learning workflows and applications on Ray. You can install all dependencies needed for Ray AIR via pip install -u "ray[air]".

🎉 New Features:

  • Predictors:
    • BatchPredictors now have support for scalable inference on GPUs.
    • All Predictors can now be constructed from pre-trained models, allowing you to easily scale batch inference with trained models from common ML frameworks.
    • ray.ml.predictors has been moved to the Ray Train namespace (ray.train).
  • Preprocessing: New preprocessors and API changes on Ray Datasets now make feature processing easier to do on AIR. See the Ray Data release notes for more details.
  • New features for Datasets/Train/Tune/Serve can be found in the corresponding library release notes for more details.

💫 Enhancements:

  • Major package refactoring is included in this release.
    • ray.ml is renamed to ray.air.
    • ray.ml.preprocessors have been moved to ray.data.
      • train_test_split is now a new method of ray.data.Dataset (#27065)
    • ray.ml.trainers have been moved to ray.train (#25570)
    • ray.ml.predictors has been moved to ray.train.
    • ray.ml.config has been moved to ray.air.config (#25712).
    • Checkpoints are now framework-specific -- meaning that each Trainer generates its own Framework-specific Checkpoint class. See Ray Train for more details.
    • ModelWrappers have been renamed to PredictorDeployments.
  • API stability annotations have been added (#25485)
  • Train/Tune now have the same reporting and checkpointing API -- see the Train notes for more details (#26303)
  • ScalingConfigs are now Dataclasses not Dict types
  • Many AIR examples, benchmarks, and documentation pages were added in this release. The Ray AIR documentation will cover breadth of usage (end to end workflows across different libraries) while library-specific documentation will cover depth (specific features of a specific library).

🔨 Fixes:

  • Many documentation examples were previously untested. This release fixes those examples and adds them to the CI.
  • Predictors:
    • Torch/Tensorflow Predictors have correctness fixes (#25199, #25190, #25138, #25136)
    • Update KerasCallback to work with TensorflowPredictor (#26089)
    • Add streaming BatchPredictor support (#25693)
    • Add predict_pandas implementation (#25534)
    • Add _predict_arrow interface for Predictor (#25579)
    • Allow creating Predictor directly from a UDF (#26603)
    • Execute GPU inference in a separate stage in BatchPredictor (#26616, #27232, #27398)
    • Accessors for preprocessor in Predictor class (#26600)
    • [AIR] Predictor call_model API for unsupported output types (#26845)
Ray Data Processing

🎉 New Features:

  • Add ImageFolderDatasource (#24641)
  • Add the NumPy batch format for batch mapping and batch consumption (#24870)
  • Add iter_torch_batches() and iter_tf_batches() APIs (#26689)
  • Add local shuffling API to iterators (#26094)
  • Add drop_columns() API (#26200)
  • Add randomize_block_order() API (#25568)
  • Add random_sample() API (#24492)
  • Add support for len(Dataset) (#25152)
  • Add UDF passthrough args to map_batches() (#25613)
  • Add Concatenator preprocessor (#26526)
  • Change range_arrow() API to range_table() (#24704)

💫 Enhancements:

  • Autodetect dataset parallelism based on available resources and data size (#25883)
  • Use polars for sorting (#25454)
  • Support tensor columns in to_tf() and to_torch() (#24752)
  • Add explicit resource allocation option via a top-level scheduling strategy (#24438)
  • Spread actor pool actors evenly across the cluster by default (#25705)
  • Add ray_remote_args to read_text() (#23764)
  • Add max_epoch argument to iter_epochs() (#25263)
  • Add Pandas-native groupby and sorting (#26313)
  • Support push-based shuffle in groupby operations (#25910)
  • More aggressive memory releasing for Dataset and DatasetPipeline (#25461, #25820, #26902, #26650)
  • Automatically cast tensor columns on Pandas UDF outputs (#26924)
  • Better error messages when reading from S3 (#26619, #26669, #26789)
  • Make dataset splitting more efficient and stable (#26641, #26768, #26778)
  • Use sampling to estimate in-memory data size for Parquet data source (#26868)
  • De-experimentalized lazy execution mode (#26934)

🔨 Fixes:

  • Fix pipeline pre-repeat caching (#25265)
  • Fix stats construction for from_*() APIs (#25601)
  • Fixes label tensor squeezing in to_tf() (#25553)
  • Fix stage fusion between equivalent resource args (fixes BatchPredictor) (#25706)
  • Fix tensor extension string formatting (repr) (#25768)
  • Workaround for unserializable Arrow JSON ReadOptions (#25821)
  • Make ActorPoolStrategy kill pool of actors if exception is raised (#25803)
  • Fix max number of actors for default actor pool strategy (#26266)
  • Fix byte size calculation for non-trivial tensors (#25264)
Ray Train

Ray Train has received a major expansion of scope with Ray 2.0.

In particular, the Ray Train module now contains:

  1. Trainers
  2. Predictors
  3. Checkpoints

for common different ML frameworks including Pytorch, Tensorflow, XGBoost, LightGBM, HuggingFace, and Scikit-Learn. These API help provide end-to-end usage of Ray libraries in Ray AIR workflows.

🎉 New Features:

  • The Trainer API is now deprecated for the new Ray AIR Trainers API. Trainers for Pytorch, Tensorflow, Horovod, XGBoost, and LightGBM are now in Beta. (#25570)
  • ML framework-specific Predictors have been moved into the ray.train namespace. This provides streamlined API for offline and online inference of Pytorch, Tensorflow, XGBoost models and more. (#25769 #26215, #26251, #26451, #26531, #26600, #26603, #26616, #26845)
  • ML framework-specific checkpoints are introduced. Checkpoints are consumed by Predictors to load model weights and information. (#26777, #25940, #26532, #26534)

💫 Enhancements:

  • Train and Tune now use the same reporting and checkpointing API (#24772, #25558)
  • Add tunable ScalingConfig dataclass (#25712)
  • Randomize block order by default to avoid hotspots (#25870)
  • Improve checkpoint configurability and extend results (#25943)
  • Improve prepare_data_loader to support multiple batch data types (#26386)
  • Discard returns of train loops in Trainers (#26448)
  • Clean up logs, reprs, warning s(#26259, #26906, #26988, #27228, #27519)

📖 Documentation:

  • Update documentation to use new Train API (#25735)
  • Update documentation to use session API (#26051, #26303)
  • Add Trainer user guide and update Trainer docs (#27570, #27644, #27685)
  • Add Predictor documentation (#25833)
  • Replace to_torch with iter_torch_batches (#27656)
  • Replace to_tf with iter_tf_batches (#27768)
  • Minor doc fixes (#25773, #27955)

🏗 Architecture refactoring:

  • Clean up ray.train package (#25566)
  • Mark Trainer interfaces as Deprecated (#25573)

🔨 Fixes:

  • An issue with GPU ID detection and assignment was fixed. (#26493)
  • Fix AMP for models with a custom __getstate__ method (#25335)
  • Fix transformers example for multi-gpu (#24832)
  • Fix ScalingConfig key validation (#25549)
  • Fix ResourceChangingScheduler integration (#26307)
  • Fix auto_transfer cuda device (#26819)
  • Fix BatchPredictor.predict_pipelined not working with GPU stage (#27398)
  • Remove rllib dependency from tensorflow_predictor (#27688)
Ray Tune

🎉 New Features:

  • The Tuner API is the new way of running Ray Tune experiments. (#26987, #26987, #26961, #26931, #26884, #26930)
  • Ray Tune and Ray Train now have the same API for reporting (#25558)
  • Introduce tune.with_resources() to specify function trainable resources (#26830)
  • Add Tune benchmark for AIR (#26763, #26564)
  • Allow Tuner().restore() from cloud URIs (#26963)
  • Add top-level imports for Tuner, TuneConfig, move CheckpointConfig (#26882)
  • Add resume experiment options to Tuner.restore() (#26826)
  • Add checkpoint_frequency/checkpoint_at_end arguments to CheckpointConfig (#26661)
  • Add more config arguments to Tuner (#26656)
  • Better error message for Tune nested tasks / actors (#25241)
  • Allow iterators in tune.grid_search (#25220)
  • Add get_dataframe() method to result grid, fix config flattening (#24686)

💫 Enhancements:

  • Expose number of errored/terminated trials in ResultGrid (#26655)
  • remove fully_executed from Tune. (#25750)
  • Exclude in remote storage upload (#25544)
  • Add TempFileLock (#25408)
  • Add annotations/set scope for Tune classes (#25077)

📖 Documentation:

  • Improve Tune + Datasets documentation (#25389)
  • Tune examples better navigation, minor fixes (#24733)

🏗 Architecture refactoring:

  • Consolidate checkpoint manager 3: Ray Tune (#24430)
  • Clean up ray.tune scope (remove stale objects in all) (#26829)

🔨 Fixes:

  • Fix k8s release test + node-to-node syncing (#27365)
  • Fix Tune custom syncer example (#27253)
  • Fix tune_cloud_aws_durable_upload_rllib_* release tests (#27180)
  • Fix test_tune (#26721)
  • Larger head node for tune_scalability_network_overhead weekly test (#26742)
  • Fix tune-sklearn notebook example (#26470)
  • Fix reference to dataset_tune (#25402)
  • Fix Tune-Pytorch-CIFAR notebook example (#26474)
  • Fix documentation testing (#26409)
  • Fix set_tune_experiment (#26298)
  • Fix GRPC resource exhausted test for tune trainables (#24467)
Ray Serve

🎉 New Features:

  • We are excited to introduce you to the 2.0 API centered around multi-model composition API, operation API, and production stability. (#26310,#26507,#26217,#25932,#26374,#26901,#27058,#24549,#24616,#27479,#27576,#27433,#24306,#25651,#26682,#26521,#27194,#27206,#26804,#25575,#26574)
    • Deployment Graph API is the new API for model composition. It provides a declarative layer on top of the 1.x deployment API to help you author performant inference pipeline easily. (#27417,#27420,#24754,#24435,#24630,#26573,#27349,#24404,#25424,#24418,#27815,#27844,#25453,#24629)
    • We introduced a new K8s native way to deploy Ray Serve. Along with a brand new REST API to perform deployment, update, and configure. (#25935,#27063,#24814,#26093,#25213,#26588,#25073,#27000,#27444,#26578,#26652,#25610,#25502,#26096,#24265,#26177,#25861,#25691,#24839,#27498,#27561,#25862,#26347)
    • Serve can now survive Ray GCS failure. This used to be a single-point-of-failure in Ray Serve's architecture. Now, when the GCS goes down, Serve can continue to Serve traffic. We recommend you to try out this feature and give us feedback! (#25633,#26107,#27608,#27763,#27771,#25478,#25637,#27526,#27674,#26753,#26797,#24560,#26685,#26734,#25987,#25091,#24934)
  • Autoscaling has been promoted to stable. Additionally, we added a scale to zero support. (#25770,#25733,#24892,#26393)
  • The documentation has been revamped. Check them at rayserve.org (#24414,#26211,#25786,#25936,#26029,#25830,#24760,#24871,#25243,#25390,#25646,#24657,#24713,#25270,#25808,#24693,#24736,#24524,#24690,#25494)

💫 Enhancements:

  • Serve natively supports deploying predictor and checkpoints from Ray AI Runtime (#26026,#25003,#25537,#25609,#25962,#26494,#25688,#24512,#24417)
  • Serve now supports scaling Gradio application (#27560)
  • Java Client API, marking the complete alpha release Java API (#22726)
  • Improved out-of-box performance by using uvicorn with uvloop (#25027)
RLlib

🎉 New Features:

  • In 2.0, RLlib is introducing an object-oriented configuration API instead of using a python dict for algorithm configuration (#24332, #24374, #24375, #24376, #24433, #24576, #24650, #24577, #24339, #24687, #24775, #24584, #24583, #24853, #25028, #25059, #25065, #25066, #25067, #25256, #25255, #25278, #25279)
  • RLlib is introducing a Connectors API (alpha). Connectors are a new component that handles transformations on inputs and outputs of a given RL policy. (#25311, #25007, #25923, #25922, #25954, #26253, #26510, #26645, #26836, #26803, #26998, #27016)
  • New improvements to off-policy estimators, including a new Doubly-Robust Off-Policy Estimator implementation (#24384, #25107, #25056, #25899, #25911, #26279, #26893)
  • CRR Algorithm (#25459, #25667, #25905, #26142, #26304, #26770, #27161)
  • Feature importance evaluation for offline RL (#26412)
  • RE3 exploration algorithm TF2 framework support (#25221)
  • Unified replay Buffer API (#24212, #24156, #24473, #24506, #24866, #24683, #25841, #25560, #26428)

💫 Enhancements:

  • Improvements to RolloutWorker / Env fault tolerance (#24967, #26134, #26276, #26809)
  • Upgrade gym to 0.23 (#24171), Bump gym dep to 0.24 (#26190)
  • Agents has been renamed to Algorithms (#24511, #24516, #24739, #24797, #24841, #24896, #25014, #24579, #25314, #25346, #25366, #25539, #25869)
  • Execution Plan API is now deprecated. Training step function API is the new way of specifying RLlib algorithms (#23454, #24488, #2450, #24212, #24165, #24545, #24507, #25076, #25624, #25924, #25856, #25851, #27344, #24423)
  • Policy V2 subclassing implementation migration (#24742, #24746, #24914, #25117, #25203, #25078, #25254, #25384, #25585, #25871, #25956, #26054)
  • Allow passing **kwargs to action distribution. (#24692)
  • Deprecation: Replace remaining evaluation_num_episodes with evaluation_duration. (#26000)

🔨 Fixes:

  • Multi-GPU learner thread key error in MA-scenarios (#24382)
  • Add release learning tests for SlateQ (#24429)
  • APEX-DQN replay buffer config validation fix. (#24588)
  • Automatic sequencing in function timeslice_along_seq_lens_with_overlap (#24561)
  • Policy Server/Client metrics reporting fix (#24783)
  • Re-establish dashboard performance tests. (#24728)
  • Bandit tf2 fix (+ add tf2 to test cases). (#24908)
  • Fix estimated buffer size in replay buffers. (#24848)
  • Fix RNNSAC example failing on CI + fixes for recurrent models for other Q Learning Algos. (#24923)
  • Curiosity bug fix. (#24880)
  • Auto-infer different agents' spaces in multi-agent env. (#24649)
  • Fix the bug “WorkerSet.stop() will raise error if self._local_worker is None (e.g. in evaluation worker sets)”. (#25332)
  • Fix Policy global timesteps being off by init sample batch size. (#25349)
  • Disambiguate timestep fragment storage unit in replay buffers. (#25242)
  • Fix the bug where on GPU, sample_batch.to_device() only converts the device and does not convert float64 to float32. (#25460)
  • Fix faulty usage of get_filter_config in ComplexInputNextwork (#25493)
  • Custom resources per worker should get added to default_resource_request (#24463)
  • Better default values for training_intensity and target_network_update_freq for R2D2. (#25510)
  • Fix multi agent environment checks for observations that contain only some agents' obs each step. (#25506)
  • Fixes PyTorch grad clipping logic and adds grad clipping to QMIX. (#25584)
  • Discussion 6432: Automatic train_batch_size calculation fix. (#25621)
  • Added meaningful error for multi-agent failure of SampleCollector in case no agent steps in episode. (#25596)
  • Replace torch.range with torch.arange. (#25640)\
  • Fix the bug where there is no gradient clipping in QMix. (#25656)
  • Fix sample batch concatination. (#25572)
  • Fix action_sampler_fn call in TorchPolicyV2 (obs_batch instead of input_dict arg). (#25877)
  • Fixes logging of all of RLlib's Algorithm names as warning messages. (#25840)
  • IMPALA/APPO multi-agent mix-in-buffer fixes (plus MA learningt ests). (#25848)
  • Move offline input into replay buffer using rollout ops in CQL. (#25629)
  • Include SampleBatch.T column in all collected batches. (#25926)
  • Add timeout to filter synchronization. (#25959)
  • SimpleQ PyTorch Multi GPU fix (#26109)
  • IMPALA and APPO metrics fixes; remove deprecated async_parallel_requests utility. (#26117)
  • Added 'episode.hist_data' to the 'atari_metrics' to nsure that custom metrics of the user are kept in postprocessing when using Atari environments. (#25292)
  • Make the dataset and json readers batchable (#26055)
  • Fix Issue 25696: Output writers not working w/ multiple workers. (#25722)
  • Fix all the erroneous on_trainer_init warning. (#26433)
  • In env check, step only expected agents. (#26425)
  • Make DQN update_target use only trainable variables. (#25226)
  • Fix FQE Policy call (#26671)
  • Make queue placement ops blocking (#26581)
  • Fix memory leak in APEX_DQN (#26691)
  • Fix MultiDiscrete not being one-hotted correctly (#26558)
  • Make IOContext optional for DatasetReader (#26694)
  • Make sure we step() after adding init_obs. (#26827)
  • Fix ModelCatalog for nested complex inputs (#25620)
  • Use compress observations where replay buffers and image obs are used in tuned examples (#26735)
  • Fix SampleBatch.split_by_episode to use dones if episode id is not available (#26492)
  • Fix torch None conversion in torch_utils.py::convert_to_torch_tensor. (#26863)
  • Unify gnorm mixin for tf and torch policies. (#26102)
Ray Workflows

🎉 New Features:

  • Support ray client (#26702)
  • Http event is supported (#26010)
  • Support retry_exceptions (#26913)
  • Support queuing in workflow (#24697)
  • Make status indexed (#24767)

🔨 Fixes:

  • Push logs to drivers correctly (#24490)
  • Make resume no side effect (#26918)
  • Make the max_retries aligned with ray (#26350)

🏗 Architecture refactoring:

  • Rewrite workflow execution engine (#25618)
  • Simplify the resume flow (#24594)
  • Deprecate step and use bind (#26232)
  • Deprecate virtual actor (#25394)
  • Refactor the exception processing (#26398)

Ray Core and Ray Clusters

Ray Core

🎉 New Features:

  • Ray State API is now at alpha. You can access the live information of tasks, actors, objects, placement groups, and etc. through Ray CLI (summary / list / get) and Python SDK. See the Ray State API documentation for more information.
  • Support generators for tasks with multiple return values (#25247)
  • Support GCS Fault tolerance.(#24764, #24813, #24887, #25131, #25126, #24747, #25789, #25975, #25994, #26405, #26421, #26919)

💫 Enhancements:

  • Allow failing new tasks immediately while the actor is restarting (#22818)
  • Add more accurate worker exit (#24468)
  • Allow user to override global default for max_retries (#25189)
  • Export additional metrics for workers and Raylet memory (#25418)
  • Push message to driver when a Raylet dies (#25516)
  • Out of Disk prevention (#25370)
  • ray.init defaults to an existing Ray instance if there is one (#26678)
  • Reconstruct manually freed objects (#27567)

🔨 Fixes:

  • Fix a task cancel hanging bug (#24369)
  • Adjust worker OOM scores to prioritize the raylet during memory pressure (#24623)
  • Fix pull manager deadlock due to object reconstruction (#24791)
  • Fix bugs in data locality aware scheduling (#25092)
  • Fix node affinity strategy when resource is empty (#25344)
  • Fix object transfer resend protocol (#26349)

🏗 Architecture refactoring:

  • Raylet and GCS schedulers share the same code (#23829)
  • Remove multiple core workers in one process (#24147, #25159)
Ray Clusters

🎉 New Features:

  • The KubeRay operator is now the preferred tool to run Ray on Kubernetes.
    • Ray Autoscaler + KubeRay operator integration is now beta.

💫 Enhancements:

🔨 Fixes:

  • Previously deprecated fields, head_node, worker_nodes, head_node_type, default_worker_node_type, autoscaling_mode, target_utilization_fraction are removed. Check out the migration guide to learn how to migrate to the new versions.
Ray Client

🎉 New Features:

  • Support for configuring request metadata for client gRPC (#24946)

💫 Enhancements:

  • Remove 2 GiB size limit on remote function arguments (#24555)

🔨 Fixes:

  • Fix excessive memory usage when submitting large remote arguments (#24477)
Dashboard

🎉 New Features:

  • The new dashboard UI is now to default dashboard. Please leave any feedback about the dashboard on Github Issues or Discourse! You can still go to the legacy dashboard UI by clicking “Back to legacy dashboard”.
  • New Dashboard UI now shows all ray jobs. This includes jobs submitted via the job submission API and jobs launched from python scripts via ray.init().
  • New Dashboard UI now shows worker nodes in the main node tab
  • New Dashboard UI now shows more information in the actors tab

Breaking changes:

  • The job submission list_jobs API endpoint, CLI command, and SDK function now returns a list of jobs instead of a dictionary from id to job.
  • The Tune tab is no longer in the new dashboard UI. It is still available in the legacy dashboard UI but will be removed.
  • The memory tab is no longer in the new dashboard UI. It is still available in the legacy dashboard UI but will be removed.

🔨 Fixes:

  • We reduced the memory usage of the dashboard. We are no longer caching logs and we cache a maximum of 1000 actors. As a result of this change, node level logs can no longer be accessed in the legacy dashboard.
  • Jobs status error message now properly truncates logs to 10 lines. We also added a max characters of 20000 to avoid passing too much data.

Many thanks to all those who contributed to this release!

@ujvl, @xwjiang2010, @EricCousineau-TRI, @ijrsvt, @waleedkadous, @captain-pool, @olipinski, @danielwen002, @amogkam, @bveeramani, @kouroshHakha, @jjyao, @larrylian, @goswamig, @hanming-lu, @edoakes, @nikitavemuri, @enori, @grechaw, @truelegion47, @alanwguo, @sychen52, @ArturNiederfahrenhorst, @pcmoritz, @mwtian, @vakker, @c21, @rberenguel, @mattip, @robertnishihara, @cool-RR, @iamhatesz, @ofey404, @raulchen, @nmatare, @peterghaddad, @n30111, @fkaleo, @Riatre, @zhe-thoughts, @lchu-ibm, @YoelShoshan, @Catch-Bull, @matthewdeng, @VishDev12, @valtab, @maxpumperla, @tomsunelite, @fwitter, @liuyang-my, @peytondmurray, @clarkzinzow, @VeronikaPolakova, @sven1977, @stephanie-wang, @emjames, @Nintorac, @suquark, @javi-redondo, @xiurobert, @smorad, @brucez-anyscale, @pdames, @jjyyxx, @dmatrix, @nakamasato, @richardliaw, @juliusfrost, @anabranch, @christy, @Rohan138, @cadedaniel, @simon-mo, @mavroudisv, @guidj, @rkooo567, @orcahmlee, @lixin-wei, @neigh80, @yuduber, @JiahaoYao, @simonsays1980, @gjoliver, @jimthompson5802, @lucasalavapena, @zcin, @clarng, @jbn, @DmitriGekhtman, @timgates42, @charlesjsun, @Yard1, @mgelbart, @wumuzi520, @sihanwang41, @ghost, @jovany-wang, @siavash119, @yuanchi2807, @tupui, @jianoaix, @sumanthratna, @code-review-doctor, @Chong-Li, @FedericoGarza, @ckw017, @Makan-Ar, @kfstorm, @flanaman, @WangTaoTheTonic, @franklsf95, @scv119, @kvaithin, @wuisawesome, @jiaodong, @mgerstgrasser, @tiangolo, @architkulkarni, @MyeongKim, @ericl, @SongGuyang, @avnishn, @chengscott, @shrekris-anyscale, @Alyetama, @iycheng, @rickyyx, @krfricke, @sijieamoy, @kimikuri, @czgdp1807, @michalsustr

View originalPermalink
How 2.0.0 went
1.13.0

Ray-1.13.0

Added 14
  • Python 3.10 support is now in alpha on Linux and Mac
  • Ray usage stats collection is now on by default, guarded by an opt-out prompt
  • Ray Tune can now synchronize Trial data from worker nodes via the object store without rsync
  • Ray Workflow comes with a new API and is integrated with Ray DAG
  • Node affinity scheduling strategy
  • Add metrics for disk and network I/O
Changed 4
  • Improve exponential backoff when connecting to the redis
  • Datasets aggregation computation is vectorized for performance improvement
  • Datasets bulk parquet file reading is optimized with the fast metadata provider
  • Datasets block processing uses more efficient move semantics
Fixed 1
  • Fix deadlock by switching to SimpleQueue on Python 3.7 and newer in async dataclient
Deprecated 1
  • Workflow step is deprecated
Highlights:
  • Python 3.10 support is now in alpha.
  • Ray usage stats collection is now on by default (guarded by an opt-out prompt).
  • Ray Tune can now synchronize Trial data from worker nodes via the object store (without rsync!)
  • Ray Workflow comes with a new API and is integrated with Ray DAG.
Ray Autoscaler

💫Enhancements:

  • CI tests for KubeRay autoscaler integration (#23365, #23383, #24195)
  • Stability enhancements for KubeRay autoscaler integration (#23428)

🔨 Fixes:

  • Improved GPU support in KubeRay autoscaler integration (#23383)
  • Resources scheduled with the node affinity strategy are not reported to the autoscaler (#24250)
Ray Client

💫Enhancements:

  • Add option to configure ray.get with >2 sec timeout (#22165)
  • Return None from internal KV for non-existent keys (#24058)

🔨 Fixes:

  • Fix deadlock by switching to SimpleQueue on Python 3.7 and newer in async dataclient (#23995)
Ray Core

🎉 New Features:

  • Ray usage stats collection is now on by default (guarded by an opt-out prompt)
  • Alpha support for python 3.10 (on Linux and Mac)
  • Node affinity scheduling strategy (#23381)
  • Add metrics for disk and network I/O (#23546)
  • Improve exponential backoff when connecting to the redis (#24150)
  • Add the ability to inject a setup hook for customization of runtime_env on init (#24036)
  • Add a utility to check GCS / Ray cluster health (#23382)

🔨 Fixes:

  • Fixed internal storage S3 bugs (#24167)
  • Ensure "get_if_exists" takes effect in the decorator. (#24287)
  • Reduce memory usage for Pubsub channels that do not require total memory cap (#23985)
  • Add memory buffer limit in publisher for each subscribed entity (#23707)
  • Use gRPC instead of socket for GCS client health check (#23939)
  • Trim size of Reference struct (#23853)
  • Enable debugging into pickle backend (#23854)

🏗 Architecture refactoring:

  • Gcs storage interfaces unification (#24211)
  • Cleanup pickle5 version check (#23885)
  • Simplify options handling (#23882)
  • Moved function and actor importer away from pubsub (#24132)
  • Replace the legacy ResourceSet & SchedulingResources at Raylet (#23173)
  • Unification of AddSpilledUrl and UpdateObjectLocationBatch RPCs (#23872)
  • Save task spec in separate table (#22650)
Ray Datasets

🎉 New Features:

  • Performance improvement: the aggregation computation is vectorized (#23478)
  • Performance improvement: bulk parquet file reading is optimized with the fast metadata provider (#23179)
  • Performance improvement: more efficient move semantics for Datasets block processing (#24127)
  • Supports Datasets lineage serialization (aka out-of-band serialization) (#23821, #23931, #23932)
  • Supports native Tensor views in map processing for pure-tensor datasets (#24812)
  • Implemented push-based shuffle (#24281)

🔨 Fixes:

  • Documentation improvement: Getting Started page (#24860)
  • Documentation improvement: FAQ (#24932)
  • Documentation improvement: End to end examples (#24874)
  • Documentation improvement: Feature guide - Creating Datasets (#24831)
  • Documentation improvement: Feature guide - Saving Datasets (#24987)
  • Documentation improvement: Feature guide - Transforming Datasets (#25033)
  • Documentation improvement: Datasets APIs docstrings (#24949)
  • Performance: fixed block prefetching (#23952)
  • Fixed zip() for Pandas dataset (#23532)

🏗 Architecture refactoring:

  • Refactored LazyBlockList (#23624)
  • Added path-partitioning support for all content types (#23624)
  • Added fast metadata provider and refactored Parquet datasource (#24094)
RLlib

🎉 New Features:

  • Replay buffer API: First algorithms are using the new replay buffer API, allowing users to define and configure their own custom buffers or use RLlib’s built-in ones: SimpleQ, DQN (#24164, #22842, #23523, #23586)

🏗 Architecture refactoring:

  • More algorithms moved into the training iteration function API (no longer using execution plans). Users can now more easily read, develop, and debug RLlib’s algorithms: A2C, APEX-DQN, CQL, DD-PPO, DQN, MARWIL + BC, PPO, QMIX , SAC, SimpleQ, SlateQ, Trainers defined in examples folder. (#22937, #23420, #23673, #24164, #24151, #23735, #24157, #23798, #23906, #24118, #22842, #24166, #23712). This will be fully completed and documented with Ray 2.0.
  • Make RolloutWorkers (optionally) recoverable after failure via the new recreate_failed_workers=True config flag. (#23739)
  • POC for new TrainerConfig objects (instead of python config dicts): PPOConfig (for PPOTrainer) and PGConfig (for PGTrainer). (#24295, #23491)
  • Hard-deprecate build_trainer() (trainer_templates.py): All custom Trainers should now sub-class from any existing Trainer class. (#23488)

💫Enhancements:

  • Add support for complex observations in CQL. (#23332)
  • Bandit support for tf2. (#22838)
  • Make actions sent by RLlib to the env immutable. (#24262)
  • Memory leak finding toolset using tracemalloc + CI memory leak tests. (#15412)
  • Enable DD-PPO to run on Windows. (#23673)

🔨 Fixes:

  • APPO eager fix (APPOTFPolicy gets wrapped as_eager() twice by mistake). (#24268)
  • CQL gets stuck when deprecated timesteps_per_iteration is used (use min_train_timesteps_per_reporting instead). (#24345)
  • SlateQ runs on GPU (torch). (#23464)
  • Other bug fixes: #24016, #22050, #23814, #24025, #23740, #23741, #24006, #24005, #24273, #22010, #24271, #23690, #24343, #23419, #23830, #24335, #24148, #21735, #24214, #23818, #24429
Ray Workflow

🎉 New Features:

  • Workflow step is deprecated (#23796, #23728, #23456, #24210)

🔨 Fixes:

  • Fix one bug where max_retries is not aligned with ray core’s max_retries. (#22903)

🏗 Architecture refactoring:

  • Integrate ray storage in workflow (#24120)
Tune

🎉 New Features:

  • Add RemoteTask based sync client (#23605) (rsync not required anymore!)
  • Chunk file transfers in cross-node checkpoint syncing (#23804)
  • Also interrupt training when SIGUSR1 received (#24015)
  • reuse_actors per default for function trainables (#24040)
  • Enable AsyncHyperband to continue training for last trials after max_t (#24222)

💫Enhancements:

  • Improve testing (#23229
  • Improve docstrings (#23375)
  • Improve documentation (#23477, #23924)
  • Simplify trial executor logic (#23396
  • Make MLflowLoggerUtil copyable (#23333)
  • Use new Checkpoint interface internally (#22801)
  • Beautify Optional typehints (#23692)
  • Improve missing search dependency info (#23691)
  • Skip tmp checkpoints in analysis and read iteration from metadata (#23859)
  • Treat checkpoints with nan value as worst (#23862)
  • Clean up base ProgressReporter API (#24010)
  • De-clutter log outputs in trial runner (#24257)
  • hyperopt searcher to support tune.choice([[1,2],[3,4]]). (#24181)

🔨Fixes:

  • Optuna should ignore additional results after trial termination (#23495)
  • Fix PTL multi GPU link (#23589)
  • Improve Tune cloud release tests for durable storage (#23277)
  • Fix tensorflow distributed trainable docstring (#23590)
  • Simplify experiment tag formatting, clean directory names (#23672)
  • Don't include nan metrics for best checkpoint (#23820)
  • Fix syncing between nodes in placement groups (#23864)
  • Fix memory resources for head bundle (#23861)
  • Fix empty CSV headers on trial restart (#23860)
  • Fix checkpoint sorting with nan values (#23909)
  • Make Timeout stopper work after restoring in the future (#24217)
  • Small fixes to tune-distributed for new restore modes (#24220)
Train

Most distributed training enhancements will be captured in the new Ray AIR category!

🔨Fixes:

  • Copy resources_per_worker to avoid modifying user input
  • Fix train.torch.get_device() for fractional GPU or multiple GPU per worker case (#23763)
  • Fix multi node horovod bug (#22564)
  • Fully deprecate Ray SGD v1 (#24038)
  • Improvements to fault tolerance (#22511)
  • MLflow start run under correct experiment (#23662)
  • Raise helpful error when required backend isn't installed (#23583)
  • Warn pending deprecation for ray.train.Trainer and ray.tune DistributedTrainableCreators (#24056)

📖Documentation:

  • add FAQ (#22757)
Ray AIR

🎉 New Features:

  • HuggingFaceTrainer & HuggingFacePredictor (#23615, #23876)
  • SklearnTrainer & SklearnPredictor (#23803, #23850)
  • HorovodTrainer (#23437)
  • RLTrainer & RLPredictor (#23465, #24172)
  • BatchMapper preprocessor (#23700)
  • Categorizer preprocessor (#24180)
  • BatchPredictor (#23808)

💫Enhancements:

  • Add Checkpoint.as_directory() for efficient checkpoint fs processing (#23908)
  • Add config to Result, extend ResultGrid.get_best_config (#23698)
  • Add Scaling Config validation (#23889)
  • Add tuner test. (#23364)
  • Move storage handling to pyarrow.fs.FileSystem (#23370)
  • Refactor _get_unique_value_indices (#24144)
  • Refactor most_frequent SimpleImputer (#23706)
  • Set name of Trainable to match with Trainer #23697
  • Use checkpoint.as_directory() instead of cleaning up manually (#24113)
  • Improve file packing/unpacking (#23621)
  • Make Dataset ingest configurable (#24066)
  • Remove postprocess_checkpoint (#24297)

🔨Fixes:

  • Better exception handling (#23695)
  • Do not deepcopy RunConfig (#23499)
  • reduce unnecessary stacktrace (#23475)
  • Tuner should use run_config from Trainer per default (#24079)
  • Use custom fsspec handler for GS (#24008)

📖Documentation:

  • Add distributed torch_geometric example (#23580)
  • GNN example cleanup (#24080)
Serve

🎉 New Features:

  • Serve logging system was revamped! Access log is now turned on by default. (#23558)
  • New Gradio notebook example for Ray Serve deployments (#23494)
  • Serve now includes full traceback in deployment update error message (#23752)

💫Enhancements:

  • Serve Deployment Graph was enhanced with performance fixes and structural clean up. (#24199, #24026, #24065, #23984)
  • End to end tutorial for deployment graph (#23512, #22771, #23536)
  • input_schema is now renamed as http_adapter for usability (#24353, #24191)
  • Progress towards a declarative REST API (#23232, #23481)
  • Code cleanup and refactoring (#24067, #23578, #23934, #23759)
  • Protobuf based controller API for cross language client (#23004)

🔨Fixes:

  • Handle None in ReplicaConfig's resource_dict (#23851)
  • Set "memory" to None in ray_actor_options by default (#23619)
  • Make serve.shutdown() shutdown remote Serve applications (#23476)
  • Ensure replica reconfigure runs after allocation check (#24052)
  • Allow cloudpickle serializable objects as init args/kwargs (#24034)
  • Use controller namespace when getting actors (#23896)
Dashboard

🔨Fixes:

  • Add toggle to enable showing node disk usage on K8s (#24416, #24440)
  • Add job submission id as field to job snapshot (#24303)

Thanks Many thanks to all those who contributed to this release! @matthewdeng, @scv119, @xychu, @iycheng, @takeshi-yoshimura, @iasoon, @wumuzi520, @thetwotravelers, @maxpumperla, @krfricke, @jgiannuzzi, @kinalmehta, @avnishn, @dependabot[bot], @sven1977, @raulchen, @acxz, @stephanie-wang, @mgelbart, @xwjiang2010, @jon-chuang, @pdames, @ericl, @edoakes, @gjoseph92, @ddelange, @bkasper, @sriram-anyscale, @Zyiqin-Miranda, @rkooo567, @jbedorf, @architkulkarni, @osanseviero, @simonsays1980, @clarkzinzow, @DmitriGekhtman, @ashione, @smorad, @andenrx, @mattip, @bveeramani, @chaokunyang, @richardliaw, @larrylian, @Chong-Li, @fwitter, @shrekris-anyscale, @gjoliver, @simontindemans, @silky, @grypesc, @ijrsvt, @daikeshi, @kouroshHakha, @mwtian, @mesjou, @sihanwang41, @PavelCz, @czgdp1807, @jianoaix, @GuillaumeDesforges, @pcmoritz, @arsedler9, @n30111, @kira-lin, @ckw017, @max0x7ba, @Yard1, @XuehaiPan, @lchu-ibm, @HJasperson, @SongGuyang, @amogkam, @liuyang-my, @WangTaoTheTonic, @jovany-wang, @simon-mo, @dynamicwebpaige, @suquark, @ArturNiederfahrenhorst, @jjyao, @KepingYan, @jiaodong, @frosk1

View originalPermalink
How 1.13.0 went
1.12.1

Ray-1.12.1

Added 1
  • Resume building ray-ml Docker images for CPU after they were stopped in Ray 1.9
Fixed 5
  • Fix bug with memory limit fetching when running Ray in a container, allowing Ray to work on Google Colab again
  • Fix MLflow run to start under the correct experiment for Ray Train and Ray Tune integrations
  • Fix APPO in eager mode for RLlib
  • Fix Alphastar for TF2 with tracing enabled in RLlib
  • Fix replica leak in anonymous namespaces for Ray Serve

Patch release with the following fixes:

View originalPermalink
How 1.12.1 went
1.11.1

Ray-1.11.1

Fixed 3
  • Ray Job Submission not working with remote working_dir URLs in their runtime environment
  • Ray Tune + MLflow integration failing to set MLflow experiment ID
  • Dependencies for gym not pinned, leading to version incompatibility issues

Patch release including fixes for the following issues:

View originalPermalink
How 1.11.1 went
1.12.0

Ray-1.12.0

Added 16
  • Ray AI Runtime (AIR), an open-source toolkit for building end-to-end ML applications on Ray, is now in Alpha
  • New RLlib algorithms: SlateQ, Bandits for recommender systems use cases, and AlphaStar for multi-agent multi-GPU with league-based self-play
  • Ray Datasets lazy execution model with automatic task fusion and memory-optimizing move semantics
  • Ray Datasets first-class support for Pandas DataFrame blocks
  • Ray Datasets efficient random access datasets via binary search
  • Ray Autoscaler support cache_stopped_nodes on Azure
Changed 2
  • Ray usage data collection is now off by default
  • Ray Client gets and puts are streamed to support arbitrary object sizes
Removed 1
  • Removed support for bootstrapping with Redis
Highlights
  • Ray AI Runtime (AIR), an open-source toolkit for building end-to-end ML applications on Ray, is now in Alpha. AIR is an effort to unify the experience of using different Ray libraries (Ray Data, Train, Tune, Serve, RLlib). You can find more information on the docs or on the public RFC.
    • Getting involved with Ray AIR. We’ll be holding office hours, development sprints, and other activities as we get closer to the Ray AIR Beta/GA release. Want to join us? Fill out this short form!
  • Ray usage data collection is now off by default. If you have any questions or concerns, please comment on the RFC.
  • New algorithms are added to RLlib: SlateQ & Bandits (for recommender systems use cases) and AlphaStar (multi-agent, multi-GPU w/ league-based self-play)
  • Ray Datasets: new lazy execution model with automatic task fusion and memory-optimizing move semantics; first-class support for Pandas DataFrame blocks; efficient random access datasets.
Ray Autoscaler

🎉 New Features

  • Support cache_stopped_nodes on Azure (#21747)
  • AWS Cloudwatch support (#21523)

💫 Enhancements

  • Improved documentation and standards around built in autoscaler node providers. (#22236, 22237)
  • Improved KubeRay support (#22987, #22847, #22348, #22188)
  • Remove redis requirement (#22083)

🔨 Fixes

  • No longer print infeasible warnings for internal placement group resources. Placement groups which cannot be satisfied by the autoscaler still trigger warnings. (#22235)
  • Default ami’s per AWS region are updated/fixed. (#22506)
  • GCP node termination updated (#23101)
  • Retry legacy k8s operator on monitor failure (#22792)
  • Cap min and max workers for manually managed on-prem clusters (#21710)
  • Fix initialization artifacts (#22570)
  • Ensure initial scaleup with high upscaling_speed isn't limited. (#21953)
Ray Client

🎉 New Features:

  • ray.init has consistent return value in client mode and driver mode #21355

💫Enhancements:

  • Gets and puts are streamed to support arbitrary object sizes #22100, #22327

🔨 Fixes:

  • Fix ray client object ref releasing in wrong context #22025
Ray Core

🎉 New Features

  • RuntimeEnv:
    • Support setting timeout for runtime_env setup. (#23082)
    • Support setting pip_check and pip_version for runtime_env. (#22826, #23306)
    • env_vars will take effect when the pip install command is executed. (temporarily ineffective in conda) (#22730)
    • Support strongly-typed API ray.runtime.RuntimeEnv to define runtime env. (#22522)
    • Introduce virtualenv to isolate the pip type runtime env. (#21801,#22309)
  • Raylet shares fate with the dashboard agent. And the dashboard agent will stay alive when it catches the port conflicts. (#22382,#23024)
  • Enable dashboard in the minimal ray installation (#21896)
  • Add task and object reconstruction status to ray memory cli tools(#22317)

🔨 Fixes

  • Report only memory usage of pinned object copies to improve scaledown. (#22020)
  • Scheduler:
    • No spreading if a node is selected for lease request due to locality. (#22015)
    • Placement group scheduling: Non-STRICT_PACK PGs should be sorted by resource priority, size (#22762)
    • Round robin during spread scheduling (#21303)
  • Object store:
    • Increment ref count when creating an ObjectRef to prevent object from going out of scope (#22120)
    • Cleanup handling for nondeterministic object size during transfer (#22639)
    • Fix bug in fusion for spilled objects (#22571)
    • Handle IO worker failures correctly (#20752)
  • Improve ray stop behavior (#22159)
  • Avoid warning when receiving too much logs from a different job (#22102)
  • Gcs resource manager bug fix and clean up. (#22462, #22459)
  • Release GIL when running parallel_memcopy() / memcpy() during serializations. (#22492)
  • Fix registering serializer before initializing Ray. (#23031)

🏗 Architecture refactoring

  • Ray distributed scheduler refactoring: (#21927, #21992, #22160, #22359, #22722, #22817, #22880, #22893, #22885, #22597, #22857, #23124)
  • Removed support for bootstrapping with Redis.
Ray Data Processing

🎉 New Features

  • Big Performance and Stability Improvements:
    • Add lazy execution mode with automatic stage fusion and optimized memory reclamation via block move semantics (#22233, #22374, #22373, #22476)
    • Support for random access datasets, providing efficient random access to rows via binary search (#22749)
    • Add automatic round-robin load balancing for reading and shuffle reduce tasks, obviating the need for the _spread_resource_prefix hack (#21303)
  • More Efficient Tabular Data Wrangling:
    • Add first-class support for Pandas blocks, removing expensive Arrow <-> Pandas conversion costs (#21894)
    • Expose TableRow API + minimize copies/type-conversions on row-based ops (#22305)
  • Groupby + Aggregations Improvements:
    • Support mapping over groupby groups (#22715)
    • Support ignoring nulls in aggregations (#20787)
  • Improved Dataset Windowing:
    • Support windowing a dataset by bytes instead of number of blocks (#22577)
    • Batch across windows in DatasetPipelines (#22830)
  • Better Text I/O:
    • Support streaming snappy compression for text files (#22486)
    • Allow for custom decoding error handling in read_text() (#21967)
    • Add option for dropping empty lines in read_text() (#22298)
  • New Operations:
    • Add add_column() utility for adding derived columns (#21967)
  • Support for metadata provider callback for read APIs (#22896)
  • Support configuring autoscaling actor pool size (#22574)

🔨 Fixes

  • Force lazy datasource materialization in order to respect DatasetPipeline stage boundaries (#21970)
  • Simplify lifetime of designated block owner actor, and don’t create it if dynamic block splitting is disabled (#22007)
  • Respect 0 CPU resource request when using manual resource-based load balancing (#22017)
  • Remove batch format ambiguity by always converting Arrow batches to Pandas when batch_format=”native” is given (#21566)
  • Fix leaked stats actor handle due to closure capture reference counting bug (#22156)
  • Fix boolean tensor column representation and slicing (#22323)
  • Fix unhandled empty block edge case in shuffle (#22367)
  • Fix unserializable Arrow Partitioning spec (#22477)
  • Fix incorrect iter_epochs() batch format (#22550)
  • Fix infinite iter_epochs() loop on unconsumed epochs (#22572)
  • Fix infinite hang on split() when num_shards < num_rows (#22559)
  • Patch Parquet file fragment serialization to prevent metadata fetching (#22665)
  • Don’t reuse task workers for actors or GPU tasks (#22482)
  • Pin pipeline executor actors to driver node to allow for lineage-based fault tolerance for pipelines (#​​22715)
  • Always use non-empty blocks to determine schema (#22834)
  • API fix bash (#22886)
  • Make label_column optional for to_tf() so it can be used for inference (#22916)
  • Fix schema() for DatasetPipelines (#23032)
  • Fix equalized split when num_splits == num_blocks (#23191)

💫 Enhancements

  • Optimize Parquet metadata serialization via batching (#21963)
  • Optimize metadata read/write for Ray Client (#21939)
  • Add sanity checks for memory utilization (#22642)

🏗 Architecture refactoring

  • Use threadpool to submit DatasetPipeline stages (#22912)
RLlib

🎉 New Features

  • New “AlphaStar” algorithm: A parallelized, multi-agent/multi-GPU learning algorithm, implementing league-based self-play. (#21356, #21649)
  • SlateQ algorithm has been re-tested, upgraded (multi-GPU capable, TensorFlow version), and bug-fixed (added to weekly learning tests). (#22389, #23276, #22544, #22543, #23168, #21827, #22738)
  • Bandit algorithms: Moved into agents folder as first-class citizens, TensorFlow-Version, unified w/ other agents’ APIs. (#22821, #22028, #22427, #22465, #21949, #21773, #21932, #22421)
  • ReplayBuffer API (in progress): Allow users to customize and configure their own replay buffers and use these inside custom or built-in algorithms. (#22114, #22390, #21808)
  • Datasets support for RLlib: Dataset Reader/Writer and documentation. (#21808, #22239, #21948)

🔨 Fixes

  • Fixed memory leak in SimpleReplayBuffer. (#22678)
  • Fixed Unity3D built-in examples: Action bounds from -inf/inf to -1.0/1.0. (#22247)
  • Various bug fixes. (#22350, #22245, #22171, #21697, #21855, #22076, #22590, #22587, #22657, #22428, #23063, #22619, #22731, #22534, #22074, #22078, #22641, #22684, #22398, #21685)

🏗 Architecture refactoring

  • A3C: Moved into new training_iteration API (from exeution_plan API). Lead to a ~2.7x performance increase on a Atari + CNN + LSTM benchmark. (#22126, #22316)
  • Make multiagent->policies_to_train more flexible via callable option (alternative to providing a list of policy IDs). (#20735)

💫Enhancements:

  • Env pre-checking module now active by default. (#22191)
  • Callbacks: Added on_sub_environment_created and on_trainer_init callback options. (#21893, #22493)
  • RecSim environment wrappers: Ability to use google’s RecSim for recommender systems more easily w/ RLlib algorithms (3 RLlib-ready example environments). (#22028, #21773, #22211)
  • MARWIL loss function enhancement (exploratory term for stddev). (#21493)

📖Documentation:

  • Docs enhancements: Setup-dev instructions; Ray datasets integration. (#22239)
  • Other doc enhancements and fixes. (#23160, #23226, #22496, #22489, #22380)
Ray Workflow

🎉 New Features:

  • Support skip checkpointing.

🔨 Fixes:

  • Fix an issue where the event loop is not set.
Tune

🎉 New Features:

  • Expose new checkpoint interface to users (#22741)

💫Enhancements:

🔨Fixes:

  • Cleanup incorrectly formatted strings (Part 2: Tune) (#23129)
  • fix error handling for fail_fast case. (#22982)
  • Remove Trainable.update_resources (#22471)
  • Bump flaml from 0.6.7 to 0.9.7 in /python/requirements/ml (#22071)
  • Fix analysis without registered trainable (#21475)
  • Update Lightning examples to support PTL 1.5 (#20562)
  • Fix WandbTrainableMixin config for rllib trainables (#22063)
  • [wandb] Use resume=False per default (#21892)

🏗 Refactoring:

📖Documentation:

  • Tune docs overhaul (first part) (#22112)
  • Tune overhaul part II (#22656)
  • Note TPESampler performance issues in docs (#22545)
  • hyperopt notebook (#22315)
Train

🎉 New Features

  • Integration with PyTorch profiler. Easily enable the pytorch profiler with Ray Train to profile training and visualize stats in Tensorboard (#22345).
  • Automatic pipelining of host to device transfer. While training is happening on one batch of data, the next batch of data is concurrently being moved from CPU to GPU (#22716, #22974)
  • Automatic Mixed Precision. Easily enable PyTorch automatic mixed precision during training (#22227).

💫 Enhancements

  • Add utility function to enable reproducibility for Pytorch training (#22851)
  • Add initial support for metrics aggregation (#22099)
  • Add support for trainer.best_checkpoint and Trainer.load_checkpoint_path. You can now directly access the best in memory checkpoint, or load an arbitrary checkpoint path to memory. (#22306)

🔨 Fixes

  • Add a utility function to turn off TF autosharding (#21887)
  • Fix fault tolerance for Tensorflow training (#22508)
  • Train utility methods (train.report(), etc.) can now be called outside of a Train session (#21969)
  • Fix accuracy calculation for CIFAR example (#22292)
  • Better error message for placement group time out (#22845)

📖 Documentation

  • Update docs for ray.train.torch import (#22555)
  • Clarify shuffle documentation in prepare_data_loader (#22876)
  • Denote train.torch.get_device as a Public API (#22024)
  • Minor fixes on Ray Train user guide doc (#22379)
Serve

🎉 New Features

  • Deployment Graph API is now in alpha. It provides a way to build, test and deploy complex inference graph composed of many deployments. (#23177, #23252, #23301, #22840, #22710, #22878, #23208, #23290, #23256, #23324, #23289, #23285, #22473, #23125, #23210)
  • New experimental REST API and CLI for creating and managing deployments. ( #22839, #22257, #23198, #23027, #22039, #22547, #22578, #22611, #22648, #22714, #22805, #22760, #22917, #23059, #23195, #23265, #23157, #22706, #23017, #23026, #23215)
  • New sets of HTTP adapters making it easy to build simple application, as well as Ray AI Runtime model wrappers in alpha. (#22913, #22914, #22915, #22995)
  • New health_check API for end to end user provided health check. (#22178, #22121, #22297)

🔨 Fixes

  • Autoscaling algorithm will now relingquish most idle nodes when scaling down (#22669)
  • Serve can now manage Java replicas (#22628)
  • Added a hands-on self-contained MLflow and Ray Serve deployment example (#22192)
  • Added root_path setting to http_options (#21090)
  • Remove shard_key, http_method, and http_headers in ServeHandle (#21590)
Dashboard

🔨Fixes:

  • Update CPU and memory reporting in kubernetes. (#21688)
Thanks

Many thanks to all those who contributed to this release! @edoakes, @pcmoritz, @jiaodong, @iycheng, @krfricke, @smorad, @kfstorm, @jjyyxx, @rodrigodelazcano, @scv119, @dmatrix, @avnishn, @fyrestone, @clarkzinzow, @wumuzi520, @gramhagen, @XuehaiPan, @iasoon, @birgerbr, @n30111, @tbabej, @Zyiqin-Miranda, @suquark, @pdames, @tupui, @ArturNiederfahrenhorst, @ashione, @ckw017, @siddgoel, @Catch-Bull, @vicyap, @spolcyn, @stephanie-wang, @mopga, @Chong-Li, @jjyao, @raulchen, @sven1977, @nikitavemuri, @jbedorf, @mattip, @bveeramani, @czgdp1807, @dependabot[bot], @Fabien-Couthouis, @willfrey, @mwtian, @SlowShip, @Yard1, @WangTaoTheTonic, @Wendi-anyscale, @kaushikb11, @kennethlien, @acxz, @DmitriGekhtman, @matthewdeng, @mraheja, @orcahmlee, @richardliaw, @dsctt, @yupbank, @Jeffwan, @gjoliver, @jovany-wang, @clay4444, @shrekris-anyscale, @jwyyy, @kyle-chen-uber, @simon-mo, @ericl, @amogkam, @jianoaix, @rkooo567, @maxpumperla, @architkulkarni, @chenk008, @xwjiang2010, @robertnishihara, @qicosmos, @sriram-anyscale, @SongGuyang, @jon-chuang, @wuisawesome, @valiantljk, @simonsays1980, @ijrsvt

View originalPermalink
How 1.12.0 went
1.11.0

Ray-1.11.0

Added 10
  • AWS Cloudwatch dashboard support for autoscaler
  • Kuberay autoscaler prototype
  • Set actor died error message in ActorDiedError
  • More powerful to_torch() API providing more control over the GPU batch format
  • Better utils for flattening complex inputs and enable prev-actions for LSTM/attention for complex action spaces
  • MultiAgentEnv pre-checker
Changed 2
  • Ray no longer starts Redis by default, with cluster metadata now stored in the GCS instead
  • Event stats is enabled by default
Fixed 9
  • Ray.autoscaler.sdk import issue
  • Better support for nested tasks
  • Fixed 16GB mac perf issue by limiting the plasma store size to 2GB
  • Fix SchedulingClassInfo.running_tasks memory leak
  • Round robin during spread scheduling
  • Fix simple Dataset sort generating only 1 non-empty block
Highlights

🎉 Ray no longer starts Redis by default. Cluster metadata previously stored in Redis is stored in the GCS now.

Ray Autoscaler

🎉 New Features

  • AWS Cloudwatch dashboard support #20266

💫 Enhancements

  • Kuberay autoscaler prototype #21086

🔨 Fixes

  • Ray.autoscaler.sdk import issue #21795
Ray Core

🎉 New Features

  • Set actor died error message in ActorDiedError #20903
  • Event stats is enabled by default #21515

🔨 Fixes

  • Better support for nested tasks
  • Fixed 16GB mac perf issue by limit the plasma store size to 2GB #21224
  • Fix SchedulingClassInfo.running_tasks memory leak #21535
  • Round robin during spread scheduling #19968

🏗 Architecture refactoring

  • Refactor scheduler resource reporting public APIs #21732
  • Refactor ObjectManager wait logic to WaitManager #21369
Ray Data Processing

🎉 New Features

  • More powerful to_torch() API, providing more control over the GPU batch format. (#21117)

🔨 Fixes

  • Fix simple Dataset sort generating only 1 non-empty block. (#21588)
  • Improve error handling across sorting, groupbys, and aggregations. (#21610, #21627)
  • Fix boolean tensor column representation and slicing. (#22358)
RLlib

🎉 New Features

  • Better utils for flattening complex inputs and enable prev-actions for LSTM/attention for complex action spaces. (#21330)
  • MultiAgentEnv pre-checker (#21476)
  • Base env pre-checker. (#21569)

🔨 Fixes

  • Better defaults for QMix (#21332)
  • Fix contrib/MADDPG + pettingzoo coop-pong-v4. (#21452)
  • Fix action unsquashing causes inf/NaN actions for unbounded action spaces. (#21110)
  • Ignore PPO KL-loss term completely if kl-coeff == 0.0 to avoid NaN values (#21456)
  • unsquash_action and clip_action (when None) cause wrong actions computed by Trainer.compute_single_action. (#21553)
  • Conv2d default filter tests and add default setting for 96x96 image obs space. (#21560)
  • Bing back and fix offline RL(BC & MARWIL) learning tests. (#21574, #21643)
  • SimpleQ should not use a prio. replay buffer. (#21665)
  • Fix video recorder env wrapper. Added test case. (#21670)

🏗 Architecture refactoring

  • Decentralized multi-agent learning (#21421)
  • Preparatory PR for multi-agent multi-GPU learner (alpha-star style) (#21652)
Ray Workflow

🔨 Fixes

  • Fixed workflow recovery issue due to a bug of dynamic output #21571
Tune

🎉 New Features

  • It is now possible to load all evaluated points from an experiment into a Searcher (#21506)
  • Add CometLoggerCallback (#20766)

💫 Enhancements

  • Only sync the checkpoint folder instead of the entire trial folder for cloud checkpoint. (#21658)
  • Add test for heterogeneous resource request deadlocks (#21397)
  • Remove unused return_or_clean_cached_pg (#21403)
  • Remove TrialExecutor.resume_trial (#21225)
  • Leave only one canonical way of stopping a trial (#21021)

🔨 Fixes

  • Replace deprecated running_sanity_check with sanity_checking in PTL integration (#21831)
  • Fix loading an ExperimentAnalysis object without a registered Trainable (#21475)
  • Fix stale node detection bug (#21516)
  • Fixes to allow tune/tests/test_commands.py to run on Windows (#21342)
  • Deflake PBT tests (#21366)
  • Fix dtype coercion in tune.choice (#21270)

📖 Documentation

  • Fix typo in schedulers.rst (#21777)
Train

🎉 New Features

  • Add PrintCallback (#21261)
  • Add MLflowLoggerCallback(#20802)

💫 Enhancements

  • Refactor Callback implementation (#21468, #21357, #21262)

🔨 Fixes

  • Fix Dataloader (#21467)

📖 Documentation

  • Documentation and example fixes (#​​21761, #21689, #21464)
Serve

🎉 New Features

  • Checkout our revampt end-to-end tutorial that walks through the deployment journey! (#20765)

🔨 Fixes

  • Warn when serve.start() with different options (#21562)
  • Detect http.disconnect and cancel requests properly (#21438)

Thanks Many thanks to all those who contributed to this release! @isaac-vidas, @wuisawesome, @stephanie-wang, @jon-chuang, @xwjiang2010, @jjyao, @MissiontoMars, @qbphilip, @yaoyuan97, @gjoliver, @Yard1, @rkooo567, @talesa, @czgdp1807, @DN6, @sven1977, @kfstorm, @krfricke, @simon-mo, @hauntsaninja, @pcmoritz, @JamieSlome, @chaokunyang, @jovany-wang, @sidward14, @DmitriGekhtman, @ericl, @mwtian, @jwyyy, @clarkzinzow, @hckuo, @vakker, @HuangLED, @iycheng, @edoakes, @shrekris-anyscale, @robertnishihara, @avnishn, @mickelliu, @ndrwnaguib, @ijrsvt, @Zyiqin-Miranda, @bveeramani, @SongGuyang, @n30111, @WangTaoTheTonic, @suquark, @richardliaw, @qicosmos, @scv119, @architkulkarni, @lixin-wei, @Catch-Bull, @acxz, @benblack769, @clay4444, @amogkam, @marin-ma, @maxpumperla, @jiaodong, @mattip, @isra17, @raulchen, @wilsonwang371, @carlogrisetti, @ashione, @matthewdeng

View originalPermalink
How 1.11.0 went
1.10.0

Ray-1.10.0

Added 9
  • Ray Windows support is now in beta with a significant fraction of the Ray test suite passing on Windows
  • runtime_env pip field now installs pip packages in existing environment instead of isolated environment
  • Stats framework for debugging Datasets performance
  • New config helper for enabling the Dask-on-Ray scheduler
  • Support for RE3 exploration algorithm in RLlib for tf
  • TrialCheckpoint class making checkpoint down/upload easier in Tune
Changed 9
  • Client task options are encoded with pickle instead of json
  • Allow runtime_env working_dir and py_modules to be pathlib.Path type
  • Reduce memory usage during conversion to Pandas DataFrame in Ray Data Processing
  • Refactor runtime_env to use protobuf for multi-language support
  • Refactor table block structure to support more tabular block formats
  • Add autoscaler update time to prometheus metrics
Fixed 1
  • Fix bug where specifying runtime_env conda/pip per-job using local requirements file with Ray Client on remote cluster didn't work
Security 1
  • Security fixes for log4j2 bumped to version 2.17.1
Highlights
  • 🎉 Ray Windows support is now in beta – a significant fraction of the Ray test suite is now passing on Windows. We are eager to learn about your experience with Ray 1.10 on Windows, please file issues you encounter at https://github.com/ray-project/ray/issues. In the upcoming releases we will spend more time on making Ray Serve and Runtime Environment tests pass on Windows and on polishing things.
Ray Autoscaler

💫Enhancements:

  • Add autoscaler update time to prometheus metrics (#20831)
  • Fewer non terminated nodes calls in autoscaler update (#20359, #20623)

🔨 Fixes:

  • GCP TPU autoscaling fix (#20311)
  • Scale-down stability fix (#21204)
  • Report node launch failure in driver logs (#20814)
Ray Client

💫Enhancements

  • Client task options are encoded with pickle instead of json (#20930)
Ray Core

🎉 New Features:

  • runtime_env’s pip field now installs pip packages in your existing environment instead of installing them in a new isolated environment. (#20341)

🔨 Fixes:

  • Fix bug where specifying runtime_env conda/pip per-job using local requirements file using Ray Client on a remote cluster didn’t work (#20855)
  • Security fixes for log4j2 – the log4j2 version has been bumped to 2.17.1 (#21373)

💫Enhancements:

  • Allow runtime_env working_dir and py_modules to be pathlib.Path type (#20853, #20810)
  • Add environment variable to skip local runtime_env garbage collection (#21163)
  • Change runtime_env error log to debug log (#20875)
  • Improved reference counting for runtime_env resources (#20789)

🏗 Architecture refactoring:

  • Refactor runtime_env to use protobuf for multi-language support (#19511)

📖Documentation:

  • Add more comprehensive runtime_env documentation (#20222, #21131, #20352)
Ray Data Processing

🎉 New Features:

  • Added stats framework for debugging Datasets performance (#20867, #21070)
  • [Dask-on-Ray] New config helper for enabling the Dask-on-Ray scheduler (#21114)

💫Enhancements:

  • Reduce memory usage during when converting to a Pandas DataFrame (#20921)

🔨 Fixes:

  • Fix slow block evaluation when splitting (#20693)
  • Fix boundary sampling concatenation on non-uniform blocks (#20784)
  • Fix boolean tensor column slicing (#20905)

🏗 Architecture refactoring:

  • Refactor table block structure to support more tabular block formats (#20721)
RLlib

🎉 New Features:

  • Support for RE3 exploration algorithm (for tf only). (#19551)
  • Environment pre-checks, better failure behavior and enhanced environment API. (#20481, #20832, #20868, #20785, #21027, #20811)

🏗 Architecture refactoring:

  • Evaluation: Support evaluation setting that makes sure train doesn't ever have to wait for eval to finish (b/c of long episodes). (#20757); Always attach latest eval metrics. (#21011)
  • Soft-deprecate build_trainer() utility function in favor of sub-classing Trainer directly (and overriding some of its methods). (#20635, #20636, #20633, #20424, #20570, #20571, #20639, #20725)
  • Experimental no-flatten option for actions/prev-actions. (#20918)
  • Use SampleBatch instead of an input dict whenever possible. (#20746)
  • Switch off Preprocessors by default for PGTrainer (experimental). (#21008)
  • Toward a Replay Buffer API (cleanups; docstrings; renames; move into rllib/execution/buffers dir) (#20552)

📖Documentation:

  • Overhaul of auto-API reference pages. (#19786, #20537, #20538, #20486, #20250)
  • README and RLlib landing page overhaul (#20249).
  • Added example containing code to compute an adapted (time-dependent) GAE used by the PPO algorithm (#20850).

🔨 Fixes:

  • Smaller fixes and enhancements: #20704, #20541, #20793, #20743.
Tune

🎉 New Features:

  • Introduce TrialCheckpoint class, making checkpoint down/upload easie (#20585)
  • Add random state to BasicVariantGenerator (#20926)
  • Multi-objective support for Optuna (#20489)

💫Enhancements:

  • Add set_max_concurrency to Searcher API (#20576)
  • Allow for tuples in _split_resolved_unresolved_values. (#20794)
  • Show the name of training func, instead of just ImplicitFunction. (#21029)
  • Enforce one future at a time for any given trial at any given time. (#20783) move on_no_available_trials to a subclass under runner (#20809)
  • Clean up code (#20555, #20464, #20403, #20653, #20796, #20916, #21067)
  • Start restricting TrialRunner/Executor interface exposures. (#20656)
  • TrialExecutor should not take in Runner interface. (#20655)

🔨Fixes:

  • Deflake test_tune_restore.py (#20776)
  • Fix best_trial_str for nested custom parameter columns (#21078)
  • Fix checkpointing error message on K8s (#20559)
  • Fix testResourceScheduler and testMultiStepRun. (#20872)
  • Fix tune cloud tests for function and rllib trainables (#20536)
  • Move _head_bundle_is_empty after conversion (#21039)
  • Elongate test_trial_scheduler_pbt timeout. (#21120)
Train

🔨Fixes:

  • Ray Train environment variables are automatically propagated and do not need to be manually set on every node (#20523)
  • Various minor fixes and improvements (#20952, #20893, #20603, #20487) 📖Documentation:
  • Update saving/loading checkpoint docs (#20973). Thanks @jwyyy!
  • Various minor doc updates (#20877, #20683)
Serve

💫Enhancements:

  • Add validation to Serve AutoscalingConfig class (#20779)
  • Add Serve metric for HTTP error codes (#21009)

🔨Fixes:

  • No longer create placement group for deployment with no resources (#20471)
  • Log errors in deployment initialization/configuration user code (#20620)
Jobs

🎉 New Features:

  • Logs can be streamed from job submission server with ray job logs command (#20976)
  • Add documentation for ray job submission (#20530)
  • Propagate custom headers field to JobSubmissionClient and apply to all requests (#20663)

🔨Fixes:

  • Fix job serve accidentally creates local ray processes instead of connecting (#20705)

💫Enhancements:

  • [Jobs] Update CLI examples to use the same setup (#20844)
Thanks

Many thanks to all those who contributed to this release!

@dmatrix, @suquark, @tekumara, @jiaodong, @jovany-wang, @avnishn, @simon-mo, @iycheng, @SongGuyang, @ArturNiederfahrenhorst, @wuisawesome, @kfstorm, @matthewdeng, @jjyao, @chenk008, @Sertingolix, @larrylian, @czgdp1807, @scv119, @duburcqa, @runedog48, @Yard1, @robertnishihara, @geraint0923, @amogkam, @DmitriGekhtman, @ijrsvt, @kk-55, @lixin-wei, @mvindiola1, @hauntsaninja, @sven1977, @Hankpipi, @qbphilip, @hckuo, @newmanwang, @clay4444, @edoakes, @liuyang-my, @iasoon, @WangTaoTheTonic, @fgogolli, @dproctor, @gramhagen, @krfricke, @richardliaw, @bveeramani, @pcmoritz, @ericl, @simonsays1980, @carlogrisetti, @stephanie-wang, @AmeerHajAli, @mwtian, @xwjiang2010, @shrekris-anyscale, @n30111, @lchu-ibm, @Scalsol, @seonggwonyoon, @gjoliver, @qicosmos, @xychu, @iamhatesz, @architkulkarni, @jwyyy, @rkooo567, @mattip, @ckw017, @MissiontoMars, @clarkzinzow

View originalPermalink
How 1.10.0 went
1.9.2

Ray-1.9.2

Security 1
  • Bump log4j version from 2.16.0 to 2.17.0 to resolve CVE-2021-45105

Patch release to bump the log4j version from 2.16.0 to 2.17.0. This resolves the security issue CVE-2021-45105.

View originalPermalink
How 1.9.2 went
1.9.1

Ray-1.9.1

Security 1
  • Bump log4j2 version from 2.14 to 2.16 to resolve CVE-2021-44228 and CVE-2021-45046

Patch release to bump the log4j2 version from 2.14 to 2.16. This resolves the security vulnerabilities https://nvd.nist.gov/vuln/detail/CVE-2021-44228 and https://nvd.nist.gov/vuln/detail/CVE-2021-45046.

No library or core changes included.

Thanks @seonggwonyoon and @ijrsvt for contributing the fixes!

View originalPermalink
How 1.9.1 went
1.9.0

Ray-1.9.0

Added 12
  • Ray Train is now in beta
  • Ray Docker images for multiple CUDA versions are provided with `-cuXXX` suffix to specify a version
  • Ray Datasets now supports groupby and aggregations
  • Ray Job Submission server with CLI and SDK clients for submitting and monitoring Ray applications without active connection
  • Support remote file storage for runtime_env
  • Added garbage collection for runtime_env
Changed 1
  • Ray Clusters on AWS are now colocated in one Availability Zone to reduce costs and latency
Fixed 5
  • ray.put on a list of objects now returns a single object ref
  • Fix runtime_env hanging issues
  • Fix specifying runtime env in @ray.remote decorator with Ray Client
  • Fix threaded actor, core worker, and named actor race conditions
  • Support custom CSV write options in Ray Datasets
Removed 1
  • Removed global named actor APIs and global placement group APIs from Ray Java
Deprecated 1
  • ray-ml:cpu images are now deprecated; ray-ml images are only built for GPU
Highlights
  • Ray Train is now in beta! If you are using Ray Train, we’d love to hear your feedback here!
  • Ray Docker images for multiple CUDA versions are now provided (#19505)! You can specify a -cuXXX suffix to pick a specific version.
    • ray-ml:cpu images are now deprecated. The ray-ml images are only built for GPU.
  • Ray Datasets now supports groupby and aggregations! See the groupby API and GroupedDataset docs for usage.
  • We are making continuing progress in improving Ray stability and usability on Windows. We encourage you to try it out and report feedback or issues at https://github.com/ray-project/ray/issues.
  • We are launching a Ray Job Submission server + CLI & SDK clients to make it easier to submit and monitor Ray applications when you don’t want an active connection using Ray Client. This is currently in alpha, so the APIs are subject to change, but please test it out and file issues / leave feedback on GitHub & discuss.ray.io!
Ray Autoscaler

💫Enhancements:

  • Graceful termination of Ray nodes prior to autoscaler scale down (#20013)
  • Ray Clusters on AWS are colocated in one Availability Zone to reduce costs & latency (#19051)
Ray Client

🔨 Fixes:

  • ray.put on a list of of objects now returns a single object ref (​​#19737)
Ray Core

🎉 New Features:

  • Support remote file storage for runtime_env (#20280, #19315)
  • Added ray job submission client, cli and rest api (#19567, #19657, #19765, #19845, #19851, #19843, #19860, #19995, #20094, #20164, #20170, #20192, #20204)

💫Enhancements:

  • Garbage collection for runtime_env (#20009, #20072)
  • Improved logging and error messages for runtime_env (#19897, #19888, #18893)

🔨 Fixes:

  • Fix runtime_env hanging issues (#19823)
  • Fix specifying runtime env in @ray.remote decorator with Ray Client (#19626)
  • Threaded actor / core worker / named actor race condition fixes (#19751, #19598, #20178, #20126)

📖Documentation:

  • New page “Handling Dependencies”
  • New page “Ray Job Submission: Going from your laptop to production”
Ray Java

API Changes:

  • Fully supported namespace APIs. (Check out the namespace for more information.) #19468 #19986 #20057
  • Removed global named actor APIs and global placement group APIs. #20219 #20135
  • Added timeout parameter for Ray.Get() API. #20282

Note:

  • Use Ray.getActor(name, namespace) API to get a named actor between jobs instead of Ray.getGlobalActor(name).
  • Use PlacementGroup.getPlacementGroup(name, namespace) API to get a placement group between jobs instead of PlacementGroup.getGlobalPlacementGroup(name).
Ray Datasets

🎉 New Features:

  • Added groupby and aggregations (#19435, #19673, #20010, #20035, #20044, #20074)
  • Support custom write paths (#19347)

🔨 Fixes:

  • Support custom CSV write options (#19378)

🏗 Architecture refactoring:

  • Optimized block compaction (#19681)
Ray Workflow

🎉 New Features:

  • Workflow right now support events (#19239)
  • Allow user to specify metadata for workflow and steps (#19372)
  • Allow in-place run a step if the resources match (#19928)

🔨 Fixes:

  • Fix the s3 path issue (#20115)
RLlib

🏗 Architecture refactoring:

  • “framework=tf2” + “eager_tracing=True” is now (almost) as fast as “framework=tf”. A check for tf2.x eager re-traces has been added making sure re-tracing does not happen outside the initial function calls. All CI learning tests (CartPole, Pendulum, FrozenLake) are now also run as framework=tf2. (#19273, #19981, #20109)
  • Prepare deprecation of build_trainer/build_(tf_)?policy utility functions. Instead, use sub-classing of Trainer or Torch|TFPolicy. POCs done for PGTrainer, PPO[TF|Torch]Policy. (#20055, #20061)
  • V-trace (APPO & IMPALA): Don’t drop last ts can be optionally switch on. The default is still to drop it, but this may be changed in a future release. (#19601)
  • Upgrade to gym 0.21. (#19535)

🔨 Fixes:

  • Minor bugs/issues fixes and enhancements: #19069, #19276, #19306, #19408, #19544, #19623, #19627, #19652, #19693, #19805, #19807, #19809, #19881, #19934, #19945, #20095, #20128, #20134, #20144, #20217, #20283, #20366, #20387

📖Documentation:

  • RLlib main page (“RLlib in 60sec”) overhaul. (#20215, #20248, #20225, #19932, #19982)
  • Major docstring cleanups in preparation for complete overhaul of API reference pages. (#19784, #19783, #19808, #19759, #19829, #19758, #19830)
  • Other documentation enhancements. (#19908, #19672, #20390)
Tune

💫Enhancements:

  • Refactored and improved experiment analysis (#20197, #20181)
  • Refactored cloud checkpointing API/SyncConfig (#20155, #20418, #19632, #19641, #19638, #19880, #19589, #19553, #20045, #20283)
  • Remove magic results (e.g. config) before calculating trial result metrics (#19583)
  • Removal of tech debt (#19773, #19960, #19472, #17654)
  • Improve testing (#20016, #20031, #20263, #20210, #19730
  • Various enhancements (#19496, #20211)

🔨Fixes:

  • Documentation fixes (#20130, #19791)
  • Tutorial fixes (#20065, #19999)
  • Drop 0 value keys from PGF (#20279)
  • Fix shim error message for scheduler (#19642)
  • Avoid looping through _live_trials twice in _get_next_trial. (#19596)
  • clean up legacy branch in update_avail_resources. (#20071)
  • fix Train/Tune integration on Client (#20351)
Train

Ray Train is now in Beta! The beta version includes various usability improvements for distributed PyTorch training and checkpoint management, support for Ray Client, and an integration with Ray Datasets for distributed data ingest.

Check out the docs here, and the migration guide from Ray SGD to Ray Train here. If you are using Ray Train, we’d love to hear your feedback here!

🎉 New Features:

  • New train.torch.prepare_model(...) and train.torch.prepare_data_loader(...) API to automatically handle preparing your PyTorch model and DataLoader for distributed training (#20254).
  • Checkpoint management and support for custom checkpoint strategies (#19111).
  • Easily configure what and how many checkpoints to save to disk.
  • Support for Ray Client (#20123, #20351).

💫Enhancements:

  • Simplify workflow for training with a single worker (#19814).
  • Ray Placement Groups are used for scheduling the training workers (#20091).
  • PACK strategy is used by default but can be changed by setting the TRAIN_ENABLE_WORKER_SPREAD environment variable.
  • Automatically unwrap Torch DDP model and convert to CPU when saving a model as checkpoint (#20333).

🔨Fixes:

  • Fix HorovodBackend to automatically detect NICs- thanks @tgaddair! (#19533).

📖Documentation:

  • Denote public facing APIs with beta stability (#20378)
  • Doc updates (#20271)
Serve

We would love to hear from you! Fill out the Ray Serve survey here.

🎉 New Features:

🔨Fixes:

  • Serve deployment functions or classes can take no parameters (#19708)
  • Replica slow start message is improved. You can now see whether it is slow to allocate resources or slow to run constructor. (#19431)
  • pip install ray[serve] will now install ray[default] as well. (#19570)

🏗 Architecture refactoring:

  • The terminology of “backend” and “endpoint” are officially deprecated in favor of “deployment”. (#20229, #20085, #20040, #20020, #19997, #19947, #19923, #19798).
  • Progress towards Java API compatibility (#19463).
Dashboard
  • Ray Dashboard is now enabled on Windows! (#19575)
Thanks

Many thanks to all those who contributed to this release! @krfricke, @stefanbschneider, @ericl, @nikitavemuri, @qicosmos, @worldveil, @triciasfu, @AmeerHajAli, @javi-redondo, @architkulkarni, @pdames, @clay4444, @mGalarnyk, @liuyang-my, @matthewdeng, @suquark, @rkooo567, @mwtian, @chenk008, @dependabot[bot], @iycheng, @jiaodong, @scv119, @oscarknagg, @Rohan138, @stephanie-wang, @Zyiqin-Miranda, @ijrsvt, @roireshef, @tkaymak, @simon-mo, @ashione, @jovany-wang, @zenoengine, @tgaddair, @11rohans, @amogkam, @zhisbug, @lchu-ibm, @shrekris-anyscale, @pcmoritz, @yiranwang52, @mattip, @sven1977, @Yard1, @DmitriGekhtman, @ckw017, @WangTaoTheTonic, @wuisawesome, @kcpevey, @kfstorm, @rhamnett, @renos, @TeoZosa, @SongGuyang, @clarkzinzow, @avnishn, @iasoon, @gjoliver, @jjyao, @xwjiang2010, @dmatrix, @edoakes, @czgdp1807, @heng2j, @sungho-joo, @lixin-wei

View originalPermalink
How 1.9.0 went
1.8.0

Ray-1.8.0

Added 9
  • Ray Datasets is now in beta with new integration with Ray Train for scalable ML ingest in distributed training
  • Apple Silicon (M1 Macs) is now supported
  • Fake multi-node mode for autoscaler testing
  • Add support for repeating and rewindowing a DatasetPipeline
  • Add .iter_epochs() API for iterating over epochs in a DatasetPipeline
  • Add support for zipping two datasets together
Changed 5
  • Ray SGD has been rebranded to Ray Train
  • Use async rpc for remote call and actor creation in Ray Client
  • Eagerly install job-level runtime_env in Ray Core
  • Improved unschedulable task warning messages by integrating with the autoscaler
  • Improved Windows support
Fixed 6
  • Fixed resource demand reporting for infeasible 1-CPU tasks
  • Fixed printing Python stack trace in Python worker
  • Fixed macOS security popups
  • Fixed thread safety issues for coreworker
  • Fixed placement group performance and resource leaking issues
  • Fixed runtime_env issues
Highlights
  • Ray SGD has been rebranded to Ray Train! The new documentation landing page can be found here.
  • Ray Datasets is now in beta! The beta release includes a new integration with Ray Train yielding scalable ML ingest for distributed training. Check out the docs here, try it out for your ML ingest and batch inference workloads, and let us know how it goes!
  • This Ray release supports Apple Silicon (M1 Macs). Check out the installation instructions for more information!
Ray Autoscaler

🎉 New Features:

  • Fake multi-node mode for autoscaler testing (#18987)

💫Enhancements:

  • Improve unschedulable task warning messages by integrating with the autoscaler (#18724)
Ray Client

💫Enhancements

  • Use async rpc for remote call and actor creation (#18298)
Ray Core

💫Enhancements

  • Eagerly install job-level runtime_env (#19449, #17949)

🔨 Fixes:

  • Fixed resource demand reporting for infeasible 1-CPU tasks (#19000)
  • Fixed printing Python stack trace in Python worker (#19423)
  • Fixed macOS security popups (#18904)
  • Fixed thread safety issues for coreworker (#18902, #18910, #18913 #19343)
  • Fixed placement group performance and resource leaking issues (#19277, #19141, #19138, #19129, #18842, #18652)
  • Improve unschedulable task warning messages by integrating with the autoscaler (#18724)
  • Improved Windows support (#19014, #19062, #19171, #19362)
  • Fix runtime_env issues (#19491, #19377, #18988)
Ray Data

Ray Datasets is now in beta! The beta release includes a new integration with Ray Train yielding scalable ML ingest for distributed training. It supports repeating and rewindowing pipelines, zipping two pipelines together, better cancellation of Datasets workloads, and many performance improvements. Check out the docs here, try it out for your ML ingest and batch inference workloads, and let us know how it goes!

🎉 New Features:

  • Ray Train integration (#17626)
  • Add support for repeating and rewindowing a DatasetPipeline (#19091)
  • .iter_epochs() API for iterating over epochs in a DatasetPipeline (#19217)
  • Add support for zipping two datasets together (#18833)
  • Transformation operations are now cancelled when one fails or the entire workload is killed (#18991)
  • Expose from_pandas()/to_pandas() APIs that accept/return plain Pandas DataFrames (#18992)
  • Customize compression, read/write buffer size, metadata, etc. in the IO layer (#19197)
  • Add spread resource prefix for manual round-robin resource-based task load balancing

💫Enhancements:

  • Minimal rows are now dropped when doing an equalized split (#18953)
  • Parallelized metadata fetches when reading Parquet datasets (#19211)

🔨 Fixes:

  • Tensor columns now properly support table slicing (#19534)
  • Prevent Datasets tasks from being captured by Ray Tune placement groups (#19208)
  • Empty datasets are properly handled in most transformations (#18983)

🏗 Architecture refactoring:

  • Tensor dataset representation changed to a table with a single tensor column (#18867)
RLlib

🎉 New Features:

  • Allow n-step > 1 and prioritized replay for R2D2 and RNNSAC agents. (18939)

🔨 Fixes:

  • Fix memory leaks in TF2 eager mode. (#19198)
  • Faster worker spaces inference if specified through configuration. (#18805)
  • Fix bug for complex obs spaces containing Box([2D shape]) and discrete components. (#18917)
  • Torch multi-GPU stats not protected against race conditions. (#18937)
  • Fix SAC agent with dict space. (#19101)
  • Fix A3C/IMPALA in multi-agent setting. (#19100)

🏗 Architecture refactoring:

  • Unify results dictionary returned from Trainer.train() across agents regardless of (tf or pytorch, multi-agent, multi-gpu, or algos that use >1 SGD iterations, e.g. ppo) (#18879)
Ray Workflow

🎉 New Features:

  • Introduce workflow.delete (#19178)

🔨Fixes:

  • Fix the bug which allow workflow step to be executed multiple times (#19090)

🏗 Architecture refactoring:

  • Object reference serialization is decoupled from workflow storage (#18328)
Tune

🎉 New Features:

  • PBT: Add burn-in period (#19321)

💫Enhancements:

  • Optional forcible trial cleanup, return default autofilled metrics even if Trainable doesn't report at least once (#19144)
  • Use queue to display JupyterNotebookReporter updates in Ray client (#19137)
  • Add resume="AUTO" and enhance resume error messages (#19181)
  • Provide information about resource deadlocks, early stopping in Tune docs (#18947)
  • Fix HEBOSearch installation docs (#18861)
  • OptunaSearch: check compatibility of search space with evaluated_rewards (#18625)
  • Add save and restore methods for searchers that were missing it & test (#18760)
  • Add documentation for reproducible runs (setting seeds) (#18849)
  • Depreciate max_concurrent in TuneBOHB (#18770)
  • Add on_trial_result to ConcurrencyLimiter (#18766)
  • Ensure arguments passed to tune remote_run match (#18733)
  • Only disable ipython in remote actors (#18789)

🔨Fixes:

  • Only try to sync driver if sync_to_driver is actually enabled (#19589)
  • sync_client: Fix delete template formatting (#19553)
  • Force no result buffering for hyperband schedulers (#19140)
  • Exclude trial checkpoints in experiment sync (#19185)
  • Fix how durable trainable is retained in global registry (#19223, #19184)
  • Ensure loc column in progress reporter is filled (#19182)
  • Deflake PBT Async test (#19135)
  • Fix Analysis.dataframe() documentation and enable passing of mode=None (#18850)
Ray Train (SGD)

Ray SGD has been rebranded to Ray Train! The new documentation landing page can be found here. Ray Train is integrated with Ray Datasets for distributed data loading while training, documentation available here.

🎉 New Features:

  • Ray Datasets Integration (#17626)

🔨Fixes:

  • Improved support for multi-GPU training (#18824, #18958)
  • Make actor creation async (#19325)

📖Documentation:

  • Rename Ray SGD v2 to Ray Train (#19436)
  • Added migration guide from Ray SGD v1 (#18887)
Serve

🎉 New Features:

  • Add ability to recover from a checkpoint on cluster failure (#19125)
  • Support kwargs to deployment constructors (#19023)

🔨Fixes:

  • Fix asyncio compatibility issue (#19298)
  • Catch spurious ConnectionErrors during shutdown (#19224)
  • Fix error with uris=None in runtime_env (#18874)
  • Fix shutdown logic with exit_forever (#18820)

🏗 Architecture refactoring:

  • Progress towards Serve autoscaling (#18793, #19038, #19145)
  • Progress towards Java support (#18630)
  • Simplifications for long polling (#19154, #19205)
Dashboard

🎉 New Features:

  • Basic support for the dashboard on Windows (#19319)

🔨Fixes:

  • Fix healthcheck issue causing the dashboard to crash under load (#19360)
  • Work around aiohttp 4.0.0+ issues (#19120)

🏗 Architecture refactoring:

  • Improve dashboard agent retry logic (#18973)
Thanks

Many thanks to all those who contributed to this release! @rkooo567, @lchu-ibm, @scv119, @pdames, @suquark, @antoine-galataud, @sven1977, @mvindiola1, @krfricke, @ijrsvt, @sighingnow, @marload, @jmakov, @clay4444, @mwtian, @pcmoritz, @iycheng, @ckw017, @chenk008, @jovany-wang, @jjyao, @hauntsaninja, @franklsf95, @jiaodong, @wuisawesome, @odp, @matthewdeng, @duarteocarmo, @czgdp1807, @gjoliver, @mattip, @richardliaw, @max0x7ba, @Jasha10, @acxz, @xwjiang2010, @SongGuyang, @simon-mo, @zhisbug, @ccssmnn, @Yard1, @hazeone, @o0olele, @froody, @robertnishihara, @amogkam, @sasha-s, @xychu, @lixin-wei, @architkulkarni, @edoakes, @clarkzinzow, @DmitriGekhtman, @avnishn, @liuyang-my, @stephanie-wang, @Chong-Li, @ericl, @juliusfrost, @carlogrisetti

View originalPermalink
How 1.8.0 went
1.7.0

Ray-1.7.0

Added 16
  • Ray SGD v2 is now available in alpha with new APIs focused on ease of use and composability
  • Ray Workflows is now available in alpha for large-scale data science, ML, and long-running business workflows
  • Major enhancements to C++ API with new distributed system building capabilities
  • Ray Client now forwards ray.init() args to remote server
  • Ray Client now allows multiple client connections from one driver
  • gRPC channel credentials can now be configured from ray.init in Ray Client
Changed 2
  • Ray Autoscaler now defaults head node type to 0 max_workers
  • Ray Client now uses a single RPC to fetch ClientObjectRefs passed in a list
Fixed 2
  • Fixed syncing files with Docker head node
  • Fixed mismatched debug log ID formats in Ray Client
Highlights
  • Ray SGD v2 is now in alpha! The v2 version introduces APIs that focus on ease of use and composability. Check out the docs here, and the migration guide from v1 to v2 here.
    • If you are using Ray SGD v2, we’d love to hear your feedback here!
  • Ray Workflows is now in alpha! Check out the docs here and try it out for your large-scale data science, ML, and long-running business workflows. Thanks to our early adopters for the feedback so far and the ongoing contributions from IBM Research.
  • We have made major enhancements to C++ API! While we are still busy hardening the feature for production usage, please check out the docs here, try it out, and help provide feedback!
Ray Autoscaler

💫Enhancements:

  • Improvement to logging and code structure #18180
  • Default head node type to 0 max_workers #17757
  • Modifications to accommodate custom node providers #17312

🔨 Fixes:

  • Helm chart configuration fixes #17678 #18123
  • GCP autoscaler config fix #18653
  • Allow attaching to uninitialized head node for debugging #17688
  • Syncing files with Docker head node fixed #16515
Ray Client

🎉 New Features:

  • ray.init() args can be forwarded to remote server (#17776)
  • Allow multiple client connections from one driver (#17942)
  • gRPC channel credentials can now be configured from ray.init (#18425, #18365)
  • Ray Client will attempt to recover connections on certain gRPC failures (#18329)

💫Enhancements

  • Less confusing client RPC errors (#18278)
  • Use a single RPC to fetch ClientObjectRefs passed in a list (#16944)
  • Increase timeout for ProxyManager.get_channel (#18350)

🔨 Fixes:

  • Fix mismatched debug log ID formats (#17597)
  • Fix confusing error messages when client scripts exit (#17969)
Ray Core

🎉 New Features:

  • Major enhancements in the C++ API!
    • This API library enables you to build a C++ distributed system easily, just like the Python API and the Java API.
    • Run pip install -U ray[cpp] to install Ray with C++ API support.
    • Run ray cpp --help to learn how to use it.
    • For more details, check out the docs here and see the tab “C++”.

🔨 Fixes:

  • Bug fixes for thread-safety / reference count issues / placement group (#18401, #18746, #18312, #17802, #18526, #17863, #18419, #18463, #18193, #17774, #17772, #17670, #17620, #18584, #18646, #17634, #17732)
  • Better format for object loss errors / task & actor logs (#18742, #18577, #18105, #18292, #17971, #18166)
  • Improved the ray status output for placement groups (#18289, #17892)
  • Improved the function export performance (#18284)
  • Support more Ray core metrics such as RPC call latencies (#17578)
  • Improved error messages and logging for runtime environments (#18451, #18092, #18088, #18084, #18496, #18083)
Ray Data Processing

🎉 New Features:

  • Add support for reading partitioned Parquet datasets (#17716)
  • Add dataset unioning (#17793)
  • Add support for splitting a dataset at row indices (#17990)
  • Add from_numpy() and to_numpy() APIs (#18146)
  • Add support for splitting a dataset pipeline at row indices (#18243)
  • Add Modin integration (from_modin() and to_modin()) (#18122)
  • Add support for datasets with tensor columns (#18301)
  • Add RayDP (Spark-on-Ray) integration (from_spark() and to_spark()) (#17340)

💫Enhancements

  • Drop empty tables when read Parquet fragments in order to properly support filter expressions when reading partitioned Parquet datasets (#18098)
  • Retry application-level errors in Datasets (#18296)
  • Create a directory on write if it doesn’t exist (#18435)
  • URL encode paths if they are URLs (#18440)
  • Guard against a dataset pipeline being read multiple times on accident (#18682)
  • Reduce working set size during random shuffles by eagerly destroying intermediate datasets (#18678)
  • Add manual round-robin resource-based load balancing option to read and shuffle stages (#18678)

🔨 Fixes:

  • Fix JSON writing so IO roundtrip works (#17691)
  • Fix schema subsetting on column selection during Parquet reads (#18361)
  • Fix Dataset.iter_batches() dropping batches when prefetching (#18441)
  • Fix filesystem inference on path containing space (#18644)

🏗 Architecture refactoring:

  • Port write side of IO layer to use file-based datasources (#18135)
RLlib

🎉 New Features:

  • Replay buffers: Add config option to store contents in checkpoints (store_buffer_in_checkpoints=True). (#17999)
  • Add support for multi-GPU to DDPG. (#17789)

💫Enhancements:

  • Support for running evaluation and training in parallel, thereby only evaluating as many episodes as the training loop takes (evaluation_num_episodes=”auto”). (#18380)
  • Enhanced stability: Started nightly multi-GPU (2) learning tests for most algos (tf + torch), including LSTM and attention net setups.

🏗 Architecture refactoring:

  • Make MultiAgentEnv inherit gym.Env to avoid direct class type manipulation (#18156)
  • SampleBatch: Add support for nested data (+Docstring- and API cleanups). (#17485)
  • Add policies arg to callback: on_episode_step (already exists in all other episode-related callbacks) (#18119)
  • Add worker arg (optional) to policy_mapping_fn. (#18184)

🔨 Fixes:

  • Fix Atari learning test regressions (2 bugs) and 1 minor attention net bug. (#18306)
  • Fix n-step > 1 postprocessing bug (issues 17844, 18034). (#18358)
  • Fix crash when using StochasticSampling exploration (most PG-style algos) w/ tf and numpy version > 1.19.5 (#18366)
  • Strictly run evaluation_num_episodes episodes each evaluation run (no matter the other eval config settings). (#18335)
  • Issue 17706: AttributeError: 'numpy.ndarray' object has no attribute 'items'" on certain turn-based MultiAgentEnvs with Dict obs space. (#17735)
  • Issue 17900: Set seed in single vectorized sub-envs properly, if num_envs_per_worker > 1 (#18110)
  • Fix R2D2 (torch) multi-GPU issue. (#18550)
  • Fix final_scale's default value to 0.02 (see OrnsteinUhlenbeck exploration). (#18070)
  • Ape-X doesn't take the value of prioritized_replay into account (#17541)
  • Issue 17653: Torch multi-GPU (>1) broken for LSTMs. (#17657)
  • Issue 17667: CQL-torch + GPU not working (due to simple_optimizer=False; must use simple optimizer!). (#17742)
  • Add locking to PolicyMap in case it is accessed by a RolloutWorker and the same worker's AsyncSampler or the main LearnerThread. (#18444)
  • Other fixes and enhancements: #18591, #18381, #18670, #18705, #18274, #18073, #18017, #18389, #17896, #17410, #17891, #18368, #17778, #18494, #18466, #17705, #17690, #18254, #17701, #18544, #17889, #18390, #18428, #17821, #17955, #17666, #18423, #18040, #17867, #17583, #17822, #18249, #18155, #18065, #18540, #18367, #17960, #17895, #18467, #17928, #17485, #18307, #18043, #17640, #17702, #15849, #18340
Tune

💫Enhancements:

  • Usability improvements when trials appear to be stuck in PENDING state forever when the cluster has insufficient resources. (#18611, #17957, #17533)
  • Searchers and Tune Callbacks now have access to some experiment settings information. (#17724, #17794)
  • Improve HyperOpt KeyError message when metric was not found. (#18549)
  • Allow users to configure bootstrap for docker syncer. (#17786)
  • Allow users to update trial resources on resume. (#17975)
  • Add max_concurrent_trials argument to tune.run. (#17905)
  • Type hint TrialExecutor. Use Abstract Base Class. (#17584)
  • Add developer/stability annotations. (#17442)

🔨Fixes:

  • Placement group stability issues. (#18706, #18391, #18338)
  • Fix a DurableTrainable checkpointing bug. (#18318)
  • Fix a trial reset bug if a RLlib algorithm with default resources is used. (#18209)
  • Fix hyperopt points to evaluate for nested lists. (#18113)
  • Correctly validate initial points for random search. (#17282)
  • Fix local mode. Add explicit concurrency limiter for local mode. (#18023)
  • Sanitize trial checkpoint filename. (#17985)
  • Explicitly instantiate skopt categorical spaces. (#18005)
SGD (v2)

Ray SGD v2 is now in Alpha! The v2 version introduces APIs that focus on ease of use and composability. Check out the docs here, and the migration guide from v1 to v2 here. If you are using Ray SGD v2, we’d love to hear your feedback here!

🎉 New Features:

  • Ray SGD v2
    • Horovod Backend (#18047)
    • JSON Callback (#17619) and Tensorboard Callback (#17824)
    • Checkpointing Support (#17632, #17807)
    • Fault Tolerance (#18090)
    • Integration with Ray Tune (#17839, #18179)
    • Custom resources per worker (#18327)
    • Low-level Stateful Class API (#18728)

📖 Documentation:

Serve

↗️Deprecation and API changes:

  • serve.start(http_host=..., http_port=..., http_middlewares=...) has been deprecated since Ray 1.2.0. They are now removed in favor of serve.start(http_options={“host”: …, “port”: …, “middlewares”: …). (#17762)
  • Remove deprecated ServeRequest API (#18120)
  • Remove deprecated endpoints API (#17989)

🎉 New Features:

  • Serve checkpoint with cluster failure recovery from disk and S3 (#17622, #18293, #18657)

🔨Fixes:

  • Better serve constructor failure handling (#16922, #18402)
  • Fix get_handle execution from threads (#18198)
  • Remove requirement to specify namespace for serve.start(detached=True) (#17470)

🏗 Architecture refactoring:

  • Progress towards replica autoscaling (#18658)
Dashboard

🎉 New Features:

  • Ray system events are now published in experimental dashboard (#18330, pop #18698)
  • Actor page will now show actors with PENDING_CREATION status (#18666)
Thanks

Many thanks to all those who contributed to this release! @scottsun94, @hngenc, @iycheng, @asm582, @jkterry1, @ericl, @thomasdesr, @ryanlmelvin, @ellimac54, @Bam4d, @gjoliver, @juliusfrost, @simon-mo, @ashione, @RaphaelCS, @simonsays1980, @suquark, @jjyao, @lixin-wei, @77loopin, @Ivorforce, @DmitriGekhtman, @dependabot[bot], @souravraha, @robertnishihara, @richardliaw, @SongGuyang, @rkooo567, @edoakes, @jsuarez5341, @zhisbug, @clarkzinzow, @triciasfu, @architkulkarni, @akern40, @liuyang-my, @krfricke, @amogkam, @Jingyu-Peng, @xwjiang2010, @nikitavemuri, @hauntsaninja, @fyrestone, @navneet066, @ijrsvt, @mwtian, @sasha-s, @raulchen, @holdenk, @qicosmos, @Yard1, @yuduber, @mguarin0, @MissiontoMars, @stephanie-wang, @stefanbschneider, @sven1977, @AmeerHajAli, @matthewdeng, @chenk008, @jiaodong, @clay4444, @ckw017, @tchordia, @ThomasLecat, @Chong-Li, @jmakov, @jovany-wang, @tdhopper, @kfstorm, @wgifford, @mxz96102, @WangTaoTheTonic, @lada-kunc, @scv119, @kira-lin, @wuisawesome

View originalPermalink
How 1.7.0 went
1.6.0

Ray-1.6.0

Added 8
  • Runtime Environments are ready for general use, enabling dynamic specification of per-task, per-actor and per-job dependencies including working directory, environment variables, pip packages and conda environments
  • Ray Dataset is now in alpha as an interchange format for distributed datasets powered by Arrow
  • Ray Autoscaler now supports TPUs on GCP
  • RLLib supports RNN/LSTM models with SAC agent (RNNSAC)
  • RLLib supports ONNX model export for TensorFlow and PyTorch
  • RLLib allows Policies to be added to or removed from a Trainer on-the-fly
  • Tune supports dynamic trial resource allocation with ResourceChangingScheduler
  • Tune supports define-by-run functions to generate search spaces with OptunaSearcher
Changed 7
  • pip install ray now has a significantly reduced set of dependencies
  • Ray Autoscaler supports running without NodeUpdaters
  • Ray Autoscaler provides better AWS networking configurability
  • Ray Client documentation updated for server ports and ray.init(ray://)
  • RLLib changed dependency from CV2 to Skimage
  • RLLib unified TensorFlow and PyTorch policies with respect to multi-GPU handling, improving PPO-torch performance on Atari by 33 percent on single GPU
  • Tune allows string names of searchers and schedulers to be used directly in tune.run
Fixed 5
  • Fixed plasma store bugs for better data processing stability
  • Fixed placement group bug where CUDA_VISIBLE_DEVICES were not properly detected
  • Fixed Ray Client server proxy not working with non-default Redis passwords
  • Improved Ray stacktrace messages
  • Improved GCS stability and scalability
Highlights
  • Runtime Environments are ready for general use! This feature enables you to dynamically specify per-task, per-actor and per-job dependencies, including a working directory, environment variables, pip packages and conda environments. Install it with pip install -U 'ray[default]'.
  • Ray Dataset is now in alpha! Dataset is an interchange format for distributed datasets, powered by Arrow. You can also use it for a basic Ray native data processing experience. Check it out here.
  • Ray Lightning v0.1 has been released! You can install it via pip install ray-lightning. Ray Lightning is a library of PyTorch Lightning plugins for distributed training using Ray. Features:
  • pip install ray now has a significantly reduced set of dependencies. Features such as the dashboard, the cluster launcher, runtime environments, and observability metrics may require pip install -U 'ray[default]' to be enabled. Please report any issues on Github if this is an issue!
Ray Autoscaler

🎉 New Features:

  • The Ray autoscaler now supports TPUs on GCP. Please refer to this example for spinning up a simple TPU cluster. (#17278)

💫Enhancements:

  • Better AWS networking configurability (#17236 #17207 #14080)
  • Support for running autoscaler without NodeUpdaters (#17194, #17328)

🔨 Fixes:

  • Code clean up and corrections to downscaling policy (#17352)
  • Docker file sync fix (#17361)
Ray Client

💫Enhancements:

  • Updated docs for client server ports and ray.init(ray://) (#17003, #17333)
  • Better error handling for deserialization failures (#17035)

🔨 Fixes:

  • Fix for server proxy not working with non-default redis passwords (#16885)
Ray Core

🎉 New Features:

  • Runtime Environments are ready for general use!
    • Specify a working directory to upload your local files to all nodes in your cluster.
    • Specify different conda and pip dependencies for your tasks and actors and have them installed on the fly.

🔨 Fixes:

  • Fix plasma store bugs for better data processing stability (#16976, #17135, #17140, #17187, #17204, #17234, #17396, #17550)
  • Fix a placement group bug where CUDA_VISIBLE_DEVICES were not properly detected (#17318)
  • Improved Ray stacktrace messages. (#17389)
  • Improved GCS stability and scalability (#17456, #17373, #17334, #17238, #17072)

🏗 Architecture refactoring:

  • Plasma store refactor for better testability and extensibility. (#17332, #17313, #17307)
Ray Data Processing

Ray Dataset is now in alpha! Dataset is an interchange format for distributed datasets, powered by Arrow. You can also use it for a basic Ray native data processing experience. Check it out here.

RLLib

🎉 New Features:

  • Support for RNN/LSTM models with SAC (new agent: "RNNSAC"). Shoutout to ddworak94! (#16577)
  • Support for ONNX model export (tf and torch). (#16805)
  • Allow Policies to be added to/removed from a Trainer on-the-fly. (#17566)

🔨 Fixes:

  • Fix for view requirements captured during compute actions test pass. Shoutout to Chris Bamford (#15856)

  • Issues: 17397, 17425, 16715, 17174. When on driver, Torch|TFPolicy should not use ray.get_gpu_ids() (b/c no GPUs assigned by ray). (#17444)

  • Other bug fixes: #15709, #15911, #16083, #16716, #16744, #16896, #16999, #17010, #17014, #17118, #17160, #17315, #17321, #17335, #17341, #17356, #17460, #17543, #17567, #17587

🏗 Architecture refactoring:

  • CV2 to Skimage dependency change (CV2 still supported). Shoutout to Vince Jankovics. (#16841)
  • Unify tf and torch policies wrt. multi-GPU handling: PPO-torch is now 33% faster on Atari and 1 GPU. (#17371)
  • Implement all policy maps inside RolloutWorkers to be LRU-caches so that a large number of policies can be added on-the-fly w/o running out of memory. (#17031)
  • Move all tf static-graph code into DynamicTFPolicy, such that policies can be deleted and their tf-graph is GC'd. (#17169)
  • Simplify multi-agent configs: In most cases, creating dummy envs (only to retrieve spaces) are no longer necessary. (#16565, #17046)

📖Documentation:

  • Examples scripts do-over (shoutout to Stefan Schneider for this initiative).
  • Example script: League-based self-play with "open spiel" env. (#17077)
  • Other doc improvements: #15664 (shoutout to kk-55), #17030, #17530
Tune

🎉 New Features:

  • Dynamic trial resource allocation with ResourceChangingScheduler (#16787)
  • It is now possible to use a define-by-run function to generate a search space with OptunaSearcher (#17464)

💫Enhancements:

  • String names of searchers/schedulers can now be used directly in tune.run (#17517)
  • Filter placement group resources if not in use (progress reporting) (#16996)
  • Add unit tests for flatten_dict (#17241)

🔨Fixes:

  • Fix HDFS sync down template (#17291)
  • Re-enable TensorboardX without Torch installed (#17403)

📖Documentation:

  • LightGBM integration (#17304)
  • Other documentation improvements: #17407 (shoutout to amavilla), #17441, #17539, #17503
SGD

🎉 New Features:

  • We have started initial development on a new RaySGD v2! We will be rolling it out in a future version of Ray. See the documentation here. (#17536, #17623, #17357, #17330, #17532, #17440, #17447, #17300, #17253)

💫Enhancements:

  • Placement Group support for TorchTrainer (#17037)
Serve

🎉 New Features:

  • Add Ray API stability annotations to Serve, marking many serve.\* APIs as Stable (#17295)
  • Support runtime_env's working_dir for Ray Serve (#16480)

🔨Fixes:

  • Fix FastAPI's response_model not added to class based view routes (#17376)
  • Replace backend with deployment in metrics & logging (#17434)

🏗Stability Enhancements:

  • Run Ray Serve with multi & single deployment large scale (1K+ cores) test running nightly (#17310, #17411, #17368, #17026, #17277)
Thanks

Many thanks to all who contributed to this release:

@suquark, @xwjiang2010, @clarkzinzow, @kk-55, @mGalarnyk, @pdames, @Souphis, @edoakes, @sasha-s, @iycheng, @stephanie-wang, @antoine-galataud, @scv119, @ericl, @amogkam, @ckw017, @wuisawesome, @krfricke, @vakker, @qingyun-wu, @Yard1, @juliusfrost, @DmitriGekhtman, @clay4444, @mwtian, @corentinmarek, @matthewdeng, @simon-mo, @pcmoritz, @qicosmos, @architkulkarni, @rkooo567, @navneet066, @dependabot[bot], @jovany-wang, @kombuchafox, @thomasjpfan, @kimikuri, @Ivorforce, @franklsf95, @MissiontoMars, @lantian-xu, @duburcqa, @ddworak94, @ijrsvt, @sven1977, @kira-lin, @SongGuyang, @kfstorm, @Rohan138, @jamesmishra, @amavilla, @fyrestone, @lixin-wei, @stefanbschneider, @jiaodong, @richardliaw, @WangTaoTheTonic, @chenk008, @Catch-Bull, @Bam4d

View originalPermalink
How 1.6.0 went
1.5.2

Ray-1.5.2

Cherrypick release to address RLlib issue, no library or core changes included.

View originalPermalink
How 1.5.2 went
1.5.1

Ray-1.5.1

Cherrypick release to address a few external integration and documentation issues, no library or core changes included.

View originalPermalink
How 1.5.1 went
1.5.0

Ray-1.5.0

Added 11
  • Ray Datasets is now available in alpha
  • Aliyun support for Ray Autoscaler
  • Prometheus metrics for Autoscaler
  • Client integrations with major Ray Libraries
  • Client Connect now returns a context that has disconnect and can be used as a context manager
  • Support for adding and deleting Policies to a Trainer on-the-fly in RLlib
Changed 5
  • Kubernetes Operator refactored to use Kopf package
  • Better support for multi-threaded client-side applications in Ray Client
  • Made Client Object and Actor refs a subclass of their non-client counterparts
  • All RLlib algos operating on Box action spaces now operate on normalized actions by default ranging from -1.0 to 1.0
  • Pass in configurations that have already been evaluated separately to Searchers in Tune
Fixed 3
  • Fix various Ray IO layer issues that fixes hanging and high memory usage
  • Namespace now properly isolates placement groups
  • More efficient object transfer for spilled objects

Ray 1.5.0 Release Note

Highlight
Ray Autoscaler

🎉 New Features:

  • Aliyun support (#15712)

💫 Enhancements:

  • [Kubernetes] Operator refactored to use Kopf package (#15787)
  • Flag to control config bootstrap for rsync (#16667)
  • Prometheus metrics for Autoscaler (#16066, #16198)
  • Allows launching in subnets where public IP assignments off by default (#16816)

🔨 Fixes:

  • [Kubernetes] Fix GPU=0 resource handling (#16887)
  • [Kubernetes] Release docs updated with K8s test instructions (#16662)
  • [Kubernetes] Documentation update (#16570)
  • [Kubernetes] All official images set to rayproject/ray:latest (#15988 #16205)
  • [Local] Fix bootstrapping ray at a given static set of ips (#16202, #16281)
  • [Azure] Fix Azure Autoscaling Failures (#16640)
  • Handle node type key change / deletion (#16691)
  • [GCP] Retry GCP BrokenPipeError (#16952)
Ray Client

🎉 New Features:

  • Client integrations with major Ray Libraries (#15932, #15996, #16103, #16034, #16029, #16111, #16301)
  • Client Connect now returns a context that hasdisconnect and can be used as a context manager (#16021)

💫 Enhancements:

  • Better support for multi-threaded client-side applications (#16731, #16732)
  • Improved error messages and warnings when misusing Ray Client (#16454, #16508, #16588, #16163)
  • Made Client Object & Actor refs a subclass of their non-client counterparts (#16110)

🔨 Fixes:

  • dir() Works for client-side Actor Handles (#16157)
  • Avoid server-side time-outs (#16554)
  • Various fixes to the client-server proxy (#16040, #16038, #16057, #16180)
Ray Core

🎉 New Features:

  • Ray dataset alpha is available!

🔨 Fixes:

  • Fix various Ray IO layer issues that fixes hanging & high memory usage (#16408, #16422, #16620, #16824, #16791, #16487, #16407, #16334, #16167, #16153, #16314, #15955, #15775)
  • Namespace now properly isolates placement groups (#16000)
  • More efficient object transfer for spilled objects (#16364, #16352)

🏗 Architecture refactoring:

  • From Ray 1.5.0, liveness of Ray jobs are guaranteed as long as there’s enough disk space in machines with the “fallback allocator” mechanism which allocates plasma objects to the disk directly when objects cannot be created in memory or spilled to the disk.
RLlib

🎉 New Features:

  • Support for adding/deleting Policies to a Trainer on-the-fly (#16359, #16569, #16927).
  • Added new “input API” for customizing offline datasets (shoutout to Julius F.). (#16957)
  • Allow for external env PolicyServer to listen on n different ports (given n rollout workers); No longer require creating an env on the server side to get env’s spaces. (#16583).

🔨 Fixes:

  • CQL: Bug fixes and clean-ups (fixed iteration count). (#16531, #16332)
  • D4RL: #16721
  • ensure curiosity exploration actions are passed in as tf tensors (shoutout to Manny V.). (#15704)
  • Other bug fixes and cleanups: #16162 and #16309 (shoutout to Chris B.), #15634, #16133, #16860, #16813, #16428, #16867, #16354, #16218, #16118, #16429, #16427, #16774, #16734, #16019, #16171, #16830, #16722

📖 Documentation and testing:

  • #16311, #15908, #16271, #16080, #16740, #16843

🏗 Architecture refactoring:

  • All RLlib algos operating on Box action spaces now operate on normalized actions by default (ranging from -1.0 to 1.0). This enables PG-style algos to learn in skewed action spaces. (#16531)
Tune

🎉 New Features:

  • New integration with LightGBM via Tune callbacks (#16713).
  • New cost-efficient HPO searchers (BlendSearch and CFO) available from the FLAML library (https://github.com/microsoft/FLAML). (#16329)

💫 Enhancements:

  • Pass in configurations that have already been evaluated separately to Searchers. This is useful for warm-starting or for meta-searchers, for example (#16485)
  • Sort trials in reporter table by metric (#16576)
  • Add option to keep random values constant over grid search (#16501)
  • Read trial results from json file (#15915)

🔨 Fixes:

  • Fix infinite loop when using Searcher that limits concurrency internally in conjunction with a ConcurrencyLimiter (#16416)
  • Allow custom sync configuration with DurableTrainable (#16739)
  • Logger fixes. W&B: #16806, #16674, #16839. MLflow: #16840
  • Various bug fixes: #16844, #16017, #16575, #16675, #16504, #15811, #15899, #16128, #16396, #16695, #16611

📖 Documentation and testing:

  • Use BayesOpt for quick start example (#16997)
  • #16793, #16029, #15932, #16980, #16450, #16709, #15913, #16754, #16619
SGD

🎉 New Features:

  • Torch native mixed precision is now supported! (#16382)

🔨 Fixes:

  • Use target label count for training batch size (#16400)

📖 Documentation and testing:

  • #15999, #16111, #16301, #16046
Serve

💫 Enhancements: UX improvements (#16227, #15909), Improved logging (#16468) 🔨 Fixes: Fix shutdown logic (#16524), Assorted bug fixes (#16647, #16760, #16783) 📖 Documentation and testing: #16042, #16631, #16759, #16786

Thanks

Many thanks to all who contributed to this release:

@Tonyhao96, @simon-mo, @scv119, @Yard1, @llan-ml, @xcharleslin, @jovany-wang, @ijrsvt, @max0x7ba, @annaluo676, @rajagurunath, @zuston, @amogkam, @yorickvanzweeden, @mxz96102, @chenk008, @Bam4d, @mGalarnyk, @kfstorm, @crdnb, @suquark, @ericl, @marload, @jiaodong, @thexiang, @ellimac54, @qicosmos, @mwtian, @jkterry1, @sven1977, @howardlau1999, @mvindiola1, @stefanbschneider, @juliusfrost, @krfricke, @matthewdeng, @zhuangzhuang131419, @brandonJY, @Eleven1Liu, @nikitavemuri, @richardliaw, @iycheng, @stephanie-wang, @HuangLED, @clarkzinzow, @fyrestone, @asm582, @qingyun-wu, @ckw017, @yncxcw, @DmitriGekhtman, @benjamindkilleen, @Chong-Li, @kathryn-zhou, @pcmoritz, @rodrigodelazcano, @edoakes, @dependabot[bot], @pdames, @frenkowski, @loicsacre, @gabrieleoliaro, @achals, @thomasjpfan, @rkooo567, @dibgerge, @clay4444, @architkulkarni, @lixin-wei, @ConeyLiu, @WangTaoTheTonic, @AnnaKosiorek, @wuisawesome, @gramhagen, @zhisbug, @franklsf95, @vakker, @jenhaoyang, @liuyang-my, @chaokunyang, @SongGuyang, @tgaddair

View originalPermalink
How 1.5.0 went
1.4.1

Ray-1.4.1

Added 2
  • Python 3.9 wheels for Linux, MacOS, and Windows
  • Add warnings when many tasks scheduled in Ray Client
Changed 3
  • Improve error messages in Ray Client
  • Support Dask 2021.06.1
  • Support object refs in Tune with_params
Fixed 13
  • Resolve on-prem bug in Ray Autoscaler
  • Fix gRPC Timeout Options in Ray Client
  • Fix Ray Client disconnect on dataclient error
  • Fix runtime environments bugs
  • Improve runtime environments logging
  • Fix race condition leading to failed imports in Ray Core
Security 1
  • Upgrade Java dependencies to fix CVEs

Release 1.4.1 Notes

Ray Python Wheels

Python 3.9 wheels (Linux / MacOS / Windows) are available (#16347 #16586)

Ray Autoscaler

🔨 Fixes: On-prem bug resolved (#16281)

Ray Client

💫Enhancements:

  • Add warnings when many tasks scheduled (#16454)
  • Better error messages (#16163)

🔨 Fixes:

  • Fix gRPC Timeout Options (#16554)
  • Disconnect on dataclient error (#16588)
Ray Core

🔨 Fixes:

  • Runtime Environments
  • Fix race condition leading to failed imports #16278
  • Don't broadcast empty resources data (#16104)
  • Fix async actor lost object bug (#16414)
  • Always report job timestamps in milliseconds (#16455, #16545, #16548)
  • Multi-node placement group and job config bug fixes (#16345)
  • Fix bug in task dependency management for duplicate args (#16365)
  • Unify Python and core worker ids (#16712)
Dask

💫Enhancements: Dask 2021.06.1 support (#16547)

Tune

💫Enhancements: Support object refs in with_params (#16753)

Serve

🔨Fixes: Ray serve shutdown goes through Serve controller (#16524)

Java

🔨Fixes: Upgrade dependencies to fix CVEs (#16650, #16657)

Documentation
  • Runtime Environments (#16290)
  • Feature contribution [Tune] (#16477)
  • Ray design patterns and anti-patterns (#16478)
  • PyTorch Lightning (#16484)
  • Ray Client (#16497)
  • Ray Deployment (#16538)
  • Dask version compatibility (#16595)
CI

Move wheel and Docker image upload from Travis to Buildkite (#16138 #16241)

Thanks

Many thanks to all those who contributed to this release!

@rkooo567, @clarkzinzow, @WangTaoTheTonic, @ckw017, @stephanie-wang, @Yard1, @mwtian, @jovany-wang, @jiaodong, @wuisawesome, @krfricke, @architkulkarni, @ijrsvt, @simon-mo, @DmitriGekhtman, @amogkam, @richardliaw

View originalPermalink
How 1.4.1 went
1.4.0

Ray-1.4.0

Added 9
  • Support Helm Chart for deploying Ray on Kubernetes
  • Key Autoscaler metrics are now exported via Prometheus
  • Complete API parity with non-client mode
  • Experimental ClientBuilder API
  • Full Asyncio support
  • Namespaces support for Ray actors
Changed 3
  • Better error messages when a node fails to come online
  • Keep Alive for Messages for long lived connections
  • Improved pickling error messages
Fixed 8
  • Stability and interface fixes for Kubernetes deployments
  • Fixes to Azure NodeProvider
  • Client Disconnect can be called multiple times
  • Client Reference Equality Check
  • Support increment by arbitrary number with ray.util.metrics.Counter
  • Various bug fixes for the placement group APIs including the GPU assignment bug
  • Fixed a critical bug where the driver uses excessive memory usage when there are many objects in the cluster
  • Dask on Ray and Modin can now be run with Ray client

Release 1.4.0 Notes

Ray Autoscaler
🎉 New Features:
  • Support Helm Chart for deploying Ray on Kubernetes
  • Key Autoscaler metrics are now exported via Prometheus!
💫Enhancements
  • Better error messages when a node fails to come online
🔨 Fixes:
  • Stability and interface fixes for Kubernetes deployments.
  • Fixes to Azure NodeProvider
Ray Client
🎉 New Features:
  • Complete API parity with non-client mode
  • Experimental ClientBuilder API (docs here)
  • Full Asyncio support
💫Enhancements
  • Keep Alive for Messages for long lived connections
  • Improved pickling error messages
🔨 Fixes:
  • Client Disconnect can be called multiple times
  • Client Reference Equality Check
  • Many bug fixes and tests for the complete ray API!
Ray Core
🎉 New Features:
  • Namespaces (check out the docs)! Note: this may be a breaking change if you’re using detached actors (set ray.init(namespace=””) for backwards compatible behavior).
🔨 Fixes:
  • Support increment by arbitrary number with ray.util.metrics.Counter
  • Various bug fixes for the placement group APIs including the GPU assignment bug (#15049).
🏗 Architecture refactoring:
  • Increase the efficiency and robustness of resource reporting
Ray Data Processing
🔨 Fixes:
  • Various bug fixes for better stability (#16063, #14821, #15669, #15757, #15431, #15426, #15034, #15071, #15070, #15008, #15955)
  • Fixed a critical bug where the driver uses excessive memory usage when there are many objects in the cluster (#14322).
  • Dask on Ray and Modin can now be run with Ray client
🏗 Architecture refactoring:
RLlib
🎉 New Features:
  • PyTorch multi-GPU support (#14709, #15492, #15421).
  • CQL TensorFlow support (#15841).
  • Task-settable Env/Curriculum Learning API (#15740).
  • Support for native tf.keras Models (no ModelV2 required) (#14684, #15273).
  • Trainer.train() and Trainer.evaluate() can run in parallel (optional) (#15040, #15345).
💫Enhancements and documentation:
  • CQL: Bug fixes and confirmed MuJoCo benchmarks (#15814, #15603, #15761).
  • Example for differentiable neural computer (DNC) network (#14844, 15939).
  • Added support for int-Box action spaces. (#15012)
  • DDPG/TD3/A[23]C/MARWIL/BC: Code cleanup and type annotations. (#14707).
  • Example script for restoring 1 agent out of n
  • Examples for fractional GPU usage. (15334)
  • Enhanced documentation page describing example scripts and blog posts (15763).
  • Various enhancements/test coverage improvements: 15499, 15454, 15335, 14865, 15525, 15290, 15611, 14801, 14903, 15735, 15631,
🔨 Fixes:
  • Memory Leak in multi-agent environment (#15815). Shoutout to Bam4d!
  • DDPG PyTorch GPU bug. (#16133)
  • Simple optimizer should not be used by default for tf+MA (#15365)
  • Various bug fixes: #15762, 14843, 15042, 15427, 15871, 15132, 14840, 14386, 15014, 14737, 15015, 15733, 15737, 15736, 15898, 16118, 15020, 15218, 15451, 15538, 15610, 15326, 15295, 15762, 15436, 15558, 15937
🏗 Architecture refactoring:
  • Remove atari dependency (#15292).
  • Trainer._evaluate() renamed to Trainer.evaluate() (backward compatible); Trainer.evaluate() can be called even w/o evaluation worker set, if create_env_on_driver=True (#15591).
Tune
🎉 New Features:
  • ASHA scheduler now supports save/restore. (#15438)
  • Add HEBO to search algorithm shim function (#15468)
  • Add SkoptSearcher/Bayesopt Searcher restore functionality (#15075)
💫Enhancements:
  • We now document scalability best practices (k8s, scalability thresholds). You can find this here (#14566)
  • You can now set the result buffer_length via tune.run - this helps with trials that report too frequently. (#15810)
  • Support numpy types in TBXlogger (#15760)
  • Add max_concurrent option to BasicVariantGenerator (#15680)
  • Add seed parameter to OptunaSearch (#15248)
  • Improve BOHB/ConfigSpace dependency check (#15064)
🔨Fixes:
  • Reduce default number of maximum pending trials to max(16, cluster_cpus) (#15628)
  • Return normalized checkpoint path (#15296)
  • Escape paths before globbing in TrainableUtil.get_checkpoints_paths (#15368)
  • Optuna Searcher: Set correct Optuna TrialState on trial complete (#15283)
  • Fix type annotation in tune.choice (#15038)
  • Avoid system exit error by using del when cleaning up actors (#15687)
Serve
🎉 New Features:
  • As of Ray 1.4, Serve has a new API centered around the concept of “Deployments.” Deployments offer a more streamlined API and can be declaratively updated, which should improve both development and production workflows. The existing APIs have not changed from Ray 1.4 and will continue to work until Ray 1.5, at which point they will be removed (see the package reference if you’re not sure about a specific API). Please see the migration guide for details on how to update your existing Serve application to use this new API.
  • New serve.deployment API: @serve.deployment, serve.get_deployments, serve.list_deployments (#14935, #15172, #15124, #15121, #14953, #15152, #15821)
  • New serve.ingress(fastapi_app) API (#15445, 15441, 14858)
  • New @serve.batch decorator in favor of legacy max_batch_size in backend config (#15065)
  • serve.start() is now idempotent (#15148)
  • Added support for handle.method_name.remote() (#14831)
🔨Fixes:
  • Rolling updates for redeployments (#14803)
  • Latency improvement by using pickle (#15945)
  • Controller and HTTP proxy uses num_cpus=0 by default (#15000)
  • Health checking in the controller instead of using max_restarts (#15047)
  • Use longest prefix matching for path routing (#15041)
Dashboard
🎉New Features:
🔨Fixes:
  • Add object store memory column (#15697)
  • Add object store stats to dashboard API. (#15677)
  • Remove disk data from the dashboard when running on K8s. (#14676)
  • Fix reported dashboard ip when using 0.0.0.0 (#15506)
Thanks

Many thanks to all those who contributed to this release!

@clay4444, @Fabien-Couthouis, @mGalarnyk, @smorad, @ckw017, @ericl, @antoine-galataud, @pleiadesian, @DmitriGekhtman, @robertnishihara, @Bam4d, @fyrestone, @stephanie-wang, @kfstorm, @wuisawesome, @rkooo567, @franklsf95, @micahtyong, @WangTaoTheTonic, @krfricke, @hegdeashwin, @devin-petersohn, @qicosmos, @edoakes, @llan-ml, @ijrsvt, @richardliaw, @Sertingolix, @ffbin, @simjay, @AmeerHajAli, @simon-mo, @tom-doerr, @sven1977, @clarkzinzow, @mxz96102, @SebastianBo1995, @amogkam, @iycheng, @sumanthratna, @Catch-Bull, @pcmoritz, @architkulkarni, @stefanbschneider, @tgaddair, @xcharleslin, @cthoyt, @fcardoso75, @Jeffwan, @mvindiola1, @michaelzhiluo, @rlan, @mwtian, @SongGuyang, @YeahNew, @kathryn-zhou, @rfali, @jennakwon06, @Yeachan-Heo

View originalPermalink
How 1.4.0 went
1.3.0

Ray-1.3.0

Added 11
  • Ray's scalability limits are now tested and published with each release
  • Ray Client is now usable by default with any Ray cluster started by the Ray Cluster Launcher
  • Ray-native Python-based collective communication primitives for Ray clusters with distributed CPUs or GPUs (alpha)
  • Object spilling is turned on by default
  • Dask-on-Ray and Spark-on-Ray are fully ready to use
  • Dask-on-Ray is now compatible with Dask 2021.4.0
Changed 6
  • Ray is now using C++14
  • Enable Ray client server by default
  • Locality-aware scheduling is turned on by default
  • Moved from centralized GCS-based object directory protocol to decentralized owner-to-owner protocol for better cluster scalability
  • Node-type max workers defaults to infinity
  • rllib rollout runs in parallel by default via Trainer's evaluation worker set
Fixed 3
  • Worker nodes no longer killed on autoscaler failure
  • Fixed high CPU breaking raylets with heartbeat missing errors
  • Fixed high CPU issues from raylet during object transfer
Deprecated 1
  • lru_evict flag is now deprecated in favor of using object spilling

Release v1.3.0 Notes

Highlights
Ray Cluster Launcher
💫Enhancements:
  • Observability improvements (#14816, #14608)
  • Worker nodes no longer killed on autoscaler failure (#14424)
  • Better validation for min_workers and max_workers (#13779)
  • Auto detect memory resource for AWS and K8s (#14567)
  • On autoscaler failure, propagate error message to drivers (#14219)
  • Avoid launching GPU nodes when the workload only has CPU tasks (#13776)
  • Autoscaler/GCS compatibility (#13970, #14046, #14050)
  • Testing (#14488, #14713)
  • Migration of configs to multi-node-type format (#13814, #14239)
  • Better config validation (#14244, #13779)
  • Node-type max workers defaults infinity (#14201)
🔨 Fixes:
  • AWS configuration (#14868, #13558, #14083, #13808)
  • GCP configuration (#14364, #14417)
  • Azure configuration (#14787, #14750, #14721)
  • Kubernetes (#14712, #13920, #13720, #14773, #13756, #14567, #13705, #14024, #14499, #14593, #14655)
  • Other (#14112, #14579, #14002, #13836, #14261, #14286, #14424, #13727, #13966, #14293, #14293, #14718, #14380, #14234, #14484)
Ray Client
💫Enhancements:
  • Version checks for Python and client protocol (#13722, #13846, #13886, #13926, #14295)
  • Validate server port number (#14815)
  • Enable Ray client server by default (#13350, #13429, #13442)
  • Disconnect ray upon client deactivation (#13919)
  • Convert Ray objects to Ray client objects (#13639)
  • Testing (#14617, #14813, #13016, #13961, #14163, #14248, #14630, #14756, #14786)
  • Documentation (#14422, #14265)
🔨 Fixes:
  • Hook runtime context (#13750)
  • Fix mutual recursion (#14122)
  • Set gRPC max message size (#14063)
  • Monitor stream errors (#13386)
  • Fix dependencies (#14654)
  • Fix ray.get ctrl-c (#14425)
  • Report error deserialization errors (#13749)
  • Named actor refcounting fix (#14753)
  • RayTaskError serialization (#14698)
  • Multithreading fixes (#14701)
Ray Core
🎉 New Features:
🔨 Fixes:
  • Ray is now using c++14.
  • Fixed high CPU breaking raylets with heartbeat missing errors (#13963, #14301)
  • Fixed high CPU issues from raylet during object transfer (#13724)
  • Improvement in placement group APIs including better Java support (#13821, #13858, #13582, #15049, #13821)
Ray Data Processing
🎉 New Features:
  • Object spilling is turned on by default. Check out the documentation.
  • Dask-on-Ray and Spark-on-Ray are fully ready to use. Please try them out and give us feedback!
  • Dask-on-Ray is now compatible with Dask 2021.4.0.
  • Dask-on-Ray now works natively with dask.persist().
🔨 Fixes:
  • Various improvements in object spilling and memory management layer to support large scale data processing (#13649, #14149, #13853, #13729, #14222, #13781, #13737, #14288, #14578, #15027)
  • lru_evict flag is now deprecated. Recommended solution now is to use object spilling.
🏗 Architecture refactoring:
  • Various architectural improvements in object spilling and memory management. For more details, check out the whitepaper.
  • Locality-aware scheduling is turned on by default.
  • Moved from centralized GCS-based object directory protocol to decentralized owner-to-owner protocol, yielding better cluster scalability.
RLlib
🎉 New Features:
  • R2D2 implementation for torch and tf. (#13933)
  • PlacementGroup support (all RLlib algos now return PlacementGroupFactory from Trainer.default_resource_request). (#14289)
  • Multi-GPU support for tf-DQN/PG/A2C. (#13393)
💫Enhancements:
  • Documentation: Update documentation for Curiosity's support of continuous actions (#13784); CQL documentation (#14531)
  • Attention-wrapper works with images and supports prev-n-actions/rewards options. (#14569)
  • rllib rollout runs in parallel by default via Trainer’s evaluation worker set. (#14208)
  • Add env rendering (customizable) and video recording options (for non-local mode; >0 workers; +evaluation-workers) and episode media logging. (#14767, #14796)
  • Allow SAC to use custom models as Q- or policy nets and deprecate "state-preprocessor" for image spaces. (#13522)
  • Example Scripts: Add coin game env + matrix social dilemma env + tests and examples (shoutout to Maxime Riché!). (#14208); Attention net (#14864); Serve + RLlib. (#14416); Env seed (#14471); Trajectory view API (enhancements and tf2 support). (#13786); Tune trial + checkpoint selection. (#14209)
  • DDPG: Add support for simplex action space. (#14011)
  • Others: on_learn_on_batch callback allows custom metrics. (#13584); Add TorchPolicy.export_model(). (#13989)
🔨 Fixes:
  • Trajectory View API bugs (#13646, #14765, #14037, #14036, #14031, #13555)
  • Test cases (#14620, #14450, #14384, #13835, #14357, #14243)
  • Others (#13013, #14569, #13733, #13556, #13988, #14737, #14838, #15272, #13681, #13764, #13519, #14038, #14033, #14034, #14308, #14243)
🏗 Architecture refactoring:
  • Remove all non-trajectory view API code. (#14860)
  • Obsolete UsageTrackingDict in favor of SampleBatch. (#13065)
Tune
🎉 New Features:
  • We added a new searcher HEBOSearcher (#14504, #14246, #13863, #14427)
  • Tune is now natively compatible with the Ray Client (#13778, #14115, #14280)
  • Tune now uses Ray’s Placement Groups underneath the hood. This will enable much faster autoscaling and training (for distributed trials) (#13906, #15011, #14313)
💫Enhancements:
  • Checkpointing improvements (#13376, #13767)
  • Optuna Search Algorithm improvements (#14731, #14387)
  • tune.with_parameters now works with Class API (#14532)
🔨Fixes:
  • BOHB & Hyperband fixes (#14487, #14171)
  • Nested metrics improvements (#14189, #14375, #14379)
  • Fix non-deterministic category sampling (#13710)
  • Type hints (#13684)
  • Documentation (#14468, #13880, #13740)
  • Various issues and bug fixes (#14176, #13939, #14392, #13812, #14781, #14150, #14850, #14118, #14388, #14152, #13825, #13936)
SGD
  • Add fault tolerance during worker startup (#14724)
Serve
🎉 New Features:
  • Added metadata to default logger in backend replicas (#14251)
  • Added more metrics for ServeHandle stats (#13640)
  • Deprecated system-level batching in favor of @serve.batch (#14610, #14648)
  • Beta support for Serve with Ray client (#14163)
  • Use placement groups to bypass autoscaler throttling (#13844)
  • Deprecate client-based API in favor of process-wide singleton (#14696)
  • Add initial support for FastAPI ingress (#14754)
🔨 Fixes:
  • Fix ServeHandle serialization (#13695)
🏗 Architecture refactoring:
  • Refactor BackendState to support backend versioning and add more unit testing (#13870, #14658, #14740, #14748)
  • Optimize long polling to be per-key (#14335)
Dashboard
🎉 New Features:
  • Dashboard now supports being served behind a reverse proxy. (#14012)
  • Disk and network metrics are added to prometheus. (#14144)
💫Enhancements:
  • Better CPU & memory information on K8s. (#14593, #14499)
  • Progress towards a new scalable dashboard. (#13790, #11667, #13763,#14333)
Thanks

Many thanks to all those who contributed to this release: @geraint0923, @iycheng, @yurirocha15, @brian-yu, @harryge00, @ijrsvt, @wumuzi520, @suquark, @simon-mo, @clarkzinzow, @RaphaelCS, @FarzanT, @ob, @ashione, @ffbin, @robertnishihara, @SongGuyang, @zhe-thoughts, @rkooo567, @Ezra-H, @acxz, @clay4444, @QuantumMecha, @jirkafajfr, @wuisawesome, @Qstar, @guykhazma, @devin-petersohn, @jeroenboeye, @ConeyLiu, @dependabot[bot], @fyrestone, @micahtyong, @javi-redondo, @Manuscrit, @mxz96102, @EscapeReality846089495, @WangTaoTheTonic, @stanislav-chekmenev, @architkulkarni, @Yard1, @tchordia, @zhisbug, @Bam4d, @niole, @yiranwang52, @thomasjpfan, @DmitriGekhtman, @gabrieleoliaro, @jparkerholder, @kfstorm, @andrew-rosenfeld-ts, @erikerlandson, @Crissman, @raulchen, @sumanthratna, @Catch-Bull, @chaokunyang, @krfricke, @raoul-khour-ts, @sven1977, @kathryn-zhou, @AmeerHajAli, @jovany-wang, @amogkam, @antoine-galataud, @tgaddair, @randxie, @ChaceAshcraft, @ericl, @cassidylaidlaw, @TanjaBayer, @lixin-wei, @lena-kashtelyan, @cathrinS, @qicosmos, @richardliaw, @rmsander, @jCrompton, @mjschock, @pdames, @barakmich, @michaelzhiluo, @stephanie-wang, @edoakes

View originalPermalink
How 1.3.0 went
1.2.0

Release ray-1.2.0

Added 15
  • Ray client is now in beta
  • XGBoost-Ray is now in beta
  • Ray's C++ support is now in beta
  • Object spilling is now available as an alpha feature
  • New autoscaler output format in monitor.log
  • Piping autoscaler events to driver logs
Changed 5
  • Full support of ray.autoscaler.sdk.request_resources() API
  • Placement groups now bypass max launch limit
  • Ray Tune now uses ray.cloudpickle underneath the hood allowing you to checkpoint large models over 4GB
  • Ray Serve backends now accept a Starlette request object instead of a Flask request object
  • Ray Serve backends now have the option of returning a Starlette Response object

Release v1.2.0 Notes

Highlights
Ray Autoscaler
🎉 New Features:
  • A new autoscaler output format in monitor.log (#12772, #13561)
  • Piping autoscaler events to driver logs (#13434)
💫Enhancements
🔨 Fixes:
  • Many autoscaler bug fixes (#12952, #12689, #13058, #13671, #13637, #13588, #13505, #13154, #13151, #13138, #13008, #12980, #12918, #12829, #12714, #12661, #13567, #13663, #13623, #13437, #13498, #13472, #13392, #12514, #13325, #13161, #13129, #12987, #13410, #12942, #12868, #12866, #12865, #12098, #12609)
RLLib
🎉 New Features:
  • Fast Attention Nets (using the trajectory view API) (#12753).
  • Attention Nets: Full PyTorch support (#12029).
  • Attention Nets: Support auto-wrapping around default- or custom models by specifying “use_attention=True” in the model’s config. * * * This works completely analogously now to “use_lstm=True”. (#11698)
  • New Offline RL Algorithm: CQL (based on SAC) (#13118).
  • MAML: Discrete actions support (added CartPole mass test case).
  • Support Atari framestacking via the trajectory view API (#13315).
  • Support for D4RL environments/benchmarks (#13550).
  • Preliminary work on JAX support (#13077, #13091).
💫 Enhancements:
  • Rollout lengths: Allow unit to be configured as “agent_steps” in multi-agent settings (default: “env_steps”) (#12420).
  • TFModelV2: Soft-deprecate register_variables and unify var names wrt TorchModelV2 (#13339, #13363).
📖 Documentation:
  • Added documentation on Model building API (#13260, #13261).
  • Added documentation for the trajectory view API. (#12718)
  • Added documentation for SlateQ (#13266).
  • Readme.md documentation for almost all algorithms in rllib/agents (#12943, #13035).
  • Type annotations for the “rllib/execution” folder (#12760, #13036).
🔨 Fixes:
  • MARWIL and BC: Add grad-clipping config option to stabilize learning (#13455).
  • A3C: Solve PyTorch- and TF-eager async race condition between calling model and its value function (#13467).
  • Various issues- and bug fixes (#12619, #12682, #12704, #12706, #12708, #12765, #12786, #12787, #12793, #12832, #12844, #12846, #12915, #12941, #13039, #13040, #13064, #13083, #13121, #13126, #13237, #13238, #13308, #13332, #13397, #13459, #13553). ###🏗 Architecture refactoring:
  • Env directory has been cleaned up and is now divided in: Core part (rllib/env) with all basic env classes, and rllib/env/wrappers containing third-party wrapper classes (Atari, Unity3D, etc..) (#13082).
Tune
🎉 New Features:
💫 Enhancements
  • Ray Tune now uses ray.cloudpickle underneath the hood, allowing you to checkpoint large models (>4GB) (#12958).
  • Using the 'reuse_actors' flag can now speed up training for general Trainable API usage. (#13549)
  • Ray Tune will now automatically buffer results from trainables, allowing you to use an arbitrary reporting frequency on your training functions. (#13236)
  • Ray Tune now has a variety of experiment stoppers (#12750)
  • Ray Tune now supports an integer loguniform search space distribution (#12994)
  • Ray Tune now has an initial support for the Ray placement group API. (#13370)
  • The Weights and Bias integration (WandbLogger) now also accepts wandb.data_types.Video (#13169)
  • The Hyperopt integration (HyperoptSearch) can now directly accept category variables instead of indices (#12715)
  • Ray Tune now supports experiment checkpointing when using grid search (#13357)
🔨Fixes and Updates
  • The Optuna integration was updated to support the 2.4.0 API while maintaining backwards compatibility (#13631)
  • All search algorithms now support points_to_evaluate (#12790, #12916)
  • PBT Transformers example was updated and improved (#13174, #13131)
  • The scikit-optimize integration was improved (#12970)
  • Various bug fixes (#13423, #12785, #13171, #12877, #13255, #13355)
SGD
🔨Fixes and Updates
  • Fix Docstring for as_trainable (#13173)
  • Fix process group timeout units (#12477)
  • Disable Elastic Training by default when using with Tune (#12927)
Serve
🎉 New Features:
  • Ray Serve backends now accept a Starlette request object instead of a Flask request object (#12852). This is a breaking change, so please read the migration guide.
  • Ray Serve backends now have the option of returning a Starlette Response object (#12811, #13328). This allows for more customizable responses, including responses with custom status codes.
  • [Experimental] The new Ray Serve MLflow plugin makes it easy to deploy your MLflow models on Ray Serve. It comes with a Python API and a command-line interface.
  • Using “ImportedBackend” you can now specify a backend based on a class that is installed in the Python environment that the workers will run in, even if the Python environment of the driver script (the one making the Serve API calls) doesn’t have it installed (#12923).

💫 Enhancements:

  • Dependency management using conda no longer requires the driver script to be running in an activated conda environment (#13269).
  • Ray ObjectRef can now be used as argument to serve_handle.remote(...). (#12592)
  • Backends are now shut down gracefully. You can set the graceful timeout in BackendConfig. (#13028)

📖 Documentation:

  • A tutorial page has been added for integrating Ray Serve with your existing FastAPI web server or with your existing AIOHTTP web server (#13127).
  • Documentation has been added for Ray Serve metrics (#13096).
View originalPermalink
How 1.2.0 went

1.1.0

Added 8
  • Progress towards supporting a Ray client
  • Descendent tasks are cancelled when the calling task is cancelled
  • SUMO simulator integration
  • SlateQ Algorithm added for PyTorch
  • MAML extension for all Models, except recurrent ones
  • Curiosity Exploration Module for tf1.x/2.x/eager
  • Minimal JAXModelV2 example
  • Loggers can now be passed as objects to tune.run with new ExperimentLogger abstraction
Changed 5
  • Improved placement group support
  • LSTM prev-action/prev-reward settable separately and prev-actions are now one-hot'd
  • Trajectory View API on by default (faster PG-type algos by ~20%)
  • Tune verbosity refactored into four levels: 0: Silent, 1: Only experiment-level logs, 2: General trial-level logs, 3: Detailed trial-level logs
  • Docker and Kubernetes autoscaling environments are detected automatically, automatically utilizing the correct checkpoint/log syncing tools
Fixed 6
  • Improved object broadcast robustness
  • Fix RNN learning for tf2.x/eager
  • PyTorch LR schedule not working
  • Various PyTorch GPU bug fixes
  • SAC loss not using prio. replay weights in critic's loss term
  • Fix epsilon-greedy Exploration for nested action spaces

Ray 1.1.0

Ray Core
🎉 New Features:
  • Progress towards supporting a Ray client
  • Descendent tasks are cancelled when the calling task is cancelled
🔨 Fixes:
  • Improved object broadcast robustness
  • Improved placement group support
🏗 Architecture refactoring:
  • Progress towards the new scheduler backend
RLlib
🎉 New Features:
  • SUMO simulator integration (rllib/examples/simulators/sumo/). Huge thanks to Lara Codeca! (#11710)
  • SlateQ Algorithm added for PyTorch. Huge thanks to Henry Chen! (#11450)
  • MAML extension for all Models, except recurrent ones. (#11337)
  • Curiosity Exploration Module for tf1.x/2.x/eager. (#11945)
  • Minimal JAXModelV2 example. (#12502)
🔨 Fixes:
  • Fix RNN learning for tf2.x/eager. (#11720)
  • LSTM prev-action/prev-reward settable separately and prev-actions are now one-hot’d. (#12397)
  • PyTorch LR schedule not working. (#12396)
  • Various PyTorch GPU bug fixes. (#11609)
  • SAC loss not using prio. replay weights in critic’s loss term. (#12394)
  • Fix epsilon-greedy Exploration for nested action spaces. (#11453)
🏗 Architecture refactoring:
  • Trajectory View API on by default (faster PG-type algos by ~20% (e.g. PPO on Atari)). (#11717, #11826, #11747, and #11827)
Tune
🎉 New Features:
  • Loggers can now be passed as objects to tune.run. The new ExperimentLogger abstraction was introduced for all loggers, making it much easier to configure logging behavior. (#11984, #11746, #11748, #11749)
  • The tune verbosity was refactored into four levels: 0: Silent, 1: Only experiment-level logs, 2: General trial-level logs, 3: Detailed trial-level logs (default) (#11767, #12132, #12571)
  • Docker and Kubernetes autoscaling environments are detected automatically, automatically utilizing the correct checkpoint/log syncing tools (#12108)
  • Trainables can now easily leverage Tensorflow DistributedStrategy! (#11876)
💫 Enhancements
  • Introduced a new serialization debugging utility (#12142)
  • Added a new lightweight Pytorch-lightning example (#11497, #11585)
  • The BOHB search algorithm can be seeded with a random state (#12160)
  • The default anonymous metrics can be used automatically if a mode is set in tune.run (#12159).
  • Added HDFS as Cloud Sync Client (#11524)
  • Added xgboost_ray integration (#12572)
  • Tune search spaces can now be passed to search algorithms on initialization, not only via tune.run (#11503)
  • Refactored and added examples (#11931)
  • Callable accepted for register_env (#12618)
  • Tune search algorithms can handle/ignore infinite and NaN numbers (#11835)
  • Improved scalability for experiment checkpointing (#12064)
  • Nevergrad now supports points_to_evaluate (#12207)
  • Placement group support for distributed training (#11934)
🔨 Fixes:
  • Fixed with_parameters behavior to avoid serializing large data in scope (#12522)
  • TBX logger supports None (#12262)
  • Better error when metric or mode unset in search algorithms (#11646)
  • Better warnings/exceptions for fail_fast='raise' (#11842)
  • Removed some bottlenecks in trialrunner (#12476)
  • Fix file descriptor leak by syncer and Tensorboard (#12590, #12425)
  • Fixed validation for search metrics (#11583)
  • Fixed hyperopt randint limits (#11946)
Serve
🎉 New Features:
  • You can start backends in different conda environments! See more in the dependency management doc. (#11743)
  • You can add a optional reconfigure method to your Servable to allow reconfiguring backend replicas at runtime. (#11709)
🔨Fixes:
  • Set serve.start(http_host=None) to disable HTTP servers. If you are only using ServeHandle, this option lowers resource usage. (#11627)
  • Flask requests will no longer create reference cycles. This means peak memory usage should be lower for high traffic scenarios. (#12560)
🏗 Architecture refactoring:
  • Progress towards a goal state driven Serve controller. (#12369,#11792,#12211,#12275,#11533,#11822,#11579,#12281)
  • Progress towards faster and more efficient ServeHandles. (#11905, #12019, #12093)
Ray Cluster Launcher (Autoscaler)
🎉 New Features:
💫 Enhancements
  • Containers do not run with root user as the default (#11407)
  • SHM-Size is auto-populated when using the containers (#11953)
🔨 Fixes:
  • Many autoscaler bug fixes (#11677, #12222, #11458, #11896, #12123, #11820, #12513, #11714, #12512, #11758, #11615, #12106, #11961, #11674, #12028, #12020, #12316, #11802, #12131, #11543, #11517, #11777, #11810, #11751, #12465, #11422)
SGD
🎉 New Features:
  • Easily customize your torch.DistributedDataParallel configurations by passing in a ddp_args field into TrainingOperator.register (#11771).
🔨 Fixes:
  • TorchTrainer now properly scales up to more workers if more resources become available (#12562)
📖 Documentation:
  • The new callback API for using Ray SGD with Tune is now documented (#11479)
  • Pytorch Lightning + Ray SGD integration is now documented (#12440)
Dashboard
🔨 Fixes:
  • Fixed bug that prevented viewing the logs for cluster workers
  • Fixed bug that caused "Logical View" page to crash when opening a list of actors for a given class.
🏗 Architecture refactoring:
  • Dashboard runs on a new backend architecture that is more scalable and well-tested. The dashboard should work on ~100 node clusters now, and we're working on lifting scalability to constraints to support even larger clusters.
Thanks

Many thanks to all those who contributed to this release: @bartbroere, @SongGuyang, @gramhagen, @richardliaw, @ConeyLiu, @weepingwillowben, @zhongchun, @ericl, @dHannasch, @timurlenk07, @kaushikb11, @krfricke, @desktable, @bcahlit, @rkooo567, @amogkam, @micahtyong, @edoakes, @stephanie-wang, @clay4444, @ffbin, @mfitton, @barakmich, @pcmoritz, @AmeerHajAli, @DmitriGekhtman, @iamhatesz, @raulchen, @ingambe, @allenyin55, @sven1977, @huyz-git, @yutaizhou, @suquark, @ashione, @simon-mo, @raoul-khour-ts, @Leemoonsoo, @maximsmol, @alanwguo, @kishansagathiya, @wuisawesome, @acxz, @gabrieleoliaro, @clarkzinzow, @jparkerholder, @kingsleykuan, @InnovativeInventor, @ijrsvt, @lasagnaphil, @lcodeca, @jiajiexiao, @heng2j, @wumuzi520, @mvindiola1, @aaronhmiller, @robertnishihara, @WangTaoTheTonic, @chaokunyang, @nikitavemuri, @kfstorm, @roireshef, @fyrestone, @viotemp1, @yncxcw, @karstenddwx, @hartikainen, @sumanthratna, @architkulkarni, @michaelzhiluo, @UWFrankGu, @oliverhu, @danuo, @lixin-wei

View originalPermalink
How 1.1.0 went

1.0.1.post1

Added 1
  • Add cluster_name to docker file mounts directory prefix
Fixed 1
  • Dashboard crashing on multi-node clusters

Patch release containing the following changes:

View originalPermalink
How 1.0.1.post1 went

1.0.1

Added 10
  • RLlib added documentation for Curiosity exploration module
  • RLlib added RecSym environment wrapper
  • RLlib added Kaggle's football environment multi-agent wrapper
  • RLlib added support for custom MultiAction distributions
  • RLlib added simple SampleCollector class for Trajectory View API
  • SGD now supports PyTorch Lightning integration
Changed 5
  • Autoscaler is now docker by default
  • RLlib no environment is created on driver local worker if not necessary
  • Serve will error when serve_client is serialized
  • Serve serve_client.get_handle() now gets a handle to nearest node increasing scalability in distributed mode
  • Tune now errors by default if a result dict does not include the optimization metric as a key, controlled by TUNE_DISABLE_STRICT_METRIC_CHECKING
Fixed 5
  • RLlib fixed GPU related issues for SAC
  • RLlib fixed all example scripts to run on GPU
  • RLlib lifted limitation on 2^31 timesteps
  • RLlib fixed eval workers for ES and ARS
  • RLlib fixed broken no-eager-no-workers mode

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 2^31 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 and return statements (#10857)
  • Tune now supports callbacks with tune.run(callbacks=... (#11001)
  • 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

View originalPermalink
How 1.0.1 went

1.0.0

Added 13
  • Support and documentation for Dask-on-Ray and MARS-on-Ray
  • Placement groups for fine-grained control over scheduling decisions
  • Support for multiple instance types in the same cluster
  • Support for specifying GPU/accelerator type in @ray.remote
  • Dashboard now supports visualization of actor states
  • Support for Prometheus metrics reporting
Changed 3
  • Ray Java API is now stable
  • Improvements to the memory usage tab and machine view in the dashboard
  • tune.run upload_dir, sync_to_cloud, sync_to_driver, sync_on_checkpoint parameters have been moved to tune.SyncConfig
Fixed 1
  • Improved detection of Docker CPU limits
Removed 2
  • Deprecated arguments have been removed from ray.init() and ray start commands
  • Model(V1) class, Trainer config keys, and some methods/functions have been removed from RLlib
Deprecated 1
  • Multiple tune.run parameters have been deprecated: ray_auto_init, run_errored_only, global_checkpoint_period, with_server

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
Autoscaler
Dashboard & Metrics
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 to tune.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)
  • 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)
  • 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

View originalPermalink
How 1.0.0 went

0.8.7

Added 18
  • Ray Cluster Launcher has a new colorful, concise output style available with the --log-new-style flag
  • Windows is now officially supported by RLlib
  • Add ray status debug tool and ray --version command
  • Add option for continuous sync of file mounts
  • Option to automatically reconstruct objects stored in plasma after a failure
  • Support Python type checking for Ray tasks
Changed 2
  • ObjectIDs are now called ObjectRefs
  • Ray Autoscaler is now called Ray Cluster Launcher
Deprecated 1
  • Deprecated Policy Optimizer package in favor of new distributed execution API
Highlight
  • Ray is moving towards 1.0! It has had several important naming changes.
    • ObjectIDs are now called ObjectRefs because they are not just IDs.
    • The Ray Autoscaler is now called the Ray Cluster Launcher. The autoscaler will be a module of the Ray Cluster Launcher.
  • The Ray Cluster Launcher now has a much cleaner and concise output style. Try it out with ray up --log-new-style. The new output style will be enabled by default (with opt-out) in a later release.
  • Windows is now officially supported by RLlib. Multi node support for Windows is still in progress.
Cluster Launcher/CLI (formerly autoscaler)
  • Highlight: This release contains a new colorful, concise output style for ray up and ray down, available with the --log-new-style flag. It will be enabled by default (with opt-out) in a later release. Full output style coverage for Cluster Launcher commands will also be available in a later release. (#9322, #9943, #9960, #9690)
  • Documentation improvements (with guides and new sections) (#9687
  • Improved Cluster launcher docker support (#9001, #9105, #8840)
  • Ray now has Docker images available on Docker hub. Please check out the ray image (#9732, #9556, #9458, #9281)
  • Azure improvements (#8938)
  • Improved on-prem cluster autoscaler (#9663)
  • Add option for continuous sync of file mounts (#9544)
  • Add ray status debug tool and ray --version (#9091, #8886).
  • ray memory now also supports redis_password (#9492)
  • Bug fixes for the Kubernetes cluster launcher mode (#9968)
  • Various improvements: disabling the cluster config cache (#8117), Python API requires keyword arguments (#9256), removed fingerprint checking for SSH (#9133), Initial support for multiple worker types (#9096), various changes to the internal node provider interface (#9340, #9443)
Core
  • Support Python type checking for Ray tasks (#9574)
  • Rename ObjectID => ObjectRef (#9353)
  • New GCS Actor manager on by default (#8845, #9883, #9715, #9473, #9275)
  • Worker towards placement groups (#9039)
  • Plasma store process is merged with raylet (#8939, #8897)
  • Option to automatically reconstruct objects stored in plasma after a failure. See the documentation for more information. (#9394, #9557, #9488)
  • Many bug fixes.
RLlib
  • New algorithm: “Model-Agnostic Meta-Learning” (MAML). An algo that learns and generalizes well across a distribution of environments.
  • New algorithm: “Model-Based Meta-Policy-Optimization” (MB-MPO). Our first model-based RL algo.
  • Windows is now officially supported by RLlib.
  • Native TensorFlow 2.x support. Use framework=”tf2” in your config to tap into TF2’s full potential. Also: SAC, DDPG, DQN Rainbow, ES, and ARS now run in TF1.x Eager mode.
  • DQN PyTorch support for full Rainbow setup (including distributional DQN).
  • Python type hints for Policy, Model, Offline, Evaluation, and Env classes.
  • Deprecated “Policy Optimizer” package (in favor of new distributed execution API).
  • Enhanced test coverage and stability.
  • Flexible multi-agent replay modes and replay_sequence_length. We now allow a) storing sequences (over time) in replay buffers and retrieving “lock-stepped” multi-agent samples.
  • Environments: Unity3D soccer game (tuned example/benchmark) and DM Control Suite wrapper and examples.
  • Various Bug fixes: QMIX not learning, DDPG torch bugs, IMPALA learning rate updates, PyTorch custom loss, PPO not learning MuJoCo due to action clipping bug, DQN w/o dueling layer error.
Tune
  • API Changes:
    • The Tune Function API now supports checkpointing and is now usable with all search and scheduling algorithms! (#8471, #9853, #9517)
    • The Trainable class API has renamed many of its methods to be public (#9184)
  • You can now stop experiments upon convergence with Bayesian Optimization (#8808)
  • DistributedTrainableCreator, a simple wrapper for distributed parameter tuning with multi-node DistributedDataParallel models (#9550, #9739)
  • New integration and tutorial for using Ray Tune with Weights and Biases (Logger and native API) (#9725)
  • Tune now provides a Scikit-learn compatible wrapper for hyperparameter tuning (#9129)
  • New tutorials for integrations like XGBoost (#9060), multi GPU PyTorch (#9338), PyTorch Lightning (#9151, #9451), and Huggingface-Transformers (#9789)
  • CLI Progress reporting improvements (#8802, #9537, #9525)
  • Various bug fixes: handling of NaN values (#9381), Tensorboard logging improvements (#9297, #9691, #8918), enhanced cross-platform compatibility (#9141), re-structured testing (#9609), documentation reorganization and versioning (#9600, #9427, #9448)
RaySGD
  • Variable worker CPU requirements (#8963)
  • Simplified cuda visible device setting (#8775)
Serve
  • Horizontal scalability: Serve will now start one HTTP server per Ray node. (#9523)
  • Various performance improvement matching Serve to FastAPI (#9490,#8709, #9531, #9479 ,#9225, #9216, #9485)
  • API changes
    • serve.shadow_traffic(endpoint, backend, fraction) duplicates and sends a fraction of the incoming traffic to a specific backend. (#9106)
    • serve.shutdown() cleanup the current Serve instance in Ray cluster. (#8766)
    • Exception will be raised if num_replicas exceeds the maximum resource in the cluster (#9005)
  • Added doc examples for how to perform metric monitoring and model composition.
Dashboard
  • Configurable Dashboard Port: The port on which the dashboard will run is now configurable using the argument --dashboard-port and the argument dashboard_port to ray.init
  • GPU monitoring improvements
    • For machines with more than one GPU, the GPU and GRAM utilization is now broken out on a per-GPU basis.
    • Assignments to physical GPUs are now shown at the worker level.
  • Sortable Machine View: It is now possible to sort the machine view by almost any of its columns by clicking next to the title. In addition, whereas the workers are normally grouped by node, you can now ungroup them if you only want to see details about workers.
  • Actor Search Bar: It is possible to search for actors by their title now (this is the class name of the actor in python in addition to the arguments it received.)
  • Logical View UI Updates: This includes things like color-coded names for each of the actor states, a more grid-like layout, and tooltips for the various data.
  • Sortable Memory View: Like the machine view, the memory view now has sortable columns and can be grouped / ungrouped by node.
Windows Support
  • Improve GPU detection (#9300)
  • Work around msgpack issue on PowerPC64LE (#9140)
Others
  • Ray Streaming Library Improvements (#9240, #8910, #8780)
  • Java Support Improvements (#9371, #9033, #9037, #9032, #8858, #9777, #9836, #9377)
  • Parallel Iterator Improvements (#8964, #8978)
Thanks

We thank the following contributors for their work on this release: @jsuarez5341, @amitsadaphule, @krfricke, @williamFalcon, @richardliaw, @heyitsmui, @mehrdadn, @robertnishihara, @gabrieleoliaro, @amogkam, @fyrestone, @mimoralea, @edoakes, @andrijazz, @ElektroChan89, @kisuke95, @justinkterry, @SongGuyang, @barakmich, @bloodymeli, @simon-mo, @TomVeniat, @lixin-wei, @alanwguo, @zhuohan123, @michaelzhiluo, @ijrsvt, @pcmoritz, @LecJackS, @sven1977, @ashione, @JerryLeeCS, @raphaelavalos, @stephanie-wang, @ruifangChen, @vnlitvinov, @yncxcw, @weepingwillowben, @goulou, @acmore, @wuisawesome, @gramhagen, @anabranch, @internetcoffeephone, @Alisahhh, @henktillman, @deanwampler, @p-christ, @Nicolaus93, @WangTaoTheTonic, @allenyin55, @kfstorm, @rkooo567, @ConeyLiu, @09wakharet, @piojanu, @mfitton, @KristianHolsheimer, @AmeerHajAli, @pdames, @ericl, @VishDev12, @suquark, @stefanbschneider, @raulchen, @dcfidalgo, @chappers, @aaarne, @chaokunyang, @sumanthratna, @clarkzinzow, @BalaBalaYi, @maximsmol, @zhongchun, @wumuzi520, @ffbin

View originalPermalink
How 0.8.7 went

0.8.6

Added 20
  • Experimental support for Windows is now available for single node Ray usage
  • Ray dashboard now supports GPU monitoring and a memory view
  • RLlib officially supports the Unity3D adapter
  • Automatic retry of failed actor tasks after an actor has been restarted by specifying max_restarts in @ray.remote
  • PyTorch IMPALA version and all rllib/examples scripts now work for either TensorFlow or PyTorch
  • Support for variable length observation Spaces called Repeated
Changed 6
  • Switched to using distributed execution API by default for all RLlib algorithms instead of Policy Optimizers
  • Use max_restarts in @ray.remote decorator instead of max_reconstructions to enable automatic restarts of failed actors
  • Merged named and detached actor APIs to create detached actors by specifying name parameter in Actor.options
  • Replaced use_pytorch and eager flags in RLlib configs with framework=[tf|tfe|torch]
  • serve.create_endpoint now requires specifying the backend directly
  • Improved autoscaler logging output with clearer error propagation and reduced excess output
Removed 3
  • Removed blocking, ray_init_kwargs, and start_server options from serve.init API
  • Retired ModelV1 class support in RLlib with warning for current usage to be changed to error in next release
  • Retired TupleActions in favor of arbitrarily nested action Spaces
Deprecated 2
  • tune.track is deprecated in favor of tune.report for the Tune function API
  • PolicyOptimizers deprecated in favor of the new distributed execution API in RLlib
Highlight
  • Experimental support for Windows is now available for single node Ray usage. Check out the Windows section below for known issues and other details.
  • Have you had troubles monitoring GPU or memory usage while you used Ray? The Ray dashboard now supports the GPU monitoring and a memory view.
  • Want to use RLlib with Unity? RLlib officially supports the Unity3D adapter! Please check out the documentation.
  • Ray Serve is ready for feedback! We've gotten feedback from many users, and Ray Serve is already being used in production. Please reach out to us with your use cases, ideas, documentation improvements, and feedback. We'd love to hear from you. Please do so on the Ray Slack and join #serve! Please see the Serve section below for more details.
Core
  • We’ve introduced a new feature to automatically retry failed actor tasks after an actor has been restarted by Ray (by specifying max_restarts in @ray.remote). Try it out with max_task_retries=-1 where -1 indicates that the system can retry the task until it succeeds.
API Change
  • To enable automatic restarts of a failed actor, you must now use max_restarts in the @ray.remote decorator instead of max_reconstructions. You can use -1 to indicate infinity, i.e., the system should always restart the actor if it fails unexpectedly.
  • We’ve merged the named and detached actor APIs. To create an actor that will survive past the duration of its job (a “detached” actor), specify name=<str> in its remote constructor (Actor.options(name='<str>').remote()). To delete the actor, you can use ray.kill.
RLlib
  • PyTorch: IMPALA PyTorch version and all rllib/examples scripts now work for either TensorFlow or PyTorch (--torch command line option).
  • Switched to using distributed execution API by default (replaces Policy Optimizers) for all algorithms.
  • Unity3D adapter (supports all Env types: multi-agent, external env, vectorized) with example scripts for running locally or in the cloud.
  • Added support for variable length observation Spaces ("Repeated").
  • Added support for arbitrarily nested action spaces.
  • Added experimental GTrXL (Transformer/Attention net) support to RLlib + learning tests for PPO and IMPALA.
  • QMIX now supports complex observation spaces.
API Change
  • Retire use_pytorch and eager flags in configs and replace these with framework=[tf|tfe|torch].
  • Deprecate PolicyOptimizers in favor of the new distributed execution API.
  • Retired support for Model(V1) class. Custom Models should now only use the ModelV2 API. There is still a warning when using ModelV1, which will be changed into an error message in the next release.
  • Retired TupleActions (in favor of arbitrarily nested action Spaces).
Ray Tune / RaySGD
  • There is now a Dataset API for handling large datasets with RaySGD. (#7839)
  • You can now filter by an average of the last results using the ExperimentAnalysis tool (#8445).
  • BayesOptSearch received numerous contributions, enabling preliminary random search and warm starting. (#8541, #8486, #8488)
API Changes
  • tune.report is now the right way to use the Tune function API. tune.track is deprecated (#8388)
Serve
  • New APIs to inspect and manage Serve objects:
    • serve.list_backends and serve.list_endpoints (#8737)
    • serve.delete_backend and serve.delete_endpoint (#8252, #8256)
  • serve.create_endpoint now requires specifying the backend directly. You can remove serve.set_traffic if there's only one backend per endpoint. (#8764)
  • serve.init API cleanup, the following options were removed:
    • blocking, ray_init_kwargs, start_server (#8747, #8447, #8620)
  • serve.init now supports namespacing with name. You can run multiple serve clusters with different names on the same ray cluster. (#8449)
  • You can specify session affinity when splitting traffic with backends using X-SERVE-SHARD-KEY HTTP header. (#8449)
  • Various documentation improvements. Highlights:
    • A new section on how to perform A/B testing and incremental rollout (#8741)
    • Tutorial for batch inference (#8490)
    • Instructions for specifying GPUs and resources (#8495)
Dashboard / Metrics
  • The Machine View of the dashboard now shows information about GPU utilization such as:
    • Average GPU/GRAM utilization at a node and cluster level
    • Worker-level information about how many GPUs each worker is assigned as well as its GRAM use.
  • The dashboard has a new Memory View tab that should be very useful for debugging memory issues. It has:
    • Information about objects in the Ray object store, including size and call-site
    • Information about reference counts and what is keeping an object pinned in the Ray object store.
Small changes
  • IDLE workers get automatically sorted to the end of the worker list in the Machine View
Autoscaler
  • Improved logging output. Errors are more clearly propagated and excess output has been reduced. (#7198, #8751, #8753)
  • Added support for k8s services.
API Changes
  • ray up accepts remote URLs that point to the desired cluster YAML. (#8279)
Windows support
  • Windows wheels are now available for basic experimental usage (via ray.init()).
  • Windows support is currently unstable. Unusual, unattended, or production usage is not recommended.
  • Various functionality may still lack support, including Ray Serve, Ray SGD, the autoscaler, the dashboard, non-ASCII file paths, etc.
  • Please check the latest nightly wheels & known issues (#9114), and let us know if any issue you encounter has not yet been addressed.
  • Wheels are available for Python 3.6, 3.7, and 3.8. (#8369)
  • redis-py has been patched for Windows sockets. (#8386)
Others
  • Moving towards highly available Ray (#8650, #8639, #8606, #8601, #8591, #8442)
  • Java Support (#8730, #8640, #8637)
  • Ray streaming improvements (#8612, #8594, #7464)
  • Parallel iterator improvements (#8140, #7931, #8712)
Thanks

We thank the following contributors for their work on this release: @pcmoritz, @akharitonov, @devanderhoff, @ffbin, @anabranch, @jasonjmcghee, @kfstorm, @mfitton, @alecbrick, @simon-mo, @konichuvak, @aniryou, @wuisawesome, @robertnishihara, @ramanNarasimhan77, @09wakharet, @richardliaw, @istoica, @ThomasLecat, @sven1977, @ceteri, @acxz, @iamhatesz, @JarnoRFB, @rkooo567, @mehrdadn, @thomasdesr, @janblumenkamp, @ujvl, @edoakes, @maximsmol, @krfricke, @amogkam, @gehring, @ijrsvt, @internetcoffeephone, @LucaCappelletti94, @chaokunyang, @WangTaoTheTonic, @fyrestone, @raulchen, @ConeyLiu, @stephanie-wang, @suquark, @ashione, @Coac, @JosephTLucas, @ericl, @AmeerHajAli, @pdames

View originalPermalink
How 0.8.6 went
0.8.5

Ray 0.8.5

Added 5
  • You can now cancel remote tasks using the ray.cancel API
  • Experimental support for recovering objects that were lost from the Ray distributed memory store by setting lineage_pinning_enabled: 1 in the internal config
  • New ZOOpt search algorithm added to Tune
  • Add delete_endpoint and delete_backend APIs to Serve
  • Added tutorials for serving models in Tensorflow/Keras, PyTorch, and Scikit-Learn in Serve
Changed 9
  • PyTorch support in RLlib has reached parity with TensorFlow
  • Improved callbacks API in RLlib
  • Enable Ray distributed reference counting in RLlib
  • Search algorithms in Tune are refactored to make them easier to extend
  • Use dictionary to update backend config in Serve
  • Made serve clusters tolerant to process failures
Fixed 3
  • TensorboardX errors are now handled safely in Tune
  • Bug fix in PBT checkpointing in Tune
  • Fix GPU Reservations in SLURM usage in SGD
Deprecated 1
  • max_concurrent argument in Tune search algorithms is deprecated
Highlight
Core
  • Task cancellation is now available for locally submitted tasks. (#7699)
  • Experimental support for recovering objects that were lost from the Ray distributed memory store. You can try this out by setting lineage_pinning_enabled: 1 in the internal config. (#7733)
RLlib
  • PyTorch support has now reached parity with TensorFlow. (#7926, #8188, #8120, #8101, #8106, #8104, #8082, #7953, #7984, #7836, #7597, #7797)
  • Improved callbacks API. (#6972)
  • Enable Ray distributed reference counting. (#8037)
  • Work towards customizable distributed training workflows. (#7958, #8077)
Tune
  • Documentation has improved with a new format. (#8083, #8201, #7716)
  • Search algorithms are refactored to make them easier to extend, deprecating max_concurrent argument. (#7037, #8258, #8285)
  • TensorboardX errors are now handled safely. (#8174)
  • Bug fix in PBT checkpointing. (#7794)
  • New ZOOpt search algorithm added. (#7960)
Serve
  • Improved APIs.
    • Add delete_endpoint and delete_backend. (#8252, #8256)
    • Use dictionary to update backend config. (#8202)
  • Added overview section to the documentation.
  • Added tutorials for serving models in Tensorflow/Keras, PyTorch, and Scikit-Learn.
  • Made serve clusters tolerant to process failures. (#8116, #8008,#7970,#7936)
SGD
  • New Semantic Segmentation and HuggingFace GLUE Fine-tuning Examples. (#7792, #7825)
  • Fix GPU Reservations in SLURM usage. (#8157)
  • Update learning rate scheduler stepping parameter. (#8107)
  • Make serialization of data creation optional. (#8027)
  • Automatic DDP wrapping is now optional. (#7875)
Others Projects
  • Progress towards the highly available and fault tolerant control plane. (#8144, #8119, #8145, #7909, #7949, #7771, #7557, #7675)
  • Progress towards the Ray streaming library. (#8044, #7827, #7955, #7961, #7348)
  • Autoscaler improvement. (#8178, #8168, #7986, #7844, #7717)
  • Progress towards Java support. (#8014)
  • Progress towards the Window compatibility. (#8237, #8186)
  • Progress towards cross language support. (#7711)
Thanks

We thank the following contributors for their work on this release:

@simon-mo, @robertnishihara, @BalaBalaYi, @ericl, @kfstorm, @tirkarthi, @nflu, @ffbin, @chaokunyang, @ijrsvt, @pcmoritz, @mehrdadn, @sven1977, @iamhatesz, @nmatthews-asapp, @mitchellstern, @edoakes, @anabranch, @billowkiller, @eisber, @ujvl, @allenyin55, @yncxcw, @deanwampler, @DavidMChan, @ConeyLiu, @micafan, @rkooo567, @datayjz, @wizardfishball, @sumanthratna, @ashione, @marload, @stephanie-wang, @richardliaw, @jovany-wang, @MissiontoMars, @aannadi, @fyrestone, @JarnoRFB, @wumuzi520, @roireshef, @acxz, @gramhagen, @Servon-Lee, @ClarkZinzow, @mfitton, @maximsmol, @janblumenkamp, @istoica

View originalPermalink
How 0.8.5 went
0.8.4

Ray 0.8.4

Added 10
  • Add Python 3.8 support
  • Add contextual bandit algorithms
  • Add parameter noise exploration API
  • Add new API for save/restore
  • Add tqdm support to TorchTrainer
  • Add sorted columns and TensorBoard to Tune tab
Changed 7
  • ray memory will collect statistics from all nodes
  • Pin lineage of plasma objects that are still in scope
  • Enable restore keras model from h5 file
  • Store tf-graph by default when doing Policy.export_model()
  • Add new API for tuning TorchTrainer using Tune
  • Convert the head worker to a local model
  • Override the IP retrieval process if needed
Fixed 3
  • Fix asyncio actor deserialization
  • Fix importing Pyarrow lead to symbol collision segfault
  • Fix default policy overrides torch policy
Highlight
  • Add Python 3.8 support. (#7754)
Core
  • Fix asycnio actor deserialization. (#7806)
  • Fix importing Pyarrow lead to symbol collison segfault. (#7568)
  • ray memory will collect statistics from all nodes. (#7721)
  • Pin lineage of plasma objects that are still in scope. (#7690)
RLlib
  • Add contextual bandit algorithms. (#7642)
  • Add parameter noise exploration API. (#7772)
  • Add scaling guide. (#7780)
  • Enable restore keras model from h5 file. (#7482)
  • Store tf-graph by default when doing Policy.export_model(). (#7759)
  • Fix default policy overrides torch policy. (#7756, #7769)
RaySGD
  • BREAKING: Add new API for tuning TorchTrainer using Tune. (#7547)
  • BREAKING: Convert the head worker to a local model. (#7746)
  • Added a new API for save/restore. (#7547)
  • Add tqdm support to TorchTrainer. (#7588)
Tune
  • Add sorted columns and TensorBoard to Tune tab. (#7140)
  • Tune experiments can now be cancelled via the REST client. (#7719)
  • fail_fast enables experiments to fail quickly. (#7528)
  • override the IP retrieval process if needed. (#7705)
  • TensorBoardX nested dictionary support. (#7705)
Serve
  • Performance improvements:
    • Push route table updates to HTTP proxy. (#7774)
    • Improve serialization. (#7688)
  • Add async methods support for serve actors. (#7682)
  • Add multiple method support for serve actors. (#7709)
    • You can specify HTTP methods in serve.create_backend(..., methods=["GET", "POST"]).
    • The ability to specify which actor method to execute in HTTP through X-SERVE-CALL-METHOD header or in RayServeHandle through handle.options("method").remote(...).
Others
  • Progress towards highly available control plane. (#7822, #7742)
  • Progress towards Windows compatibility. (#7740, #7739, #7657)
  • Progress towards Ray Streaming library. (#7813)
  • Progress towards metrics export service. (#7809)
  • Basic C++ worker implementation. (#6125)
Thanks

We thank the following contributors for their work on this release:

@carlbalmer, @BalaBalaYi, @saurabh3949, @maximsmol, @SongGuyang, @istoica, @pcmoritz, @aannadi, @kfstorm, @ijrsvt, @richardliaw, @mehrdadn, @wumuzi520, @cloudhan, @edoakes, @mitchellstern, @robertnishihara, @hhoke, @simon-mo, @ConeyLiu, @stephanie-wang, @rkooo567, @ffbin, @ericl, @hubcity, @sven1977

View originalPermalink
How 0.8.4 went
0.8.3

Ray 0.8.3

Added 12
  • Autoscaler has added Azure support
  • Add new command `ray memory` to debug memory usage and show object IDs in scope with their reference types, sizes, and creation sites
  • SAC algorithm now supports discrete action support
  • Add high-performance external application connector
  • Integrate Dragonfly optimizer
  • Add ability to access Trial Name and Trial ID inside trainable
Changed 6
  • Distributed reference counting is turned on by default
  • Change `actor.__ray_kill__()` to `ray.kill(actor)`
  • Reduce per worker memory usage to 50MB
  • Rename sample_batch_size to rollout_fragment_length in RLlib
  • Rename PyTorchTrainer to TorchTrainer in RaySGD
  • RaySGD TorchTrainer breaking changes: `data_creator` must return a dataloader, TorchTrainer automatically sets DistributedSampler, `data_loader_config` and `batch_size` are removed, parallelism is set by `num_workers`, and all arguments must be named parameters
Fixed 2
  • Fix passing duplicate by-reference arguments
  • Fix HyperBand errors in Tune
Removed 2
  • Remove `experimental.NoReturn`
  • Remove `experimental.signal API`
Deprecated 1
  • Deprecate `use_pickle` flag for serialization
Highlights
  • Autoscaler has added Azure Support. (#7080, #7515, #7558, #7494)
    • Ray autoscaler helps you launch a distributed ray cluster using a single command line call!
    • It works on Azure, AWS, GCP, Kubernetes, Yarn, Slurm and local nodes.
  • Distributed reference counting is turned on by default. (#7628, #7337)
    • This means all ray objects are tracked and garbage collected only when all references go out of scope. It can be turned off with: ray.init(_internal_config=json.dumps({"distributed_ref_counting_enabled": 0})).
    • When the object store is full with objects that are still in scope, you can turn on least-recently-used eviction to force remove objects using ray.init(lru_evict=True).
  • A new command ray memory is added to help debug memory usage: (#7589)
> ray memory
-----------------------------------------------------------------------------------------------------
 Object ID                                Reference Type       Object Size   Reference Creation Site
=====================================================================================================
; worker pid=51230
ffffffffffffffffffffffff0100008801000000  PINNED_IN_MEMORY            8231   (deserialize task arg) __main__..sum_task
; driver pid=51174
45b95b1c8bd3a9c4ffffffff010000c801000000  USED_BY_PENDING_TASK           ?   (task call) memory_demo.py:<module>:13
ffffffffffffffffffffffff0100008801000000  USED_BY_PENDING_TASK        8231   (put object) memory_demo.py:<module>:6
ef0a6c221819881cffffffff010000c801000000  LOCAL_REFERENCE                ?   (task call) memory_demo.py:<module>:14
-----------------------------------------------------------------------------------------------------
API change
  • Change actor.__ray_kill__() to ray.kill(actor). (#7360)
  • Deprecate use_pickle flag for serialization. (#7474)
  • Remove experimental.NoReturn. (#7475)
  • Remove experimental.signal API. (#7477)
Core
  • Add Apache 2 license header to C++ files. (#7520)
  • Reduce per worker memory usage to 50MB. (#7573)
  • Option to fallback to LRU on OutOfMemory. (#7410)
  • Reference counting for actor handles. (#7434)
  • Reference counting for returning object IDs created by a different process. (#7221)
  • Use prctl(PR_SET_PDEATHSIG) on Linux instead of reaper. (#7150)
  • Route asyncio plasma through raylet instead of direct plasma connection. (#7234)
  • Remove static concurrency limit from gRPC server. (#7544)
  • Remove get_global_worker(), RuntimeContext. (#7638)
  • Fix known issues from 0.8.2 release:
    • Fix passing duplicate by-reference arguments. (#7306)
    • Fix Raise gRPC message size limit to 100MB. (#7269)
RLlib
  • New features:
    • Exploration API improvements. (#7373, #7314, #7380)
    • SAC: add discrete action support. (#7320, #7272)
    • Add high-performance external application connector. (#7641)
  • Bug fix highlights:
    • PPO torch memory leak and unnecessary torch.Tensor creation and gc'ing. (#7238)
    • Rename sample_batch_size => rollout_fragment_length. (#7503)
    • Fix bugs and speed up SegmentTree.
Tune
  • Integrate Dragonfly optimizer. (#5955)
  • Fix HyperBand errors. (#7563)
  • Access Trial Name, Trial ID inside trainable. (#7378)
  • Add a new repeater class for high variance trials. (#7366)
  • Prevent deletion of checkpoint from user-initiated restoration. (#7501)
Libraries
  • [Parallel Iterators] Allow for operator chaining after repartition. (#7268)
  • [Parallel Iterators] Repartition functionality. (#7163)
  • [Serve] @serve.route returns a handle, add handle.scale, handle.set_max_batch_size. (#7569)
  • [RaySGD] PyTorchTrainer --> TorchTrainer. (#7425)
  • [RaySGD] Custom training API. (#7211)
  • [RaySGD] Breaking User API changes: (#7384)
    • data_creator fed to TorchTrainer now must return a dataloader rather than datasets.
    • TorchTrainer automatically sets "DistributedSampler" if a DataLoader is returned.
    • data_loader_config and batch_size are no longer parameters for TorchTrainer.
    • TorchTrainer parallelism is now set by num_workers.
    • All TorchTrainer args now must be named parameters.
Java
  • New Java actor API (#7414)
    • @RayRemote annotation is removed.
    • Instead of Ray.call(ActorClass::method, actor), the new API is actor.call(ActorClass::method).
  • Allow passing internal config from raylet to Java worker. (#7532)
  • Enable direct call by default. (#7408)
  • Pass large object by reference. (#7595)
Others
  • Progress towards Ray Streaming, including a Python API. (#7070, #6755, #7152, #7582)
  • Progress towards GCS Service for GCS fault tolerance. (#7292, #7592, #7601, #7166)
  • Progress towards cross language call between Java and Python. (#7614, #7634)
  • Progress towards Windows compatibility. (#7529, #7509, #7658, #7315)
  • Improvement in K8s Operator. (#7521, #7621, #7498, #7459, #7622)
  • New documentation for Ray Dashboard. (#7304)
Known issues
  • Ray currently doesn't work on Python 3.5.0, but works on 3.5.3 and above.
Thanks

We thank the following contributors for their work on this release: @rkooo567, @maximsmol, @suquark, @mitchellstern, @micafan, @ClarkZinzow, @Jimpachnet, @mwbrulhardt, @ujvl, @chaokunyang, @robertnishihara, @jovany-wang, @hyeonjames, @zhijunfu, @datayjz, @fyrestone, @eisber, @stephanie-wang, @allenyin55, @BalaBalaYi, @simon-mo, @thedrow, @ffbin, @amogkam, @TisonKun, @richardliaw, @ijrsvt, @wumuzi520, @mehrdadn, @raulchen, @landcold7, @ericl, @edoakes, @sven1977, @ashione, @jorenretel, @gramhagen, @kfstorm, @anthonyhsyu, @pcmoritz

View originalPermalink
How 0.8.3 went
0.8.2

Ray 0.8.2

Added 10
  • The dashboard is turned on by default and shows node and process information, actor information, and Ray Tune trials information
  • Add ray.show_in_webui to display custom messages for actors
  • Distributed reference counting feature flag available via _internal_config for precise distributed garbage collection
  • Ray now vendors psutil and setproctitle to support the dashboard functionality
  • PyTorch version of PPO with improved PyTorch support in RLlib
  • Distributed SGD for PPO in RLlib
Changed 7
  • Pyarrow is no longer vendored and Ray directly uses the C++ Arrow API, allowing any version of pyarrow to be used with Ray
  • Many experimental Ray libraries moved to the util namespace: ray.experimental.multiprocessing to ray.util.multiprocessing, ray.experimental.joblib to ray.util.joblib, ray.experimental.iter to ray.util.iter, ray.experimental.serve to ray.serve, and ray.experimental.sgd to ray.util.sgd
  • Tasks and actors are now cleaned up if their owner process dies
  • The OMP_NUM_THREADS environment variable defaults to 1 if unset to improve training performance and reduce resource contention
  • Calling delete() will not delete objects in the in-memory store
  • Process saves asynchronously in Tune
  • Default to tensorboardx and include it in requirements for Tune
Fixed 2
  • Fix bug passing empty bytes into Python tasks
  • Fix schedule values going negative past the end of the schedule in RLlib
Removed 2
  • The Python raylet client has been removed and all raylet communication now goes through the core worker
  • Vanilla pickle serialization for task arguments has been removed
Highlights
  • Pyarrow is no longer vendored. Ray directly uses the C++ Arrow API. You can use any version of pyarrow with ray. (#7233)
  • The dashboard is turned on by default. It shows node and process information, actor information, and Ray Tune trials information. You can also use ray.show_in_webui to display custom messages for actors. Please try it out and send us feedback! (#6705, #6820, #6822, #6911, #6932, #6955, #7028, #7034)
  • We have made progress on distributed reference counting (behind a feature flag). You can try it out with ray.init(_internal_config=json.dumps({"distributed_ref_counting_enabled": 1})). It is designed to help manage memory using precise distributed garbage collection. (#6945, #6946, #7029, #7075, #7218, #7220, #7222, #7235, #7249)
Breaking changes
  • Many experimental Ray libraries are moved to the util namespace. (#7100)
    • ray.experimental.multiprocessing => ray.util.multiprocessing
    • ray.experimental.joblib => ray.util.joblib
    • ray.experimental.iter => ray.util.iter
    • ray.experimental.serve => ray.serve
    • ray.experimental.sgd => ray.util.sgd
  • Tasks and actors are cleaned up if their owner process dies. (#6818)
  • The OMP_NUM_THREADS environment variable defaults to 1 if unset. This improves training performance and reduces resource contention. (#6998)
  • We now vendor psutil and setproctitle to support turning the dashboard on by default. Running import psutil after import ray will use the version of psutil that ships with Ray. (#7031)
Core
  • The Python raylet client is removed. All raylet communication now goes through the core worker. (#6018)
  • Calling delete() will not delete objects in the in-memory store. (#7117)
  • Removed vanilla pickle serialization for task arguments. (#6948)
  • Fix bug passing empty bytes into Python tasks. (#7045)
  • Progress toward next generation ray scheduler. (#6913)
  • Progress toward service based global control store (GCS). (#6686, #7041)
RLlib
  • Improved PyTorch support, including a PyTorch version of PPO. (#6826, #6770)
  • Added distributed SGD for PPO. (#6918, #7084)
  • Added an exploration API for controlling epsilon greedy and stochastic exploration. (#6974, #7155)
  • Fixed schedule values going negative past the end of the schedule. (#6971, #6973)
  • Added support for histogram outputs in TensorBoard. (#6942)
  • Added support for parallel and customizable evaluation step. (#6981)
Tune
  • Improved Ax Example. (#7012)
  • Process saves asynchronously. (#6912)
  • Default to tensorboardx and include it in requirements. (#6836)
  • Added experiment stopping api. (#6886)
  • Expose progress reporter to users. (#6915)
  • Fix directory naming regression. (#6839)
  • Handles nan case for asynchyperband. (#6916)
  • Prevent memory checkpoints from breaking trial fault tolerance. (#6691)
  • Remove keras dependency. (#6827)
  • Remove unused tf loggers. (#7090)
  • Set correct path when deleting checkpoint folder. (#6758)
  • Support callable objects in variant generation. (#6849)
Autoscaler
  • Ray nodes now respect docker limits. (#7039)
  • Add --all-nodes option to rsync-up. (#7065)
  • Add port-forwarding support for attach. (#7145)
  • For AWS, default to latest deep learning AMI. (#6922)
  • Added 'ray dashboard' command to proxy ray dashboard in remote machine. (#6959)
Utility libraries
  • Support of scikit-learn with Ray joblib backend. (#6925)
  • Parallel iterator support local shuffle. (#6921)
  • [Serve] support no http headless services. (#7010)
  • [Serve] refactor router to use Ray asyncio support. (#6873)
  • [Serve] support composing arbitrary dags. (#7015)
  • [RaySGD] support fp16 via PyTorch apex. (#7061)
  • [RaySGD] refactor PyTorch sgd documentation. (#6910)
  • Improvement in Ray Streaming. (#7043, #6666, #7071)
Other improvements
  • Progress toward Windows compatibility. (#6882, #6823)
  • Ray Kubernetes operator improvements. (#6852, #6851, #7091)
  • Java support for concurrent actor calls API. (#7022)
  • Java support for direct call for normal tasks. (#7193)
  • Java support for cross language Python invocation. (#6709)
  • Java support for cross language serialization for actor handles. (#7134)
Known issue
  • Passing the same ObjectIDs multiple time as arguments currently doesn't work. (#7296)
  • Tasks can exceed gRPC max message size. (#7263)
Thanks

We thank the following contributors for their work on this release: @mitchellstern, @hugwi, @deanwampler, @alindkhare, @ericl, @ashione, @fyrestone, @robertnishihara, @pcmoritz, @richardliaw, @yutaizhou, @istoica, @edoakes, @ls-daniel, @BalaBalaYi, @raulchen, @justinkterry, @roireshef, @elpollouk, @kfstorm, @Bassstring, @hhbyyh, @Qstar, @mehrdadn, @chaokunyang, @flying-mojo, @ujvl, @AnanthHari, @rkooo567, @simon-mo, @jovany-wang, @ijrsvt, @ffbin, @AmeerHajAli, @gaocegege, @suquark, @MissiontoMars, @zzyunzhi, @sven1977, @stephanie-wang, @amogkam, @wuisawesome, @aannadi, @maximsmol

View originalPermalink
How 0.8.2 went

0.8.1

Added 14
  • ObjectIDs corresponding to ray.put() objects and task returns are now reference counted locally in Python and when passed into a remote task as an argument
  • Actors can now define async def methods and Ray will run multiple method invocations in the same event loop, with maximum concurrency level adjustable via ActorClass.options(max_concurrency=N).remote()
  • Ray ObjectIDs can now be directly awaited using the Python API with await my_object_id, and can be converted to asyncio.Future using ObjectID.as_future()
  • Added experimental parallel iterators API with ParallelIterator for conveniently loading and processing data into Ray actors
  • Added multiprocessing.Pool API support to scale existing programs from a single node to a cluster by changing only the import statement
  • Added actor.__ray_kill__() to terminate actors immediately
Changed 3
  • Treat static methods as class methods instead of instance methods in actors
  • Redis now binds to localhost and has a password set by default
  • Changed foreach_policy to foreach_trainable_policy in RLlib
Fixed 1
  • Fixed bug when failing to import remote functions or actors with args and kwargs
Deprecated 1
  • Python 2 support is deprecated

Ray 0.8.1 Release Notes

Highlights
  • ObjectIDs corresponding to ray.put() objects and task returns are now reference counted locally in Python and when passed into a remote task as an argument. ObjectIDs that have a nonzero reference count will not be evicted from the object store. Note that references for ObjectIDs passed into remote tasks inside of other objects (e.g., f.remote((ObjectID,)) or f.remote([ObjectID])) are not currently accounted for. (#6554)
  • asyncio actor support: actors can now define async def method and Ray will run multiple method invocations in the same event loop. The maximum concurrency level can be adjusted with ActorClass.options(max_concurrency=2000).remote().
  • asyncio ObjectID support: Ray ObjectIDs can now be directly awaited using the Python API. await my_object_id is similar to ray.get(my_object_id), but allows context switching to make the operation non-blocking. You can also convert an ObjectID to a asyncio.Future using ObjectID.as_future().
  • Added experimental parallel iterators API (#6644, #6726): ParallelIterators can be used to more convienently load and process data into Ray actors. See the documentation for details.
  • Added multiprocessing.Pool API (#6194): Ray now supports the multiprocessing.Pool API out of the box, so you can scale existing programs up from a single node to a cluster by only changing the import statment. See the documentation for details.
Core
  • Deprecated Python 2 (#6581, #6601, #6624, #6665)
  • Fixed bug when failing to import remote functions or actors with args and kwargs (#6577)
  • Many improvements to the dashboard (#6493, #6516, #6521, #6574, #6590, #6652, #6671, #6683, #6810)
  • Progress towards Windows compatibility (#6446, #6548, #6653, #6706)
  • Redis now binds to localhost and has a password set by default (#6481)
  • Added actor.__ray_kill__() to terminate actors immediately (#6523)
  • Added 'ray stat' command for debugging (#6622)
  • Added documentation for fault tolerance behavior (#6698)
  • Treat static methods as class methods instead of instance methods in actors (#6756)
RLlib
  • DQN distributional model: Replace all legacy tf.contrib imports with tf.keras.layers.xyz or tf.initializers.xyz (#6772)
  • SAC site changes (#6759)
  • PG unify/cleanup tf vs torch and PG functionality test cases (tf + torch) (#6650)
  • SAC for Mujoco Environments (#6642)
  • Tuple action dist tensors not reduced properly in eager mode (#6615)
  • Changed foreach_policy to foreach_trainable_policy (#6564)
  • Wrapper for the dm_env interface (#6468)
Tune
  • Get checkpoints paths for a trial after tuning (#6643)
  • Async restores and S3/GCP-capable trial FT (#6376)
  • Usability errors PBT (#5972)
  • Demo exporting trained models in pbt examples (#6533)
  • Avoid duplication in TrialRunner execution (#6598)
  • Update params for optimizer in reset_config (#6522)
  • Support Type Hinting for py3 (#6571)
Other Libraries
  • [serve] Pluggable Queueing Policy (#6492)
  • [serve] Added BackendConfig (#6541)
  • [sgd] Fault tolerance support for pytorch + revamp documentation (#6465)
Thanks

We thank the following contributors for their work on this release:

@chaokunyang, @Qstar, @simon-mo, @wlx65003, @stephanie-wang, @alindkhare, @ashione, @harrisonfeng, @JingGe, @pcmoritz, @zhijunfu, @BalaBalaYi, @kfstorm, @richardliaw, @mitchellstern, @michaelzhiluo, @ziyadedher, @istoica, @EyalSel, @ffbin, @raulchen, @edoakes, @chenk008, @frthjf, @mslapek, @gehring, @hhbyyh, @zzyunzhi, @zhu-eric, @MissiontoMars, @sven1977, @walterddr, @micafan, @inventormc, @robertnishihara, @ericl, @ZhongxiaYan, @mehrdadn, @jovany-wang, @ujvl, @bharatpn

View originalPermalink
How 0.8.1 went
0.8.0

Ray 0.8.0 Release Notes

Added 7
  • Add remaining features from old dashboard
  • Add Ray Kubernetes Operator with readme, structure, config and CRD related files
  • Add example and tutorial for DCGAN
  • Add support for multi-model multi-optimizer training in sgd
  • Add deadline awareness to serve
  • Add streaming data transfer and python integration
  • Return parameters for a command in projects
Changed 3
  • Enable gRPC direct calls by default for tasks and actors, allowing direct task submission between workers and between actors over gRPC while the Raylet only coordinates scheduling and creation decisions
  • Inline small objects (less than 100KB in size) into task submissions and returns instead of placing them in the object store
  • Report trials by state fairly in Tune
Fixed 5
  • Ensure numpy >= 1.16.0 is installed for fast pickling support
  • Avoid workers starting with the same random seed
  • Properly handle a forwarded task that gets forwarded back
  • Remove the extra 0.5 in the Diagonal Gaussian entropy in RLlib
  • Fix bug in PBT where initial trial result is empty

Ray 0.8.0 Release Notes

This is the first release with gRPC direct calls enabled by default for both tasks and actors, which substantially improves task submission performance.

Highlights
  • Enable gRPC direct calls by default (#6367). In this mode, actor tasks are sent directly from actor to actor over gRPC; the Raylet only coordinates actor creation. Similarly, with tasks, tasks are submitted directly from worker to worker over gRPC; the Raylet only coordinates the scheduling decisions. In addition, small objects (<100KB in size) are no longer placed in the object store. They are inlined into task submissions and returns when possible.

Note: in some cases, reconstruction of large evicted objects is not possible with direct calls. To revert to the 0.7.7 behaviour, you can set the environment variable RAY_FORCE_DIRECT=0.

Core
  • [Dashboard] Add remaining features from old dashboard (#6489)
  • Ray Kubernetes Operator Part 1: readme, structure, config and CRD realted file (#6332)
  • Make sure numpy >= 1.16.0 is installed for fast pickling support (#6486)
  • Avoid workers starting with the same random seed (#6471)
  • Properly handle a forwarded task that gets forwarded back (#6271)
RLlib
  • (Bug Fix): Remove the extra 0.5 in the Diagonal Gaussian entropy (#6475)
  • AlphaZero and Ranked reward implementation (#6385)
Tune
  • Add example and tutorial for DCGAN (#6400)
  • Report trials by state fairly (#6395)
  • Fixed bug in PBT where initial trial result is empty. (#6351)
Other Libraries
  • [sgd] Add support for multi-model multi-optimizer training (#6317)
  • [serve] Added deadline awareness (#6442)
  • [projects] Return parameters for a command (#6409)
  • [streaming] Streaming data transfer and python integration (#6185)
Thanks

We thank the following contributors for their work on this release:

@zplizzi, @istoica, @ericl, @mehrdadn, @walterddr, @ujvl, @alindkhare, @timgates42, @chaokunyang, @eugenevinitsky, @kfstorm, @Maltimore, @visatish, @simon-mo, @AmeerHajAli, @wumuzi520, @robertnishihara, @micafan, @pcmoritz, @zhijunfu, @edoakes, @sytelus, @ffbin, @richardliaw, @Qstar, @stephanie-wang, @Coac, @mitchellstern, @MissiontoMars, @deanwampler, @hhbyyh, @raulchen

View originalPermalink
How 0.8.0 went
View all

Discussion