kitops icon indicating copy to clipboard operation
kitops copied to clipboard

Added Kubeflow Pipeline component for ModelKit packaging and OCI push

Open TheCoder2010-create opened this issue 2 months ago • 2 comments

Kubeflow Pipelines lacked a reusable component for packaging trained model artifacts as ModelKits and pushing them to OCI-compliant registries. This gap made it difficult to standardize model packaging and automate model delivery to registries within Kubeflow workflows.

What Has Been Added Reusable Kubeflow Pipeline Component: A new component that: Extracts training parameters, pipeline run ID, experiment name, and metrics from Kubeflow ML Metadata. Packages model artifacts using the ModelKit format. Pushes the packaged ModelKit to any OCI-compliant registry. Supports authentication via Kubernetes secrets or IRSA/Workload Identity for cloud environments. Component Implementation: component.py: Python script for metadata extraction, packaging, and push logic.

Dockerfile: Container image definition with all dependencies. component.yaml: KFP component specification for easy integration. This addition enables seamless, standardized, and secure model packaging and registry integration for Kubeflow users.

TheCoder2010-create avatar Sep 26 '25 10:09 TheCoder2010-create

Could you drop a Markdown file or other notes here that we can use to create docs for this? Or create a companion docs PR?

bmicklea avatar Sep 26 '25 12:09 bmicklea

Could you drop a Markdown file or other notes here that we can use to create docs for this? Or could you create a companion docs PR?

KFP ModelKit Component

Overview

This Kubeflow Pipeline (KFP) component enables packaging a ModelKit model and pushing it to an OCI (Open Container Initiative) registry. It is designed to be used as a step in automated ML pipelines, making it easy to build, package, and distribute models using ModelKit within Kubeflow.

Files

  • component.py: Python script implementing the component logic.
  • component.yaml: KFP component specification for pipeline integration.
  • Dockerfile: Container definition for the component runtime environment.

Usage

  1. Build the Docker image:
    docker build -t <your-repo>/kfp-modelkit-component:latest .
    
  2. Push the image to your registry:
    docker push <your-repo>/kfp-modelkit-component:latest
    
  3. Use in a KFP pipeline:
    • Reference component.yaml in your pipeline definition.
    • Configure input parameters as needed (see below).

Inputs & Parameters

Refer to component.yaml for the full list of parameters. Typical parameters include:

  • Model source path
  • Model name and version
  • OCI registry URL and credentials
  • Additional packaging options

Example Pipeline Step

import kfp
from kfp.components import load_component_from_file

modelkit_op = load_component_from_file('component.yaml')

# Example usage in a pipeline
def my_pipeline(...):
    modelkit_op(
        model_path='path/to/model',
        model_name='my-model',
        version='1.0.0',
        registry_url='oci://my-registry',
        # ...other params...
    )

Notes

  • Ensure all required environment variables and credentials are available at runtime.
  • The component is designed for use with ModelKit and OCI-compliant registries.
  • For advanced usage, customize component.py or the Dockerfile as needed.

TheCoder2010-create avatar Sep 26 '25 13:09 TheCoder2010-create