Commit graph

7336 commits

Author SHA1 Message Date
Yi Cheng
65563e994b
[core] Allow 0 waiting for death info to fail a task faster (#26993)
When a task failed, it'll wait for the death info and then fail. The waiting is 1s and the checking is every 1s. This is good for usability, but it causes issues for some cases because it'll delay the task return at most 2s and at least 1s.

This PR introduce an early cut where when the timeout is set to be 0, it'll just return immediately. The semantics doesn't change and for most users they are still going to get the message.
2022-07-25 23:29:08 -07:00
Ricky Xu
778a799909
easy test? (#26905)
Signed-off-by: rickyyx rickyx@anyscale.com

Why are these changes needed?
Making sure ray logs with node-id works

Related issue number
Closes #25764
2022-07-25 17:21:41 -07:00
Yi Cheng
33997da299
[core] Introduce a flag which allows a longer timeout for raylet when GCS restarts. (#26919)
## Why are these changes needed?
When GCS restarts, sometimes, raylet needs a while to reconnect to the GCS, for example, in k8s env, it needs a while to move GSC to the service. This PR try to fix this by allowing a longer timeout for the first ping when GCS restarts.

Once GCS get the first ping, it'll just use the regular timeout instead.
2022-07-25 16:57:19 -07:00
Jun Gong
ca5e0dcaf4
[RLLib] Record framework and algorithm used by an RLlib run. (#26956)
Automatically record framework and algorithm used by RLlib jobs.
For better planning.
2022-07-25 16:16:36 -07:00
matthewdeng
22f0439c17
[train] set split locality_hints (#26973) 2022-07-25 16:04:26 -07:00
Sihan Wang
8ecd928c34
[Serve] Make the checkpoint and recover only from GCS (#26753) 2022-07-25 14:24:53 -07:00
Kai Fricke
1b06e7a83a
[tune] Only sync down from cloud if needed (#26725)
Currently, trainables will try to sync up/down temporary checkpoints from cloud storage, leading to errors. These erros come up e.g. with PBT, which heavily uses saving/restoring from objects.

Instead, we should not sync these temporary checkpoints up at all, and we should generally not sync down if a local checkpoint directory exists, which will prevent us also from trying to sync down non-existent temporary checkpoint directories.

See #26714

Signed-off-by: Kai Fricke <kai@anyscale.com>
2022-07-25 21:49:01 +01:00
Siyuan (Ryans) Zhuang
4cc1ef1557
[Core] Refactoring Ray DAG object scanner (#26917)
* make sure Ray DAG can work with minimal install

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>\
2022-07-25 13:48:09 -07:00
Kai Fricke
df217d15e0
[air] Raise error on path-like access for Checkpoints (#26970)
Calling e.g. `os.path.exists(checkpoint)` currently raises an TypeError, but we should make it more explicit and guide users towards the correct API.

Signed-off-by: Kai Fricke <kai@anyscale.com>
2022-07-25 21:45:31 +01:00
matthewdeng
df638b3f0f
[Datasets] Automatically cast tensor columns when building Pandas blocks. (#26924)
This PR just applies the changes from the following PRs:

[Datasets] Automatically cast tensor columns when building Pandas blocks. #26684
reverted by Revert "[Datasets] Automatically cast tensor columns when building Pandas blocks." #26921
[AIR - Datasets] Fix TensorDtype construction from string and fix example. #26904
This fixes the test failures introduced in the originally reverted PRs.
2022-07-25 12:12:10 -07:00
Siyuan (Ryans) Zhuang
0e1b77d52a
[Workflow] Fix flaky example(#26960)
Signed-off-by: Siyuan Zhuang <suquark@gmail.com>
2022-07-25 12:00:45 -07:00
Alan Guo
e8222ff600
[dashboard] Update cluster_activities endpoint to use pydantic. (#26609)
Update cluster_activities endpoint to use pydantic so we have better data validation.

Make timestamp a required field.
Add pydantic to ray[default] requirements
2022-07-25 10:54:22 -07:00
Richard Liaw
aae0aaedbd
[air] Un-revert "[air] remove unnecessary logs + improve repr for result" (#26942) 2022-07-25 10:35:25 -07:00
Jiao
bf1d9971f1
[setup-dev] Add flag to skip symlink certain folders (#26899) 2022-07-25 10:21:20 -07:00
Kai Fricke
ec1995a662
[air/tune/docs] Cont. convert Tune examples to use Tuner.fit() (#26959) 2022-07-25 09:52:12 -07:00
Kai Fricke
de7bd015a4
[air/tune/docs] Change Tuner() occurences in rest of ray/tune (#26961) 2022-07-25 09:47:48 -07:00
matthewdeng
3ea80f6aa1
[data] set iter_batches default batch_size (#26955)
Why are these changes needed?
Resubmitting #26869.

This PR was reverted due to failing tests; however, those failures were actually due to a dependency: #26950
2022-07-25 08:34:25 -07:00
Kai Fricke
abde2a5f97
[tune] Fix current best trial progress string for metric=0 (#26943)
Signed-off-by: Kai Fricke <kai@anyscale.com>
2022-07-25 00:41:26 -07:00
Siyuan (Ryans) Zhuang
4a1ad3e87a
[Workflow] Support "retry_exceptions" of Ray tasks (#26913)
* support 'retry_exceptions'

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* add test

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* add doc

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* fix

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* typo

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>
2022-07-24 20:50:11 -07:00
matthewdeng
a012033033
[ci] pin werkzeug (#26950)
Signed-off-by: Matthew Deng matt@anyscale.com

Note: This aims to mitigate the errors of the failing tests, but a follow-up is needed for a long-term solution.

Why are these changes needed?

A bunch of CI tests started failing on 7/23.

Quick sanity check shows only werkzeug was upgraded from 2.1.2 to 2.2.0. The new version was released on 7.23.

Verified that running pip install -U Werkzeug==2.1.2 fixes (at least) test_dataset_formats.
2022-07-24 20:09:09 -07:00
SangBin Cho
15b711ae6a
[State Observability] Warn if callsite is disabled when ray list objects + raise exception on missing output (#26880)
This PR does 3 things.
1. Warn if callsite is disabled when `ray list objects` and `ray summary objects`
2. Decode owner_id for ray list actors
3. Support raise_on_missing_output
2022-07-24 19:55:36 -07:00
Richard Liaw
d01a80eb11
[core] runtime context resource ids getter (#26907) 2022-07-24 16:56:44 -07:00
Yi Cheng
0c16619475
[core] Make ray able to connect to redis without pip redis. (#25875)
Signed-off-by: Yi Cheng <chengyidna@gmail.com>

## Why are these changes needed?
Right now, only cpp layer in ray is connecting to redis which means we don't need pip redis to connect to a redis db.

The blocking part is that we are doing some sharding in redis right now. But this feature is not actually used and the shard is always 1. So to make things simple, this feature is just disabled.

Test is added to make sure we can start ray with a redis db without pip redis.
2022-07-24 14:11:30 -07:00
Kai Fricke
8d7b865614
[air/tuner/docs] Update docs for Tuner() API 2a: Tune examples (non-docs) (#26931)
Splitting up #26884: This PR includes changes to use Tuner() instead of tune.run() for all examples included in python/ray/tune/examples

Signed-off-by: xwjiang2010 <xwjiang2010@gmail.com>
Signed-off-by: Kai Fricke <kai@anyscale.com>

Co-authored-by: xwjiang2010 <xwjiang2010@gmail.com>
Co-authored-by: Richard Liaw <rliaw@berkeley.edu>
2022-07-24 21:00:22 +01:00
Cheng Su
e19cf164fd
[Datasets] Use sampling to estimate in-memory data size for Parquet data source (#26868) 2022-07-24 09:58:57 -07:00
Kai Fricke
8fe439998e
[air/tuner/docs] Update docs for Tuner() API 1: RSTs, docs, move reuse_actors (#26930)
Signed-off-by: Kai Fricke coding@kaifricke.com

Why are these changes needed?
Splitting up #26884: This PR includes changes to use Tuner() instead of tune.run() for most docs files (rst and py), and a change to move reuse_actors to the TuneConfig
2022-07-24 07:45:24 -07:00
Kai Fricke
c01bb831d4
[hotfix/data] Fix linter for test_split (#26944)
Signed-off-by: Kai Fricke <kai@anyscale.com> fix linting
2022-07-24 07:01:36 -07:00
Yi Cheng
c44d9ff397
[core] Fix the deadlock in submit task when actor failed. (#26898)
Signed-off-by: Yi Cheng <chengyidna@gmail.com>

## Why are these changes needed?

When actor died, it'll send notification to core workers. Right now, sometimes, core worker will queue the task waiting for actor death info and pop it up for better usability. But in async cases, this is going to cause issues.

The callback might submit tasks which require holding the lock. But it's already being held. This is going to cause a deadlock.

This PR fixed this by moving the failure part out of the lock.
2022-07-24 00:23:49 -07:00
Jian Xiao
90cea203be
Ray 2.0 API deprecation (#26116)
Ray 2.0 API deprecation for:

 ray.remote(): placement_group
 ray.remote(): placement_group_bundle_index
 ray.remote(): placement_group_capture_child_tasks
 ray.get_dashboard_url()
 ray.get_resource_ids()
 ray.disconnect()
 ray.connect()
 ray.util.ActorGroup
 ray.util.ActorPool
 Add get_xx_id() to return hex (rather than object), and then deprecate the xx_id() (which returns Cython object): the xx here can be node, task etc.
 ray start: --plasma-store-socket-name
 ray start: --raylet-socket-name
2022-07-23 22:18:58 -07:00
Chen Shen
aaab4abad5
[Data][Split] stable version of split with hints (#26778)
Why are these changes needed?
Introduce a stable version of split with hints with a stable equalizing algorithm:

use the greedy algorithm to generate the initial unbalanced splits.
for each splits, first shave them so the number for rows are below the target_size
based on how many rows needed for each split, do a one time split_at_index to the left over blocks.
merge the shaved splits with the leftover splits.
The guarantee of this algorithm is we at most need to split O(split) number of blocks.
2022-07-23 22:13:11 -07:00
SangBin Cho
37f4692aa8
[State Observability] Fix "No result for get crashing the formatting" and "Filtering not handled properly when key missing in the datum" #26881
Fix two issues

No result for get crashing the formatting
Filtering not handled properly when key missing in the datum
2022-07-23 21:33:07 -07:00
Eric Liang
d692a55018
[data] Make lazy mode non-experimental (#26934) 2022-07-23 21:28:31 -07:00
matthewdeng
bcec60d898
Revert "[data] set iter_batches default batch_size #26869 " (#26938)
This reverts commit b048c6f659.
2022-07-23 17:46:45 -07:00
Jian Xiao
da9581b746
GC the blocks that have been splitted during .split() if they are owned by consumer (#26902)
Eagerly GC blocks no longer needed to improve memory efficiency and reduce object spilling.
2022-07-23 16:41:22 -07:00
matthewdeng
b048c6f659
[data] set iter_batches default batch_size #26869
Why are these changes needed?
Consumers (e.g. Train) may expect generated batches to be of the same size. Prior to this change, the default behavior would be for each batch to be one block, which may be of different sizes.

Changes
Set default batch_size to 256. This was chosen to be a sensible default for training workloads, which is intentionally different from the existing default batch_size value for Dataset.map_batches.
Update docs for Dataset.iter_batches, Dataset.map_batches, and DatasetPipeline.iter_batches to be consistent.
Updated tests and examples to explicitly pass in batch_size=None as these tests were intentionally testing block iteration, and there are other tests that test explicit batch sizes.
2022-07-23 13:44:53 -07:00
Jiao
3dc4189d88
Revert "[air] remove unnecessary logs + improve repr for result (#26906)" (#26932) 2022-07-23 12:12:26 -07:00
Stephanie Wang
55a0f7bb2d
[core] ray.init defaults to an existing Ray instance if there is one (#26678)
ray.init() will currently start a new Ray instance even if one is already existing, which is very confusing if you are a new user trying to go from local development to a cluster. This PR changes it so that, when no address is specified, we first try to find an existing Ray cluster that was created through `ray start`. If none is found, we will start a new one.

This makes two changes to the ray.init() resolution order:
1. When `ray start` is called, the started cluster address was already written to a file called `/tmp/ray/ray_current_cluster`. For ray.init() and ray.init(address="auto"), we will first check this local file for an existing cluster address. The file is deleted on `ray stop`. If the file is empty, autodetect any running cluster (legacy behavior) if address="auto", or we will start a new local Ray instance if address=None.
2. When ray.init(address="local") is called, we will create a new local Ray instance, even if one is already existing. This behavior seems to be necessary mainly for `ray.client` use cases.

This also surfaces the logs about which Ray instance we are connecting to. Previously these were hidden because we didn't set up the log until after connecting to Ray. So now Ray will log one of the following messages during ray.init:
```
(Connecting to existing Ray cluster at address: <IP>...)
...connection...
(Started a local Ray cluster.| Connected to Ray Cluster.)( View the dashboard at <URL>)
```

Note that this changes the dashboard URL to be printed with `ray.init()` instead of when the dashboard is first started.

Co-authored-by: Eric Liang <ekhliang@gmail.com>
2022-07-23 11:27:22 -07:00
Siyuan (Ryans) Zhuang
1fa8ddb07a
[Workflow] Make sure no side effects during workflow resuming (#26918)
Signed-off-by: Siyuan Zhuang <suquark@gmail.com>
2022-07-23 11:04:07 -07:00
Richard Liaw
d79431e32c
[air] remove unnecessary logs + improve repr for result (#26906) 2022-07-23 01:15:13 -07:00
Siyuan (Ryans) Zhuang
be5476cd55
[Workflow] Update API stability (#26903)
* alpha API

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* mark exceptions as alpha APIs

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>

* update

Signed-off-by: Siyuan Zhuang <suquark@gmail.com>
2022-07-23 00:15:34 -07:00
Eric Liang
c118373afe
[air] Simplify the local shuffle API (#26915)
Simplify the local shuffle API by removing a constraint in the args that we can calculate internally.
2022-07-22 23:31:58 -07:00
Chen Shen
042450d319
Revert "[Datasets] Automatically cast tensor columns when building Pandas blocks. (#26684)" (#26921)
This reverts commit 0c139914bb.
2022-07-22 22:26:40 -07:00
clarng
170bde40a0
Mark local mode as deprecated with warning message about possible memory leak (#26855)
Mark local mode as deprecated with a warning message.

Related issue number
#24216
#26095
2022-07-22 22:12:23 -07:00
Kai Fricke
1f32cb95db
[air/tune] Add top-level imports for Tuner, TuneConfig, move CheckpointConfig (#26882) 2022-07-22 20:17:06 -07:00
Jiajun Yao
46a19c1e47
[RFC] [Usage Stats] Expose api to record extra usage tags (#26834)
Library authors can record extra usage tags via usage_lib.record_extra_usage_tag(key, value)

Signed-off-by: Jiajun Yao <jeromeyjj@gmail.com>
2022-07-22 16:07:10 -07:00
Kai Fricke
77ba30d34e
[tune] Docs for custom command based syncer (awscli / gsutil) (#26879)
Co-authored-by: matthewdeng <matthew.j.deng@gmail.com>
2022-07-22 15:28:53 -07:00
mwtian
aadd82dcbd
[Core] stop retrying after successfully created GCS client (#26788) 2022-07-22 12:43:46 -07:00
Steven Morad
259429bdc3
Bump gym dep to 0.24 (#26190)
Co-authored-by: Steven Morad <smorad@anyscale.com>
Co-authored-by: Avnish <avnishnarayan@gmail.com>
Co-authored-by: Avnish Narayan <38871737+avnishn@users.noreply.github.com>
2022-07-22 12:37:16 -07:00
Jiao
a03716e75f
[AIR][Serve] Add windows check for pd.DataFrame comparison #26889
n previous implementation #26821 we have windows failure suggesting we behave differently on windows regarding datatype conversion.

In our https://sourcegraph.com/github.com/ray-project/ray/-/blob/python/ray/data/tests/test_dataset.py?L577 regarding use of TensorArray we seem to rely on pd'sassert_frame_equal rather than manually comparing frames.

This PR adds a quick conditional on windows only to ignore dtype for now.
2022-07-22 12:36:40 -07:00
Sihan Wang
bca4b179ea
[Serve] Separate internal API and Public API (#26804) 2022-07-22 12:12:35 -07:00