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

Add Kubeflow Components Overview Diagram #3650

Merged
merged 11 commits into from
Jan 9, 2024

Conversation

andreyvelich
Copy link
Member

This diagram shows high-level diagram for Kubeflow components, so users can see which part of MLOps lifecycle Kubeflow covers today.
We can edit this diagram in the future by simply import it to: https://www.drawio.com/

We showed this diagram in the latest Kubeflow Summit: https://youtu.be/HBBJYa4JTNY?list=PL2gwy7BdKoGdrkYIWGeAdKi9ntfxq8FYt

Related: #3536

/hold for review

@andreyvelich
Copy link
Member Author

cc for the review on the Kubeflow high-level architecture.
@kubeflow/wg-training-leads @kubeflow/wg-pipeline-leads @kubeflow/wg-notebooks-leads
@jbottum @thesuperzapper @akgraner @vikas-saxena02

Copy link
Member

Choose a reason for hiding this comment

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

Should we store the drawio source file as well so it's easier to modify later

Copy link
Member

Choose a reason for hiding this comment

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

@andreyvelich Also, I dont know why/how but this image is somehow interactively linked to draw.io: https://deploy-preview-3650--competent-brattain-de2d6d.netlify.app/docs/started/architecture/

I recommend we raster it down to an SVG to ensure compatibility.

Copy link
Member

@thesuperzapper thesuperzapper Dec 15, 2023

Choose a reason for hiding this comment

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

Also, your diagram should make it clear that any Kubernetes cluster will work, so perhaps we should replace the minikube logo with the Kubernetes one?

Or, perhaps the Kubernetes logo should replace the "SDKs", "Web UI", and "Kubectl" layer, to indicate that Kubeflow runs on Kubernetes.

Copy link
Member

Choose a reason for hiding this comment

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

Also, I think the components should be ordered by popularity, or possibly the order in which you use them.

For example:

  • Top-Left: Kubeflow Pipelines
  • Top-Right: Kubeflow Notebooks
  • Mid-Left: Central Dashboard
  • Mid-Right: Katib (AutoML)
  • Bottom-Left: Training Operator
  • Bottom-Right: KServe (Serving)

(You also missed central dashboard, which is a pretty important component).

Copy link
Member Author

Choose a reason for hiding this comment

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

Should we store the drawio source file as well so it's easier to modify later

@terrytangyuan If you upload this image to drawio, you can modify it

Copy link
Contributor

Choose a reason for hiding this comment

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

isn't the Web UI the Central Dashboard ?

Copy link
Member

Choose a reason for hiding this comment

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

@jbottum @andreyvelich perhaps we should re-word the "Web UI" to "Web Dashboard"?

Copy link
Member

Choose a reason for hiding this comment

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

@andreyvelich I think we can swap the "layers" to more logically represent what runs "on top" of what.

My idea for ordering (from top to bottom):

  1. Libraries (Jupyter / Tensorflow / Torch / ...)
    • Yellow Horizontal Bar
  2. Interfaces (SDKs / Web Dashboard / Kubectl)
    • Blue Arrow
  3. Kubeflow
    • Blue Arrow
  4. Kubernetes
    • Yellow Horizontal Bar
  5. Platforms (AWS / GCP / On-Prem / ...)

Some other notes:

  • Minikube is not really a platform, so we can remove it (or possibly replace it with "Local Deployment", with a picture of a laptop).
  • We should put a dotted line around the "Platforms" group, like the "Libraries" one.

Copy link
Member Author

Choose a reason for hiding this comment

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

Web UI is the combination of all UI that Kubeflow offers today (e.g. Central Dashboard, Katib, Pipelines, Volumes, Tensorboards, etc.)

Copy link
Member Author

Choose a reason for hiding this comment

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

@thesuperzapper I agree that Kubernetes should go above the platforms and I can change minikube to local deployment, but I am not sure if SDK/Web UI/kubectl should be between Kubeflow and libraries.

My thoughts are that interfaces (SDK, Web UI, and kubectl) is a layer between Kubeflow components and Kubernetes. For example, when user run create_job Training Operator SDK API, it creates resources in Kubernetes clusters.
Or when user clicks create Experiment button on the Katib UI it creates custom resources in Kubernetes.

Any thoughts @thesuperzapper @jbottum @johnugeorge @vikas-saxena02 ?

@thesuperzapper
Copy link
Member

@andreyvelich I thought your diagram going to be used on the "introduction" page rather than the "architecture"?

And that we would use a diagram like this one on the "architecture" page:

Screenshot 2023-12-15 at 10 22 57

@andreyvelich
Copy link
Member Author

I thought your diagram going to be used on the "introduction" page rather than the "architecture"?

Yes, let me move it to introduction for now. I hope, we have time to discuss it during tomorrow's community call to hear the feedback from others.

