File size: 5,394 Bytes
5fe83da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/usr/bin/env python3
"""
Quick Start Script for Trackio Integration
Tests the monitoring functionality without full training
"""

import os
import json
import logging
from datetime import datetime
from monitoring import SmolLM3Monitor

def setup_logging():
    """Setup logging configuration"""
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    )
    return logging.getLogger(__name__)

def test_trackio_integration():
    """Test Trackio integration with sample data"""
    logger = setup_logging()
    
    print("πŸš€ Testing Trackio Integration")
    print("=" * 40)
    
    # Get Trackio URL from user or environment
    trackio_url = os.getenv('TRACKIO_URL')
    if not trackio_url:
        trackio_url = input("Enter your Trackio Space URL (or press Enter to skip): ").strip()
        if not trackio_url:
            print("⚠️  No Trackio URL provided. Running in local mode only.")
            trackio_url = None
    
    # Initialize monitor
    experiment_name = f"test_experiment_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
    
    monitor = SmolLM3Monitor(
        experiment_name=experiment_name,
        trackio_url=trackio_url,
        enable_tracking=trackio_url is not None,
        log_artifacts=True,
        log_metrics=True,
        log_config=True
    )
    
    print(f"βœ… Monitor initialized for experiment: {experiment_name}")
    
    # Test configuration logging
    sample_config = {
        "model_name": "HuggingFaceTB/SmolLM3-3B",
        "batch_size": 4,
        "learning_rate": 2e-5,
        "max_iters": 1000,
        "max_seq_length": 4096,
        "test_mode": True
    }
    
    print("πŸ“ Logging configuration...")
    monitor.log_config(sample_config)
    
    # Test metrics logging
    print("πŸ“Š Logging sample metrics...")
    for step in range(0, 100, 10):
        metrics = {
            "loss": 2.0 - (step * 0.015),  # Simulate decreasing loss
            "accuracy": 0.5 + (step * 0.004),  # Simulate increasing accuracy
            "learning_rate": 2e-5,
            "step": step
        }
        monitor.log_metrics(metrics, step=step)
        print(f"   Step {step}: loss={metrics['loss']:.3f}, accuracy={metrics['accuracy']:.3f}")
    
    # Test system metrics
    print("πŸ’» Logging system metrics...")
    monitor.log_system_metrics(step=50)
    
    # Test evaluation results
    print("πŸ“ˆ Logging evaluation results...")
    eval_results = {
        "eval_loss": 1.2,
        "eval_accuracy": 0.85,
        "perplexity": 3.3,
        "bleu_score": 0.72
    }
    monitor.log_evaluation_results(eval_results, step=100)
    
    # Test training summary
    print("πŸ“‹ Logging training summary...")
    summary = {
        "final_loss": 0.5,
        "final_accuracy": 0.89,
        "total_steps": 100,
        "training_time_hours": 2.5,
        "model_size_gb": 6.2,
        "test_mode": True
    }
    monitor.log_training_summary(summary)
    
    # Close monitoring
    monitor.close()
    
    print("βœ… Trackio integration test completed!")
    
    if trackio_url:
        experiment_url = monitor.get_experiment_url()
        if experiment_url:
            print(f"🌐 View your experiment at: {experiment_url}")
    
    return True

def test_local_monitoring():
    """Test local monitoring without Trackio"""
    logger = setup_logging()
    
    print("πŸ”§ Testing Local Monitoring")
    print("=" * 30)
    
    # Initialize monitor without Trackio
    experiment_name = f"local_test_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
    
    monitor = SmolLM3Monitor(
        experiment_name=experiment_name,
        enable_tracking=False,  # Disable Trackio
        log_artifacts=True,
        log_metrics=True,
        log_config=True
    )
    
    print(f"βœ… Local monitor initialized for experiment: {experiment_name}")
    
    # Test local logging
    sample_config = {
        "model_name": "HuggingFaceTB/SmolLM3-3B",
        "batch_size": 4,
        "learning_rate": 2e-5,
        "local_test": True
    }
    
    print("πŸ“ Logging configuration locally...")
    monitor.log_config(sample_config)
    
    # Test local metrics
    print("πŸ“Š Logging sample metrics locally...")
    for step in range(0, 50, 10):
        metrics = {
            "loss": 1.8 - (step * 0.02),
            "accuracy": 0.6 + (step * 0.005),
            "step": step
        }
        monitor.log_metrics(metrics, step=step)
        print(f"   Step {step}: loss={metrics['loss']:.3f}, accuracy={metrics['accuracy']:.3f}")
    
    print("βœ… Local monitoring test completed!")
    return True

def main():
    """Main function"""
    print("Trackio Integration Quick Start")
    print("=" * 40)
    
    # Test local monitoring first
    test_local_monitoring()
    print()
    
    # Test Trackio integration if available
    try:
        test_trackio_integration()
    except Exception as e:
        print(f"❌ Trackio integration test failed: {e}")
        print("πŸ’‘ Make sure you have a valid Trackio Space URL")
    
    print("\nπŸŽ‰ Quick start completed!")
    print("\nNext steps:")
    print("1. Deploy Trackio to Hugging Face Spaces (see DEPLOYMENT_GUIDE.md)")
    print("2. Update your training script with Trackio integration")
    print("3. Run your first monitored training session")

if __name__ == "__main__":
    main()