Team Ai
Apppublic

jlov7/Dynamic-Function-Calling-Agent

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
monitor_and_deploy.py126 linesDownload Raw Back to root
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()