sandbox icon indicating copy to clipboard operation
sandbox copied to clipboard

[Sandbox] ModelPack

Open gorkem opened this issue 8 months ago • 1 comments

Application contact emails

[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

Project summary

The project establishes open standards for packaging, distributing and running AI artifacts in the cloud-native environment.

Project description

Artificial Intelligence (AI) and Machine Learning (ML) have become integral components of modern cloud-native application architectures. Despite this, the AI/ML domain remains fragmented due to inconsistent methods of packaging and distributing AI artifacts, which include models, datasets, codebases, and parameters. Open standards are essential for fostering cohesive, interoperable, and scalable ecosystems.

This project aims to define a vendor-neutral, open standard for packaging, distributing, and executing AI artifacts. It will also develop the documentation and libraries necessary to promote widespread adoption.

Org repo URL (provide if all repos under the org are in scope of the application)

N/A

Project repo URL in scope of application

https://github.com/CloudNativeAI/model-spec

Additional repos in scope of the application

No response

Website URL

https://github.com/CloudNativeAI/model-spec

Roadmap

https://github.com/CloudNativeAI/model-spec/blob/2f39436c52f6f853140693bda06b03fc106015a2/ROADMAP.md

Roadmap context

The project’s overarching goal is to establish a standardized, cloud-native ecosystem for AI model packaging, distribution, and runtime integration. We are in phase 1 where the focus is on defining a model format, and seeking alignment with cloud-native standards.

Contributing guide

https://github.com/CloudNativeAI/model-spec/blob/2f39436c52f6f853140693bda06b03fc106015a2/CONTRIBUTING.md

Code of Conduct (CoC)

https://github.com/CloudNativeAI/model-spec/blob/2f39436c52f6f853140693bda06b03fc106015a2/code-of-conduct.md

Adopters

No response

Contributing or sponsoring org

No response

Maintainers file

https://github.com/CloudNativeAI/model-spec/pull/45

IP policy

  • [x] If the project is accepted, I agree the project will follow the CNCF IP Policy

Will the project require a license exception?

N/A

Trademark and accounts

  • [x] If the project is accepted, I agree to donate all project trademarks and accounts to the CNCF

Standard or specification?

The primary goal of this project is to establish an open standard for packaging, distributing, and executing AI artifacts, aligned with the OCI standard.

Why CNCF?

This standard builds upon the Open Container Initiative (OCI), which is foundational to numerous CNCF projects. However, while OCI excels in supporting stable, slower-moving standards, the rapidly evolving nature of this AI/ML cloud native standard requires a more dynamic environment. Given OCI’s significance within CNCF and our shared mission to advance open, cloud-native technologies, CNCF represents the most suitable foundation at this stage. Over time, as the standard matures and stabilizes, transitioning it fully into OCI might become appropriate, but currently, CNCF’s agility is essential for its rapid development and innovation.

Benefit to the landscape

Currently, the CNCF ecosystem lacks a unified standard for packaging and versioning AI/ML artifacts. This gap creates deployment challenges for organizations adopting cloud-native AI/ML workloads, resulting in fragmentation and operational inefficiencies. The proposed standard addresses this issue directly, enhancing interoperability and efficiency.

Cloud native 'fit'

The proposed standard integrates seamlessly into the CNCF landscape by standardizing the packaging and distribution of AI/ML artifacts via OCI registries. It complements and interacts effectively with established CNCF projects such as Kubernetes, CRI-O, containerd, KServe, Notary, and others.

Cloud native 'integration'

This standard benefits OCI registries such as Harbor, Kubernetes, containerd, and CRI-O, facilitating streamlined training and inference processes for AI/ML workloads.

Cloud native overlap

  • KitOps: KitOps project provides ModelKits which is an OCI based packaging of AI/ML artifacts. ModelPack specification can allow KitOps project to reach to a wider audience.
  • Kubernetes: ModelPack specification can allow AI artifacts to integrate tightly with Kubernetes for deploying ML models as OCI artifacts into inference services or clusters.
  • Flux and Argo Workflows: A specification can alllow innovation on GitOps workflows enabled by Flux or Argo Workflows .

Similar projects

ONNX KitOps SkyPilot

Landscape

No, it is not listed

Business Product or Service to Project separation

Not related to any product, service or company.

Project "Domain Technical Review"

Not yet

CNCF contacts

Chris Aniszczyk

Additional information

No response

gorkem avatar Mar 27 '25 14:03 gorkem

Wasn't Harbor first to adopt this proposal?

s3rj1k avatar Mar 27 '25 15:03 s3rj1k

@gorkem how do you all make decisions? Looking at the OCI specs like https://github.com/opencontainers/image-spec/ and https://github.com/opencontainers/runtime-spec there seems to be a good mechanism for consensus making and taking decisions.. so was wondering how you all do it right now? (and have you thought about what it may look like in the future?)

dims avatar Apr 07 '25 17:04 dims

One more.. Looks like docker folks have something in the same space possibly? are you all in touch? (is there another spec that they may have that will need to be reconciled?)

  • https://github.com/docker/model-cli
  • https://docs.docker.com/desktop/features/model-runner/

dims avatar Apr 07 '25 17:04 dims

IMO: with upcoming CRI-O changes here you don't really need new spec, can use OCI and some extra annotations to get same level of functionality.

Hopefully containerd folks will pick this up also.

s3rj1k avatar Apr 07 '25 17:04 s3rj1k

@dims So far, we have been running the specification process like any other open-source project. Pull-requests to introduce the changes, which are discussed on the bi-weekly calls and a consensus was reached. This method so far worked but I do not think we had a case when it was challenging to reach consensus. I would rather not create a more formal method until we see that we need one.

gorkem avatar Apr 07 '25 18:04 gorkem

Assuming this is the same or related to model-distribution, we were able to connect with them. We all agreed that there are enough similarities between the spec, docker implementations, and KitOps. Docker folks will hopefully participate more actively and propose the changes that will help them align better.

gorkem avatar Apr 07 '25 19:04 gorkem

can use OCI and some extra annotations to get same level of functionality.

@s3rj1k The document that explains that some extra annotations so that others can implement and interoperate the same would be the "spec" :) There are already multiple flavors of OCI artifacts that deal with AI/ML, we aim to introduce a light specification to avoid the wasted efforts and foster the innovation, not only for k8s runtimes but all kinds of tooling.

