Skip to main content

Lightweight Edge MLOps Monitor

A minimal Python library and agent designed specifically for monitoring machine learning models deployed on resource-constrained edge devices (e.g., IoT sensors, embedded systems running Linux).

Overview

The Lightweight Edge MLOps Monitor provides essential monitoring capabilities for ML models running on edge devices with limited resources:

  • System Health Monitoring: Track CPU and memory usage with minimal overhead
  • Model Input/Output Logging: Log model inputs and outputs for analysis
  • Drift Detection: Detect statistical drift in model outputs using the Kolmogorov-Smirnov test
  • Telemetry Upload: Efficiently batch and upload telemetry data to cloud storage when network connectivity is available

Key Features

  • Resource Efficient: Optimized for devices with constrained CPU, memory, and power
  • Minimal Dependencies: Uses only essential libraries (psutil, scipy, boto3, PyYAML)
  • Type Safe: Fully typed with Python 3.10+ type hints and mypy compatibility
  • Robust Error Handling: Graceful handling of network failures, disk full scenarios, and other edge cases
  • Configurable: Easily adjust sampling rates, buffer sizes, and other parameters via YAML configuration

Installation

pip install edge-mlops-monitor

Or install from source:

git clone https://github.com/Edmon02/edge-mlops-monitor.git
cd edge-mlops-monitor
pip install -e .

Quick Start

  1. Create a configuration file config.yaml:
system:
  sampling_interval_seconds: 10
  max_memory_buffer_mb: 50

model_logging:
  buffer_size: 1000
  log_level: INFO

drift_detection:
  algorithm: ks_test
  threshold: 0.05
  reference_data_path: "/path/to/reference_data.json"
  check_frequency: 100  # Check after every 100 predictions

telemetry:
  upload_interval_seconds: 300
  max_batch_size: 100
  retry_base_delay_seconds: 1
  retry_max_delay_seconds: 60
  retry_max_attempts: 5

storage:
  type: "s3"
  bucket: "your-telemetry-bucket"
  prefix: "edge-device-1/"
  sqlite_path: "/path/to/local/buffer.db"
  max_sqlite_size_mb: 100
  1. Use the monitor in your ML application:
from edge_mlops_monitor import EdgeMonitor

# Initialize the monitor
monitor = EdgeMonitor(config_path="config.yaml")

# Start system monitoring in the background
monitor.start_system_monitoring()

# In your ML inference loop
def predict(input_data):
    # Log the input
    input_id = monitor.log_model_input(input_data)
    
    # Make prediction with your model
    prediction = my_model.predict(input_data)
    
    # Log the output
    monitor.log_model_output(input_id, prediction)
    
    return prediction

# When shutting down
monitor.stop()

Documentation

For detailed documentation, please see:

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for edge-mlops-monitor 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for edge-mlops-monitor 0.1.1
File Size Uploaded
edge_mlops_monitor-0.1.1.tar.gz 27.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for edge-mlops-monitor 0.1.1
File Interpreter ABI Platform
edge_mlops_monitor-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 62.3 kB

Release files / edge_mlops_monitor-0.1.1.tar.gz

Download URL edge_mlops_monitor-0.1.1.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
46d4b1c1a93609f918fa5ddb55273ce05d98f70ec9f10ed00f853d13a040c41c
BLAKE2b-256 checksum
How to use checksums
f6ba74aff81357078202b73e40f1e3e4bf78a26d4fb023ade78c629d01d0d8e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release files / edge_mlops_monitor-0.1.1-py3-none-any.whl

Download URL edge_mlops_monitor-0.1.1-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac726b808302754ebd8ba48b3e891d9770d67ecb2f16b1f1c2e660e4c6eb133e
BLAKE2b-256 checksum
How to use checksums
13016ffa1516eb4068cacf896cfb5c711a048d2d1b8b687f715ef1cf6b7e4327
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page