micro_metrics 0.2.0

Performance monitoring and metrics collection for micro-neural networks
Documentation

micro_metrics - Performance Monitoring Framework

Crates.io Documentation License

Basic performance monitoring and metrics collection framework

This crate provides a foundation for collecting and exporting performance metrics from the Semantic Cartan Matrix system. It offers basic timing, data collection, and JSON export capabilities.

โœ… Implemented Features

  • MetricsCollector: Basic metrics collection with timing support
  • Timer: Cross-platform timing functionality
  • JsonExporter: Export metrics to JSON format for dashboards
  • DashboardData: Basic data structures for visualization
  • HeatmapData: Data format for attention/correlation heatmaps

โŒ Not Yet Implemented

  • Real-time Streaming: No WebSocket or live updates
  • Prometheus Integration: No Prometheus export functionality
  • Advanced Analytics: No drift detection or regression analysis
  • System Metrics: No CPU/memory monitoring integration
  • Dashboard Server: No actual web dashboard implementation

๐Ÿ“ฆ Installation

Add this to your Cargo.toml:

[dependencies]
micro_metrics = { path = "../micro_metrics" }

๐Ÿ—๏ธ Core Components

MetricsCollector

Basic metrics collection and aggregation:

use micro_metrics::{MetricsCollector, SystemMetrics, AgentMetrics};

// Create collector (basic implementation)
let collector = MetricsCollector::new();

// Record basic metrics (implementation varies)
// Note: Actual API may differ from this example

Timer

Cross-platform timing functionality:

use micro_metrics::{Timer, TimingInfo};

// Create and use timer
let timer = Timer::new();
let timing_info = timer.measure(|| {
    // Code to time
    expensive_operation();
});

println!("Operation took: {:?}", timing_info.duration);

JSON Export

Export metrics in JSON format:

use micro_metrics::{JsonExporter, MetricsReport};

let exporter = JsonExporter::new();

// Export basic metrics to JSON
let json_report = exporter.export_metrics(&collector)?;
println!("Metrics JSON: {}", json_report);

Dashboard Data

Basic data structures for visualization:

use micro_metrics::{DashboardData, HeatmapData};

// Create dashboard-compatible data
let dashboard_data = DashboardData {
    timestamp: std::time::SystemTime::now(),
    metrics: collector.get_current_metrics(),
    // ... other basic fields
};

// Create heatmap data for attention visualization
let heatmap = HeatmapData {
    width: 32,
    height: 32,
    data: attention_matrix.flatten(),
    // ... other visualization data
};

๐Ÿ“Š Current Implementation Status

What Works

  • Basic metrics collection structures
  • Simple timing functionality
  • JSON serialization of basic data
  • Integration with micro_core types
  • no_std compatibility (limited features)

What's Limited

  • No complex aggregations or analytics
  • No real-time data streaming
  • No advanced visualizations
  • No system resource monitoring
  • No performance regression detection

๐Ÿ”ง Configuration

Feature Flags

[features]
default = ["std"]
std = ["serde/std", "serde_json/std"]
system-metrics = []          # System monitoring (not implemented)
prometheus = []              # Prometheus export (not implemented)
dashboard = []               # Web dashboard (not implemented)

Basic Usage

use micro_metrics::{MetricsCollector, Timer};

// Initialize collector
let mut collector = MetricsCollector::new();

// Time operations
let timer = Timer::start("operation_name".to_string());
perform_neural_network_inference();
let duration = timer.stop();

// Store timing result
collector.record_timing(duration);

// Export for analysis
let json_metrics = collector.export_json()?;

๐Ÿ“ˆ Planned Architecture

The following describes intended functionality, not current implementation:

Advanced Metrics Collection

// PLANNED API (not fully implemented)
use micro_metrics::{
    PerformanceMetrics, DriftTracker, RegressionDetector
};

let mut metrics = PerformanceMetrics::new();
metrics.record_latency("inference", 1.2);
metrics.record_throughput("tokens_per_second", 15420.0);

let drift_tracker = DriftTracker::new();
let regression_detector = RegressionDetector::new();

Real-time Dashboard

// PLANNED API (not implemented)
use micro_metrics::{DashboardServer, MetricsStreamer};

let dashboard = DashboardServer::new("0.0.0.0:8080");
dashboard.start().await?;

let streamer = MetricsStreamer::new();
streamer.stream_to_dashboard(&metrics).await?;

Prometheus Integration

// PLANNED API (not implemented)
use micro_metrics::PrometheusExporter;

let exporter = PrometheusExporter::new();
exporter.register_counter("inferences_total");
exporter.export_to_gateway("http://prometheus:9091").await?;

๐Ÿงช Testing

# Run basic tests
cargo test

# Test JSON export functionality
cargo test --features std

# Test system metrics (when implemented)
cargo test --features system-metrics

โš ๏ธ Current Limitations

  1. Basic Implementation: Most functionality is minimal
  2. No Real-time Features: No streaming or live updates
  3. Limited Analytics: No advanced statistical analysis
  4. No Dashboard: No actual web interface
  5. Platform Support: Limited cross-platform monitoring
  6. Performance: Not optimized for high-frequency metrics

๐Ÿ“‹ Implementation Roadmap

Phase 1: Core Functionality

  • Complete basic metrics collection
  • Add comprehensive timing support
  • Implement proper JSON export
  • Add basic statistical aggregations

Phase 2: Advanced Features

  • Real-time metrics streaming
  • Prometheus export integration
  • System resource monitoring
  • Performance regression detection

Phase 3: Dashboard & Visualization

  • Web-based dashboard implementation
  • Real-time chart updates
  • Attention matrix heatmaps
  • Historical data analysis

๐Ÿ“š Examples

Current examples would demonstrate:

  • Basic timing and metrics collection
  • JSON export for external analysis
  • Integration with neural network operations

Planned examples:

  • Real-time dashboard setup
  • Prometheus monitoring integration
  • Advanced performance analysis

๐Ÿค Contributing

Priority areas for contribution:

  1. Core Implementation: Complete basic metrics functionality
  2. Real-time Features: Add streaming and live updates
  3. Dashboard: Implement web-based monitoring interface
  4. Testing: Add comprehensive test coverage
  5. Performance: Optimize for high-frequency data collection

๐Ÿ“„ License

Licensed under either of:

at your option.

๐Ÿ”— Related Crates


Part of the rUv-FANN Semantic Cartan Matrix system - Basic metrics collection for neural network monitoring.