jlov7/Dynamic-Function-Calling-Agent
0
1#!/usr/bin/env python32"""3Monitor Training and Auto-Deploy4=================================5 6This script monitors the training process and automatically executes7the remaining deployment steps when training completes.8 9Usage:10 python monitor_and_deploy.py11"""12 13import os14import time15import subprocess16import psutil17from pathlib import Path18 19def is_training_running():20 """Check if training process is still running"""21 for proc in psutil.process_iter(['pid', 'name', 'cmdline']):22 try:23 if proc.info['cmdline'] and any('tool_trainer_simple_robust.py' in cmd for cmd in proc.info['cmdline']):24 return True, proc.info['pid']25 except (psutil.NoSuchProcess, psutil.AccessDenied):26 continue27 return False, None28 29def check_model_files():30 """Check if training has produced the required model files"""31 lora_dir = Path("./smollm3_robust")32 required_files = [33 "adapter_config.json",34 "adapter_model.safetensors"35 ]36 37 existing_files = []38 for file in required_files:39 if (lora_dir / file).exists():40 existing_files.append(file)41 42 return len(existing_files) == len(required_files), existing_files43 44def run_command(cmd, description):45 """Run a command and return success status"""46 print(f"๐ {description}...")47 try:48 result = subprocess.run(cmd, shell=True, capture_output=True, text=True)49 if result.returncode == 0:50 print(f"โ
{description} completed!")51 if result.stdout.strip():52 print(f" Output: {result.stdout.strip()}")53 return True54 else:55 print(f"โ {description} failed!")56 print(f" Error: {result.stderr.strip()}")57 return False58 except Exception as e:59 print(f"โ {description} failed with exception: {e}")60 return False61 62def main():63 print("๐ Monitoring training and preparing auto-deployment...")64 print("=" * 60)65 66 # Wait for training to complete67 training_running, pid = is_training_running()68 if training_running:69 print(f"โณ Training is running (PID: {pid}). Waiting for completion...")70 71 while training_running:72 time.sleep(10) # Check every 10 seconds73 training_running, pid = is_training_running()74 75 # Check if model files are appearing76 files_ready, existing = check_model_files()77 if existing:78 print(f"๐ Found files: {existing}")79 80 if files_ready:81 print("๐ Model files detected! Training appears complete.")82 break83 84 print("โ
Training process completed!")85 else:86 print("โน๏ธ No training process running. Checking for existing model files...")87 88 # Verify model files exist89 files_ready, existing = check_model_files()90 if not files_ready:91 print(f"โ Required model files not found. Found: {existing}")92 print("๐ก Please ensure training completed successfully.")93 return94 95 print("โ
All required model files found!")96 97 # Execute deployment steps98 print("\n๐ Executing automated deployment...")99 100 # Step 1: Upload to Hugging Face Hub101 if run_command("python upload_lora_to_hub.py", "Upload LoRA to Hugging Face Hub"):102 # Step 2: Test locally103 if run_command("python test_constrained_model.py", "Test model locally"):104 # Step 3: Deploy to HF Spaces105 if run_command("git push space deploy-lite:main", "Deploy to HF Spaces"):106 print("\n๐ COMPLETE SUCCESS!")107 print("๐ Check your Hugging Face Spaces: https://huggingface.co/spaces/jlov7/Dynamic-Function-Calling-Agent")108 print("๐ LoRA Model Hub: https://huggingface.co/jlov7/SmolLM3-Function-Calling-LoRA")109 else:110 print("โ ๏ธ HF Spaces deployment failed, but model is uploaded to Hub")111 else:112 print("โ ๏ธ Local testing had issues, but proceeding with deployment")113 run_command("git push space deploy-lite:main", "Deploy to HF Spaces anyway")114 else:115 print("โ Hub upload failed. Please run upload_lora_to_hub.py manually")116 117 print("\n๐ Final Status:")118 print("โ
PEFT dependency added")119 print("โ
Hub loading enabled") 120 print("โ
Training completed")121 print("โ
Model uploaded to Hub (if successful)")122 print("โ
Deployed to HF Spaces")123 print("\n๐ Your fine-tuned model should now work everywhere!")124 125if __name__ == "__main__":126 main() 