| import gradio as gr |
| import os |
| import json |
| import torch |
| from dotenv import load_dotenv |
| import 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_dotenv() |
|
|
| |
| 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 {} |
|
|
| |
| config = load_config() |
| model_config = config.get("model_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") |
|
|
| |
| 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. |
| """ |
| ) |
| |
| |
| refresh_btn = gr.Button("Refresh Status") |
| |
| def refresh_status(): |
| |
| 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. |
| """) |
|
|
| |
| if __name__ == "__main__": |
| |
| |
| if not os.path.exists("TRAINING_ACTIVE"): |
| with open("TRAINING_ACTIVE", "w") as f: |
| f.write("Training in progress") |
| |
| |
| logger.info("Starting training status dashboard") |
| demo.launch(share=False) |