gorkem avatar Apr 07 '25 19:04 gorkem

some extra annotations

are OCI well-known annotations, like close to 95% of needed functionality is already there without a need to build new spec from scratch and use new tooling.

Taking this as base and extending ML spec with additional ML specific annotations would be preferable to inventing new spec from scratch. https://github.com/opencontainers/image-spec/blob/main/specs-go/v1/annotations.go

s3rj1k avatar Apr 07 '25 19:04 s3rj1k

One more.. Looks like docker folks have something in the same space possibly? are you all in touch? (is there another spec that they may have that will need to be reconciled?)

  • https://github.com/docker/model-cli
  • https://docs.docker.com/desktop/features/model-runner/

Hi @dims,

We have been in touch with them since the first day the model-distribution project was published. Please refer to https://github.com/docker/model-distribution/issues/53. Some of the folks (@sabre1041, @gorkem ) of the model-spec had a conversation with @ekcasey at Kubecon. Docker folks have agreed on collaborating and potentially converging on a shared specification and tooling.

We also have a dedicated CNCF channel, #model-spec-discussion, for discussing the consensus. Docker folks like @ekcasey are involved. Feel free to join if you're interested.

caozhuozi avatar Apr 08 '25 01:04 caozhuozi

Harbor has adopted this spec in the latest release. FYI: https://github.com/goharbor/harbor/releases/tag/v2.13.0

chlins avatar Apr 10 '25 12:04 chlins

FYI @caniszczyk has kindly offered the modelpack GitHub organization. We intend to use that organization as we move to CNCF.

gorkem avatar May 08 '25 19:05 gorkem

/vote

linsun avatar May 13 '25 15:05 linsun

Vote created

