import gradio as gr import spaces import subprocess import requests import datetime import os @spaces.GPU def run_peft_eval(): print("Starting evaluation...", flush=True) try: process = subprocess.Popen( ["python3", "run_eval.py"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, ) log_lines = [] for line in process.stdout: print(line, end='', flush=True) log_lines.append(line) process.wait() if process.returncode != 0: return "Evaluation failed. See logs above." except Exception as e: print("Eval script failed:", e, flush=True) return "Evaluation failed. Check logs." # Optional shutdown trigger (Spaces-only feature) try: shutdown_url = os.environ.get("HF_ENDPOINT_SHUTDOWN") if shutdown_url: print("Triggering shutdown...", flush=True) requests.post(shutdown_url) except Exception as e: print("Shutdown failed:", e, flush=True) return f"✅ PEFT-Bench completed at {datetime.datetime.utcnow():%Y-%m-%d %H:%M UTC}" with gr.Blocks() as demo: gr.Markdown("### PEFT-Bench GPU Evaluator") gr.Markdown("Click the button below to run `run_eval.py`. The Space will automatically shut down when complete.") status = gr.Textbox(label="Status", lines=2) btn = gr.Button("Start Evaluation") btn.click(fn=run_peft_eval, outputs=status) demo.launch(show_error=True)