Skip to content
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

docs: add proposal for KFP component expectations and standards #11766

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

dandawg
Copy link
Contributor

@dandawg dandawg commented Mar 21, 2025

Description of your changes:
This PR adds a proposal to address the critical need for clear, official standards for Kubeflow Pipelines (KFP) components. The current lack of defined expectations for component structure, quality, usability, and documentation has led to inconsistencies, user confusion, and increased development burden. This proposal focuses on establishing and implementing official component expectations and standards for the KFP repository to improve the overall KFP user experience for both users and contributors.

Checklist:

Sorry, something went wrong.

Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign humairak for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>

These issues collectively undermine the KFP user experience and hinder the growth of the KFP component ecosystem.

## Proposed Solution: Define and Implement Official Component Expectations and Standards
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Things that come to mind:

  1. We should mention prompt CVE fixes a must. If a component uses container images or dependencies with moderate or higher CVEs and aren't addressed within 2 months, they should be removed from the repo.
  2. We need clear ownership of each component. You can't just contribute it and abandon it. If the component doesn't have an owner, then it should go up for "adoption" in the KFP community. If there are no takers, it should be removed.
  3. A component is like an API, so there should be clear versioning.
  4. The minimum KFP version and SDK should be listed. It'd be cool if we defined standardize metadata around this so the SDK could fail to compile if you are using an unsupported KFP SDK or something.

Copy link
Contributor Author

@dandawg dandawg Mar 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love your suggestions on 2-4. I'll see how I can work this in.

On 1, remember that the base image is a parameter in a component, so it is meant to be changeable. The component isn't defined by a specific base image (though it's useful to have a default). Most components in the wild run on (a relatively small set of) public base images (python:3.9, pytorch/pytorch, etc.), or base images that the user swaps in. As far as standards go, we can stress using reputable/well-established images for defaults by preference. Setting specific CVE fix requirements feels too detailed for standards.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dandawg I think to align with your base image ideas, it'd be good if the components defaulted to a maintained base image when applicable in the event there are dependencies that are hard to install (e.g. compiles C, or requires non-Python dependencies). It could be as simple as setting a standard where the SDK builtin components are functions that return components, so it can prefill some of the component arguments like the base image.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mprahl I believe we're mostly on the same page, but let me know if I'm not getting something. If I understand your comment right, I think this is something already provided for in the dsl.component class. We can set the default image to a recommended generalized public image, and then users can override it if they wish (I believe this is also a plus for Python component functionality over the load yaml route).

There are some really good public images out there that precisely take care of low level stuff like GPU drivers, CUDA versions, gcc, and the like, as well as providing python dependencies (for example the deep learning images from Google).

There may be base images that we want, but that don't exist in the public space. I love the idea of figuring out how we can add support here, but I lean towards deferring this conversation until we have a specific component that we are solving for.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My latest push some clarity around @mprahl 's points.


To implement this proposal, the following steps are necessary:

1. **Formalize Component Expectations:** Finalize and officially document the "Component Expectations" after giving time for community feedback and consensus.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was hoping that this would be part of this KEP so that this KEP establishes the following:

  • The KFP community wants clear guidelines and expectations on components.
  • The KFP community agrees on what those guidelines are.

From there, it'd be fairly actionable.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reworded number 1 to be a little more explicit on this. Of course, this proposal itself seeks to be the starting point for the discussion.

Signed-off-by: Daniel Dowler <12484302+dandawg@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants