-
Notifications
You must be signed in to change notification settings - Fork 220
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
Model Registry proposal (ref KF community meeting 20240102) #682
base: master
Are you sure you want to change the base?
Model Registry proposal (ref KF community meeting 20240102) #682
Conversation
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: tarilabs 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 |
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.
Hi All, not sure if folks here are aware of the work going on over at Open Containers Initiative (OCI) wrt standardizing registry interfaces and general-purpose "artifacts". https://github.com/opencontainers/distribution-spec OCI is a sibling org under Linux Foundation and its specs closely interoperate with Kubernetes. Just bringing this to your attention that it is now possible to colocate arbitrary artifacts (content-addressable) along with relationships and provenance in a OCI dist-spec v1.1.0 conformant image registry, and not just container images.
The main motivation in this forum would be:
A registry you can quickly spin up and play with: https://zotregistry.dev/ Thoughts? Full disclosure: I am a OCI TOB member and zot author. |
Talk is cheap, here is an example (using only a subset of OCI dist-spec v1.1.0 features) Also, an upcoming blog post clarifying most things. |
@rchincha thank you for reaching out see this about oci reference in the proposal https://github.com/kubeflow/community/pull/682/files#diff-aaf54745ecb36016135c83a5a41a03025574ecb492aec56ef6d2c7c902abfe17R180 Can I recommend you open another PR in the model registry and can we collaborate on a proposal on how you see the integration working, we have verified that we could store and retrieve the models without any issues but we have not explored how/if we should spread the metadata and query it back (if that is needed at all is another question as it can be stored in the db) and also how we can influence the consumption of the model for inference directly from OCI repo as it in projects like Kserve. |
Would love to. Also folks over at CNCF artifacts, ORAS and OCI would certainly be interested. Initial grok'ing of kserve project indicates that there could be a couple of ways to do this:
|
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
kubeflow/model-registry#48 |
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
@rchincha we are collaborating with ORAS maintainers and model-car initiative inventors let's see we can bring their attention on this effort for storage. We already put in some work towards KServe Storage Containers which will be another way for providing the models for inferencing. A couple of requests for proposal,
I did look at ArtifactHub project a couple of months ago in CNCF which looked very interesting in terms of how they use OCI and metadata scraping but did not draw any conclusions about how that could be folded into the mix to bridge the metadata portion or not. That could be very interesting IMO. Is this CNCF project u mentioned above? |
wrt kserve, maybe this as a contract? kserve/kserve#3539
This is best left to the registry implementations which may or may not choose to support S3 backend (for example, speaking only for
The OCI plugin must be registry-agnostic of course and this calls out the role that OCI dist-spec v1.1.0 plays as a contract.
Another additional requirement, and comes with the territory.
As I understand it, ArtifactHub predates OCI dist-spec v1.1.0 but there may be interest to standardize on this dist-spec.
OCI dist-spec v1.1.0 has explicit provisions for this. But can you kindly point to some concrete examples. Will update kubeflow/model-registry#48 |
Personally very curious for examples on this topic! :) that is very interesting in the context of potentially indexing/query for Manifest of metadata (a "model registry" use case) by means of OCI Artifact. |
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
^ this is how the OCI community has addressed this. Note that the original use case was container images and associated metadata such as SBOMs etc. So in this case ...
|
Thanks @rchincha , is there a way to avoid having to download the associated metadata, only to query for it locally, and do that "on the OCI registry" server end? Example I know some metadata for each of those. I'm looking for a solution if possible which doesn't require me to download the associated metadata-Manifest of each of the artifacts locally, in order to query those metadata. Hope the example convey the question I'm curious for. |
In the OCI dist-spec world, one way would be to list all tags in a repository, get their manifests and compare annotations (== I was more concerned about the following: |
Thanks @rchincha , reassuring to hear it doesn't need to download actual data, will be looking for a chance to understand in more details from you how OCI dist-spec works for this use-case in practice. We have Model Registry biweekly meetings: https://www.kubeflow.org/docs/about/community/#kubeflow-community-calendars Do you think you'll be able to join one, so we could discuss it live in more details? |
https://kccnceu2024.sched.com/event/1YeLi Your next meeting is Apr 1. Will try to make that. |
Partially addresses kubeflow/community#682 Signed-off-by: Ramkumar Chinchani <[email protected]>
Partially addresses kubeflow/community#682 OCI image and distribution specs v1.1.0 has added support for pushing and pulling arbitrary artifacts to a conformant registry, and not just container images. Since a registry is already needed to deploy inference workloads as containers, and that it would be desirable to avoid another piece of infrastructure just to store inference data, a OCI conformant registry could become that ideal store to combine and colocate both use cases. This plugin adds that support. References: https://opencontainers.org/posts/blog/2024-03-13-image-and-distribution-1-1/ Signed-off-by: Ramkumar Chinchani <[email protected]>
Partially addresses kubeflow/community#682 OCI image and distribution specs v1.1.0 has added support for pushing and pulling arbitrary artifacts to a conformant registry, and not just container images. Since a registry is already needed to deploy inference workloads as containers, and that it would be desirable to avoid another piece of infrastructure just to store inference data, a OCI conformant registry could become that ideal store to combine and colocate both use cases. This plugin adds that support. Uses the oras-go library. References: https://opencontainers.org/posts/blog/2024-03-13-image-and-distribution-1-1/ Signed-off-by: Ramkumar Chinchani <[email protected]>
Partially addresses kubeflow/community#682 OCI image and distribution specs v1.1.0 has added support for pushing and pulling arbitrary artifacts to a conformant registry, and not just container images. Since a registry is already needed to deploy inference workloads as containers, and that it would be desirable to avoid another piece of infrastructure just to store inference data, a OCI conformant registry could become that ideal store to combine and colocate both use cases. This plugin adds that support. Uses the oras-go library. References: https://opencontainers.org/posts/blog/2024-03-13-image-and-distribution-1-1/ Signed-off-by: Ramkumar Chinchani <[email protected]>
kubernetes/enhancements#4642 |
iiuc this would allow "materializing" OCI artifacts as a mounted volume in a container, effectively allowing the "files" inside an OCI artifacts to be available for inference say in a running container of a model server. |
Still a preliminary KEP, but would seem so. |
For reference, in KServe a workaround for directly accessing files within an OCI image is implemented and available via a sidecar approach ("modelcar") by leveraging root FS system access via the |
thank you @rhuss , to me is about providing user-choice; given an opportunity to have OCI Artifact with a ML model asset:
wdyt? |
Thank you @rchincha , we indeed noted that blog post as well :) Fyi, we have it in our live-roadmap as a proposal for integration as a preferred storage solution for the ML model, to complement current Model Registry. Orthogonal research work in this area, is captured here. |
Following feedback received during KF community meeting held 20240102,
raising the Model Registry proposal google doc previously shared with the community: (link),
as a Markdown in the form of Pull Request (this PR).
See also