Spaces:
Sleeping
Sleeping
import gradio as gr | |
import spaces | |
import subprocess | |
import requests | |
import datetime | |
import os | |
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) | |