From 7ddd2f444306e6e65916b1e1a6c833527a646793 Mon Sep 17 00:00:00 2001 From: Brad Micklea <7644938+bmicklea@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:16:04 -0500 Subject: [PATCH 1/5] Draft doc updates * tweaked docs README * added more examples to usage.md * added a tool compatibility.md list * removed the KitOps installation doc in favour of the CLI installation which seemed sufficient --- README.md | 14 ++++-- demos/{sprint-24w6-demo.sh => demo.sh} | 0 docs/README.md | 6 +-- docs/src/docs/cli/installation.md | 2 + docs/src/docs/cli/usage.md | 47 +++++++++++++++++-- docs/src/docs/compatibility.md | 41 ++++++++++++++++ docs/src/docs/installation.md | 25 ---------- .../{manifest => kitfile}/building-running.md | 0 .../docs/{manifest => kitfile}/overview.md | 0 9 files changed, 99 insertions(+), 36 deletions(-) rename demos/{sprint-24w6-demo.sh => demo.sh} (100%) create mode 100644 docs/src/docs/compatibility.md delete mode 100644 docs/src/docs/installation.md rename docs/src/docs/{manifest => kitfile}/building-running.md (100%) rename docs/src/docs/{manifest => kitfile}/overview.md (100%) diff --git a/README.md b/README.md index 2cc1f77e..bd045ea0 100644 --- a/README.md +++ b/README.md @@ -13,15 +13,19 @@ We refer to the final package that the `kit` CLI builds based on the `kitfile` a Kit's aim is to streamline the end-to-end lifecycle of AI/ML model management, making it as effortless as managing containerized applications. -## Running Kit with Binaries +## Using Kit -You can download the Kit CLI using one of our [tagged versions](https://github.com/jozu-ai/kitops/tags). Make sure you get the right binary for your platform: +### Running Kit with Binaries + +You can download the Kit CLI using one of our [tagged versions](https://github.com/jozu-ai/kitops/tags). The `latest` tag is used for the latest tested and stable release. This is usually the best place to start. If you want to live on the cutting edge then `next` is the tag we use to for development builds. + +Make sure you get the right binary for your platform: * MacOS: TODO * Linux: TODO * Windows: TODO -We suggest renaming the executable once it's downloaded to just `kit` (make sure it's in your path an executable). +We suggest renaming the executable once it's downloaded to just `kit` then make sure it's in your path and executable. Run Kit by opening a terminal and typing: @@ -31,9 +35,9 @@ Run Kit by opening a terminal and typing: This will list all the commands you can use. -## Building and Running Kit from Source Code +### Building and Running Kit from Source Code -You can get the Kit CLI sources from our [tagged versions](https://github.com/jozu-ai/kitops/tags). +You can get the Kit CLI sources from our [tagged versions](https://github.com/jozu-ai/kitops/tags). The `latest` tag is used for the latest tested and stable release. This is usually the best place to start. If you want to live on the cutting edge then `next` is the tag we use to for development builds. ```shell go build -o kit diff --git a/demos/sprint-24w6-demo.sh b/demos/demo.sh similarity index 100% rename from demos/sprint-24w6-demo.sh rename to demos/demo.sh diff --git a/docs/README.md b/docs/README.md index aa9fc5d8..19d8805e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,7 @@ This is the documentation for [KitsOps](https://kitops.ml). You can read the doc ## Introduction -This documentation has been built using [VitePress](https://vitepress.dev/). VitePress is a fast static site generator for building modern documentations using Vue.js. For more information please refer to the [VitePress Website](https://vitepress.dev/). +This documentation has been built using [VitePress](https://vitepress.dev/). ## Development @@ -51,11 +51,11 @@ The documentation should now be available at `http://localhost:5173`. ## Contributing Guidelines -We welcome contributions from the community to help improve our project and documentation. Please follow these guidelines when contributing: +We welcome contributions from the community to help improve our project and documentation. Please read our [Guide to Contributing](../CONTRIBUTING.md) and follow these guidelines: ### Reporting Bugs and Issues -If you encounter any bugs or issues with the documentation, please report them in our [GitHub issue tracker](https://github.com/jozu-ai/kitops/issues). Be sure to provide clear details about the problem, including steps to reproduce if possible. +If you encounter any bugs or issues with the documentation, please report them in our [GitHub issue tracker](https://github.com/jozu-ai/kitops/issues) and add the `docs` label. Be sure to provide clear details about the problem, including steps to reproduce if possible. ### Submitting Pull Requests diff --git a/docs/src/docs/cli/installation.md b/docs/src/docs/cli/installation.md index 33174731..27680972 100644 --- a/docs/src/docs/cli/installation.md +++ b/docs/src/docs/cli/installation.md @@ -9,6 +9,8 @@ To begin, you will need to download the latest version of `kit`. You can find th [Download the latest `kit` release](https://github.com/jozu-ai/kitops/releases/latest) +Or, if you're feeling frisky try the cutting edge [`next` release](https://github.com/jozu-ai/kitops/releases/latest). Just remember that's not fully tested so YMMV. + #### Selecting the Correct Version for Your Platform Depending on your operating system and its architecture, you will need to download a specific build of `kit`. Below is a table to help you identify the correct file to download for your platform: diff --git a/docs/src/docs/cli/usage.md b/docs/src/docs/cli/usage.md index 447bfb60..19ed0632 100644 --- a/docs/src/docs/cli/usage.md +++ b/docs/src/docs/cli/usage.md @@ -8,23 +8,64 @@ The `kit CLI` is a tool to easily and quickly manage models. $ ./kit [command] ``` +You can always get help on a command by adding the `-h` flag. + Available Commands: | Command | Description | | ---- | --- | | `build` | Build a model | | `completion` | Generate the autocompletion script for the specified shell | +| `dev` | ??? | +| `export` | Extract only the model, dataset, code, or Kitfile from a ModelKit | | `help` | Help about any command | -| `login` | A brief description of your command | +| `login` | ??? | | `list` | List model kits | | `pull` | Pull model from registry | | `push` | Push model to registry | -| `version` | Display the version information for kit | +| `version` | Display the version information for Kit | ## Example -To list your available model kits you can do: +To list your available model kits: ```sh $ ./kit list ``` + +To build a ModelKit for your model: + +```sh +$ ./kit build ../examples/onnx -t localhost:5050/example-repo:example-tag" +``` + +Then you can push it to your registry: + +```sh +$ ./kit push localhost:5050/example-repo:example-tag --http +``` + +After you finish calling all your friends and telling them about Kit they can pull your model and run it: + +```sh +$ ./kit pull localhost:5050/test-repo:test-tag --http +$ ./kit dev +``` + +Maybe one of your friends only wants the dataset you used: + +```sh +$ ./kit export dataset +``` + +Another friend only needs the model so they can integrate it with their application: + +```sh +$ ./kit export model +``` + +To see the Kitfile associated with a ModelKit: + +```sh +$ ./kit export kitfile +``` diff --git a/docs/src/docs/compatibility.md b/docs/src/docs/compatibility.md new file mode 100644 index 00000000..70dba81a --- /dev/null +++ b/docs/src/docs/compatibility.md @@ -0,0 +1,41 @@ +# Compatible Tools + +The KitOps project is about smoothing the transition from AI/ML teams to production operations teams. We're not trying to change the tools each use, Kit just creates a package that every team can use with their preferred toolset. + +Kit packages up everything your AI/ML model needs to be integrated with application (or other models), run locally, or deployed to inference infrastructure. We use standards like JSON, YAML, OCI-assets, and TAR files so nearly everything is compatible with a ModelKit. This includes both common ML tools and standard DevOps toolchains. + +A few examples in alphabetical order: +* Amazon SageMaker, EKS, EC2, ECR, Fargate, Lambda, S3, etc... +* Azure ML, AKS, Cloud, Container Registry, etc... +* Circle CI +* Comet ML +* Databricks +* DataRobot +* Domino +* Docker +* Docker Hub +* DvC +* GitHub +* GitLab +* Google Vertex, GKS, GCP, Artifact Registry, etc... +* Hugging Face +* IBM Cloud, Cloud Container Regsitry +* JFrog Artifactory +* Jupyter notebooks +* Kubernetes / Kserve +* MLFlow +* Neptune.ai +* NVIDIA Triton +* OctoML +* Prefect +* Quay.io +* Ray +* Red Hat OpenShift +* Run.ai +* Seldon +* Tensorflow Hub +* VMware +* Weights & Biases +* ZenML + +If you've tried using Kit with your favourite tool and are having trouble, please open an issue in our GitHub repository. \ No newline at end of file diff --git a/docs/src/docs/installation.md b/docs/src/docs/installation.md deleted file mode 100644 index b888132a..00000000 --- a/docs/src/docs/installation.md +++ /dev/null @@ -1,25 +0,0 @@ -# Installation - -## Prerequisites - -Nobis maiores nisi asperiores minima hic. Nihil impedit quisquam. Ad et aspernatur dignissimos et rerum ut. Non consectetur id at. Aut sunt porro voluptate animi quis repellat. - -Corporis voluptates placeat repellat saepe ut exercitationem officiis est. In quia suscipit aut ad deserunt. Quia quaerat expedita earum nulla labore qui. Assumenda quos consequatur vero. In ratione error doloremque. - -Quam ex placeat maiores fugiat et corrupti et omnis. Sunt explicabo ipsum praesentium ut et quisquam voluptates voluptatem. Ut repudiandae modi corporis magni quasi. - -## How to install - -Eius ut id quisquam et quia fugiat. Quos quia et hic reprehenderit quasi doloremque nesciunt. Corrupti quos sit dolorem dignissimos ea iure. Eligendi non ea nisi numquam porro. - -Vero qui et maiores quibusdam odio et molestiae. Architecto ea et nulla ducimus nihil unde quae suscipit ut. Rerum ea sed. Vel nulla molestiae qui quaerat voluptatem provident vitae quia. - -Excepturi et eius ipsa occaecati rem. Fuga pariatur et sit reiciendis. Vel sunt et qui. Recusandae vel nesciunt voluptate perferendis reprehenderit. Ducimus dolores reprehenderit nihil dicta. - -## Your first command - -Minima possimus odio consequuntur quam quos tempore eveniet quis. Vel in facere vero deserunt aut libero eius. Qui aliquid velit aut ipsam aliquam. - -Necessitatibus exercitationem eum optio neque culpa. Debitis autem optio vel quam dolor est. Expedita aut ea. Expedita asperiores saepe qui commodi repellat perspiciatis aut error nobis. Quo sit aut illo recusandae et quod ut cupiditate. Eaque enim perferendis quia possimus. - -Qui dolore ut facere soluta omnis ea omnis. Ex est sunt eum omnis accusantium aut nisi totam. Consequatur id earum. Rerum nesciunt ullam perferendis expedita sapiente. diff --git a/docs/src/docs/manifest/building-running.md b/docs/src/docs/kitfile/building-running.md similarity index 100% rename from docs/src/docs/manifest/building-running.md rename to docs/src/docs/kitfile/building-running.md diff --git a/docs/src/docs/manifest/overview.md b/docs/src/docs/kitfile/overview.md similarity index 100% rename from docs/src/docs/manifest/overview.md rename to docs/src/docs/kitfile/overview.md From 4a9e99523b5cd8d144332b10087e57eeb432569a Mon Sep 17 00:00:00 2001 From: Brad Micklea <7644938+bmicklea@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:27:33 -0500 Subject: [PATCH 2/5] fixing the nav --- docs/.vitepress/config.mts | 27 ++++++++++--------- .../{building-running.md => benefits.md} | 2 +- docs/src/docs/why-kitops.md | 1 + 3 files changed, 16 insertions(+), 14 deletions(-) rename docs/src/docs/kitfile/{building-running.md => benefits.md} (98%) create mode 100644 docs/src/docs/why-kitops.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 6074b7f9..d338bead 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -53,7 +53,8 @@ export default defineConfig({ text: 'Getting started', items: [ { text: 'Overview', link: '/docs/overview' }, - { text: 'Installation', link: '/docs/installation' }, + { text: 'Installation', link: '/docs/cli/installation' }, + { text: 'Why KitOps?', link: '/docs/why-kitops' }, ] }, { @@ -65,25 +66,21 @@ export default defineConfig({ ] }, { - text: 'Manifest', + text: 'Kitfile', items: [ - { text: 'Overview', link: '/docs/manifest/overview' }, - { text: 'Structure', link: '/docs/manifest/overview' }, - { text: 'Building and running', link: '/docs/manifest/building-running' }, - { text: 'Creating a new model', link: '/' }, - { text: 'Training a model', link: '/' }, - { text: 'Strategies', link: '/' }, + { text: 'Structure', link: '/docs/kitfile/overview' }, + { text: 'Benefits', link: '/docs/kitfile/benefits' }, ] }, { text: 'MLOps with Kitfile', items: [ - { text: 'Continuos integration and deployment', link: '/docs/mlops/ci-cd' }, - { text: 'Monitoring and logging', link: '/docs/mlops/ci-cd' }, - { text: 'Orchestration', link: '/docs/mlops/ci-cd' }, - { text: 'Scalability and resources', link: '/docs/mlops/ci-cd' }, + { text: 'Kit and CI/CD', link: '/docs/mlops/ci-cd' }, + //{ text: 'Kit and model orchestration', link: '/docs/mlops/orchestration' }, + //{ text: 'Kit and registries', link: '/docs/mlops/registries' }, ] }, + /* { text: 'Advanced', items: [ @@ -93,12 +90,14 @@ export default defineConfig({ { text: 'Reinforcement and deep RL', link: '/docs/mlops/ci-cd' }, ] }, + */ { text: 'Contribute', items: [ { text: 'Contribute to KitOps docs', link: '/' } ] }, + /* { text: 'Documentation Examples', items: [ @@ -106,6 +105,7 @@ export default defineConfig({ { text: 'Runtime API Examples', link: '/api-examples' } ] } + */ ], socialLinks: [ @@ -121,7 +121,7 @@ export default defineConfig({ ariaLabel: 'JOzu Website' } ], - + /* footer: { license: { text: 'MIT License', @@ -129,5 +129,6 @@ export default defineConfig({ }, copyright: `Copyright © ${new Date().getFullYear()} Jozu` } + */ } }) diff --git a/docs/src/docs/kitfile/building-running.md b/docs/src/docs/kitfile/benefits.md similarity index 98% rename from docs/src/docs/kitfile/building-running.md rename to docs/src/docs/kitfile/benefits.md index 80b1ce80..86253cbc 100644 --- a/docs/src/docs/kitfile/building-running.md +++ b/docs/src/docs/kitfile/benefits.md @@ -1,4 +1,4 @@ -# Building and running +# Benefits Some introductory text here diff --git a/docs/src/docs/why-kitops.md b/docs/src/docs/why-kitops.md new file mode 100644 index 00000000..35a8f5a1 --- /dev/null +++ b/docs/src/docs/why-kitops.md @@ -0,0 +1 @@ +# Why Use KitOps? From c5de13398669d6adfa9aff87cb5a2ba664b6acfa Mon Sep 17 00:00:00 2001 From: Brad Micklea <7644938+bmicklea@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:13:47 -0500 Subject: [PATCH 3/5] Update usage.md --- docs/src/docs/cli/usage.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/src/docs/cli/usage.md b/docs/src/docs/cli/usage.md index 19ed0632..9469daea 100644 --- a/docs/src/docs/cli/usage.md +++ b/docs/src/docs/cli/usage.md @@ -14,20 +14,21 @@ Available Commands: | Command | Description | | ---- | --- | -| `build` | Build a model | +| `build` | Build a ModelKit | | `completion` | Generate the autocompletion script for the specified shell | -| `dev` | ??? | -| `export` | Extract only the model, dataset, code, or Kitfile from a ModelKit | +| `dev` | Run the serialized model | +| `fetch` | Updating the local respository for a ModelKit from the remote | | `help` | Help about any command | -| `login` | ??? | -| `list` | List model kits | -| `pull` | Pull model from registry | -| `push` | Push model to registry | +| `login` | Login to the remote repository | +| `logout` | Logout to the remote repository | +| `list` | List ModelKits | +| `pull` | Pull one or more of the model, dataset, code, and Kitfile into a destination folder | +| `push` | Push ModelKit to respository | | `version` | Display the version information for Kit | ## Example -To list your available model kits: +To list your available ModelKit: ```sh $ ./kit list @@ -45,27 +46,27 @@ Then you can push it to your registry: $ ./kit push localhost:5050/example-repo:example-tag --http ``` -After you finish calling all your friends and telling them about Kit they can pull your model and run it: +After you finish calling all your friends and telling them about Kit they can fetch your ModelKit and run it: ```sh -$ ./kit pull localhost:5050/test-repo:test-tag --http +$ ./kit fetch localhost:5050/test-repo:test-tag --http $ ./kit dev ``` Maybe one of your friends only wants the dataset you used: ```sh -$ ./kit export dataset +$ ./kit pull -filter dataset ``` Another friend only needs the model so they can integrate it with their application: ```sh -$ ./kit export model +$ ./kit pull -filter model ``` To see the Kitfile associated with a ModelKit: ```sh -$ ./kit export kitfile +$ ./kit pull -filter kitfile ``` From d1ac39cde3c8e948a4281d0815f005cbf17adc59 Mon Sep 17 00:00:00 2001 From: Brad Micklea <7644938+bmicklea@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:17:58 -0500 Subject: [PATCH 4/5] add two commands * added Remove and Tag commands --- docs/src/docs/cli/usage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/src/docs/cli/usage.md b/docs/src/docs/cli/usage.md index 9469daea..8d710d6e 100644 --- a/docs/src/docs/cli/usage.md +++ b/docs/src/docs/cli/usage.md @@ -24,6 +24,8 @@ Available Commands: | `list` | List ModelKits | | `pull` | Pull one or more of the model, dataset, code, and Kitfile into a destination folder | | `push` | Push ModelKit to respository | +| `remove` | Removed the ModelKit from the local repository | +| `tag` | Tags a ModelKit | | `version` | Display the version information for Kit | ## Example From 7d6942248d1ee138c8756964fa7b48c6a203492a Mon Sep 17 00:00:00 2001 From: Brad Micklea <7644938+bmicklea@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:33:09 -0500 Subject: [PATCH 5/5] Added use cases Wrote up use cases for KitOps that will be in docs, but also inform our video demos. --- docs/.vitepress/config.mts | 1 + docs/src/docs/kitfile/overview.md | 17 +---- docs/src/docs/use-cases.md | 115 ++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 15 deletions(-) create mode 100644 docs/src/docs/use-cases.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index d338bead..1d0ab811 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -54,6 +54,7 @@ export default defineConfig({ items: [ { text: 'Overview', link: '/docs/overview' }, { text: 'Installation', link: '/docs/cli/installation' }, + { text: 'Use Cases', link: '/docs/use-cases' }, { text: 'Why KitOps?', link: '/docs/why-kitops' }, ] }, diff --git a/docs/src/docs/kitfile/overview.md b/docs/src/docs/kitfile/overview.md index c4145974..98d78b6c 100644 --- a/docs/src/docs/kitfile/overview.md +++ b/docs/src/docs/kitfile/overview.md @@ -1,18 +1,5 @@ -# Manifest +# Kitfiles -## Kitfiles - -Ea modi dolore ut et sunt voluptates perferendis fuga dignissimos. Excepturi dolor dolor. Fuga est odit recusandae expedita aut adipisci recusandae. Ea facilis similique quibusdam illo adipisci quis nihil et. Sint at est commodi voluptatem. - -Repellendus deserunt natus harum dolorem ducimus quae quasi. Voluptate ipsa voluptatem beatae maxime possimus. Pariatur nemo aut dolorem dolor dignissimos quaerat tempore commodi quisquam. Aperiam voluptates aut. - -Iusto asperiores dolor voluptas. Quidem molestiae praesentium rerum similique recusandae eum placeat optio. Et rem expedita aliquid a minus magni tenetur sapiente. +Kitfiles be cool, bruh. ## Format - -Sequi sunt laboriosam quia error sequi et quibusdam. Similique rem perferendis reprehenderit distinctio voluptatum voluptatem officiis. Autem illum quod sit. Ut debitis accusantium numquam quisquam velit repellendus facilis est. Maiores voluptatem dolores qui qui quo provident dicta dolores quam. - -Nihil quod expedita adipisci deserunt rem sint. Recusandae dolorem est magnam assumenda rerum dolores rerum. Velit dolores soluta laborum blanditiis ipsum aspernatur sed harum autem. Quaerat velit tenetur error asperiores harum. Repellat veritatis ut enim et odio. - -Eum enim ea nesciunt illum et. Accusantium sit voluptate aspernatur quasi et eos. Quia voluptatem tempore dolores alias qui magni quod. Corrupti est laboriosam deserunt autem nulla quibusdam qui aut. - diff --git a/docs/src/docs/use-cases.md b/docs/src/docs/use-cases.md new file mode 100644 index 00000000..fe9cb3d3 --- /dev/null +++ b/docs/src/docs/use-cases.md @@ -0,0 +1,115 @@ +# Use Cases + +## Table of Contents + +* [Use Case Context](#use-case-context) +* Collaborating on an AI-Enabled Application for Production + * [AI/ML Team Collaboration](#aiml-team-collaboration) + * [AI/ML and App Team Collaboration](#aiml-and-app-team-collaboration) + * [AI/ML, App, and SRE Team Collaboration](#aiml-app-and-sre-team-collaboration) +* Collaborating on an Internal Model + * [AI/ML and SRE Team Collaboration](#aiml-and-sre-team-collaboration) + +## Use Case Context +Weyland-Yutani Corporation has been adding AI and ML models to its portfolio for both internal- and customer-facing deployment. There are three main groups that are involved in the development lifecycle for their AI/ML work: +* AI/ML Team, composed of data scientists, data engineers, and MLOps engineers. This specialized group builds, tunes, and validates the models that increasingly touch every aspect of the organization's work. +* Application Teams, composed of software and hardware engineers. This group builds the applications that the business and customers interact with - over time more and more of these applications are being integrated into the models the AI/ML team works on. +* SRE Team, composed of infrastructure, pipeline, and release specialists who make sure the models and applications are deployed quickly and safely. They also monitor all production applications to ensure security, correctness, availability, and performance. + +There has been a heated argument within Weyland-Yutani about how best to manage the collaboration, testing, and deployment nuances of AI/ML-integrated applications. Today, this is a friction-filled process that relies on significant manual effort from every team. Each team is often having to ask for help from other teams to prepare models for the work each needs to do, slowing down progress and introducing needless human errors. + +...but all that's about to change! (Hint: the change involves KitOps...surprise!) + +## AI/ML Team Collaboration + +Rajat is working on tuning an open source foundational model for his company. After several days of work in his Jupyter notebook, he has a model that is outperforming the old model they've been using in production. But before he alerts the App and SRE teams Rajat wants to have another data scientist try the model and verify his findings. + +Rajat adds two lines to the end of his Jupyter notebook to create a ModelKit for that will include the model, the datasets used for training and validation, the Jupyter notebook file with the code and context, and the Kitfile manifest and metadata: + +```sh +$ ./kit build -t corp-registry/app-model:challenger +$ ./kit push --http corp-registry/app-model:challenger +``` + +Now that the ModelKit is published on Weyland-Yutani's private corporate registry, others can quickly get what they need from the project. + +Rajat sends a note in Slack to his colleague Gorkem who also uses Juypter notebooks. He only needs the notebook file so he quickly runs: + +```sh +$ ./kit pull -filter code corp-registry/app-model:challenger +``` + +Gorkem loads Rajat's notebook file and runs through Rajat's tests. He Slacks him back congratulating him on a great model and the painless way he was able to share his work. + +Thanks KitOps! + +## AI/ML and App Team Collaboration + +Now that [Rajat and Gorkem have both agreed](#aiml-team-collaboration) that the newly trained model is a real challenger for production, they alert the Application Team who will need to do an integration test between their app and the model. + +Rajat Slacks the application team a heads-up, and Nida volunteers to kick off integration testing. She needs the model and hopes that Rajat included a validation dataset. Nida uses the Kit CLI's flexible pull command to only extract the new model's Kitfile and check whether there's a validation dataset included: + +```sh +$ ./kit pull -filter config corp-registry/app-model:challenger +``` + +After confirming that there _is_ a validation dataset, she pulls only the validation dataset from the ModelKit, saving her time and skipping the need to learn Rajat's repository and file structure: + +```sh +$ ./kit pull -filter dataset:validation -filter model corp-registry/app-model:challenger +``` + +The model arrives as a `.tar` which she can drop directly into her integration test pipeline along with the validation dataset. After 13 minutes the tests complete and show that the application functions correctly with the new model except for one API call. Nida quickly corrects the API bug and rebuilds the app, running a second integration test with the new model. This time everything passes. + +Nida is a bit of an introvert so the fact that she didn't need to ask anyone for help understanding where to find the assets she needed, and didn't need to repackage the serialized model contributed to her awesome afternoon (that and the fact that she brought her dog to work today). + +Thanks KitOps! + +## AI/ML, App, and SRE Team Collaboration + +When the second [integration pipeline that Nida kicked off](#aiml-and-app-team-collaboration) completed successfully it automatically notified Annika in the SRE team. Annika quickly looks over the integration test results and sees that the model and application are ready for deployment. She issues a PR to Weyland-Yutani's GitOps repository to kick off the production deployment pipeline in GitLab. + +Part of the GitOps automation calls the Kit CLI to extract only the model (saving a heap of time by not having to pull a +10GB dataset that isn't needed): + +```sh +$ ./kit pull -filter model corp-registry/app-model:challenger +``` + +The deployment pipeline does an A/B deployment of both the model and application to their Kubernetes environment in one of their smaller regions (using Kserve). Annika is quickly able to confirm that the Rajat's Challenger model does work more efficiently and accurately than the in-production Champion model. Over the next hour she progressively shifts customer traffic from Champion to Challenger and, once all traffic is going to the Champion, she undeploys Champion. At that point she triggers parallel deployments to the other regions and goes through the same A/B analysis in each to make sure that the behaviour is consistent across the galaxy where Weyland-Yutani's customers are found. + +Once the new Challenger model is taking all customer traffic in every galactic region, Annika retags the old Champion model with a version number, and tags the Challenger model as Champion: + +```sh +$ ./kit tag 1.0 corp-registry/app-model:champion +$ ./kit tag champion corp-registry/app-model:challenger +``` + +Once the deployment is complete across all galactic regions, Annika sends an update to the AI/ML, app, and executive teams. Weyland-Yutani's leadership is ecstatic because the new model will give their spaceships a better way to scan for alien lifeforms when they receive random deep space distress signals. Everyone involved gets cake, champagne, and a high-five from Ripley herself... + +Thanks KitOps! + +## AI/ML and SRE Team Collaboration + +Angel leads an internal data science team that builds models to help Weyland-Yutani's executives make faster and better decisions with the help of AI/ML models. Their team was asked in the most recent monthly business review to identify all the customers they have who might be a churn risk based on the set of common traits and behaviours seen in all churned customers over the last five years. + +After a few days work, Angel's team is done. They build a ModelKit so their new model can easily be deployed: + +```sh +$ ./kit build -t corp-registry/churn-model:beta +$ ./kit push --http corp-registry/churn-model:beta +``` + +Angel is experienced with Weyland-Yutani's GitOps process so they issue a PR with a reference to the ModelKit in the company's private repository. Annika reviews the PR and approves and merges it once all the automated tests pass. + +Part of the GitOps automation that is triggered by the merged PR calls the Kit CLI to extract only the model: + +```sh +$ ./kit pull -filter model corp-registry/churn-model:beta +``` + +After running for several hours against the company's internal sales, marketing, and product analytics data, the model spits out a list of at-risk customers ranked in order of most likely to churn. Angel's team, after sending the list to executive leadership, are given champagne and bonuses. + +Thanks KitOps! + + +