MOSS-Image / app.py
Phospheneser's picture
Log effective generation queue concurrency at startup
2aa1001
Raw History Blame Contribute Delete
1.8 kB
"""Space entry point. Load both Hub models before serving GPU requests."""
import argparse
import logging
import os
import spaces # Initialize ZeroGPU before importing PyTorch or Diffusers.
from gradio_app import (
DEFAULT_MODEL, EXAMPLES, MODEL_IDS, UI_ASSETS,
ModelRunner, build_app, load_pipeline,
)
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--preview", action="store_true", help="Preview UI without downloading weights")
parser.add_argument("--port", type=int, default=7860)
args = parser.parse_args()
logging.basicConfig(level=logging.INFO)
model = os.environ.get("MOSS_MODEL_ID", DEFAULT_MODEL)
if model not in MODEL_IDS:
parser.error("MOSS_MODEL_ID must be OpenMOSS-Team/MOSS-Image-Base or OpenMOSS-Team/MOSS-Image-SFT")
runner = ModelRunner("outputs/gradio")
if not args.preview:
shared_pipe = load_pipeline(model)
runner.pipelines[model] = shared_pipe
for repo in MODEL_IDS:
if repo != model:
runner.pipelines[repo] = load_pipeline(repo, shared_pipe=shared_pipe)
if os.environ.get("MOSS_AOTI", "1") == "1":
from aoti import prepare_aoti
prepare_aoti(runner.pipelines.values())
demo = build_app(model=model, runner=runner)
generate_fn = next(fn for fn in demo.fns.values() if fn.api_name == "generate")
logging.info(
"Generation queue: SPACES_ZERO_GPU=%r, concurrency_limit=%s",
os.environ.get("SPACES_ZERO_GPU"), generate_fn.concurrency_limit,
)
demo.launch(
server_name="0.0.0.0", server_port=args.port, share=False,
allowed_paths=[str(runner.output_dir), str(EXAMPLES.resolve()), str(UI_ASSETS.resolve())],
)
if __name__ == "__main__":
main()