Commit graph

6536 commits

Author SHA1 Message Date
Kai Fricke
f376dd8902
[tune] Also interrupt training when SIGUSR1 received (#24015)
Ray Tune currently gracefully stops training on SIGINT. However, the Ray core worker prevents SIGINT (and SIGTERM) to be processed by child tasks, which means that Ray Tune runs that are started in remote tasks (e.g. via Ray client) cannot be gracefully interrupted.

In k8s-based cloud tests that used the Ray client to kick off a Ray Tune run, this lead to test flakiness, as final experiment state could not be gracefully persisted to cloud storage.

This PR adds support for SIGUSR1 in addition to SIGINT to interrupt training gracefully.
2022-04-21 13:07:29 +01:00
jon-chuang
ddcc252b51
[Core] Ray logs API (1/n) (#23435)
Expose HTTP endpoint to retrieve logs from ray cluster
2022-04-20 23:11:02 -07:00
Balaji Veeramani
371d1f4533
[Datasets] Make BlockMetadata a dataclass (#23852) 2022-04-20 22:46:25 -07:00
Guyang Song
0e6c042e29
[Bugfix] fix invalid excluding of Black (#24042)
- We should use `--force-exclude` when we pass code path explicitly https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html?highlight=--force-exclude#command-line-options
- Recover the files in `python/ray/_private/thirdparty` which has been formatted in the PR https://github.com/ray-project/ray/pull/21975 by mistake.
2022-04-21 10:21:35 +08:00
iasoon
22a6fafbb5
[Serve] remove constants shorthands in tests (#24053) 2022-04-20 16:05:19 -07:00
Edward Oakes
4680de8acd
[serve] Deflake test_replica_startup_status_transitions by awaiting signal actor in constructor (#24044)
`test_cluster: test_replica_startup_status_transitions` is periodically flaky with the replica hanging in `PENDING_ALLOCATION`. This could be because there is no ordering guarantee on async actor calls, so the `reconfigure` method might execute first and block the asyncio loop (due to `ray.get`), not allowing the `is_allocated` call to run.
2022-04-20 16:58:45 -05:00
Simon Mo
b0d7888093
[Serve] Allow cloudpickle serializable objects as init args/kwargs (#24034)
Closes #23503 

We are fixing two issue here:
1. The unified controller API used pickle to pack the init args, we are changing it to cloudpickle for now. (this is something I missed during code review)
2. The checkpoint state functionality in controller uses pickle to prevent ray cluster specific state written to checkpoint and unable to recover in a fresh new cluster. However, this recover from new cluster is not good UX and we should prefer an end to end solution like resubmitting via REST API.


As a corollary, the deployment state manager should not care about deserializing replica config and init args. Rather, it should just pass the protobuf directly to replica. I can do that either here or as a follow up.
2022-04-20 15:51:34 -05:00
Eric Liang
6d8d7398df
[runtime_env] Add the ability to inject a setup hook for customization of runtime_env on init (#24036) 2022-04-20 13:27:37 -07:00
Kai Fricke
6353c805fa
[tune] Clean up base ProgressReporter API (#24010)
`set_start_time()` was not implemented for the progress reporter base class, but it's called in `tune.run()`.

Instead of adding new methods to set runtime arguments, this PR moves to a singular and forward-compatible `setup()` method that defaults to no-op. This way custom reporters can make use of runtime information passed to the reporter, but can choose to ignore it per default.
2022-04-20 21:00:23 +01:00
Jiao
3b632ad0d8
[Ray DAG][Serve Deployment Graph] Remove double json.dumps in DAGNode (#24026)
Previously we have double dump behavior that makes json serde not human readable or friendly, but it's required given `DAGDriver` takes `dag_node_json` as first arg and it will appear in YAML.

This PR removes extra `json.dumps()` in encoder path, eliminated and simplified most encoder / object_hooks that are not needed in the first place to make everything simpler again.

Sample YAML now for a complex DAG: https://gist.github.com/jiaodong/32991771e9d78c35767eb24ed73f8236

We're pretty close to have a better minimal JSON representation of the whole dag after this. I might include in this PR or separate one.
2022-04-20 11:57:35 -05:00
Kai Fricke
261a8a7470
[air] Use custom fsspec handler for GS (#24008)
`gcsfs` complains about an invalid `create_parents` argument when using google cloud storage with cloud checkpoints. Thus we should use an alternative fs spec handler that omits this argument for gs.

The root issue will be fixed here: https://github.com/fsspec/gcsfs/pull/471
2022-04-20 14:51:43 +01:00
Antoni Baum
9364ec39e4
[joblib] Make PoolActor's Ray options configurable (#24009)
Makes it possible to configure joblib/multiprocessing `PoolActor`s' Ray options for greater user control. Also adds some type hints.
2022-04-20 06:38:30 -07:00
xwjiang2010
a34dcfce85
[tune] fix flaky test (#24037) 2022-04-20 10:14:32 +01:00
Antoni Baum
2169007290
[AIR] SklearnTrainer&Predictor implementation (#23850)
Implements `SklearnTrainer` and `SklearnPredictor`. Full parallelism with joblib + support for GPU enabled estimators like cuML.

Interface has been modified slightly by addition of several arguments, which were required for full functionality.

I haven't tested cuML yet, will do it later.

Depends on https://github.com/ray-project/ray/pull/23889

Co-authored-by: Kai Fricke <kai@anyscale.com>
2022-04-19 16:45:17 -07:00
Jiao
5ba29f040f
[Serve] Clean up deployment suffixes between pipeline build() calls (#23984) 2022-04-19 15:59:42 -07:00
mwtian
3af7fb6490
[Ray client] use SimpleQueue on Python 3.7 and newer in async dataclient (#23995) 2022-04-19 13:30:56 -07:00
Antoni Baum
1fc6db30a5
[AIR] Add Scaling Config validation (#23889)
Adds a `ScalingConfigDataClass.validate_config` classmethod to allow for a generic way of validating ScalingConfigs by allowing only certain keys.

Co-authored-by: Kai Fricke <kai@anyscale.com>
2022-04-19 13:05:47 -07:00
Stephanie Wang
8e37fe59c8
[core] Add task function name to ray.timeline profiling events (#23920)
The ray.timeline command currently only shows task for task events, which isn't very useful if your program has multiple types of tasks. This PR adds "::<function name>" to the string, similar to what we do for process names, to distinguish between different tasks.
2022-04-19 09:38:52 -07:00
mwtian
2a5c40a149
[Core] remove Windows compatibility for Redis (#23991)
There should be no reference to Redis in Python anymore except parts of bootstrap code path.

closes #23982
2022-04-19 09:16:47 -07:00
jon-chuang
e0c0ea2e59
[Core] Add node_name field to GcsNodeInfo (#23543)
Make it easier to identify nodes by a string identifier separate from their IP address.
2022-04-19 05:03:12 -07:00
Avnish Narayan
c9df6ce70c
[RLlib] Pinning gym to 0.21 to fix test issues (#24000) 2022-04-19 08:33:31 +02:00
SangBin Cho
1c3329fa38
Revert "Revert "[State Observability] Basic functionality for central… (#23933)
…ized data (#23744)" (#23918)"

This reverts commit fb14e82.
2022-04-18 21:15:43 -07:00
Dmitri Gekhtman
fc4ac71deb
[minor] Fix legacy OSS operator test (#23540)
A legacy K8s test fails due to incorrect usage of @ray.method which only started raising errors after the Ray 1.12.0 branch cut.
This PR removes the use of @ray.method in the test.

Some context in #23271 and #23471

In addition, I noticed some of the test were flakey due to out-of-memory issues. For that reason, I've doubled the memory request and limits in the legacy operator's example files.

I've also added CPU limits in an example file that was missing them -- it makes the most sense for consistency with Ray's resource model to use CPU limits in K8s configs.

Finally, I added an extra note to the instructions for running the tests.
2022-04-18 17:47:42 -07:00
Gabe Joseph
e402fc0eaa
[Datasets] Fix typo in Std docstring (#20917) 2022-04-18 13:15:37 -07:00
shrekris-anyscale
fab33fa730
[serve] Handle None in ReplicaConfig's resource_dict (#23851)
This change sets `"memory"`'s default to `0` in the `resource_dict` but keeps the default as `None` in `ray_actor_options`. It adds logic to both problematic lines to handle `None` in case of future settings updates. It also adds unit tests to prevent regressions.
2022-04-18 12:34:20 -05:00
Siyuan (Ryans) Zhuang
a940e643db
[core] Fix DAG options (#23880)
Now we are able to pass correct options to DAGs. Previously it was missing or skewed.
2022-04-18 10:32:43 -07:00
shrekris-anyscale
6151b75d9d
[serve] Move schema helpers out of api.py (#23934) 2022-04-18 12:25:21 -05:00
mwtian
d5d2ef4249
[Core] Add a utility to check GCS / Ray cluster health (#23382)
* Provide a utility to ping a Ray cluster and verify it has the same Ray version. This is useful to check if a Ray cluster is available at a given address, without connecting to the cluster with the more heavyweight ray.init(). This utility is integrated with ray memory to provide a better error message when the Ray cluster is unavailable. There seem to be user demand for exposing this as an API as well.
* Improve the error message when the address provided to Ray does not contain port.
2022-04-18 09:58:45 -07:00
Akash Patel
8eb99428ce
remove unmaintained blist (#23957)
This PR removes the unused `blist` dep. Causing issues during `py310` upgrade path.
2022-04-17 16:06:04 -07:00
Clark Zinzow
93a8fb78ca
[Core] [Tests] Skip memory limit determination test for Windows. (#23955)
Memory limit determination test is not relevant for Windows; we already skip the CPU limit determination tests for Windows, so we skip for the memory limit determination as well.
2022-04-16 20:19:08 -07:00
Siyuan (Ryans) Zhuang
408ac5e537
[Core] Add _metadata to ray.remote keywords (#23884) 2022-04-16 14:18:30 -07:00
Balaji Veeramani
b06bab8902
[Data] Support more feature_columns types for Dataset.to_tf (#23701)
People use models that accept dictionaries as input. For example, a model might take the following dictionary as input:
{
  "value1": [[7], [8]],
  "value2": [[10], [15]],
}
To facilitate using Ray Datasets with such models and to provide feature parity with to_torch, we should support more feature_columns types.
2022-04-16 11:53:19 -07:00
KepingYan
58f23bb6b4
[Datasets] Add a test case for Spark-on-Ray (raydp) (#23398)
Adds a test case for Spark-on-Ray (raydp).
2022-04-16 11:50:55 -07:00
Clark Zinzow
166cd537d5
[Core] Fix in-container memory limit fetching for cgroups v2 (#23922) 2022-04-15 15:38:01 -07:00
Clark Zinzow
3b09fdd942
[Datasets] Add vectorized global and grouped aggregations. (#23478)
This PR adds support for vectorized global and grouped aggregations, porting the built-in aggregations to vectorized block aggregations for tabular datasets.
2022-04-14 18:55:12 -07:00
mwtian
a15d6a6260
[Pubsub] remove unnecessary args when creating GcsPublisher #23911 2022-04-14 16:26:19 -07:00
Amog Kamsetty
fb14e82242
Revert "[State Observability] Basic functionality for centralized data (#23744)" (#23918)
This reverts commit 51a4a1a802.

breaking tune multinode tests and kuberay:test_autoscaling_e2e
2022-04-14 14:28:42 -07:00
Archit Kulkarni
0673bde594
[Doc] [runtime env] [Serve] Update serve pip runtime_env doc (#23792) 2022-04-14 15:11:14 -05:00
Clark Zinzow
efc5ac5ddf
[Datasets] [Out-of-Band Serialization: 1/3] Refactor LazyBlockList. (#23821)
This PR refactors `LazyBlockList` in service of out-of-band serialization (see [mono-PR](https://github.com/ray-project/ray/pull/22616)) and is a precursor to an execution plan refactor (PR #2) and adding the actual out-of-band serialization APIs (PR #3). The following is included in this refactor:
1. `ReadTask`s are now a first-class concept, replacing calls;
2. read stage progress tracking is consolidated into `LazyBlockList._get_blocks_with_metadta()` and more of the read task complexity, e.g. the read remote function, was pushed into `LazyBlockList` to make `ray.data.read_datasource()` simpler;
3. we are a bit smarter with how we progressively launch tasks and fetch and cache metadata, including fetching the metadata for read tasks in `.iter_blocks_with_metadata()` instead of relying on the pre-read task metadata (which will be less accurate), and we also fix some small bugs in the lazy ramp-up around progressive metadata fetching.

(1) is the most important item for supporting out-of-band serialization and fundamentally changes the `LazyBlockList` data model. This is required since we need to be able to reference the underlying read tasks when rewriting read stages during optimization and when serializing the lineage of the Dataset. See the [mono-PR](https://github.com/ray-project/ray/pull/22616) for more context.

Other changes:
1. Changed stats actor to a global named actor singleton in order to obviate the need for serializing the actor handle with the Dataset stats; without this, we were encountering serialization failures.
2022-04-14 12:35:02 -07:00
Kai Fricke
d96ac251d7
[air] Add Checkpoint.as_directory() for efficient checkpoint fs processing (#23908)
This PR adds a `Checkpoint_as_directory()` context manager that either returns the local path (if checkpoint is already a directory) or a temporary directory path containing the checkpoint data, which is cleaned up after use. The path should be considered as a read-only source for loading data from the checkpoint.

A common use case for processing checkpoint data is to convert it into a directory with `Checkpoint.to_directory()` and then do some read-only processing (e.g. restoring a ML model).

This process has two flaws: First, `to_directory()` creates a temporary directory that has to be explicitly cleaned up by the user after use. Secondly, if the checkpoint is already a directory checkpoint, it is copied over, which is inefficient for large checkpoints (e.g. huggingface models) and then even more prone to unwanted side effects if not cleaned up properly. 

With this context manager that effectively returns a directory that is to be used as a read-only data source, we can avoid manual cleaning up and unnecessary data copies (or avoid internal inspection as e.g. in https://github.com/ray-project/ray/pull/23876/files#diff-47db2f054ca359879f77306e7b054dd8b780aab994961e3b4911330ae15eeae3R57-R60)

See also discussion in https://github.com/ray-project/ray/pull/23850/files#r850036905
2022-04-14 11:43:51 -07:00
Siyuan (Ryans) Zhuang
85542c9911
Revert "Revert "[serialization] Enable debugging into pickle backend (#23854)"(#23877)" (#23878)
* Revert "Revert "[serialization] Enable debugging into pickle backend (#23854)" (#23877)"

This reverts commit 12f0dc1faf.

* fix
2022-04-14 11:07:54 -07:00
xwjiang2010
06a57b20de
[air - preprocessor] Add BatchMapper. (#23700)
Add BatchMapper preprocessor.
Update the semantics of preprocessor.fit() to allow for multiple fit. This is to follow scikitlearn example.
Introduce FitStatus to explicitly incorporate Chain case.
2022-04-14 11:04:30 -07:00
SangBin Cho
51a4a1a802
[State Observability] Basic functionality for centralized data (#23744)
Support listing actor/pg/job/node/workers

Design doc: https://docs.google.com/document/d/1IeEsJOiurg-zctOcBjY-tQVbsCmURFSnUCTkx_4a7Cw/edit#heading=h.9ub9e6yvu9p2

Note that this PR doesn't contain any output except ids. I will update them in the follow-up PRs.
2022-04-14 07:33:18 -07:00
Kai Fricke
79b154c436
[tune] Fix checkpoint sorting with nan values (#23909)
Following #23862, there was an uncaught bug when comparing nan-priority checkpoints. This is because float("nan") <= float("nan") is always False (unlike e.g. np.nan <= np.nan, which is True).

This PR fixes this bug and adds a new test to ensure correct behavior.
2022-04-14 14:28:12 +01:00
Antoni Baum
52eaf020bc
[tune] Treat checkpoints with nan value as worst (#23862)
Changes the logic in CheckpointManager to consider checkpoints with nan value of the metric as worst values, meaning they will be deleted first if keep_checkpoints_num is set.
2022-04-14 10:11:37 +01:00
mwtian
7c1934dc40
[Core] cleanup pickle5 version check (#23885)
* cleanup
2022-04-13 22:11:08 -07:00
Siyuan (Ryans) Zhuang
9c81a97fd9
[core] Simplify options handling [Part 2] (#23882)
* cleanup

* keep the original semantics
2022-04-13 22:09:14 -07:00
shrekris-anyscale
f400c20246
[serve] Use controller namespace when getting actors (#23896)
Serve gets actors using the current Ray namespace. However, the Ray namespace and the controller namespace may not match when using the `_override_controller_namespace` argument in `serve.start()`. This change ensures that the `get_actor()` calls in `ActorReplicaWrapper` use the controller namespace. This also allows `num_replicas` to be scaled up and down properly when using `_override_controller_namespace`.
2022-04-13 17:04:52 -05:00
Kai Fricke
e3bd59882d
[air] Move storage handling to pyarrow.fs.FileSystem (#23370) 2022-04-13 14:31:30 -07:00
Kai Fricke
65d9a410f7
[ci] Clean up ci/ directory (refactor ci/travis) (#23866)
Clean up the ci/ directory. This means getting rid of the travis/ path completely and moving the files into sensible subdirectories.

Details:

- Moves everything under ci/travis into subdirectories, e.g. ci/build, ci/lint, etc.
- Minor adjustments to some scripts (variable renames)
- Removes the outdated (unused) asan tests
2022-04-13 18:11:30 +01:00