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
mypycompatibility - 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
- 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
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| edge_mlops_monitor-0.1.1.tar.gz | 27.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|