model training WIP
This commit is contained in:
@@ -174,58 +174,88 @@ class AnnotationDashboard:
|
||||
logger.info("Annotation Dashboard initialized")
|
||||
|
||||
def _start_async_model_loading(self):
|
||||
"""Load ML models asynchronously in background thread"""
|
||||
"""Load ML models asynchronously in background thread with retry logic"""
|
||||
import threading
|
||||
import time
|
||||
|
||||
def load_models():
|
||||
try:
|
||||
logger.info("🔄 Starting async model loading...")
|
||||
|
||||
# Initialize orchestrator with models
|
||||
if TradingOrchestrator:
|
||||
max_retries = 3
|
||||
retry_delay = 5 # seconds
|
||||
|
||||
for attempt in range(max_retries):
|
||||
try:
|
||||
if attempt > 0:
|
||||
logger.info(f"🔄 Retry attempt {attempt + 1}/{max_retries} for model loading...")
|
||||
time.sleep(retry_delay)
|
||||
else:
|
||||
logger.info("🔄 Starting async model loading...")
|
||||
|
||||
# Check if TradingOrchestrator is available
|
||||
if not TradingOrchestrator:
|
||||
logger.error("❌ TradingOrchestrator class not available")
|
||||
self.models_loading = False
|
||||
self.available_models = []
|
||||
return
|
||||
|
||||
# Initialize orchestrator with models
|
||||
logger.info(" Creating TradingOrchestrator instance...")
|
||||
self.orchestrator = TradingOrchestrator(
|
||||
data_provider=self.data_provider,
|
||||
enhanced_rl_training=True
|
||||
)
|
||||
logger.info(" ✅ Orchestrator created")
|
||||
|
||||
# Initialize ML models
|
||||
logger.info("Initializing ML models...")
|
||||
logger.info(" Initializing ML models...")
|
||||
self.orchestrator._initialize_ml_models()
|
||||
logger.info(" ✅ ML models initialized")
|
||||
|
||||
# Update training adapter with orchestrator
|
||||
self.training_adapter.orchestrator = self.orchestrator
|
||||
logger.info(" ✅ Training adapter updated")
|
||||
|
||||
# Get available models from orchestrator
|
||||
available = []
|
||||
if hasattr(self.orchestrator, 'rl_agent') and self.orchestrator.rl_agent:
|
||||
available.append('DQN')
|
||||
logger.info(" ✅ DQN model available")
|
||||
if hasattr(self.orchestrator, 'cnn_model') and self.orchestrator.cnn_model:
|
||||
available.append('CNN')
|
||||
logger.info(" ✅ CNN model available")
|
||||
if hasattr(self.orchestrator, 'transformer_model') and self.orchestrator.transformer_model:
|
||||
available.append('Transformer')
|
||||
logger.info(" ✅ Transformer model available")
|
||||
|
||||
self.available_models = available
|
||||
|
||||
if available:
|
||||
logger.info(f"✅ Models loaded: {', '.join(available)}")
|
||||
logger.info(f"✅ Models loaded successfully: {', '.join(available)}")
|
||||
else:
|
||||
logger.warning("⚠️ No models were initialized")
|
||||
logger.warning("⚠️ No models were initialized (this might be normal if models aren't configured)")
|
||||
|
||||
self.models_loading = False
|
||||
logger.info("✅ Async model loading complete")
|
||||
else:
|
||||
logger.warning("⚠️ TradingOrchestrator not available")
|
||||
self.models_loading = False
|
||||
return # Success - exit retry loop
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Error loading models: {e}")
|
||||
self.models_loading = False
|
||||
self.available_models = []
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Error loading models (attempt {attempt + 1}/{max_retries}): {e}")
|
||||
import traceback
|
||||
logger.error(f"Traceback:\n{traceback.format_exc()}")
|
||||
|
||||
if attempt == max_retries - 1:
|
||||
# Final attempt failed
|
||||
logger.error(f"❌ Model loading failed after {max_retries} attempts")
|
||||
self.models_loading = False
|
||||
self.available_models = []
|
||||
else:
|
||||
logger.info(f" Will retry in {retry_delay} seconds...")
|
||||
|
||||
# Start loading in background thread
|
||||
thread = threading.Thread(target=load_models, daemon=True)
|
||||
thread = threading.Thread(target=load_models, daemon=True, name="ModelLoader")
|
||||
thread.start()
|
||||
logger.info("🚀 Model loading started in background (UI remains responsive)")
|
||||
logger.info(f"🚀 Model loading started in background thread (ID: {thread.ident}, Name: {thread.name})")
|
||||
logger.info(" UI remains responsive while models load...")
|
||||
logger.info(" Will retry up to 3 times if loading fails")
|
||||
|
||||
def _enable_unified_storage_async(self):
|
||||
"""Enable unified storage system in background thread"""
|
||||
|
||||
Reference in New Issue
Block a user