Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import json | |
| import torch | |
| from dotenv import load_dotenv | |
| import logging | |
| # Configure logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', | |
| handlers=[ | |
| logging.StreamHandler(), | |
| logging.FileHandler("app.log") | |
| ] | |
| ) | |
| logger = logging.getLogger(__name__) | |
| # Load environment variables | |
| load_dotenv() | |
| # Load config file | |
| def load_config(config_path="transformers_config.json"): | |
| try: | |
| with open(config_path, 'r') as f: | |
| config = json.load(f) | |
| return config | |
| except Exception as e: | |
| logger.error(f"Error loading config: {str(e)}") | |
| return {} | |
| # Load configuration | |
| config = load_config() | |
| model_config = config.get("model_config", {}) | |
| # Model details from config | |
| MODEL_NAME = model_config.get("model_name_or_path", "unsloth/DeepSeek-R1-Distill-Qwen-14B-bnb-4bit") | |
| SPACE_NAME = os.getenv("HF_SPACE_NAME", "phi4training") | |
| TRAINING_ACTIVE = os.path.exists("TRAINING_ACTIVE") | |
| # Create Gradio interface - training status only, no model outputs | |
| with gr.Blocks(css="footer {visibility: hidden}") as demo: | |
| gr.Markdown(f"# {SPACE_NAME}: Training Status Dashboard") | |
| with gr.Row(): | |
| with gr.Column(): | |
| status = gr.Markdown( | |
| f""" | |
| ## Research Training Phase Active | |
| **Model**: {MODEL_NAME} | |
| **Dataset**: phi4-cognitive-dataset | |
| This is a multidisciplinary research training phase. The model is not available for interactive use. | |
| ### Training Configuration: | |
| - **Epochs**: {config.get("training_config", {}).get("num_train_epochs", 3)} | |
| - **Batch Size**: {config.get("training_config", {}).get("per_device_train_batch_size", 2)} | |
| - **Gradient Accumulation Steps**: {config.get("training_config", {}).get("gradient_accumulation_steps", 4)} | |
| - **Learning Rate**: {config.get("training_config", {}).get("learning_rate", 2e-5)} | |
| - **Max Sequence Length**: {config.get("training_config", {}).get("max_seq_length", 2048)} | |
| ### Training Status: | |
| {"🟢 Training in progress" if TRAINING_ACTIVE else "⚪ Training not currently active"} | |
| ⚠️ **NOTE**: This space does not provide model outputs during the research training phase. | |
| """ | |
| ) | |
| # Add a refresh button to check status | |
| refresh_btn = gr.Button("Refresh Status") | |
| def refresh_status(): | |
| # Re-check if training is active | |
| training_active = os.path.exists("TRAINING_ACTIVE") | |
| return f""" | |
| ## Research Training Phase Active | |
| **Model**: {MODEL_NAME} | |
| **Dataset**: phi4-cognitive-dataset | |
| This is a multidisciplinary research training phase. The model is not available for interactive use. | |
| ### Training Configuration: | |
| - **Epochs**: {config.get("training_config", {}).get("num_train_epochs", 3)} | |
| - **Batch Size**: {config.get("training_config", {}).get("per_device_train_batch_size", 2)} | |
| - **Gradient Accumulation Steps**: {config.get("training_config", {}).get("gradient_accumulation_steps", 4)} | |
| - **Learning Rate**: {config.get("training_config", {}).get("learning_rate", 2e-5)} | |
| - **Max Sequence Length**: {config.get("training_config", {}).get("max_seq_length", 2048)} | |
| ### Training Status: | |
| {"🟢 Training in progress" if training_active else "⚪ Training not currently active"} | |
| ⚠️ **NOTE**: This space does not provide model outputs during the research training phase. | |
| """ | |
| refresh_btn.click(refresh_status, outputs=status) | |
| gr.Markdown(""" | |
| ### Research Training Information | |
| This model is being fine-tuned on research-focused datasets and is not available for interactive querying. | |
| Training logs are available to authorized researchers only. | |
| """) | |
| # Launch the interface | |
| if __name__ == "__main__": | |
| # Create an empty TRAINING_ACTIVE file to indicate training is in progress | |
| # This would be managed by the actual training script | |
| if not os.path.exists("TRAINING_ACTIVE"): | |
| with open("TRAINING_ACTIVE", "w") as f: | |
| f.write("Training in progress") | |
| # Start Gradio with minimal features | |
| logger.info("Starting training status dashboard") | |
| demo.launch(share=False, enable_queue=False) |