wip train
This commit is contained in:
@ -2951,35 +2951,34 @@ class CleanTradingDashboard:
|
||||
'last_training': None,
|
||||
'inferences_per_second': 0.0,
|
||||
'trainings_per_second': 0.0,
|
||||
'prediction_count_24h': 0
|
||||
'prediction_count_24h': 0,
|
||||
'average_inference_time_ms': 0.0,
|
||||
'average_training_time_ms': 0.0
|
||||
}
|
||||
|
||||
try:
|
||||
if self.orchestrator:
|
||||
# Get recent predictions for timing analysis
|
||||
recent_predictions = self.orchestrator.get_recent_model_predictions('ETH/USDT', model_name.lower())
|
||||
|
||||
if model_name.lower() in recent_predictions:
|
||||
predictions = recent_predictions[model_name.lower()]
|
||||
if predictions:
|
||||
# Last inference time
|
||||
last_pred = predictions[-1]
|
||||
timing['last_inference'] = last_pred.get('timestamp', datetime.now())
|
||||
|
||||
# Calculate predictions per second (last 60 seconds)
|
||||
now = datetime.now()
|
||||
recent_preds = [p for p in predictions
|
||||
if (now - p.get('timestamp', now)).total_seconds() <= 60]
|
||||
timing['inferences_per_second'] = len(recent_preds) / 60.0
|
||||
|
||||
# 24h prediction count
|
||||
preds_24h = [p for p in predictions
|
||||
if (now - p.get('timestamp', now)).total_seconds() <= 86400]
|
||||
timing['prediction_count_24h'] = len(preds_24h)
|
||||
|
||||
# For training timing, check model-specific training status
|
||||
if hasattr(self.orchestrator, f'{model_name.lower()}_last_training'):
|
||||
timing['last_training'] = getattr(self.orchestrator, f'{model_name.lower()}_last_training')
|
||||
# Use the new model statistics system
|
||||
model_stats = self.orchestrator.get_model_statistics(model_name.lower())
|
||||
if model_stats:
|
||||
# Last inference time
|
||||
timing['last_inference'] = model_stats.last_inference_time
|
||||
|
||||
# Last training time
|
||||
timing['last_training'] = model_stats.last_training_time
|
||||
|
||||
# Inference rate per second
|
||||
timing['inferences_per_second'] = model_stats.inference_rate_per_second
|
||||
|
||||
# Training rate per second
|
||||
timing['trainings_per_second'] = model_stats.training_rate_per_second
|
||||
|
||||
# 24h prediction count (approximate from total inferences)
|
||||
timing['prediction_count_24h'] = model_stats.total_inferences
|
||||
|
||||
# Average timing data
|
||||
timing['average_inference_time_ms'] = model_stats.average_inference_time_ms
|
||||
timing['average_training_time_ms'] = model_stats.average_training_time_ms
|
||||
|
||||
except Exception as e:
|
||||
logger.debug(f"Error getting timing info for {model_name}: {e}")
|
||||
@ -3063,13 +3062,15 @@ class CleanTradingDashboard:
|
||||
'created_at': dqn_state.get('created_at', 'Unknown'),
|
||||
'performance_score': dqn_state.get('performance_score', 0.0)
|
||||
},
|
||||
# NEW: Timing information
|
||||
'timing': {
|
||||
'last_inference': dqn_timing['last_inference'].strftime('%H:%M:%S') if dqn_timing['last_inference'] else 'None',
|
||||
'last_training': dqn_timing['last_training'].strftime('%H:%M:%S') if dqn_timing['last_training'] else 'None',
|
||||
'inferences_per_second': f"{dqn_timing['inferences_per_second']:.2f}",
|
||||
'predictions_24h': dqn_timing['prediction_count_24h']
|
||||
},
|
||||
# NEW: Timing information
|
||||
'timing': {
|
||||
'last_inference': dqn_timing['last_inference'].strftime('%H:%M:%S') if dqn_timing['last_inference'] else 'None',
|
||||
'last_training': dqn_timing['last_training'].strftime('%H:%M:%S') if dqn_timing['last_training'] else 'None',
|
||||
'inferences_per_second': f"{dqn_timing['inferences_per_second']:.2f}",
|
||||
'predictions_24h': dqn_timing['prediction_count_24h'],
|
||||
'average_inference_time_ms': f"{dqn_timing.get('average_inference_time_ms', 0):.1f}",
|
||||
'average_training_time_ms': f"{dqn_timing.get('average_training_time_ms', 0):.1f}"
|
||||
},
|
||||
# NEW: Performance metrics for split-second decisions
|
||||
'performance': self.get_model_performance_metrics().get('dqn', {})
|
||||
}
|
||||
@ -3143,7 +3144,9 @@ class CleanTradingDashboard:
|
||||
'last_inference': cnn_timing['last_inference'].strftime('%H:%M:%S') if cnn_timing['last_inference'] else 'None',
|
||||
'last_training': cnn_timing['last_training'].strftime('%H:%M:%S') if cnn_timing['last_training'] else 'None',
|
||||
'inferences_per_second': f"{cnn_timing['inferences_per_second']:.2f}",
|
||||
'predictions_24h': cnn_timing['prediction_count_24h']
|
||||
'predictions_24h': cnn_timing['prediction_count_24h'],
|
||||
'average_inference_time_ms': f"{cnn_timing.get('average_inference_time_ms', 0):.1f}",
|
||||
'average_training_time_ms': f"{cnn_timing.get('average_training_time_ms', 0):.1f}"
|
||||
},
|
||||
# NEW: Performance metrics for split-second decisions
|
||||
'performance': self.get_model_performance_metrics().get('cnn', {})
|
||||
|
Reference in New Issue
Block a user