Skip to main content

KladML SDK - Enterprise-grade MLOps toolkit

Project description

KladML

Build ML pipelines with pluggable backends. Simple. Modular. Yours.

PyPI - Version PyPI - Python Version License

⭐ Star us on GitHub to support the project!


Why KladML?

Feature KladML MLflow ClearML
Interface-based ✅ Pluggable ❌ Hardcoded ❌ Hardcoded
Server required ❌ No ⚠️ Optional ✅ Yes
Local-first ✅ Unified SQLite DB ✅ Yes ❌ No
Learning curve 🟢 Minutes 🟡 Days 🔴 Weeks
Hierarchy ✅ Workspace/Proj/Fam ❌ Exp/Run ❌ Project/task
User Interface ✅ TUI (Terminal) ⚠️ Web UI ✅ Web UI
Custom backends ✅ Easy ⚠️ Complex ❌ No

Installation

# Core (lightweight, no UI)
pip install kladml

# Full CLI (for terminal usage with TUI)
pip install -e ".[all]"

Quick Start

Zero to Training in 60 Seconds

# The universal quickstart - auto-detects data type and suggests pipeline
kladml quickstart --data my_data.csv

# Output:
# 📊 Analyzing data...
#    Data type: TABULAR (5 columns, 1000 rows)
#
# ? What task do you want to perform?
#   > Classification (detected 'label' column)
#
# 🔧 Selected: XGBoostClassifier + ClassificationEvaluator
# 🚀 Training...
# ✅ Complete! Results saved to data/projects/quickstart/run_001/

Traditional Workflow

# Initialize workspace
kladml init

# Launch Interactive TUI
kladml ui

# Manual training with config
kladml train --config data/configs/my_config.yaml

# Evaluate a trained model
kladml eval --run run_001 --evaluator AnomalyEvaluator

# Hyperparameter tuning with Optuna
kladml tune --config config.yaml --n-trials 50

Create Your Model

from kladml import TimeSeriesModel, ExperimentRunner

class MyForecaster(TimeSeriesModel):
    def train(self, X_train, y_train=None, **kwargs):
        # Your training logic
        return {"loss": 0.1}
    
    def predict(self, X, **kwargs):
        return predictions
    
    def evaluate(self, X_test, y_test=None, **kwargs):
        return {"mae": 0.5, "mse": 0.25}
    
    def save(self, path: str):
        pass
    
    def load(self, path: str):
        pass

# Run with experiment tracking
runner = ExperimentRunner()
result = runner.run(
    model_class=MyForecaster,
    train_data=train_data,
    experiment_name="my-experiment",
)

Supported Data Types

Data Type Auto-Detection Default Pipeline
TABULAR CSV/Parquet with numeric columns XGBoost
TIMESERIES Has datetime column/index Transformer/Gluformer
IMAGE Folder with JPG/PNG ResNet50
TEXT CSV with text columns BERT

Architecture

KladML uses dependency injection with abstract interfaces. Swap implementations without changing your code:

┌─────────────────────────────────────────────────────────────┐
│                      Your Code                              │
├─────────────────────────────────────────────────────────────┤
│                   ExperimentRunner                          │
├─────────────────────────────────────────────────────────────┤
│  StorageInterface  │  ConfigInterface  │  TrackerInterface  │
├─────────────────────────────────────────────────────────────┤
│  LocalStorage      │  YamlConfig       │  LocalTracker      │
│  S3Storage         │  EnvConfig        │  MLflowTracker     │
│  (your impl)       │  (your impl)      │  (your impl)       │
└─────────────────────────────────────────────────────────────┘

Implement Custom Backends

from kladml.interfaces import StorageInterface

class S3Storage(StorageInterface):
    """Custom S3 implementation."""
    
    def upload_file(self, local_path, bucket, key):
        # Your S3 logic
        ...

# Plug it in
runner = ExperimentRunner(storage=S3Storage())

Interfaces

Interface Description Default
StorageInterface Object storage (files, artifacts) LocalStorage
ConfigInterface Configuration management YamlConfig
PublisherInterface Real-time metric publishing ConsolePublisher
TrackerInterface Experiment tracking LocalTracker (MLflow + SQLite)

Configuration

Create kladml.yaml:

project:
  name: my-project
  version: 0.1.0

training:
  device: auto  # auto | cpu | cuda | mps

storage:
  artifacts_dir: ./artifacts

Or use environment variables:

export KLADML_TRAINING_DEVICE=cuda
export KLADML_STORAGE_ARTIFACTS_DIR=/data/artifacts

CLI Commands

kladml --help                 # Show all commands
kladml init                   # Initialize workspace
kladml version                # Show version

# Training
kladml train quick ...        # Quick training (no DB setup)
kladml train single ...       # Full training with project/experiment

# Evaluation
kladml eval run ...           # Evaluate a model
kladml eval info              # Show available evaluators
kladml compare --runs r1,r2   # Compare runs side-by-side

# Data
kladml data inspect <path>    # Analyze a dataset
kladml data summary <dir>     # Summary of datasets in directory
kladml data convert ...       # Convert PKL -> HDF5

# Models
kladml models export ...      # Export to TorchScript

# Organization
kladml project list           # List all projects
kladml family list ...        # List families
kladml experiment list ...    # List experiments

Contributing

PRs welcome! See CONTRIBUTING.md for guidelines.

git clone https://github.com/kladml/kladml.git
cd kladml
pip install -e ".[dev]"
pytest

License

MIT License - see LICENSE for details.


Documentation · PyPI · GitHub

Made in 🇮🇹 by the KladML Team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kladml-0.5.3.tar.gz (362.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kladml-0.5.3-py3-none-any.whl (135.7 kB view details)

Uploaded Python 3

File details

Details for the file kladml-0.5.3.tar.gz.

File metadata

  • Download URL: kladml-0.5.3.tar.gz
  • Upload date:
  • Size: 362.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kladml-0.5.3.tar.gz
Algorithm Hash digest
SHA256 df49b304d5a1a980fd4fc4b8e276f6151b8b12401e9a1b96fee85402b5279764
MD5 7ecf4b4ed9bd057cfb88d8185c3d0aaf
BLAKE2b-256 9fb647be7b5663c1dd797bd1ea853bf21963b1a9d806c2b742a0afa81259b9fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for kladml-0.5.3.tar.gz:

Publisher: publish.yml on kladml/kladml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kladml-0.5.3-py3-none-any.whl.

File metadata

  • Download URL: kladml-0.5.3-py3-none-any.whl
  • Upload date:
  • Size: 135.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kladml-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aa22fbe8d7493afaf38e3305d01ddc29b674db8b8e019054149df7b2c4641e89
MD5 8c17f851529e4d4daf1d01fed6cd07d8
BLAKE2b-256 922eef3cef4cf41f14d06a47c54ce914b58176a03dcee0a438ec9214116599eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for kladml-0.5.3-py3-none-any.whl:

Publisher: publish.yml on kladml/kladml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page