| import time |
| from datetime import UTC, datetime |
|
|
| import gradio as gr |
| import spaces |
| import torch |
|
|
| GENERATE_SECONDS = 5 |
| VISUALIZE_SECONDS = 3 |
|
|
|
|
| def _now() -> str: |
| return datetime.now(UTC).strftime("%H:%M:%S") |
|
|
|
|
| @spaces.GPU(duration=10) |
| def generate(text: str) -> str: |
| start = _now() |
| gpu_name = torch.cuda.get_device_name() |
| print(f"[generate] start={start} input={text!r} gpu={gpu_name}") |
| time.sleep(GENERATE_SECONDS) |
| end = _now() |
| print(f"[generate] end={end} input={text!r}") |
| return f"generate | start {start} | end {end} | gpu {gpu_name} | input {text!r}" |
|
|
|
|
| def visualize(text: str) -> str: |
| start = _now() |
| print(f"[visualize] start={start} input={text!r}") |
| time.sleep(VISUALIZE_SECONDS) |
| end = _now() |
| print(f"[visualize] end={end} input={text!r}") |
| return f"visualize | start {start} | end {end}\n{text}" |
|
|
|
|
| demo = gr.Workflow(bind={"generate": generate, "visualize": visualize}) |
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|