Spaces:
Running on Zero
Running on Zero
Download app.py from ritianyu/SplatAnything: direct link, hf CLI and curl.
- Browser
- Download file 2.9 kB
-
https://huggingface.co/spaces/ritianyu/SplatAnything/resolve/main/app.py
- Command line
-
hf download hf://spaces/ritianyu/SplatAnything/app.py
-
curl -L -o app.py https://huggingface.co/spaces/ritianyu/SplatAnything/resolve/main/app.py
2.9 kB
| #!/usr/bin/env python3 | |
| """SplatAnything Gradio demo: python app.py (local GPU or CPU smoke run).""" | |
| import argparse | |
| import os | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent | |
| def parse_args(argv=None): | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument('--host', default=os.environ.get('HOST', '127.0.0.1')) | |
| parser.add_argument('--port', type=int, default=int(os.environ.get('PORT', '7860'))) | |
| parser.add_argument('--device', default=os.environ.get('SPLATANYTHING_DEVICE', 'cuda')) | |
| parser.add_argument('--config_path', default=os.environ.get('SPLATANYTHING_CONFIG', str(ROOT / 'configs/inference.yaml'))) | |
| parser.add_argument('--ckpt_path', default=os.environ.get('SPLATANYTHING_CKPT')) | |
| parser.add_argument('--geometry_ckpt_path', default=os.environ.get('WORLDMIRROR2_CKPT')) | |
| parser.add_argument('--sky_onnx_path', default=os.environ.get('SPLATANYTHING_SKY_CKPT')) | |
| parser.add_argument('--output_dir', default=os.environ.get('SPLATANYTHING_OUTPUT_DIR')) | |
| parser.add_argument('--examples_dir', default=os.environ.get('SPLATANYTHING_EXAMPLES_DIR', str(ROOT / 'examples'))) | |
| parser.add_argument('--install-viewer', action='store_true', help='Install the pinned npm viewer dependencies before launch.') | |
| args = parser.parse_args(argv) | |
| return args | |
| def build_app(args): | |
| # ZeroGPU must initialize CUDA emulation before Gradio or inference imports torch. | |
| zero = os.environ.get('SPLATANYTHING_ZEROGPU', os.environ.get('SPACES_ZERO_GPU', '0')).lower() in ('1', 'true') | |
| if zero: | |
| import spaces # noqa: F401 | |
| from demo.runtime import Pipeline | |
| from demo.ui import create_app | |
| pipeline = Pipeline(args.config_path, args.device, args.ckpt_path, args.geometry_ckpt_path, args.sky_onnx_path) | |
| predict_fn = None | |
| if zero: | |
| from demo.zero_gpu import initialize, predict | |
| initialize(pipeline) | |
| predict_fn = predict | |
| app = create_app(pipeline, args.output_dir, args.examples_dir, predict_fn=predict_fn) | |
| app.state.zero_gpu = zero | |
| return app | |
| def main(argv=None): | |
| args = parse_args(argv) | |
| if args.install_viewer: | |
| from demo.viewer import install_converter | |
| install_converter() | |
| app = build_app(args) | |
| import uvicorn | |
| if app.state.zero_gpu: | |
| # mount_gradio_app does not call Blocks.launch(), whose spaces SDK hook | |
| # packs preloaded CUDA tensors and reports the GPU functions to the host. | |
| # Expose the server as well so ZeroGPU workers close inherited listener FDs. | |
| server = uvicorn.Server(uvicorn.Config(app, host=args.host, port=args.port, access_log=False)) | |
| app.state.demo.server = server | |
| from demo.zero_gpu import startup | |
| startup() | |
| server.run() | |
| else: | |
| uvicorn.run(app, host=args.host, port=args.port, access_log=False) | |
| if __name__ == '__main__': | |
| main() | |