decision model card

This commit is contained in:
Dobromir Popov
2025-07-29 23:42:46 +03:00
parent a204362df2
commit 3fad2caeb8
2 changed files with 37 additions and 8 deletions

View File

@ -14,7 +14,7 @@
}, },
"decision_fusion": { "decision_fusion": {
"inference_enabled": false, "inference_enabled": false,
"training_enabled": false "training_enabled": true
}, },
"transformer": { "transformer": {
"inference_enabled": false, "inference_enabled": false,
@ -25,5 +25,5 @@
"training_enabled": true "training_enabled": true
} }
}, },
"timestamp": "2025-07-29T19:17:32.971226" "timestamp": "2025-07-29T23:22:58.380697"
} }

View File

@ -73,9 +73,25 @@ class ModelsTrainingPanel:
for model_name, model_info in registered_models.items(): for model_name, model_info in registered_models.items():
data['models'][model_name] = self._extract_model_data(model_name, model_info) data['models'][model_name] = self._extract_model_data(model_name, model_info)
# Add decision fusion model if it exists # Add decision fusion model if it exists (check multiple sources)
if hasattr(self.orchestrator, 'decision_fusion') and self.orchestrator.decision_fusion: decision_fusion_added = False
# Check if it's in the model registry
if hasattr(self.orchestrator, 'model_registry') and self.orchestrator.model_registry:
registered_models = self.orchestrator.model_registry.get_all_models()
if 'decision_fusion' in registered_models:
data['models']['decision_fusion'] = self._extract_decision_fusion_data() data['models']['decision_fusion'] = self._extract_decision_fusion_data()
decision_fusion_added = True
# If not in registry, check if decision fusion network exists
if not decision_fusion_added and hasattr(self.orchestrator, 'decision_fusion_network') and self.orchestrator.decision_fusion_network:
data['models']['decision_fusion'] = self._extract_decision_fusion_data()
decision_fusion_added = True
# If still not added, check if decision fusion is enabled
if not decision_fusion_added and hasattr(self.orchestrator, 'decision_fusion_enabled') and self.orchestrator.decision_fusion_enabled:
data['models']['decision_fusion'] = self._extract_decision_fusion_data()
decision_fusion_added = True
# Add COB RL model if it exists but wasn't captured in registry # Add COB RL model if it exists but wasn't captured in registry
if 'cob_rl_model' not in data['models'] and hasattr(self.orchestrator, 'cob_rl_model'): if 'cob_rl_model' not in data['models'] and hasattr(self.orchestrator, 'cob_rl_model'):
@ -251,13 +267,24 @@ class ModelsTrainingPanel:
'signal_stats': {} 'signal_stats': {}
} }
# Check if decision fusion is actually enabled # Check if decision fusion is actually enabled and working
if hasattr(self.orchestrator, 'decision_fusion_enabled'): if hasattr(self.orchestrator, 'decision_fusion_enabled'):
decision_data['status'] = 'active' if self.orchestrator.decision_fusion_enabled else 'registered' decision_data['status'] = 'active' if self.orchestrator.decision_fusion_enabled else 'registered'
# Also check from logs - decision fusion may be in programmatic mode # Check if decision fusion network exists
# Based on the logs, if we see "using programmatic mode", it means it's working if hasattr(self.orchestrator, 'decision_fusion_network') and self.orchestrator.decision_fusion_network:
decision_data['status'] = 'active' # Assume active since we see it in logs decision_data['status'] = 'active'
# Get network parameters
if hasattr(self.orchestrator.decision_fusion_network, 'parameters'):
decision_data['parameters'] = sum(p.numel() for p in self.orchestrator.decision_fusion_network.parameters())
# Check decision fusion mode
if hasattr(self.orchestrator, 'decision_fusion_mode'):
decision_data['mode'] = self.orchestrator.decision_fusion_mode
if self.orchestrator.decision_fusion_mode == 'neural':
decision_data['status'] = 'active'
elif self.orchestrator.decision_fusion_mode == 'programmatic':
decision_data['status'] = 'active' # Still active, just using programmatic mode
# Get decision fusion statistics # Get decision fusion statistics
if hasattr(self.orchestrator, 'get_decision_fusion_stats'): if hasattr(self.orchestrator, 'get_decision_fusion_stats'):
@ -476,6 +503,8 @@ class ModelsTrainingPanel:
html.Strong(f"{model_name.upper()}", className=status_class), html.Strong(f"{model_name.upper()}", className=status_class),
html.Span(f" - {status_text}", className=f"{status_class} small ms-1"), html.Span(f" - {status_text}", className=f"{status_class} small ms-1"),
html.Span(f" ({size_str})", className="text-muted small ms-2"), html.Span(f" ({size_str})", className="text-muted small ms-2"),
# Show mode for decision fusion
*([html.Span(f" [{model_data.get('mode', 'unknown').upper()}]", className="text-info small ms-1")] if model_name == 'decision_fusion' and model_data.get('mode') else []),
html.Span( html.Span(
" [CKPT]" if model_data.get('checkpoint_loaded') " [CKPT]" if model_data.get('checkpoint_loaded')
else " [FAILED]" if model_data.get('checkpoint_failed') else " [FAILED]" if model_data.get('checkpoint_failed')