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.18.tar.gz (35.8 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.18-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kandc-0.0.18.tar.gz
  • Upload date:
  • Size: 35.8 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.18.tar.gz
Algorithm Hash digest
SHA256 07271b324797110f7157caaffe496756fc9a34cdb357393f690ef8ce497dbb3f
MD5 71e90fbdc425c3df2703cc4e945bf8f6
BLAKE2b-256 6919c3c28d39e4ee89226b774e9af9db1a76d7056140b8010b52c8f1ccdf6dec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kandc-0.0.18-py3-none-any.whl
  • Upload date:
  • Size: 37.1 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.18-py3-none-any.whl
Algorithm Hash digest
SHA256 ad6a7b53a422632b48990b3cd5d0a5f8612dcd930e343dbd8af82e6ef88717d4
MD5 317432ca31936392aa0aac7e3196ce9a
BLAKE2b-256 c7d660e940d9c8ea955ad67b1d2706525e31b9d28ebff845d9e5bc307028270c

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