huggingface-projects/diffusiongemma-3d-gen
Gemma Diffusion · Text → 3D Asset
A live, side-by-side visualization of block-diffusion generation. Describe a game asset (a sword, potion, treasure chest, spaceship, ...) and the model designs an original SVG illustration by denoising a canvas of random tokens — every position updates at once each step. A fixed, hand-written Three.js harness then extrudes that SVG into an interactive, spinning 3D object.
The left pane shows the raw SVG canvas diffusing token-by-token (the signature look of text diffusion); the right pane shows the extruded 3D scene (drag to orbit). Type a follow-up to tweak in place: the previous artwork seeds the diffusion's starting canvas (via the model's native canvas_ids API), so the model edits the existing asset instead of regenerating from scratch.
Stack
- Model:
google/diffusiongemma-26B-A4B-it(DiffusionGemmaForBlockDiffusion). - Backend: `gradio.Server` — a FastAPI subclass that provides Gradio's queue + SSE streaming under a custom, hand-written HTML/CSS/JS frontend (
index.html). The single streaming endpoint/generateyields one JSON frame per denoising step. The model only has to produce the SVG art; the frontend owns the (reliable) 3D extrusion, so the scene always renders. - Hardware: ZeroGPU (
xlarge) — the 26B checkpoint needs the full backing card.
A custom transformers wheel providing the DiffusionGemma architecture is bundled in this repo and installed at runtime by app.py (Spaces installs requirements.txt before the repo files are copied in, so a local-path wheel can't be referenced there).
Configuration
HF_TOKEN(secret) — read access to the private model repo.GRADIO_SSR_MODE=false(variable) — required so the custom/route servesindex.htmlinstead of Gradio's SSR shell.GDIFF_MODEL_PATH(optional) — override the model repo id.GDIFF_GPU_SIZE(optional) — ZeroGPU slice, defaults toxlarge.
