-
Notifications
You must be signed in to change notification settings - Fork 1.8k
feat(sdk/backend): Support forwarding task configuration to external workloads #12185
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Skipping CI for Draft Pull Request. |
3313faa to
a56e3a8
Compare
8f56491 to
8daf9a9
Compare
|
/cc @HumairAK |
d7b4db5 to
a56f03f
Compare
Signed-off-by: mprahl <[email protected]>
5fee341 to
ed52a40
Compare
api/v2alpha1/pipeline_spec.proto
Outdated
| // Throwaway default value. | ||
| NONE = 0; | ||
| // Indicates that the resource limits and requests should be passed through to the external workload. | ||
| // Be cautious about also setting apply_to_task=true since that may double apply the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // Be cautious about also setting apply_to_task=true since that may double apply the | |
| // Be cautious about also setting apply_to_task=true since that will double apply | |
| pip_trusted_hosts: Optional[List[str]] = None, | ||
| use_venv: bool = False, | ||
| additional_funcs: Optional[List[Callable]] = None, | ||
| task_config_passthroughs: Optional[List[Union[TaskConfigPassthrough, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing this parameter in the docstring
backend/src/v2/driver/driver_test.go
Outdated
| CpuLimit: 2.0, | ||
| MemoryLimit: 1.5, | ||
| CpuRequest: 1.0, | ||
| MemoryRequest: 0.65, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we use the non-deprecated fields?
Introduce dsl.TaskConfig to capture task-level resource settings for pass-through to externally launched workloads (e.g., trainers). The driver now updates container execution and Kubernetes handling to inject the Kubernetes config into executor inputs without applying disallowed fields to the task pod. Signed-off-by: mprahl <[email protected]>
Signed-off-by: mprahl <[email protected]>
ed52a40 to
5393888
Compare
|
/lgtm niceee |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: HumairAK The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
…workloads (kubeflow#12185) * Add missing PULL_NUMBER env var to sample tests CI Signed-off-by: mprahl <[email protected]> * Use the local API package for the upgrade test Signed-off-by: mprahl <[email protected]> * Support forwarding task configuration to external workloads Introduce dsl.TaskConfig to capture task-level resource settings for pass-through to externally launched workloads (e.g., trainers). The driver now updates container execution and Kubernetes handling to inject the Kubernetes config into executor inputs without applying disallowed fields to the task pod. Signed-off-by: mprahl <[email protected]> * Fix dependencies issue in Read The Docs build Signed-off-by: mprahl <[email protected]> --------- Signed-off-by: mprahl <[email protected]>
Description of your changes:
This PR introduces a powerful new feature that allows KFP tasks to forward their task configuration (resources, environment variables, node selectors, tolerations, affinity, volumes) to external workloads like Kubeflow TrainJobs, rather than applying them only to the task pod itself. This is particularly valuable for scenarios where the KFP task is launching another Kubernetes workload (e.g.
TrainJob,Job, etc).Checklist: