Skip to content

Commit 88f6bd4

Browse files
authored
Merge branch 'main' into doc-precision
2 parents c365dcc + c760cf4 commit 88f6bd4

5 files changed

Lines changed: 139 additions & 19 deletions

File tree

.github/workflows/stale.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Close stale issues and PRs
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "0 0 * * *"
7+
8+
permissions:
9+
issues: write
10+
pull-requests: write
11+
12+
jobs:
13+
stale:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
17+
id: stale
18+
with:
19+
delete-branch: true
20+
days-before-close: 7
21+
days-before-stale: 40
22+
days-before-pr-close: 7
23+
days-before-pr-stale: 40
24+
stale-issue-label: "stale"
25+
exempt-issue-labels: bug,wip,on-hold
26+
exempt-pr-labels: bug,wip,on-hold
27+
exempt-all-milestones: true
28+
stale-issue-message: 'This issue is stale because it has been open 40 days with no activity.'
29+
close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.'
30+
stale-pr-message: 'This PR is stale because it has been open 40 days with no activity.'
31+
close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.'

GOVERNANCE.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Project Governance
2+
3+
The ModelSpec project is dedicated to creating a universal, vendor-neutral standard for packaging, versioning, and running AI/ML projects that aligns with the OCI specification. The ModelSpec is especially important for organizations who are self-hosting models (open source, or self-built) and want to be able to use the tools and processes they've proven with containers, to manage their AI/ML project lifecycle.
4+
5+
This is not an implementation, it is the specification on which compliant implementations can be built.
6+
7+
This governance document explains how the project is run.
8+
9+
- [Values](#values)
10+
- [Maintainers](#maintainers)
11+
- [Becoming a Maintainer](#becoming-a-maintainer)
12+
- [Meetings](#meetings)
13+
- [Code of Conduct Enforcement](#code-of-conduct)
14+
- [Modifications](#modifying-this-charter)
15+
16+
## Values
17+
18+
The ModelSpec project leadership embraces the following values:
19+
20+
- **Openness**: Communication and decision-making happens in the open and is discoverable for future reference. As much as possible, all discussions and work take place in public forums and open repositories.
21+
22+
- **Fairness**: All stakeholders have the opportunity to provide feedback and submit contributions, which will be considered on their merits.
23+
24+
- **Community over Product or Company**: Sustaining and growing our community takes priority over shipping code or sponsors' organizational goals. Each contributor participates in the project as an individual.
25+
26+
- **Inclusivity**: We innovate through different perspectives and skill sets, which can only be accomplished in a welcoming and respectful environment.
27+
28+
- **Participation**: Responsibilities within the project are earned through participation, and there is a clear path up the contributor ladder into leadership positions.
29+
30+
## Maintainers
31+
32+
ModelSpec maintainers have write access to the [project GitHub repository](https://github.com/modelpack/model-spec). They can merge patches and are expected to review large or critical patches personally. The current maintainers can be found in [MAINTAINERS.md](./MAINTAINERS.md). Maintainers collectively manage the project's resources and contributors.
33+
34+
This privilege is granted with some expectation of responsibility: maintainers are people who care about the ModelSpec project and want to help it grow and improve. A maintainer is not just someone who can make changes, but someone who has demonstrated good judgement and an ability to collaborate with the team, get the most knowledgeable people to review code and docs, contribute high-quality code, and follow through to fix issues (in code or tests).
35+
36+
A maintainer is a contributor to the project's success and a citizen helping the project succeed.
37+
38+
The collective team of all Maintainers is known as the **Maintainer Council**, which is the governing body for the project.
39+
40+
### Becoming a Maintainer
41+
42+
To become a Maintainer you need to demonstrate the following:
43+
44+
- **Commitment to the project**:
45+
- Participate actively and impactfully in discussions, contributions, code and documentation reviews `this will need quantifying eventually`
46+
- Perform useful reviews for a significant number of non-trivial pull requests `this will need quantifying eventually`
47+
- Contribute non-trivial pull requests and have them merged `this will need quantifying eventually`
48+
- Ability to write quality code and/or documentation
49+
- Ability to collaborate with the team
50+
- Understanding of how the team works (policies, processes for testing and code review, etc)
51+
- Understanding of the project's code base and coding and documentation style
52+
53+
A new Maintainer must be proposed by an existing maintainer by opening an issue with the title "New Maintainer Proposal". A 2/3 vote of existing Maintainers approves the application. Maintainers nominations will be evaluated without prejudice to employer or demographics.
54+
55+
Maintainers who are selected will be granted the necessary GitHub rights.
56+
57+
### Removing a Maintainer
58+
59+
Maintainers may resign at any time if they feel that they will not be able to continue fulfilling their project duties.
60+
61+
Maintainers may also be removed after being inactive, failing to fulfill their Maintainer responsibilities, violating the [Code of Conduct](./code-of-conduct.md), or other reasons. Inactivity is defined as a period of very low or no activity in the project for a year or more, with no definite schedule to return to full Maintainer activity.
62+
63+
A Maintainer may be removed at any time by a 2/3 vote of the remaining maintainers.
64+
65+
Depending on the reason for removal, a Maintainer may be converted to **Emeritus** status. Emeritus Maintainers will still be consulted on some project matters and can be rapidly returned to Maintainer status if their availability changes.
66+
67+
## Meetings
68+
69+
Time zones permitting, Maintainers are expected to participate in the ModelSpec office hours virtual meeting, which occurs bi-weekly on Thursday at 10:00ET.
70+
71+
### ModelSpec Public Office Hours (bi-weekly)
72+
73+
**Every second Thursday @ 14:00 - 15:00**
74+
**Time zone**: UTC
75+
**Video call link**: [Zoom](https://us06web.zoom.us/j/89085916734?pwd=dBaeMvmg9SyWvWj5Caf2i1bNaCf2oJ.1)
76+
**Meeting ID**: 890 8591 6734
77+
**Passcode**: 274899
78+
79+
Maintainers may also have closed meetings in order to discuss sensitive matters or Code of Conduct violations. Such meetings should be scheduled by any Maintainer on receipt of a CoC report. All current Maintainers must be invited to such closed meetings, except for any Maintainer who is accused of a CoC violation.
80+
81+
## Code of Conduct
82+
83+
Everything we do in the ModelSpec community is governed by our [Code of Conduct](./code-of-conduct.md). Violations by community members will be discussed and resolved by the Maintainers in their private Discord channel. If a Maintainer is directly involved in the report, the Maintainers will instead designate two Maintainers to resolve the issue.
84+
85+
## Modifying this Charter
86+
87+
Changes to this Governance and its supporting documents may be approved by a 2/3 vote of the Maintainers.

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ Apache 2.0 License. Please see [LICENSE](LICENSE) for more information.
2525

2626
## Community, Support, Discussion
2727

28-
You can engage with this project by joining the discussion on our Slack channel: [#model-spec-discussion](https://cloud-native.slack.com/archives/C07T0V480LF) in the [CNCF Slack workspace](https://slack.cncf.io/).
28+
You can engage with this project by joining the discussion on our Slack channel: [#modelpack](https://cloud-native.slack.com/archives/C07T0V480LF) in the [CNCF Slack workspace](https://slack.cncf.io/).
29+
30+
This project holds inclusivity, empathy, and responsibility at our core. We follow the CNCF's [Code of Conduct](./code-of-conduct.md), you can read it to understand the values guiding our community.
31+
32+
The rules governing this project can be found in the [Governance policy document](./GOVERNANCE.md)
2933

3034
## Contributing
3135

3236
Any feedback, suggestions, and contributions are welcome. Please feel free to open an issue or pull request.
3337

3438
Especially, we look forward to integrating the model specification with different model registry implementations (like [Harbor](https://goharbor.io/) and [Kubeflow model registry](https://www.kubeflow.org/docs/components/model-registry/overview/)), as well as existing model centric infrastructure projects like [Huggingface](https://huggingface.co/), [KitOps](https://kitops.ml/), [Kubeflow](https://www.kubeflow.org/), [Lepton](https://www.lepton.ai/), [Ollama](https://github.com/ollama/ollama), [ORAS](https://oras.land/), and others.
35-
36-
Enjoy!

docs/config.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ The following terms are used in this section:
7777

7878
- **format** _string_, OPTIONAL
7979

80-
The format for the model, such as "onnx", "safetensors", or "pt".
80+
The format for the model, such as "onnx", "safetensors", "gguf", or "pt"(pytorch format).
8181

8282
- **paramSize** _string_, OPTIONAL
8383

@@ -139,31 +139,31 @@ The following terms are used in this section:
139139

140140
Must be set to "layers".
141141

142-
- **diff_ids** _array of strings_, REQUIRED
142+
- **diffIds** _array of strings_, REQUIRED
143143

144144
An array of layer content hashes (`DiffIDs`), in order from first to last.
145145

146146
- **capabilities** _object_, OPTIONAL
147147

148148
Special capabilities that the model supports, such as reasoning, toolusage, etc.
149149

150-
- **input_types** _array of string_, OPTIONAL
150+
- **inputTypes** _array of string_, OPTIONAL
151151

152152
Input types that the model supports, such as "text", "image", "audio", "video", etc.
153153

154-
- **output_types** _array of string_, OPTIONAL
154+
- **outputTypes** _array of string_, OPTIONAL
155155

156156
Output types that the model supports, such as "text", "image", "audio", "video", etc.
157157

158-
- **knowledge_cutoff** _string_, OPTIONAL
158+
- **knowledgeCutoff** _string_, OPTIONAL
159159

160160
The date and time of the datasets that the model was trained on, formatted as defined by [RFC 3339, section 5.6][rfc3339-s5.6].
161161

162162
- **reasoning** _boolean_, OPTIONAL
163163

164164
Whether the model can perform reasoning tasks.
165165

166-
- **tool_usage** _boolean_, OPTIONAL
166+
- **toolUsage** _boolean_, OPTIONAL
167167

168168
Whether the model can use external tools or APIs to perform tasks.
169169

@@ -198,21 +198,21 @@ Here is an example model artifact configuration JSON document:
198198
"precision": "fp16",
199199
"quantization": "gptq",
200200
"capabilities": {
201-
"input_types": [
201+
"inputTypes": [
202202
"text"
203203
],
204-
"output_types": [
204+
"outputTypes": [
205205
"text",
206206
"image"
207207
],
208-
"knowledge_cutoff": "2024-05-21T00:00:00Z",
208+
"knowledgeCutoff": "2024-05-21T00:00:00Z",
209209
"reasoning": true,
210-
"tool_usage": false
210+
"toolUsage": false
211211
}
212212
},
213213
"modelfs": {
214214
"type": "layers",
215-
"diff_ids": [
215+
"diffIds": [
216216
"sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
217217
"sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
218218
]

specs-go/v1/config.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ type ModelFS struct {
5050
Type string `json:"type"`
5151

5252
// DiffIDs is an array of layer content hashes (DiffIDs), in order from bottom-most to top-most.
53-
DiffIDs []digest.Digest `json:"diff_ids"`
53+
DiffIDs []digest.Digest `json:"diffIds"`
5454
}
5555

5656
// ModelDescriptor defines the general information of a model
@@ -109,20 +109,20 @@ const (
109109
// ModelCapabilities defines the special capabilities that the model supports
110110
type ModelCapabilities struct {
111111
// The model supports the following input types
112-
InputTypes []Modality `json:"input_types,omitempty"`
112+
InputTypes []Modality `json:"inputTypes,omitempty"`
113113

114114
// The model supports the following output types
115-
OutputTypes []Modality `json:"output_types,omitempty"`
115+
OutputTypes []Modality `json:"outputTypes,omitempty"`
116116

117117
// KnowledgeCutoff is the date of the datasets that the model was trained on, formatted as defined by RFC 3339
118-
KnowledgeCutoff *time.Time `json:"knowledge_cutoff,omitempty"`
118+
KnowledgeCutoff *time.Time `json:"knowledgeCutoff,omitempty"`
119119

120120
// Reasoning indicates whether the model can perform reasoning tasks
121121
Reasoning *bool `json:"reasoning,omitempty"`
122122

123123
// ToolUsage indicates whether the model can use external tools
124124
// such as a calculator, a search engine, etc.
125-
ToolUsage *bool `json:"tool_usage,omitempty"`
125+
ToolUsage *bool `json:"toolUsage,omitempty"`
126126
}
127127

128128
// Model defines the basic information of a model.

0 commit comments

Comments
 (0)