Skip to main content

Keys & Caches CLI - Accelerate your Python functions with cloud GPUs

Project description

Keys & Caches

Keys & Caches Banner

A Python library for experiment tracking and machine learning workflow management.


What is Keys & Caches?

Keys & Caches is a Python library that provides experiment tracking and workflow management for machine learning projects. With a simple API, you can:

  • 📊 Track experiments — Automatically log metrics and hyperparameters
  • 🌐 Cloud dashboard — Real-time visualization of your experiments
  • 🏷️ Organize projects — Group related experiments together
  • 🎯 Zero-overhead when disabled — Tracking only activates when initialized

Installation

pip install kandc

Quick Start

import kandc
import torch
import torch.nn as nn

class SimpleNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.layers = nn.Sequential(
            nn.Linear(784, 128),
            nn.ReLU(),
            nn.Linear(128, 10),
        )

    def forward(self, x):
        return self.layers(x)

def main():
    # Initialize experiment tracking
    kandc.init(
        project="my-project",
        name="experiment-1",
        config={"batch_size": 32, "learning_rate": 0.01}
    )

    # Your training/inference code
    model = SimpleNet()
    data = torch.randn(32, 784)
    output = model(data)
    loss = output.mean()

    # Log metrics
    kandc.log({"loss": loss.item(), "accuracy": 0.85})

    # Finish the run
    kandc.finish()

if __name__ == "__main__":
    main()

Key Features

🎯 Simple Initialization

kandc.init(
    project="my-ml-project",
    name="experiment-1",
    config={
        "learning_rate": 0.001,
        "batch_size": 32,
        "model": "resnet18",
    }
)

📊 Metrics Logging

# Log single or multiple metrics
kandc.log({"loss": 0.25, "accuracy": 0.92})

# Log with step numbers for training loops
for epoch in range(100):
    loss = train_epoch()
    kandc.log({"epoch_loss": loss}, step=epoch)

🌐 Multiple Modes

# Online mode (default) - full cloud experience
kandc.init(project="my-project")

# Offline mode - local development
kandc.init(project="my-project", mode="offline")

# Disabled mode - zero overhead
kandc.init(project="my-project", mode="disabled")

🔮 Inference Tracking

import kandc
import torch
import torch.nn as nn

class SimpleNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.layers = nn.Sequential(
            nn.Linear(784, 128),
            nn.ReLU(),
            nn.Linear(128, 10)
        )
    
    def forward(self, x):
        return self.layers(x)

def run_inference():
    # Initialize inference tracking
    kandc.init(
        project="inference-demo",
        name="simple-inference",
        config={"batch_size": 32}
    )
    
    # Create model and wrap with profiler
    model = SimpleNet()
    model = kandc.capture_model_instance(model, model_name="SimpleNet")
    model.eval()
    
    # Run inference
    data = torch.randn(32, 784)
    with torch.no_grad():
        predictions = model(data)
        confidence = torch.softmax(predictions, dim=1).max(dim=1)[0].mean()
    
    # Log results
    kandc.log({
        "avg_confidence": confidence.item(),
        "batch_size": 32
    })
    
    kandc.finish()

if __name__ == "__main__":
    run_inference()

Examples

See the examples/ directory for detailed examples:

  • complete_example.py - Simple getting started example
  • offline_example.py - Offline mode usage

API Reference

Core Functions

  • kandc.init() - Initialize a new run with configuration
  • kandc.finish() - Finish the current run and save all data
  • kandc.log() - Log metrics to the current run
  • kandc.get_current_run() - Get the active run object
  • kandc.is_initialized() - Check if kandc is initialized

Run Modes

  • "online" - Default mode, full cloud functionality
  • "offline" - Save everything locally, no server sync
  • "disabled" - No-op mode, zero overhead

🎓 Students & Educators

Email us at founders@herdora.com for support and collaboration opportunities!


📦 Publishing to PyPI

🚀 Publish Stable Release

  1. Bump the version in pyproject.toml (e.g., 0.0.15).

  2. Run the following commands:

    rm -rf dist build *.egg-info
    python -m pip install --upgrade build twine
    python -m build
    export TWINE_USERNAME=__token__
    twine upload dist/*
    

🧪 Publish Dev Release

  1. Bump the dev version in pyproject.dev.toml (e.g., 0.0.15.dev1).

  2. Run the following commands:

    rm -rf dist build *.egg-info
    cp pyproject.dev.toml pyproject.toml
    python -m pip install --upgrade build twine
    python -m build
    export TWINE_USERNAME=__token__
    twine upload dist/*
    git checkout -- pyproject.toml   # Restore the original pyproject.toml
    

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

kandc-0.0.20.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

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

kandc-0.0.20-py3-none-any.whl (37.6 kB view details)

Uploaded Python 3

File details

Details for the file kandc-0.0.20.tar.gz.

File metadata

  • Download URL: kandc-0.0.20.tar.gz
  • Upload date:
  • Size: 36.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for kandc-0.0.20.tar.gz
Algorithm Hash digest
SHA256 7616b1cb453a0f04671158852796e7fad575cffcbe1e0c64dbc82d05156d76cc
MD5 957e4437cec90d2b347e899316ab467a
BLAKE2b-256 9bb86b4c7b67393349530b838f57562fcce91a7690fd2e7dc016961f18cf57a2

See more details on using hashes here.

File details

Details for the file kandc-0.0.20-py3-none-any.whl.

File metadata

  • Download URL: kandc-0.0.20-py3-none-any.whl
  • Upload date:
  • Size: 37.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for kandc-0.0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 879ce9bfd8382f429cf23ce068f255a5d7af5bd3364586287f03759a53bc0e8c
MD5 7799ab0f8d6a2b469d83603cd2614a16
BLAKE2b-256 3b8b6070b21b3821bd023e926c456d450b8463f4dd4fdc3df43520dfd262401d

See more details on using hashes here.

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