|
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) |