akagtag's picture
Implement ZeroGPU Space runtime
eff3d67

A newer version of the Gradio SDK is available: 6.14.0

Upgrade

Session Log

2026-04-28 02:11 +05:30 - ZeroGPU PRD Implementation, Context Handoff

Completed:

  • Treated CLAUDE.md as the project source of truth.
  • Updated HuggingFace Space metadata in README.md to include hardware: zero-gpu, sdk_version: '4.44.0', app_file: app.py, pinned: true, and license: mit.
  • Reworked app.py to import spaces, load modules on CPU at startup, use real modules.m3_sstgnn.SSTGNNModule, and decorate analyze() with @spaces.GPU(duration=120).
  • Added GPU transfer methods to M1, M2, and M3 wrappers.
  • Added SSTGNN architecture in modules/sstgnn_model.py.
  • Added patch graph construction in utils/graph.py.
  • Added local lipfd/model.py and lipfd/__init__.py so M1 import path exists.
  • Generated weights/fusion_mlp.pt and updated .gitignore to allow that exact required checkpoint.
  • Added tests/test_zero_gpu_contract.py to lock the ZeroGPU contract.

Broke / Fixed:

  • Initial contract test failed because README lacked ZeroGPU metadata, app.py imported m3_fallback, module wrappers lacked transfer methods, and modules/sstgnn_model.py was missing.
  • Fixed those failures and verified the contract tests pass.
  • Found missing lipfd/model.py and added it.
  • Found .gitignore ignored all .pt files and added !weights/fusion_mlp.pt.

Verification:

  • pytest tests/test_zero_gpu_contract.py -q passed.
  • pytest tests/test_fusion.py -q passed.
  • python -m py_compile passed for touched Python files.
  • Full suite passed: 59 passed, 9 warnings.

MCP / Context Store:

  • Tried to use MCP for Obsidian context.
  • list_mcp_resources returned no resources.
  • list_mcp_resource_templates returned no templates.
  • Because Obsidian MCP is not exposed in this Codex session, wrote a local fallback vault mirror under Obsidian/GenAI-DeepDetect/.

Next Session Starts With:

  • Connect Obsidian MCP and sync this local fallback folder into the real Obsidian vault.
  • Verify HuggingFace weight repos are accessible.
  • Replace minimal LipFD wrapper with full upstream model files if checkpoint loading reports missing or unexpected key issues.
  • Run the Gradio Space on ZeroGPU with a real video sample and configured NVIDIA_API_KEY.

Changed Paths / Model IDs:

  • README.md
  • app.py
  • .gitignore
  • requirements.txt
  • modules/__init__.py
  • modules/m1_lipsync.py
  • modules/m2_fingerprint.py
  • modules/m3_sstgnn.py
  • modules/m5_explain.py
  • modules/sstgnn_model.py
  • utils/graph.py
  • lipfd/__init__.py
  • lipfd/model.py
  • weights/fusion_mlp.pt
  • tests/test_zero_gpu_contract.py
  • Obsidian/GenAI-DeepDetect/README.md
  • Obsidian/GenAI-DeepDetect/module-status.md
  • Obsidian/GenAI-DeepDetect/blockers.md
  • Obsidian/GenAI-DeepDetect/session-log.md
  • HF model IDs: AkshatAgarwal/LipFD-checkpoint, AkshatAgarwal/SSTGNN-deepfake, yermandy/deepfake-detection, openai/clip-vit-large-patch14.
  • NVIDIA NIM model ID: meta/llama-3.1-8b-instruct.