@google-oss-prow google-oss-prow bot added size/S and removed size/M labels Dec 18, 2023
@@ -10,6 +10,13 @@ recreate other services, but to provide a straightforward way to deploy
best-of-breed open-source systems for ML to diverse infrastructures. Anywhere
you are running Kubernetes, you should be able to run Kubeflow.

The following diagrams shows the main Kubeflow components to cover each step of ML lifecycle
Copy link
Contributor

Choose a reason for hiding this comment

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

Small typo.

Suggested change
The following diagrams shows the main Kubeflow components to cover each step of ML lifecycle
The following diagram shows the main Kubeflow components to cover each step of ML lifecycle

@vikas-saxena02
Copy link
Contributor

@andreyvelich , the diagram looks great to me!!
I just have one suggestion though, for the ML Libraries section on top. Is it possible to provide names for the ones which do not have it mentioned in the icon. For non-technical users (managers, BAs etc) it will be confusing as they do not know which library is that.

@andreyvelich
Copy link
Member Author

@andreyvelich , the diagram looks great to me!! I just have one suggestion though, for the ML Libraries section on top. Is it possible to provide names for the ones which do not have it mentioned in the icon. For non-technical users (managers, BAs etc) it will be confusing as they do not know which library is that.

That's good point @vikas-saxena02. I will make this change to the diagram.

@andreyvelich
Copy link
Member Author

@thesuperzapper @terrytangyuan @johnugeorge @tenzen-y @hbelmiro @vikas-saxena02 @jbottum Any other suggestions before we can merge this initial diagram ?

@hbelmiro
Copy link
Contributor

hbelmiro commented Jan 8, 2024

/lgtm

Copy link

@hbelmiro: changing LGTM is restricted to collaborators

In response to this:

/lgtm

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@jbottum
Copy link
Contributor

jbottum commented Jan 8, 2024

/lgtm

@thesuperzapper
Copy link
Member

thesuperzapper commented Jan 9, 2024

@andreyvelich I like where you are going but I think it can still be made more clear.

I have taken a stab at it based on your design, I went back and forward on keeping the "Web UI" box, but settled on replacing "ML Metadata" with "Central Dashboard" because that's similar to what we do on the kubeflow.org homepage.

The following file is in SVG draw.io format if you want to modify it further:

kubeflow-intro-diagram drawio

PS: we should use SVG rather than PNG for the website (don't forget to click "embed images" when exporting from draw.io)

Here is a compressed version of the PNG format, incase GitHub comments break the image draw.io compatibility:
kubeflow-intro-diagram.drawio.png.zip

Copy link
Member

@terrytangyuan terrytangyuan left a comment

Choose a reason for hiding this comment

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

Great work! We can always improve/iterate later.

/lgtm

@google-oss-prow google-oss-prow bot removed the lgtm label Jan 9, 2024
@andreyvelich
Copy link
Member Author

Sure @thesuperzapper, that sound good, I made the appropriate changes.
I keep components in the appropriate order (e.g. on the left side: ML Training, ML Tuning, ML Serving. On the right side development tools: Notebooks, Pipelines, Central Dashboard )
/hold cancel

@thesuperzapper
Copy link
Member

@andreyvelich based on your comment I think we can add the "Model Training" / etc labels underneath each component to help new users understand what each box means.

I also think that it makes sense to put the development tools on the left side (the same order we use on the homepage).

For example:
kubeflow-intro-diagram-2 drawio

And the compressed file version:
kubeflow-intro-diagram-2.drawio.svg.zip

@thesuperzapper
Copy link
Member

@andreyvelich Based on a few comments I have made the labels a lot less prominent

kubeflow-intro-diagram-3 drawio

kubeflow-intro-diagram-3.drawio.svg.zip

@andreyvelich
Copy link
Member Author

I made the final changes based on the discussion.
Please provide your final comments and we can merge it.
/assign @thesuperzapper @terrytangyuan @johnugeorge @tenzen-y @hbelmiro @vikas-saxena02 @jbottum @james-jwu @zijianjoy

@zijianjoy
Copy link
Contributor

/lgtm
/approve

Thank you @andreyvelich and everyone for your help on this PR!

@google-oss-prow google-oss-prow bot added the lgtm label Jan 9, 2024
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: andreyvelich, hbelmiro, terrytangyuan, zijianjoy

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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-oss-prow google-oss-prow bot merged commit 60dc962 into kubeflow:master Jan 9, 2024
6 checks passed
@tenzen-y
Copy link
Member

tenzen-y commented Jan 9, 2024

@andreyvelich Thank you for this improvement! This looks great :)

@andreyvelich andreyvelich deleted the kubeflow-diagram branch January 9, 2024 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants