--- title: NFA Track R FLUX.2 Fun CN ZeroGPU emoji: 🎬 colorFrom: green colorTo: blue sdk: gradio sdk_version: "5.49.1" app_file: app.py pinned: false license: other short_description: Real Fun depth ControlNet fp8+xlarge (NOT soft image=depth) --- # Track R — FLUX.2 Fun depth ControlNet (ZeroGPU) **Hard rule:** This Space runs **real** ALIMAMA / VideoX-Fun Fun ControlNet Union depth. Soft Flux2 `image=depth` is **banned forever** on this path. ## Stack (2026-07-21 host-RAM fix) | Piece | Value | |---|---| | Painter | FLUX.2-dev DiT **streamed to float8** (never full bf16 host materialize) | | CN | VideoX-Fun `Flux2ControlPipeline` + `FLUX.2-dev-Fun-Controlnet-Union-2602` | | TE | **Local** quantized `diffusers/FLUX.2-dev-bnb-4bit` (NO HF remote TE) | | GPU | `@spaces.GPU(duration=300, size="xlarge")` = **96GB** @ **2×** Pro minutes | | Memory mode | `model_cpu_offload_and_qfloat8` (weights already fp8 at load) | | Weights | HF Mount `/data/FLUX.2-dev` + `/data/Fun-CN` (+ TE download/cache) | | Abort | `NFA_FUN_CN_LOAD_DEADLINE_SEC` (default 480) if `Fun CN loaded` not reached | Requires Space secret **`HF_TOKEN`** (gated FLUX.2-dev license accepted on the account). ## Env | Var | Default | |---|---| | `NFA_FUN_CN_GPU_SIZE` | `xlarge` | | `NFA_FUN_CN_MEM_MODE` | `model_cpu_offload_and_qfloat8` | | `NFA_FLUX2_TE_MODEL_ID` | `diffusers/FLUX.2-dev-bnb-4bit` | | `NFA_FUN_CN_LOAD_DEADLINE_SEC` | `480` | ## API Same client contract: `/generate_still` (`positive`, `negative`, `depth_image`, `seed`, `width`, `height`, `steps`, `guidance`, `cn_strength`) Depth is **required**. Soft depth is never used.