Spaces:
Running on Zero
Running on Zero
Commit History
-
Merge pull request #71 from some1galaxy/develop Running
Unverified signatureSync develop into main: upscale acceleration (#47) + track_tqdm regression fix86dcc87 -
Drop torch.compile from the upscale model; run eager (#50) (#70)
Unverified signatureDev-Space A/B via UPSCALE_COMPILE (#69), 53 frames, back-to-back runs: - compiled (832x624 / 624x832): model_time 10.56-11.04s cold, 2.72-5.42s warm, almost entirely the per-request first-call (compile/guard) penalty - eager (544x832): model_time 0.96s cold and 0.96s warm, first call ~0.1s Eager's steady compute is ~25% slower per pixel (~+0.2s per request at 832x624), far below the 1.9-10s compile penalty it removes. Remove the compile path and the now-unneeded UPSCALE_COMPILE flag, and update the profiler docstring that assumed compile. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>d7bfd39 -
Add UPSCALE_COMPILE env flag to run upscale eager for comparison (#50) (#69)
Unverified signatureAfter #67/#68, torch.compile's first-call-at-shape cost (9.8s cold, 1.9s warm) dwarfs the 0.79s of steady compiled compute per 53-frame request, so eager may be faster end to end. UPSCALE_COMPILE=0 skips torch.compile and logs that the eager model is in use; default behavior is unchanged. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>0aab626 -
Upscale frames untiled and pad short batches to one compiled shape (#51) (#68)
Unverified signatureDev-Space profiling after #67 shows the remaining upscale cost is almost all torch.compile first-call-at-shape penalties: 8 distinct (tile-shape, batch-size) pairs cost 28.9s cold / 3.8s warm, vs. 0.73s for all 48 steady calls. The 8 come from a 2x2 grid of edge-clipped 512 tiles (4 shapes) times two batch sizes (4, plus 1 for the tail frame). - TILE_SIZE 512 -> 1024, covering the largest generated frame (MAX_DIM=832 plus TILE_PAD) in one tile. #51's numbers show ~13 GiB free vs. ~1 GiB used. - Pad a short tail batch up to FRAME_BATCH_SIZE by repeating its last frame, and drop the extra outputs, so it reuses the full batch's compiled shape. Expected: 1 first-at-shape call per resolution instead of 8. Output is no longer tile-stitched, so it can differ slightly (no seams) from before. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>2ba97e4 -
Quantize upscaled frames to uint8 on the GPU before host transfer (#61) (#67)
Unverified signatureDev-Space profiling (see #61) showed pil_convert at ~9.1s of ~12s non-model time per 45-frame request: the per-frame numpy `(x * 255).round().astype(uint8)` on 3328x2496 float32 arrays, ~200ms/frame. host_transfer was another ~2.6s, copying float32 to the host when only uint8 is needed. Do the clamp/*255/round/uint8 on the device, then transfer a contiguous uint8 batch (1/4 the bytes) and hand it straight to Image.fromarray. Same arithmetic as before (fp32 multiply, round-half-to-even), so output is unchanged. Adds a `quantize` profiling span so the next dev-Space run shows the new split. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>b730447 -
Report baseline, upscale delta, and total device VRAM in upscale profile (#51) (#66)
Unverified signatureThe existing peak-memory line can't answer #51's headroom question on its own: reset_peak_memory_stats resets the peak, not what's already resident, so the ~35 GiB peak includes whatever the process held before upscale started (e.g. the diffusion pipeline), and the device's total VRAM wasn't logged at all. With UPSCALE_PROFILE=1, add a second memory line with the allocated/reserved baseline at run start, upscale's own delta above it, and total/free VRAM from torch.cuda.mem_get_info, plus headroom against peak reserved. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>f3eac0a -
Merge pull request #65 from some1galaxy/fix-track-tqdm-regression
Unverified signatureFix regression: drop track_tqdm=True reintroduced by the mypy-strict mergee7be9c2
-
Fix regression: drop track_tqdm=True reintroduced by the mypy-strict merge (#64)
#33 (commit 629c301) removed gr.Progress(track_tqdm=True) because it globally monkey-patches tqdm and picks up TorchInductor's own compilation progress bars, garbling the Gradio UI. That fix was silently reverted when the add-mypy-strict-typecheck branch — forked before #33 landed — merged its stale copy of these two default arguments back into develop. The callback_on_step_end mechanism #33 added for generation-stage progress was untouched by that merge; only the track_tqdm flag came back. Fixes #64. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>fed3939 -
Merge pull request #63 from some1galaxy/profile-upscale-non-model-overhead
Unverified signatureAdd non-model overhead breakdown to upscale profiling (#61)7e4f476 -
Break down upscale's non-model overhead into named profiling spans (#61)
UpscaleProfiler previously only measured model() calls, leaving the ~74% of upscale wall time spent outside them as one opaque "non_model" number. Adds a span() context manager and wraps job_grouping, tile_merge, frames_to_tensor, pre_pad, host_transfer, and pil_convert so the next UPSCALE_PROFILE=1 run on the dev Space localizes where that time actually goes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>ea4ada4
-
Merge pull request #62 from some1galaxy/develop
Unverified signatureSync develop into main80ce38f -
Merge pull request #28 from some1galaxy/add-mypy-strict-typecheck
Unverified signatureAdd mypy --strict type-check CI gate447553c -
Merge origin/develop, resolving upscale.py profiling conflict
Both branches touched upscale_frames(): develop added opt-in profiling (UpscaleProfiler) for #48, this branch added the mypy --strict type annotation on out_frames. Keep both. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>4bc4218 -
Merge pull request #59 from some1galaxy/fix-print-frames-info-tensor-attrs
Unverified signatureFix print_frames_info logging garbage bound-method reprs for tensor frames0fffa5b -
Merge pull request #60 from some1galaxy/add-upscale-profiling
Unverified signatureAdd opt-in profiling to the upscale stage for #48 benchmarkingdda3d77 -
Add opt-in profiling to the upscale stage for #48 benchmarking
Gated by UPSCALE_PROFILE=1 (off by default, zero overhead when unset). Reports, per upscale_frames() call: wall time vs. model time vs. non-model overhead, split into first-call-at-a-(tile-shape,batch-size) vs. steady-state repeat calls (to expose torch.compile recompilation cost — the #50 question), plus peak CUDA memory alongside the current TILE_SIZE/FRAME_BATCH_SIZE/MAX_TILE_BATCH constants (the #51 headroom question). Profiling logic lives in its own UpscaleProfiler class (postprocess/upscale/profiling.py) so the tiling/inference hot path in upscale.py isn't cluttered with timing bookkeeping. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>678f3ac -
Restore the .change() type: ignore removed during the develop merge
mypy without gradio installed treats it as untyped Any (ignore_missing_imports), which made the ignore comment look unused locally. CI installs gradio for real, where the base Component type genuinely lacks .change(), so the suppression is required there. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>68273f5 -
Fix print_frames_info logging garbage bound-method reprs for tensor frames
torch.Tensor has .size()/.mode() methods with the same names as PIL Image's .size/.mode attributes, which print_frames_info reads via getattr assuming a PIL Image. Since #53 the RIFE->upscale tensor handoff can pass a tensor frame list to this same logging call, producing e.g. "pil_size=<built-in method size of Tensor object at 0x...>" in production logs instead of a clean None. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>e7c7a36 -
Merge remote-tracking branch 'origin/develop' into add-mypy-strict-typecheck
# Conflicts: # app.py # postprocess/interpolation.py # postprocess/upscale/upscale.pyc8ec0f7 -
Merge pull request #58 from some1galaxy/tensor-only-interpolation-upscale-pipeline
Unverified signatureBuild a tensor-only RIFE -> upscale pipeline (#53)97e9c44 -
Build a tensor-only RIFE -> upscale pipeline (#53)
Interpolation can now hand upscale (C,H,W) fp16 GPU tensors directly instead of round-tripping every frame through CPU numpy in between, when both stages run in the same @spaces.GPU allocation. The "no upscale" and "no interpolation" paths are unchanged. Adds a print_frames_info log line after interpolation so the handoff mode (tensor vs. numpy) is visible in production logs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>fed6bc3 -
Merge pull request #57 from some1galaxy/remove-upscale-pil-roundtrip
Unverified signatureRemove redundant numpy->PIL->numpy round trip between interpolation and upscale663dfc8 -
Remove redundant numpy->PIL->numpy round trip between interpolation and upscale
upscale_frames (and _frames_to_tensor) now accept the numpy float32 [0,1] (H,W,C) frames that _apply_interpolation already produces directly, instead of requiring a PIL.Image round trip solely to cross the function boundary. export_to_video accepts numpy or PIL either way, so the PIL detour bought nothing but two CPU-side per-pixel conversions and a PIL allocation per frame. Part of #47, closes #49. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>55d9178 -
Merge pull request #56 from some1galaxy/worktree-sync-develop-main
Unverified signatureSync develop into main3a3e758 -
Sync develop into main
5a6158b -
Log the final served video, not the pre-upscale result (#46)
Unverified signature* Sync develop into main (#43) * Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @sp…3d9fab2
-
Merge pull request #45 from some1galaxy/develop
Unverified signatureSync develop into main4e80bca -
Prune log repo on file count, not just storage size (#44)
Unverified signatureThe Hub commit endpoint rejects pushes once a directory holds more than 10000 files. Storage-size-only retention didn't bound this: data/ and images/ files are tiny relative to videos/, so thousands of stems accumulated in those directories long before the byte cap ever triggered a prune, eventually hitting the Hub's per-directory limit. Add a LOG_MAX_FILES cap (default 8000 stems) that prunes alongside the existing LOG_STORAGE_CAP_GB, whichever is hit first. Claude-Session: https://claude.ai/code/session_01WHfM7C6kNJh15dWfYt8agd Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>4578f11
-
Sync develop into main (#43)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …4bb4d59 -
Merge branch 'main' into develop
Resolves a conflict in model/pipeline.py: git's line-based merge would have silently reverted the transformer quantization from Float8DynamicActivationFloat8WeightConfig() back to main's stale Float8WeightOnlyConfig() (a #35 stopgap that predates the #39 AOT-compile fix making dynamic-activation quantization safe again). The precompiled AOTI package loaded via spaces.aoti_load() expects the dynamic-activation op graph, so that silent revert would have mismatched at runtime. Resolved by keeping develop's dynamic-activation config.b505376 -
Fix deploy crash: gr.Image doesn't accept an info kwarg in Gradio 6.0.1 (#42)
Unverified signatureTypeError: Image.__init__() got an unexpected keyword argument 'info' on Space startup. Unlike gr.Slider/gr.Dropdown, gr.Image has no info param in this Gradio version — fold the hint into the label instead. Claude-Session: https://claude.ai/code/session_01929npp9MCfTtGF4tyfEE5n Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>4aabec2 -
Support specifying an end frame (last image) for I2V generation (#41)
Unverified signatureMirrors wan2-2-i2v-v3's Last Image input: adds an optional end-frame upload in Advanced Settings, resized/cropped to match the input image's dimensions, and passes it through to WanImageToVideoPipeline(..., last_image=...). This repo pins the same diffusers==0.38.0 as the reference project, so the pipeline already supported last_image — it just wasn't wired up here. Closes #40. Claude-Session: https://claude.ai/code/session_01929npp9MCfTtGF4tyfEE5n Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>7270705 -
AOT-compile the transformer to re-enable dynamic-activation fp8 quant (#39)
Unverified signatureLoads pipe.transformer/transformer_2 via spaces.aoti_load() against thornmaze/WanTransformer3DModel-sm120-cu130-raa, confirmed reusable for WAMU_v3 (#36's architecture/hardware investigation), and switches the transformer quantization back from Float8WeightOnlyConfig to Float8DynamicActivationFloat8WeightConfig now that AOT pre-plans memory for the per-layer activation-quantize casts that config adds — the allocator churn that caused #35's eager-mode NVML crash. Needs real-GPU validation on the dev Space before rolling to prod: the AOT package was compiled against torch==2.9.1+cu130 vs. this repo's torch==2.11.0 pin, and no GPU is available in this environment to test that ABI compatibility directly. Claude-Session: https://claude.ai/code/session_01NbKYSwLurCaLK6SZ3b5EJQ Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>c2bf65e -
Sync develop into main (#38)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …9f64382 -
Quantize transformer with weight-only fp8 instead of dynamic-activation fp8 (#37)
Unverified signatureFloat8DynamicActivationFloat8WeightConfig quantizes activations on every F.linear call, which under eager execution (AOT deferred, #3) meant an unplanned CUDA allocation per linear layer per step. That allocator churn reliably crashed the prod ZeroGPU Space with an NVML assert in the caching allocator (#35). Float8WeightOnlyConfig keeps the weight-memory savings without any runtime activation-quantization allocations, trading away the fp8x8 matmul speedup until AOT compilation (#36) makes the dynamic-activation config safe again. Claude-Session: https://claude.ai/code/session_01GRZRv1d2KinVjvMhJ4c7fF Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>34c1019
-
Sync develop into main (#34)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …5ab12ca -
Stop Inductor compilation progress from leaking into the Gradio UI (#33)
Unverified signaturegr.Progress(track_tqdm=True) monkey-patches tqdm globally, so it was picking up TorchInductor's own "Inductor Compilation" progress bars (triggered by torch.compile on the upscale model, and by the quantized transformer/text_encoder) regardless of their own disable flag. Drop track_tqdm and report the generation stage's progress explicitly via callback_on_step_end instead, matching the interpolation/upscale stages.629c301 -
Sync develop into main (#32)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …124fb40 -
Add liability disclaimer to the Space UI (#30)
Unverified signatureNotes that outputs are provided "as is" and that users are solely responsible for generated content and how it's used/shared. Claude-Session: https://claude.ai/code/session_015woCw9matvyXW3Xnx2JwXG Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>de8e11b -
Log when torch.compile falls back to the eager upscale model (#31)
Unverified signatureThe try/except guard added in #26 silently swallowed torch.compile initialization failures (e.g. missing/incompatible triton on the Space's GPU image), so a fallback to the eager model would be invisible in the logs — leaving no way to tell, from the deployed Space's console output, whether the compiled path is actually active. Print the exception instead of passing silently.1ceec92 -
torch.compile the upscale model on CUDA (#26)
Unverified signatureWraps the model with torch.compile(dynamic=True) on the CUDA path for kernel fusion. dynamic=True avoids a fresh recompile for every distinct tile shape (interior tiles vs. the clipped last row/column) — there's only a handful of those per video, but without it each new shape would trigger its own recompile. Wrapped in try/except: if torch.compile fails to initialize (e.g. missing/incompatible triton on the target GPU image), the eager model is used as-is. No GPU available in this environment to benchmark, and this is the riskiest of the four upscale perf changes (compile warmup cost vs. steady-state speedup, triton availability on the Space's GPU image) — needs careful validation on the dev Space before merge.a5e5374 -
Sync develop into main (#29)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …7603944 -
Add mypy --strict type-check CI gate on every PR
Annotates the previously-untyped functions in app.py, model/pipeline.py, and postprocess/interpolation.py, fixes the couple of real bugs strict type-checking surfaced (deprecated Image.LANCZOS constant, an int-or-None mixing in preview_effect, a numpy float**float Any leak), and adds a pyproject.toml mypy config that exempts vendored third-party files instead of relaxing strictness project-wide. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CRfYRYPEtM8UA6mtHoKL422682589 -
Increase upscale tile size from 256 to 512 (#24)
Unverified signatureLarger tiles mean fewer, bigger model() calls per frame, which cuts pad/crop overhead and Python/kernel-launch count and improves GPU occupancy for this small SRVGGNetCompact network. 512 is still conservative for a 16GB+ Spaces GPU (T4/L4/A10G). No GPU available in this environment to benchmark memory headroom or speedup; needs validation on the dev Space before merge.e284828 -
Sync develop into main (#27)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. * Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22) The RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a …3bd3a96 -
Batch frames and same-shaped tiles through the upscale model (#23)
Unverified signatureupscale_frames processed one frame at a time, and within each frame _tile_process called the model once per tile (batch=1 every time). With SRVGGNetCompact this leaves most of the GPU idle per call, since a single ~256px tile is far under typical GPU parallel capacity. Group frames of equal size into batches (FRAME_BATCH_SIZE) before tiling, and within _tile_process group tile jobs by input-patch shape (interior tiles are all the same size; only the last row/column differs, clipped against the image edge) so each model() call is one batched forward pass over same-shaped patches, chunked to MAX_TILE_BATCH to bound memory. The per-tile crop/placement math is unchanged — verified index-for-index equivalent to the prior per-tile loop via a numpy simulation with a synthetic nonlinear "model" across several batch/ragged-size cases. No GPU available in this environment to benchmark; needs validation on the dev Space before merge.60ca9a8 -
Pre-download RIFE/upscale weights at startup instead of inside @spaces.GPU (#22)
Unverified signatureThe RIFE and 4xLSDIRCompact weight fetches are pure network/disk I/O with no CUDA dependency, but were only downloaded lazily on first use inside the metered @spaces.GPU allocation — costing a few seconds of ZeroGPU quota on every cold container start. Move both fetches to app startup (alongside load_pipeline()), mirroring how the main video model is already preloaded. Claude-Session: https://claude.ai/code/session_011keM1seSWsBZqPHrzKTeCG Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>7123409 -
Sync develop into main (#21)
Unverified signature* Check Upscale 4x by default and drop model name from its label (#19) Simplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20) The Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone. --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>460f125 -
Add detailed export/traceback logging to diagnose post-pipeline UI errors (#20)
Unverified signatureThe Space logs cut off right after the pipeline stages finish, with no trace of what happens next in generate_video() (export_to_video and the run_inference call boundary), even though the UI shows a generic Error. Log frame metadata and full tracebacks at those points so the next failure is diagnosable from the Space logs alone.ab3b519 -
Check Upscale 4x by default and drop model name from its label (#19)
Unverified signatureSimplifies the option to a plain checkbox toggle without exposing the underlying model name in the UI. Claude-Session: https://claude.ai/code/session_01W9GLmk1R3mFfb7otDoGiWX Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>441c4d5