Commit graph

6514 commits

Author SHA1 Message Date
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
Kai Fricke
40d3a62aa1
[air/wip] Add batch predictor class (#23808)
What: This class adds a generic BatchPredictor class that offers an interface to run batch inference on Ray datasets. It takes a Predictor class and checkpoint as an input, and provides a predict(dataset) method to run scalable scoring inference.

Why: Currently users have to implement scorers themselves. This is mostly boilerplate and prone to errors, so we should provide a simple solution instead.

Note that this predictor also implements the Predictor interface.
2022-04-13 08:58:08 +01:00
mwtian
a85baac3b4
[Core] do not add Ray's pickle5 path to sys.path when running Python >= 3.8 (#23879) 2022-04-12 22:06:25 -07:00
Jiajun Yao
95714cc281
Node affinity scheduling strategy (#23381)
Instead of relying on the node-ip custom resource for static task-to-node placement, this PR introduces an explicit NodeAffinitySchedulingStrategy with the following benefits:

1. Specify node using id instead of ip since ip may not be unique for each node.
2. Support soft constraint so the task can be tolerant to node failures.

After this PR, the node-ip custom resource can be deprecated.
2022-04-12 21:31:26 -07:00
Clark Zinzow
983ef1f2a7
[Datasets] Make from_numpy() more user-friendly. (#23871)
`ray.data.from_numpy()` currently expects to be given a list of ndarray futures, instead of handling concrete ndarrays, as expected (and as allowed by other `from_*` APIs, e.g. `from_pandas`). This PR renames the existing `from_numpy` API to `from_numpy_refs`, and exposes `ray.data.from_numpy`, which takes concrete ndarrays (not object references).
2022-04-12 18:37:59 -07:00
Clark Zinzow
12f0dc1faf
Revert "[serialization] Enable debugging into pickle backend (#23854)" (#23877)
This reverts commit ef7180365d.
2022-04-12 16:53:20 -07:00
Edward Oakes
de227ac407
[serve] Add component logger + basic access logging (#23558)
Adds a "component logger" to standardize logging across the HTTP proxy, controller, and deployment replicas.
2022-04-12 18:16:58 -05:00
Jian Xiao
00bdee1290
Add test case for merging empty and non-empty results of map_groups (#23545)
In some cases, the UDF for map_groups() may return value of different types, which should be disallowed.

This PR is to add unit test to make sure we do raise error if such case happens.
2022-04-12 15:30:27 -07:00
Sriram Sankar
608aa771b9
Clean up interaction between Autoscaler and Kuberay (#23428)
This PR updates the KuberayNodeProvider for a more robust interaction with the KubeRay operator.
2022-04-12 14:31:27 -07:00
Siyuan (Ryans) Zhuang
ef7180365d
[serialization] Enable debugging into pickle backend (#23854)
* enable debugging cloudpickle
2022-04-12 13:48:35 -07:00
Kai Fricke
4cb6205726
[tune] Fix empty CSV headers on trial restart (#23860)
What: Only open (create) CSV files when actually reporting results.
Why: When trials crash before they report first (e.g. on init), they will have created an empty CSV file. When results are subsequently written, the CSV header is then missing.
2022-04-12 21:05:29 +01:00
Antoni Baum
ff60ebd4b3
[tune] Fix memory resources for head bundle (#23861)
Fixes memory and object_store_memory actor options not being set properly for the Tune trainable.
2022-04-12 20:56:05 +01:00
Kai Fricke
c30491d6ef
[tune] Skip tmp checkpoints in analysis and read iteration from metadata (#23859)
What: Skips left-over checkpoint_tmp* directories when loading experiment analysis. Also loads iteration number from metadata file rather than parsing the checkpoint directory name.

Why: Sometimes temporary checkpoint directories are not deleted correctly when restoring (e.g. when interrupted). In these cases, they shouldn't be included in experiment analysis. Parsing their iteration number also failed, and should generally be done by reading the metadata file, not by inferring it from the directory name.
2022-04-12 17:09:03 +01:00
Kai Fricke
416cfb8753
[tune] Fix syncing between nodes in placement groups (#23864)
Break out of placement groups to make syncing work in tune/train trials.
2022-04-12 17:06:19 +01:00
Kai Fricke
7eb3543e93
[tune] Chunk file transfers in cross-node checkpoint syncing (#23804)
What: This introduces a general utility to synchronize directories between two nodes, derived from the RemoteTaskClient. This implementation uses chunked transfers for more efficient communication.

Why: Transferring files over 2GB in size leads to superlinear time complexity in some setups (e.g. local macbooks). This could be due to memory limits, swapping, or gRPC limits, and is explored in a different thread. To overcome this limitation, we use chunked data transfers which show quasi-linear scalability for larger files.
2022-04-12 13:45:07 +01:00
Clark Zinzow
7d262f886d
[data] Preserve block order when batch mapping using the actor compute model. (#23837)
This PR preserves block order when transforming under the actor compute model. Before this PR, we were submitting block transformations in reverse order and creating the output block list in completion order.
2022-04-12 08:42:27 +01:00
Siyuan (Ryans) Zhuang
e0a68f5076
[workflow] skip flaky tests (#23848)
* skip flaky tests
2022-04-11 23:08:56 -07:00
Siyuan (Ryans) Zhuang
d7ef546352
[core] Simplify options handling [Part 1] (#23127)
* handle options

* update doc

* fix serve
2022-04-11 20:49:58 -07:00
Antoni Baum
40646eecd4
[AIR] SklearnTrainer & Predictor interfaces (#23803)
Co-authored-by: Amog Kamsetty <amogkam@users.noreply.github.com>
2022-04-11 15:11:42 -07:00
shrekris-anyscale
87d1f97e2e
[runtime_env] Add print statements to TestGC tests (#23716)
The tests in `TestGC` are flaky due to timeout ([example 1](https://buildkite.com/ray-project/ray-builders-branch/builds/6868#5540f19e-3669-46eb-a4ee-c71a1252f9ae), [example 2](https://buildkite.com/ray-project/ray-builders-branch/builds/6872#8912eb47-eb63-40c9-949f-a020a5f8f42d)):

<img width="1304" alt="Screen Shot 2022-04-05 at 11 30 04 AM" src="https://user-images.githubusercontent.com/92341594/161825080-c2fe3887-f87c-4175-924f-80ae9b371157.png">

This change adds print statements to the `TestGC` tests to detect where they're hanging.
2022-04-11 16:09:41 -05:00
Amog Kamsetty
d33483de3d
[Tune] Don't include nan metrics for best checkpoint (#23820)
Nan values do not have a well defined ordering. When sorting metrics to determine the best checkpoint, we should always filter out checkpoints that are associated with nan values.

Closes #23812
2022-04-11 12:51:00 -07:00
Balaji Veeramani
394e5ec1c2
[Train] Raise helpful error when required backend isn't installed (#23583)
Closes #22347
2022-04-11 10:46:32 -07:00
Antoni Baum
5dc958037e
[air] Refactor most_frequent SimpleImputer (#23706)
Takes care of the TODO left for SimpleImputer with most_frequent strategy by refactoring and optimising the logic for computing the most frequent value.

Co-authored-by: Clark Zinzow <clarkzinzow@gmail.com>
2022-04-11 18:20:44 +01:00