[Serve][Master Task] Cleanup ray DAG -> serve DAG node types with clear layering #24061
Labels
enhancement
Request for new feature and/or capability
P1
Issue that should be fixed within a few weeks
serve
Ray Serve Related Issue
Milestone
Description
In latest discussion about dag layering, we agreed on the following:
We allow stacked decorator '@ray.remote' first, '@serve.options' on top for Ray 2.0 to facilitate users using both ray & serve options in a single node or DAG. Same pattern applies to other libraries.
To make migration easy and smooth for users, we keep the existing single @serve.deployment decorator as syntactic sugar, build a path to port serve options as "metadata" at ray, but don't need to disrupt or warn existing user behavior. This gives us the migration path as well as buffer needed for Ray 2.0
Library specific nodes shouldn't be public API as we don't want users to be exposed to it or directly modify, only generated by .bind() on a decorated body.
Serve DAG body is executable by ray core via ray.dag.execute(). We have serve.run() that executes serve dag by deploying all nodes, but while authoring and iterating the DAG, without serve specific stuff like DAGDriver that brings JSON serde & HTTP, the "body" of the DAG should be tested with ray.dag.execute(dag) with same code, even it's only decorated by @serve.deployment.
serve.run(ray_dag) means ..
ray_actor_options
field in each deployment=================================
Now from last branch cut we introduced a few things that didn't match the consensus above, including:
1) We added a few internal DeploymentNode / UserDeploymentNode classes that subclass ClassNode / FunctionNode, and registered them a bit differently in DAG PyObjScanner2) These DeploymentNode types should no longer be user facing3) We had quite a number of magic in DeploymentNode implementation now that handles placement, deployment config handling, json serde and DAGHandle ..
4) No tests or documentation that clearly covers the ray dag -> serve dag development path
Use case
.
The text was updated successfully, but these errors were encountered: