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

updating my fork - take 2 #35

Merged
merged 9 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-deploy-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
fetch-depth: 0 # Not needed if lastUpdated is not enabled
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/next-container-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1

- name: Login to ghcr.io
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
Expand All @@ -37,11 +37,11 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Build and push base Kit container
id: build-kit-container
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
platforms: linux/amd64,linux/arm64
push: true
Expand All @@ -58,7 +58,7 @@ jobs:

- name: Build and push Kit init container
id: build-kit-init-container
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
platforms: linux/amd64,linux/arm64
push: true
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/platform-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

## install build dependencies for frontend generation
- name: Install Node.js
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:
./build/scripts/sign ./dist/kitops-darwin-arm64.zip
./build/scripts/sign ./dist/kitops-darwin-x86_64.zip
- name: Upload macOS artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1
with:
name: dist-macos
if-no-files-found: error
Expand All @@ -93,7 +93,7 @@ jobs:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
Expand All @@ -109,7 +109,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Windows artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1
with:
name: dist-windows
if-no-files-found: error
Expand All @@ -121,7 +121,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
Expand All @@ -138,7 +138,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Linux artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1
with:
name: dist-linux
if-no-files-found: error
Expand Down Expand Up @@ -195,7 +195,7 @@ jobs:
gh release create "${release_args[@]}"

- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Generate CLI documentation
shell: bash
Expand Down Expand Up @@ -229,7 +229,7 @@ jobs:
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1
uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1

- name: Login to ghcr.io
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
Expand All @@ -239,11 +239,11 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Build and push base Kit container
id: build-kit-container
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
platforms: linux/amd64,linux/arm64
push: true
Expand All @@ -261,7 +261,7 @@ jobs:

- name: Build and push Kit init container
id: build-kit-init-container
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
with:
platforms: linux/amd64,linux/arm64
push: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1

- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
Expand Down Expand Up @@ -105,7 +105,7 @@ jobs:
fi

- name: Upload build artifacts
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4.4.1
with:
name: pr-artifacts-${{ matrix.os }}
retention-days: 3
Expand Down
25 changes: 12 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fjozu-ai%2Fkitops&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)](https://hits.seeyoufarm.com)

[![Official Website](<https://img.shields.io/badge/-Visit%20the%20Official%20Website%20%E2%86%92-rgb(255,175,82)?style=for-the-badge>)](https://kitops.ml?utm_source=github&utm_medium=kitops-readme)
[![Use Cases](<https://img.shields.io/badge/-KitOps%20Quick%20Start%20%E2%86%92-rgb(122,140,225)?style=for-the-badge>)](https://kitops.ml/docs/quick-start.html?utm_source=github&utm_medium=kitops-readme)

[![Use Cases](<https://img.shields.io/badge/-KitOps%20Quick%20Start%20%E2%86%92-rgb(122,140,225)?style=for-the-badge>)](https://kitops.ml/docs/get-started.html?utm_source=github&utm_medium=kitops-readme)

### What is KitOps?

Expand All @@ -29,7 +30,7 @@ For our friends in the EU - ModelKits are the perfect way to create a library of

### 🎉 New

Get the most out of KitOps' ModelKits by using them with the **[Jozu Hub](https://jozu.ml/discover)** repository. Or, continue using ModelKits with your existing OCI registry (even on-premises and air-gapped).
Get the most out of KitOps' ModelKits by using them with the **[Jozu Hub](https://jozu.ml/)** repository. Or, continue using ModelKits with your existing OCI registry (even on-premises and air-gapped).


### Features
Expand All @@ -40,34 +41,32 @@ Get the most out of KitOps' ModelKits by using them with the **[Jozu Hub](https:
* 🪛 **[LLM fine-tuning](https://dev.to/kitops/fine-tune-your-first-large-language-model-llm-with-lora-llamacpp-and-kitops-in-5-easy-steps-1g7f):** Use KitOps to fine-tune a large language model using LoRA.
* 🎯 **[RAG pipelines](https://www.codeproject.com/Articles/5384392/A-Step-by-Step-Guide-to-Building-and-Distributing):** Create a RAG pipeline for tailoring an LLM with KitOps.
* 🔒 **[Tamper-proofing](https://kitops.ml/docs/modelkit/spec.html):** Each ModelKit package includes a SHA digest for itself, and every artifact it holds.
* 📝 **[Artifact signing](./docs/src/docs/next-steps.md):** ModelKits and their assets can be signed so you can be confident of their provenance.
* 📝 **[Artifact signing](https://kitops.ml/docs/next-steps.html):** ModelKits and their assets can be signed so you can be confident of their provenance.
* 🌈 **[Standards-based](https://kitops.ml/docs/modelkit/compatibility.html):** Store ModelKits in any OCI 1.1-compliant container or artifact registry.
* 🥧 **[Simple syntax](https://kitops.ml/docs/kitfile/kf-overview.html):** Kitfiles are easy to write and read, using a familiar YAML syntax.
* 🩰 **[Flexible](https://kitops.ml/docs/kitfile/format.html#model):** Reference base models using `model parts`, or store key-value pairs (or any YAML-compatible JSON data) in your Kitfile - use it to keep features, hyperparameters, links to MLOps tool experiments, or validation output.
* 🏃‍♂️‍➡️ **[Run locally](./docs/src/docs/dev-mode.md):** Kit's Dev Mode lets you run an LLM locally, configure it, and prompt/chat with it instantly.
* 🤗 **Universal:** ModelKits can be used with any AI, ML, or LLM project - even multi-modal models.
* 🐳 **Deploy containers:** Generate a Docker container as part of your `kit unpack` (coming soon).
* 🚢 **Kubernetes-ready:** Generate a Kubernetes / KServe deployment config as part of your `kit unpack` (coming soon).
* 🩰 **[Flexible](./docs/src/docs/kitfile/format.md):** Store key-value pairs, or any YAML-compatible JSON data in your Kitfile - use it to keep features, hyperparameters, links to MLOps tool experiments our validation output...whatever you want!
* 🤗 **Universal:** ModelKits can be used with any AI, ML, or LLM project - even multi-modal models.

### See KitOps in Action

There's a video of KitOps in action on the [KitOps site](https://kitops.ml/).

### What is in the box?

**[ModelKit](./docs/src/docs/modelkit/intro.md):** At the heart of KitOps is the ModelKit, an OCI-compliant packaging format for sharing all AI project artifacts: datasets, code, configurations, and models. By standardizing the way these components are packaged, versioned, and shared, ModelKits facilitate a more streamlined and collaborative development process that is compatible with any MLOps or DevOps tool.

**[Kitfile](./docs/src/docs/kitfile/kf-overview.md):** A ModelKit is defined by a Kitfile - your AI/ML project's blueprint. It uses YAML to describe where to find each of the artifacts that will be packaged into the ModelKit. Reading the Kitfile gives you a quick understanding of what's involved in each AI project.
**[ModelKit](https://kitops.ml/docs/modelkit/intro.html):** At the heart of KitOps is the ModelKit, an OCI-compliant packaging format for sharing all AI project artifacts: datasets, code, configurations, and models. By standardizing the way these components are packaged, versioned, and shared, ModelKits facilitate a more streamlined and collaborative development process that is compatible with any MLOps or DevOps tool.

**[Kit CLI](./docs/src/docs/cli/cli-reference.md):** The Kit CLI not only enables users to create, manage, run, and deploy ModelKits -- it lets you pull only the pieces you need. Just need the serialized model for deployment? Use `unpack --model`, or maybe you just want the training datasets? `unpack --datasets`.
**[Kitfile](https://kitops.ml/docs/kitfile/kf-overview.html):** A ModelKit is defined by a Kitfile - your AI/ML project's blueprint. It uses YAML to describe where to find each of the artifacts that will be packaged into the ModelKit. The Kitfile outlines what each part of the project is.

You can pull pre-built ModelKits from [Jozu Hub](https://jozu.ml/discover).
**[Kit CLI](https://kitops.ml/docs/cli/cli-reference.html):** The Kit CLI not only enables users to create, manage, run, and deploy ModelKits -- it lets you pull only the pieces you need. Just need the serialized model for deployment? Use `unpack --model`, or maybe you just want the training datasets? `unpack --datasets`.

## 🚀 Try KitOps in under 15 Minutes

1. [Install the CLI](./docs/src/docs/cli/installation.md) for your platform.
2. Follow the [ Quick Start](https://kitops.ml/docs/quick-start.html) to learn to pack, unpack, and share a ModelKit.
3. Test out one of our ModelKit Quick Starts which include everything thing you need to run your model including a codebase, dataset, documentation, and of course the model.
1. [Install the CLI](https://kitops.ml/docs/cli/installation.html) for your platform.
2. Follow the [Getting Started](https://kitops.ml/docs/get-started.html) docs to learn to pack, unpack, and share a ModelKit.
3. Test drive one of our [ModelKit Quick Starts](https://jozu.ml/organization/jozu-quickstarts) that include everything thing you need to run your model including a codebase, dataset, documentation, and of course the model.

- [Meta LLama 3.1](https://jozu.ml/repository/jozu/llama3.1-8b)
- [Google Gemma](https://jozu.ml/repository/jozu/gemma-7b)
Expand Down
61 changes: 26 additions & 35 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,61 +9,52 @@ As a public community project the KitOps roadmap is always open to feedback. If
## Roadmap
🛳️ = Shipped

🏃‍➡️= In-progress
🚗 = In-progress

### ModelKit Chaining 🛳️
📅 = Planned

A ModelKit can refer to another ModelKit's model as its "base model." This is useful for situations where a user wants to take an existing model (e.g., Llama 3) but create their own model based on it. The new ModelKit would include a reference to the Llama 3 ModelKit and Kit would understand to pull both when the user asks for the new ModelKit.
💡 = Idea (please provide feedback)

* Add chaining to ModelKit schema
* Add support for chaining to relevant Kit CLI commands
### Dev Mode Improvements

### Dev Mode 🏃‍➡️
* Change `kit dev` implementation to use [Llamafile](https://github.com/Mozilla-Ocho/llamafile?tab=readme-ov-file) 📅
* Export [Llamafile](https://github.com/Mozilla-Ocho/llamafile?tab=readme-ov-file) from ModelKit 📅
* Generate example code as the parameters and prompts are entered 💡
* A way to see JSON communicated between the server and responses 💡
* Hide the parameters that are not frequently changed 💡
* Add `kit dev` command to Kit CLI on *Windows* 💡
* Add `kit dev` command to Kit CLI on *Linux* 💡

Users can run a ModelKit packaged LLM on localhost and interact with it via chat or prompt through a beautiful and user-friendly UI. This speeds up running, testing, and integrating LLMs with applications.
### Tutorials

* Design UX for chat, prompt, and parameter interactions 🛳️
* Code UI for interactions focused on desktop form factor 🛳️
* Create ModelKits for popular LLMs 🛳️
* Add `dev` command to Kit CLI on *MacOS* 🛳️
* Generate example code as the parameters and prompts are entered 🏃‍➡️
* A way to see JSON communicated between the server and responses 🏃‍➡️
* Hide the parameters that are not frequently changed 🏃‍➡️
* Add `dev` command to Kit CLI on *Windows* (TBC)
* Add `dev` command to Kit CLI on *Linux* (TBC)
#### Demos

### Tutorials 🏃‍➡️
* Creating a ModelKit from a Jupyter Notebook 📅

Users can learn how to use ModelKits as part of a RAG pipeline, or while fine-tuning their LLM. Helps people get the most value out of ModelKits during their LLM development work.

* Tutorial: Fine-tuning LLMs using KitOps 🚢
* Tutorial: Doing RAG with KitOps 🏃‍➡️

### Signing 🏃‍➡️
### Signing

Users can optionally sign their ModelKit using something like Cosign in order to add an extra layer of security to their packaging.

* Decide on a signing utility 🏃‍➡️
* Add signing to Kit CLI 🏃‍➡️
* Add docs on signing and verifying to docs 🏃‍➡️

### Workflow Documentation 🏃‍➡️
* Add docs on signing and verifying to docs 🛳️
* Decide on a signing utility 💡
* Add signing to Kit CLI 💡

To help users understand how ModelKits fit into their existing workflows we will create documentation explaining how CI/CD/CT, observability, and other tasks can be simplified with KitOps.

### Deployment
### Deployment 💡

Users want to be able to deploy their models through existing CI/CD/CT pipelines. Since KitOps doesn't know the details of a user's deployment pipeline or process we will `unpack` a ModelKit into an appropriate directory structure for one of several deployment targets.

### CLI Distribution

Users want to be able to get the Kit CLI from locations like Brew, Choco, and Conda.

* Add support for Brew 🚗
* Create a Kit Python library 💡
* Add support for Choco 💡
* Add support for Conda 💡

### Attestation

This feature will come in two parts: build attestation and self-attestation. Build attestations will be done by KitOps itself, adding a SLSA attestation about how the ModelKit was built. ModelKit creators can add an optional attestation for specific assets in the ModelKit, or the whole ModelKit. Users can include any 3rd party attestation Verification Summary Attestation (VSA). Additional attestations could be added as predicates. Attestation would be included as a separate layer in the ModelKit.

* Add attestation for KitOps ModelKit builds
* Add mechanism for adding attestations to ModelKits
* Update CLI to make use of attestations
* Add CLI warnings if attestation was expected and not found
* Add provenance for KitOps ModelKit builds 💡
* Add CLI warnings if attestation was expected and not found 💡
6 changes: 3 additions & 3 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export default defineConfig({

// Top navigation
nav: [
{ text: 'Get Started?', activeMatch: '^/#getstarted', link: '/docs/quick-start.html' },
{ text: 'Get Started?', activeMatch: '^/#getstarted', link: '/docs/get-started.html' },
{ text: 'How does it work?', activeMatch: `^/#howdoesitwork`, link: '/#howdoesitwork' },
{ text: 'Docs', activeMatch: `^/docs`, link: '/docs/overview' },
{ text: 'Blog', activeMatch: `^/blog`, link: '/blog' },
Expand All @@ -61,7 +61,7 @@ export default defineConfig({
text: 'Getting started',
items: [
{ text: 'Overview', link: '/docs/overview' },
{ text: 'Quick Start', link: '/docs/quick-start' },
{ text: 'Get Started', link: '/docs/get-started' },
{ text: 'Next Steps', link: '/docs/next-steps' },
{ text: 'Kit Dev', link: '/docs/dev-mode' },
{ text: 'Why KitOps?', link: '/docs/why-kitops' },
Expand All @@ -74,7 +74,7 @@ export default defineConfig({
items: [
{ text: 'Overview', link: '/docs/modelkit/intro' },
{ text: 'Specification', link: '/docs/modelkit/spec' },
{ text: 'Pre-built ModelKits', link: '/docs/modelkit/prebuilt-modelkits' },
{ text: 'ModelKit Quick Starts', link: 'https://jozu.ml/organization/jozu-quickstarts' },
{ text: 'Compatibility', link: '/docs/modelkit/compatibility' },
]
},
Expand Down
Loading