yeq6x's picture
Enhance app.py by implementing a logging mechanism for training progress and model performance metrics. This addition improves monitoring capabilities during training sessions and aids in debugging.
4a514b8
raw
history blame
1.91 kB
#!/usr/bin/env python3
"""
Minimal UI preview launcher for app.py.
Purpose:
- Avoids heavy startup work (clones, downloads) by stubbing modules.
- Replaces training function with a no-op so you can safely click around.
Usage:
python ui_preview.py
Requires:
pip install gradio
"""
import sys
import types
# Stub out `spaces` so the @spaces.GPU decorator is a no-op
spaces_stub = types.ModuleType("spaces")
def _gpu_decorator(fn=None, *args, **kwargs):
# Supports both @spaces.GPU and @spaces.GPU(...)
if callable(fn):
return fn
def _wrap(f):
return f
return _wrap
spaces_stub.GPU = _gpu_decorator
sys.modules["spaces"] = spaces_stub
# Stub out download_qwen_image_models to avoid importing huggingface_hub
models_stub = types.ModuleType("download_qwen_image_models")
models_stub.DEFAULT_MODELS_DIR = "./_models_stub"
def _download_all_models(models_dir: str = models_stub.DEFAULT_MODELS_DIR):
# Return a minimal shape that callers might expect; no downloads.
return {"root": models_dir}
models_stub.download_all_models = _download_all_models
sys.modules["download_qwen_image_models"] = models_stub
# Import the real app after stubbing
import gradio as gr # ensure gradio is installed
import importlib
app = importlib.import_module("app")
# Replace heavy training routine with a preview-friendly stub
def _preview_run_training(*args, **kwargs):
# Generator to match Gradio streaming handler expectations
msg = (
"[UI PREVIEW]\n"
"This is a UI-only preview. Training is disabled here.\n"
"Click handlers are stubbed; no jobs will run.\n"
)
yield (msg, [], None)
app.run_training = _preview_run_training # type: ignore[attr-defined]
def main():
ui: gr.Blocks = app.build_ui()
# For preview, simple launch without queue or allowed_paths
ui.launch()
if __name__ == "__main__":
main()