File size: 4,408 Bytes
08ed534
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env python3
"""
Test script to verify that both monitoring systems use the same experiment ID format
"""

import sys
import os
import logging

# Add the project root to the path
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from src.monitoring import SmolLM3Monitor
from src.trackio import init as trackio_init

# Setup logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def test_experiment_id_consistency():
    """Test that both monitoring systems use the same experiment ID format"""
    print("πŸ”§ Testing experiment ID consistency...")
    
    # Test 1: SmolLM3Monitor experiment ID format
    print("\n1️⃣ Testing SmolLM3Monitor experiment ID format...")
    monitor = SmolLM3Monitor(
        experiment_name="test_experiment_id_consistency",
        enable_tracking=True
    )
    
    print(f"SmolLM3Monitor experiment ID: {monitor.experiment_id}")
    
    if monitor.experiment_id and monitor.experiment_id.startswith('exp_'):
        print("βœ… SmolLM3Monitor uses correct experiment ID format (exp_)")
    else:
        print("❌ SmolLM3Monitor uses incorrect experiment ID format")
        return False
    
    # Test 2: Trackio experiment ID format
    print("\n2️⃣ Testing Trackio experiment ID format...")
    trackio_experiment_id = trackio_init(
        project_name="test_experiment_id_consistency",
        experiment_name="test_experiment_id_consistency"
    )
    
    print(f"Trackio experiment ID: {trackio_experiment_id}")
    
    if trackio_experiment_id and trackio_experiment_id.startswith('exp_'):
        print("βœ… Trackio uses correct experiment ID format (exp_)")
    else:
        print("❌ Trackio uses incorrect experiment ID format")
        return False
    
    # Test 3: Verify both use the same format
    print("\n3️⃣ Testing experiment ID format consistency...")
    if monitor.experiment_id.startswith('exp_') and trackio_experiment_id.startswith('exp_'):
        print("βœ… Both monitoring systems use the same experiment ID format")
        return True
    else:
        print("❌ Monitoring systems use different experiment ID formats")
        return False

def test_monitoring_integration():
    """Test that both monitoring systems can work together"""
    print("\nπŸ”§ Testing monitoring integration...")
    
    try:
        # Create monitor
        monitor = SmolLM3Monitor(
            experiment_name="test_monitoring_integration",
            enable_tracking=True
        )
        
        print(f"βœ… Monitor created with experiment ID: {monitor.experiment_id}")
        
        # Initialize trackio with the same experiment ID
        trackio_experiment_id = trackio_init(
            project_name="test_monitoring_integration",
            experiment_name="test_monitoring_integration"
        )
        
        print(f"βœ… Trackio initialized with experiment ID: {trackio_experiment_id}")
        
        # Test logging metrics to both systems
        metrics = {"loss": 1.234, "accuracy": 0.85}
        
        # Log to monitor
        monitor.log_metrics(metrics, step=100)
        print("βœ… Metrics logged to monitor")
        
        # Log to trackio
        from src.trackio import log as trackio_log
        trackio_log(metrics, step=100)
        print("βœ… Metrics logged to trackio")
        
        print("πŸŽ‰ Monitoring integration test passed!")
        return True
        
    except Exception as e:
        print(f"❌ Monitoring integration test failed: {e}")
        return False

if __name__ == "__main__":
    print("πŸš€ Starting Experiment ID Consistency Tests")
    print("=" * 60)
    
    # Test 1: Experiment ID format consistency
    format_consistency = test_experiment_id_consistency()
    
    # Test 2: Monitoring integration
    integration_success = test_monitoring_integration()
    
    print("\n" + "=" * 60)
    print("πŸ“Š Test Results Summary:")
    print(f"Experiment ID Format Consistency: {'βœ… PASSED' if format_consistency else '❌ FAILED'}")
    print(f"Monitoring Integration: {'βœ… PASSED' if integration_success else '❌ FAILED'}")
    
    if format_consistency and integration_success:
        print("\nπŸŽ‰ All tests passed! Experiment ID conflict is resolved.")
        sys.exit(0)
    else:
        print("\n❌ Some tests failed. Please check the errors above.")
        sys.exit(1)