@linsun has called for a vote on [Sandbox] ModelPack (#358).

The members of the following teams have binding votes:

Team
@cncf/cncf-toc-voters

Non-binding votes are also appreciated as a sign of support!

How to vote

You can cast your vote by reacting to this comment. The following reactions are supported:

In favor Against Abstain
👍 👎 👀

Please note that voting for multiple options is not allowed and those votes won't be counted.

The vote will be open for 2months 30days 2h 52m 48s. It will pass if at least 66% of the users with binding votes vote In favor 👍. Once it's closed, results will be published here as a new comment.

git-vote[bot] avatar May 13 '25 15:05 git-vote[bot]

/check-vote

caozhuozi avatar May 15 '25 23:05 caozhuozi

Vote status

So far 36.36% of the users with binding vote are in favor and 9.09% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
4 1 1 5

Binding votes (6)

User Vote Timestamp
dims In favor 2025-05-13 19:38:51.0 +00:00:00
linsun In favor 2025-05-13 15:36:09.0 +00:00:00
kevin-wangzefeng In favor 2025-05-14 13:22:24.0 +00:00:00
rochaporto In favor 2025-05-15 14:26:48.0 +00:00:00
chadbeaudin Abstain 2025-05-15 16:45:31.0 +00:00:00
angellk Against 2025-05-13 18:06:20.0 +00:00:00
@chira001 Pending
@kfaseela Pending
@TheFoxAtWork Pending
@jeremyrickard Pending
@kgamanji Pending

Non-binding votes (8)

User Vote Timestamp
tarilabs In favor 2025-05-13 15:56:41.0 +00:00:00
lmilbaum In favor 2025-05-13 16:10:14.0 +00:00:00
caniszczyk In favor 2025-05-14 1:05:16.0 +00:00:00
caozhuozi In favor 2025-05-14 1:45:12.0 +00:00:00
caldeirav In favor 2025-05-14 3:30:42.0 +00:00:00
Jwilliamsr In favor 2025-05-14 13:17:24.0 +00:00:00
rhdcaspin In favor 2025-05-14 19:41:38.0 +00:00:00
sabre1041 In favor 2025-05-15 6:45:15.0 +00:00:00

git-vote[bot] avatar May 15 '25 23:05 git-vote[bot]

/check-vote

caozhuozi avatar May 16 '25 23:05 caozhuozi

Votes can only be checked once a day.

git-vote[bot] avatar May 16 '25 23:05 git-vote[bot]

/check-vote

gorkem avatar May 19 '25 19:05 gorkem

Vote status

So far 45.45% of the users with binding vote are in favor and 9.09% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
5 1 1 4

Binding votes (7)

User Vote Timestamp
kfaseela In favor 2025-05-16 10:28:50.0 +00:00:00
angellk Against 2025-05-13 18:06:20.0 +00:00:00
linsun In favor 2025-05-13 15:36:09.0 +00:00:00
kevin-wangzefeng In favor 2025-05-14 13:22:24.0 +00:00:00
rochaporto In favor 2025-05-15 14:26:48.0 +00:00:00
chadbeaudin Abstain 2025-05-15 16:45:31.0 +00:00:00
dims In favor 2025-05-13 19:38:51.0 +00:00:00
@chira001 Pending
@TheFoxAtWork Pending
@jeremyrickard Pending
@kgamanji Pending

Non-binding votes (8)

User Vote Timestamp
tarilabs In favor 2025-05-13 15:56:41.0 +00:00:00
lmilbaum In favor 2025-05-13 16:10:14.0 +00:00:00
caniszczyk In favor 2025-05-14 1:05:16.0 +00:00:00
caozhuozi In favor 2025-05-14 1:45:12.0 +00:00:00
caldeirav In favor 2025-05-14 3:30:42.0 +00:00:00
Jwilliamsr In favor 2025-05-14 13:17:24.0 +00:00:00
rhdcaspin In favor 2025-05-14 19:41:38.0 +00:00:00
sabre1041 In favor 2025-05-15 6:45:15.0 +00:00:00

git-vote[bot] avatar May 19 '25 19:05 git-vote[bot]

Votes can only be checked once a day.

git-vote[bot] avatar May 20 '25 12:05 git-vote[bot]

/check-vote

Jwilliamsr avatar May 21 '25 12:05 Jwilliamsr

Vote status

So far 54.55% of the users with binding vote are in favor and 18.18% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
6 2 1 2

Binding votes (9)

User Vote Timestamp
angellk Against 2025-05-13 18:06:20.0 +00:00:00
linsun In favor 2025-05-13 15:36:09.0 +00:00:00
kfaseela In favor 2025-05-16 10:28:50.0 +00:00:00
chira001 In favor 2025-05-21 11:10:49.0 +00:00:00
dims In favor 2025-05-13 19:38:51.0 +00:00:00
chadbeaudin Abstain 2025-05-15 16:45:31.0 +00:00:00
kevin-wangzefeng In favor 2025-05-14 13:22:24.0 +00:00:00
jeremyrickard Against 2025-05-20 20:59:21.0 +00:00:00
rochaporto In favor 2025-05-15 14:26:48.0 +00:00:00
@TheFoxAtWork Pending
@kgamanji Pending

Non-binding votes (8)

User Vote Timestamp
tarilabs In favor 2025-05-13 15:56:41.0 +00:00:00
lmilbaum In favor 2025-05-13 16:10:14.0 +00:00:00
caniszczyk In favor 2025-05-14 1:05:16.0 +00:00:00
caozhuozi In favor 2025-05-14 1:45:12.0 +00:00:00
caldeirav In favor 2025-05-14 3:30:42.0 +00:00:00
Jwilliamsr In favor 2025-05-14 13:17:24.0 +00:00:00
rhdcaspin In favor 2025-05-14 19:41:38.0 +00:00:00
sabre1041 In favor 2025-05-15 6:45:15.0 +00:00:00

git-vote[bot] avatar May 21 '25 12:05 git-vote[bot]

Just to comment on why this isn't part of the OCI since it has come up in some discussions: https://opencontainers.org

The OCI can be thought of a trailing spec body, it doesn't do experimentation and really only adopts things that have been baked for awhile and in production (docker registry -> distribution spec, docker image -> image spec etc). I could see a future where OCI adopts the output of ModelPack but there is too much experimentation in this space to have it formalized in OCI at this point. I could see a future where this work influences the OCI image/distribution specs but not right now.

caniszczyk avatar May 21 '25 16:05 caniszczyk

Just to comment on why this isn't part of the OCI since it has come up in some discussions: https://opencontainers.org

The OCI can be thought of a trailing spec body, it doesn't do experimentation and really only adopts things that have been baked for awhile and in production (docker registry -> distribution spec, docker image -> image spec etc). I could see a future where OCI adopts the output of ModelPack but there is too much experimentation in this space to have it formalized in OCI at this point. I could see a future where this work influences the OCI image/distribution specs but not right now.

OCI could have had experimental extensions approach

s3rj1k avatar May 21 '25 16:05 s3rj1k

I agree that OCI can explore experimental extensions.

Also, I'd love to see this project apply as a subproject in the new TAG structure if this vote does not pass.

angellk avatar May 21 '25 19:05 angellk

/check-vote

Jwilliamsr avatar May 22 '25 13:05 Jwilliamsr

Vote status

So far 54.55% of the users with binding vote are in favor and 18.18% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
6 2 1 2

Binding votes (9)

User Vote Timestamp
dims In favor 2025-05-13 19:38:51.0 +00:00:00
kfaseela In favor 2025-05-16 10:28:50.0 +00:00:00
rochaporto In favor 2025-05-15 14:26:48.0 +00:00:00
angellk Against 2025-05-13 18:06:20.0 +00:00:00
jeremyrickard Against 2025-05-20 20:59:21.0 +00:00:00
linsun In favor 2025-05-13 15:36:09.0 +00:00:00
chira001 In favor 2025-05-21 11:10:49.0 +00:00:00
chadbeaudin Abstain 2025-05-15 16:45:31.0 +00:00:00
kevin-wangzefeng In favor 2025-05-14 13:22:24.0 +00:00:00
@TheFoxAtWork Pending
@kgamanji Pending

Non-binding votes (8)

User Vote Timestamp
tarilabs In favor 2025-05-13 15:56:41.0 +00:00:00
lmilbaum In favor 2025-05-13 16:10:14.0 +00:00:00
caniszczyk In favor 2025-05-14 1:05:16.0 +00:00:00
caozhuozi In favor 2025-05-14 1:45:12.0 +00:00:00
caldeirav In favor 2025-05-14 3:30:42.0 +00:00:00
Jwilliamsr In favor 2025-05-14 13:17:24.0 +00:00:00
rhdcaspin In favor 2025-05-14 19:41:38.0 +00:00:00
sabre1041 In favor 2025-05-15 6:45:15.0 +00:00:00

git-vote[bot] avatar May 22 '25 13:05 git-vote[bot]

Votes can only be checked once a day.

git-vote[bot] avatar May 23 '25 12:05 git-vote[bot]

/check-vote

caozhuozi avatar May 23 '25 23:05 caozhuozi

Vote status

So far 54.55% of the users with binding vote are in favor and 18.18% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
6 2 1 2

Binding votes (9)

User Vote Timestamp
linsun In favor 2025-05-13 15:36:09.0 +00:00:00
rochaporto In favor 2025-05-15 14:26:48.0 +00:00:00
chadbeaudin Abstain 2025-05-15 16:45:31.0 +00:00:00
kfaseela In favor 2025-05-16 10:28:50.0 +00:00:00
jeremyrickard Against 2025-05-20 20:59:21.0 +00:00:00
dims In favor 2025-05-13 19:38:51.0 +00:00:00
chira001 In favor 2025-05-21 11:10:49.0 +00:00:00
angellk Against 2025-05-13 18:06:20.0 +00:00:00
kevin-wangzefeng In favor 2025-05-14 13:22:24.0 +00:00:00
@TheFoxAtWork Pending
@kgamanji Pending

Non-binding votes (9)

User Vote Timestamp
tarilabs In favor 2025-05-13 15:56:41.0 +00:00:00
lmilbaum In favor 2025-05-13 16:10:14.0 +00:00:00
caniszczyk In favor 2025-05-14 1:05:16.0 +00:00:00
caozhuozi In favor 2025-05-14 1:45:12.0 +00:00:00
caldeirav In favor 2025-05-14 3:30:42.0 +00:00:00
Jwilliamsr In favor 2025-05-14 13:17:24.0 +00:00:00
rhdcaspin In favor 2025-05-14 19:41:38.0 +00:00:00
sabre1041 In favor 2025-05-15 6:45:15.0 +00:00:00
gaius-qi In favor 2025-05-23 17:42:40.0 +00:00:00

git-vote[bot] avatar May 23 '25 23:05 git-vote[bot]