Spaces:
Running on Zero
Running on Zero
Commit History
13 days ago
-
Restore original sans-serif fonts for headings and tabs Running
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4d18745
14 days ago
-
Remove dashes from visible UI text
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>2bbca49 -
Reword future prediction description (no 'unconditional')
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>aa23328 -
Update Space: new paper title, README card, classical layout
Muhammad Uzair Khattak +1: Claude Opus 5.5- Header and README use the new paper title, author order, and links; README is now a visitor-facing card, deployment notes moved to DEPLOYMENT.md - Input selector order: RGB video, Caption, Other modalities - Future prediction timeline uses square tiles so frames are not cropped - Classical layout (serif headings, square corners, underlined tabs, plain header links) on the original color theme - Result card headers no longer truncate the modality name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>465f43d
21 days ago
-
Rename A2A-Video to Video-4M
Muhammad Uzair Khattak +1: Claude Opus 5.5Update display names, HF repo ids (Video-4M-{models,tokenizers,examples}), the main checkpoint filename, and project/GitHub links to match the renamed Hub repos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>5cc082e
25 days ago
-
Round the top-level tabs and lighten the selected-tab blue
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>cf957a7
26 days ago
-
Drop first-run tokenizer-load caveat, tokenizers now load at startup
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9b7c85b -
Fix tab selection color under Gradio 5, which dropped the .tab-nav class
Muhammad Uzair Khattak +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>c1d07ab -
Rename header's Future Prediction blurb from "abstract spaces" to "any modality"
Muhammad Uzair Khattak +1: Claude Sonnet 5Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>42bea88 -
Add Chained/Direct presets, Future Prediction UI cleanup, and gallery tweaks
Muhammad Uzair Khattak +1: Claude Sonnet 5- Add a Chained/Direct preset to the Future Prediction tab, mirroring Any-to-Any's Recommended/Direct/Custom, with matching flat temp/cfg hyperparameter overrides for both tabs' Direct presets - Trim the RGB/caption example galleries to the curated, cached subset and prefill the caption box with the first sample on switch - Add a dedicated "Input frames" reference card (real given frames, frozen after the last one) to Future Prediction result cards, precomputed and live; drop the redundant "input · N frames" role text in favor of a hidden data attribute for the phase-outline JS - Rename the Conditioning radio/labels away from Unconditional/ Conditional wording, and resize the observation timeline strip to the given frames only (no more stretched/pixelated single-frame case) - Default the Future Prediction tab to a specific precomputed example, fixing a stale hardcoded seed that broke its prefill cache lookup - Fix card-heading truncation next to the "cached" badge and…31c6b21
-
Hide share icon on result videos; harden Selected-stem text against auto-dark repainting
Muhammad Uzair Khattak +1: Claude Sonnet 5Result-card videos now only show the download icon, not gradio's share-to-community button. The "Selected: `stem`" line's inline code chip was left with gradio's default (unstyled) colors, which some browsers' auto-dark-mode heuristics can repaint into low-contrast grey-on-dark; pin its colors explicitly and declare color-scheme: light on the app root so the light-only UI opts out of that repainting. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba544ece9da
-
Revert @spaces.GPU duration to 120, the confirmed-passing value
Muhammad Uzair Khattak +1: Claude Sonnet 5150 got multiplied to 225 and rejected as illegal duration (again); 120 was already confirmed to clear that same check in earlier testing (it failed differently, with a plain "GPU task aborted" worker error, not an illegal-duration rejection) -- so 120 is the highest value actually known to pass on this account, not another guess. Combined with the eager module-scope model loading just added, 120 has a much better chance of also being *sufficient* now, since it no longer has to cover the full checkpoint+tokenizer load on top of generation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba5471182ad -
Move rgb to the end of DENSE_CHAIN
Muhammad Uzair Khattak +1: Claude Sonnet 5For every dense input other than rgb itself, rgb was landing right after the input modality in the chain (DENSE_CHAIN's first entry, only excluded when it's the actual input) -- should be last, matching where it sits for the sparse chain and caption/det/transcription inputs. Only affects the 6 non-rgb dense inputs (siglip/dinov2/vjepa/depth/normal/opticalflow); rgb itself is self-excluded from its own chain either way, so rgb->others is byte-identical before and after this change -- confirmed, no regeneration needed there. The other 60 a2a entries (6 categories x 10 stems) do need regenerating. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba549a5ea10 -
Load model/tokenizers eagerly at module scope, per ZeroGPU's documented pattern
Muhammad Uzair Khattak +1: Claude Sonnet 5huggingface.co/docs/hub/spaces-zerogpu: models must be placed on cuda at root module level, not lazily inside a @spaces.GPU function -- a CUDA emulation mode outside @spaces.GPU calls lets this work without a real GPU attached, and ZeroGPU packs/streams the weights efficiently on the first real request. We were doing exactly the discouraged thing: load_pipeline() only ran lazily on the first live generation call, from inside the @spaces.GPU-decorated function, meaning that single request's duration budget had to cover the full ~1.5GB checkpoint + 7 tokenizers *and* generation. Now loaded eagerly at app.py import time instead (skipped under FOURM_FAKE_STREAM=1, which needs no model at all). Practical effect: the "loading main model" / "loading tokenizer: X" stage messages built earlier this session will no longer show to real visitors (the load already happened during the Space's own startup, before anyone can click Generate) -- that loading now shows up in the Space's build/ startup l…28ed59e -
Bump @spaces.GPU duration 120 -> 150
Muhammad Uzair Khattak +1: Claude Sonnet 5120 was the free-tier per-request ceiling itself (confirmed: ZeroGPU free tier caps individual requests at 120s and 5 min/day total), leaving zero headroom for a cold start (load main checkpoint + all 7 tokenizers) plus actual generation. 150 splits the difference between that ceiling and the 180 this account could request before landing on a node that multiplies it past the "illegal duration" rejection. Still a guess -- the account's real constraint may be the 5-min/day total quota, which no duration value fixes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba54fe726f5 -
Lower @spaces.GPU duration 180 -> 120, free-tier ZeroGPU rejected 270s
Muhammad Uzair Khattak +1: Claude Sonnet 5Some ZeroGPU nodes multiply the requested duration before checking it against the account's quota ceiling (see the spaces pin's comment above -- this was already anticipated there, just hadn't been hit yet): 180 was coming back as "requested GPU duration (270s) is larger than the maximum allowed" on this account's free tier. 120 is a guess at a value that stays under the ceiling even multiplied; not guaranteed on every node, and a genuine risk of cutting off first-request cold starts that need the full model+tokenizer load plus generation time. Raise back toward 180 if quota headroom allows (e.g. HF PRO) and cold starts start timing out instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba54da1fbc6 -
Cap setuptools<82, unpinned still grabbed a pkg_resources-less version
Muhammad Uzair Khattak +1: Claude Sonnet 5setuptools removed pkg_resources entirely in 82.0.0 (deprecated since 67.5.0) -- the previous unpinned `setuptools` line resolved to latest at build time, which is past that removal, so the fix didn't actually take: same "ModuleNotFoundError: No module named 'pkg_resources'" from lightning.pytorch's import chain. Capping below 82 keeps it available. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba543e95f75 -
Add FP seed/predicted frame outline + legend, stream FP status like tab 1
Muhammad Uzair Khattak +1: Claude Sonnet 5- Future Prediction's seed-modality card (always slot 0 when shown) now outlines blue while playing given input frames and pink once playback crosses into the predicted continuation, driven by a timeupdate listener that reads the frame count straight from the card's own "input · N frames" label. Boundary is computed as a fraction of the video's actual reported duration rather than an assumed fps, so it tracks whatever the real encoded timing turns out to be. Added a legend explaining the colors. - generate_future_prediction_stream (inference.py): streaming counterpart of generate_future_prediction, same sampler.generate_iter + segment tracking approach as generate_any_to_any_stream, yielding "stage" events (loading model/tokenizers on cold start, preparing input, decoding each modality) plus start/progress/result/done. - _run_future_demo_gpu now consumes that stream and surfaces the same coarse status line the Any-to-Any tab already showed -- FP had no streaming…0ec343b -
Pin setuptools for lightning's pkg_resources import
Muhammad Uzair Khattak +1: Claude Sonnet 5lightning/pytorch-lightning 2.2.4 still do old-style namespace-package registration via pkg_resources at import time. Newer Space base images don't always bundle setuptools (which provides it), so the import chain (app.py -> inference.py -> scripts/inference_evaluate.py -> lightning.pytorch) broke with "ModuleNotFoundError: No module named 'pkg_resources'" on this deploy. Pre-existing, unrelated to any of today's other changes -- just never surfaced until this rebuild. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba54e6576bf -
Retune any-to-any chain/hyperparameters, add FP video upload and live status
Muhammad Uzair Khattak +1: Claude Sonnet 5- Unified any-to-any chain design: separate dense-input and sparse-input coarse-to-fine orderings (DENSE_CHAIN/SPARSE_CHAIN in precompute_cache.py), replacing the old per-modality hand-tuned chains. - Retuned dense-input ("rgb_to_others") hyperparameter preset to match the original research script's dense CONFIGS table. - Per-category/per-stem seed policy: a2a caption entries use their own seed (default 16) separate from the rest of the sweep; Future Prediction supports per-stem seed overrides. Demo UI (app.py) auto-applies the same defaults on selection change, matching what the precompute script bakes in. - precompute_demo_outputs.py: added --seed, --a2a_modes, --a2a_chain, --a2a_caption_seed, --fp_modes, --fp_seed/--fp_stem (multi-value) so a precompute run can be scoped and seeded to match the demo's live defaults exactly, and an extra caption-input entry for the hand-picked EXTRA_CAPTION_SAMPLE chip. - Future Prediction tab: added raw-video upload for RGB obser…423e21d
-
Default seed to 14 in demo UI and precompute recipe
Muhammad Uzair Khattak +1: Claude Sonnet 5Matches cvpr_fvd_videos_no_poses.py / cvpr_fvd_videos_no_poses_raw_rgb.py, which call sampler.generate(seed=single_seed + 14) so their "seed0" outputs are actually torch seed 14. Defaulting the demo and precompute script to 14 lets any-to-any and future-prediction runs reproduce those outputs without manually entering a seed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EHvGwPUsNi1sdmjG5vba54e8ec800
-
Make Generate always run live, never serve the precomputed cache
Muhammad Uzair KhattakPreviously an exact spec match on the Generate button would replay the cached result instead of running the model, including for the default configuration each tab opens on. That's fine for passive browsing (still handled by _sync_results/_fp_sync_results and the page-load prefill, unchanged) but meant the one deliberate action a visitor takes -- pressing Generate -- could be a replay rather than a real run, undermining replicability. run_demo_stream and run_future_demo no longer check the cache at all; only browsing stays free, the click itself always costs GPU time now. Drops the now-dead _cached_arm_updates helper and CACHE_HIT_DELAY constant, and updates both precompute scripts' docstrings to stop claiming Generate is ever free.1f7ccca -
Precompute every example clip across every mode, not one clip per mode
Muhammad Uzair Khattakbuild_recipe() previously reused a single representative clip for every non-default input/observed mode to keep GPU time bounded. Widen it to a full sweep: each a2a_stem now gets its own RGB-input entry, one entry per abstract input modality, and its own real-caption entry; each fp_stem gets its own RGB-observed entry plus one per other seed modality. GPU time now scales with num_examples x modality count -- see build_recipe()'s docstring for the exact count.9b218f7 -
Retune RGB-to-others chain/hyperparameters, drop unused CHAIN_PRESETS
Muhammad Uzair KhattakReorder COARSE_TO_FINE_BY_INPUT["rgb"] to SigLIP2 -> Bbox -> Caption -> Transcript -> DINOv2 -> V-JEPA2 -> Depth -> Normals -> Opt.flow, and update HYPERPARAM_PRESETS["rgb_to_others"] accordingly. Both the demo UI and precompute_demo_outputs.py read these same dicts, so no other wiring needed. Also removes inference.CHAIN_PRESETS, a second hardcoded rgb chain that had drifted from COARSE_TO_FINE_BY_INPUT and was unreferenced anywhere in the repo.3808480 -
Restore Future Prediction seed-frame hint dropped in the redesign sync
Muhammad Uzair KhattakRoot cause: the hf-demo -> space-deploy copy overlaid app.py wholesale and silently dropped the "How much of it to give as input:" label above the seed-frame-count radio, leaving it with no lead-in text.27bc211 -
Revert spaces<0.49.2 pin -- it breaks the build entirely
Muhammad Uzair Khattak +1: Claude Sonnet 5The Space builder appends its own spaces==0.51.1 to the pip install command (visible in the factory-rebuild log: `pip install -r requirements.txt ... spaces==0.51.1`), on top of whatever requirements.txt says. Pinning spaces<0.49.2 here directly conflicts with that -- pip's dependency resolution fails outright, so the build never completes at all. Confirmed 0.51.1 has the same duration_factor mechanism as 0.51.3 anyway (checked its configs.json), so downgrading wasn't a viable fix in the first place, just one that happens to also break the build. Back to unpinned `spaces`, with a comment explaining why not to try this again. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgUUJUfzFhLB3Gaoo1BB449c31ff0 -
Pin spaces<0.49.2 to fix the ZeroGPU illegal-duration error
Muhammad Uzair Khattak +1: Claude Sonnet 5Root cause, confirmed by downloading and diffing PyPI releases: spaces 0.49.2 added spaces/zero/configs.json, a per-GPU-model duration multiplier table (e.g. the RTX PRO 6000 Blackwell fleet hardware gets 1.5x, applied before checking the request against the account's quota ceiling). 0.48.3 and earlier have no such mechanism at all. requirements.txt pinned `spaces` completely unversioned, so every push to this Space triggered a rebuild that silently picked up whatever was newest on PyPI -- meaning our own duration=180 (unchanged since this decorator was first added) started getting inflated to 270s (or 360s with size='xlarge', which costs 2x) purely because of which physical node ZeroGPU happened to schedule the Space onto, with nothing in this app's own code involved. Pinned to spaces<0.49.2 (resolves to 0.48.3, the latest patch before the change), confirmed the GPU decorator's duration/size API is identical in that version so nothing else needs to change. Co-Authored-By: Claude Son…d7b2ec9 -
Fix RGB chip/spinner colors left over from the dark theme, match timeline
Muhammad Uzair Khattak +1: Claude Sonnet 5legend to the actual placeholder color, add per-tab precompute counts - MODALITY_COLORS["rgb"] and one loading-spinner stroke were still the dark-theme-tuned values (#c6ccd8, #2a3345) -- both live outside the _CSS block an earlier commit restored wholesale, so they were missed. Restored to the light-theme values (#6b7280, #cdd2db) and brought back the explanatory comment on why rgb specifically needs a custom color. - Future Prediction's observation timeline legend showed a light grey swatch for "future — not given to the model", but the actual strip image (_timeline_strip_image, a rendered PNG with hardcoded RGB tuples, not CSS) renders those tiles as near-black (14,18,25) -- unchanged from before this branch, so not a redesign regression, just a pre-existing mismatch. Hardcoded the legend swatch to the same #0e1219 so it actually represents what's shown. - scripts/precompute_demo_outputs.py: added --a2a_num_examples / --fp_num_examples to set each tab's examp…5d233b4
-
Fix caption chip vertical layout, order FP target chips by FUTURE_CHAIN
Muhammad Uzair Khattak +1: Claude Sonnet 5- Caption quick-pick chips (.cap-samples) were wrapping/scrolling horizontally: the redesign had changed its container from gr.Column to gr.Row, but the CSS (its own comment says so explicitly) was written assuming a vertical stack. Restored gr.Column. - Future Prediction's target chips now render in FUTURE_CHAIN's fixed order (rgb last, etc.) instead of MODALITY_DISPLAY_NAMES' dict order, with the observed modality's "(remaining frames)" chip appearing in its natural position instead of always first. Traced the actual generation path first to confirm this was purely a UI display-order issue: fp_chain() already filters FUTURE_CHAIN (never reorders by click order), and build_chained_generation_schedules (fourm/models/generate.py) walks target_domains with a plain sequential for-loop -- so generation was already correctly ordered, only the chip row's visual order needed fixing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claud…8069d47 -
Fix FP target auto-reselect, restore real caption samples, batch
Muhammad Uzair Khattak +1: Claude Sonnet 5precomputed-results upload into one commit - Future Prediction: fold the observed modality's completion toggle into its own always-visible chip ("<Modality> (remaining frames)") instead of a separate checkbox, so it can't drift out of sync with which modality is currently observed. Fixes the actual reported bug too: switching the observed or conditioning modality was pruning the target list but never re-adding what became eligible again, so visitors had to manually re-check modalities before a cached result would show. on_fp_obs_change / on_cond_change / on_fp_example_select now all preselect everything eligible, matching what the precomputed cache assumes. resolve_fp's "pick at least one modality" validation now only fires when the seed-completion chip is also off. - Revert the size='xlarge' GPU-duration change from the last commit -- it made things worse, not better: xlarge requests cost 2x against the ZeroGPU quota ceiling (180 -> 360s), worse than the 1.5x…e30756a -
Add complete/skip toggle for FP's observed modality, fix ZeroGPU duration,
Muhammad Uzair Khattak +1: Claude Sonnet 5widen precompute recipe to cover all input/observation modes - Future Prediction: exposes run_generation.py's --should_complete_partial_conditioned_modalities as a UI checkbox ("Also complete the observed modality", default on -- matches prior hardcoded behavior). Threaded through generate_future_prediction / _build_future_schedule (inference.py), resolve_fp / canonical_fp_spec / FPRequest (precompute_cache.py, including cache-key correctness so idle drags on the now-inert seed-modality sliders can't miss the cache), and all the Gradio wiring in app.py. Also fixes a real crash this exposed: the completion-budget line did tokens_per_target[target_domains.index(seed_domain)] unconditionally, but pop_conditioning_domain already drops seed_domain from target_domains when not completing it -- guarded behind complete_seed_modality. - app.py: both @spaces.GPU(duration=180) call sites now also pass size='xlarge', which the `spaces` library exempts from its duratio…e295293
-
Restore old font sizes and remaining CSS from the redesign's shrink pass
Muhammad Uzair Khattak +1: Claude Sonnet 5The hf-demo redesign didn't just switch to a dark theme, it also shrank font sizes across ~30 selectors (step labels, hints, chips, buttons, seed boxes, result-card titles, timeline text, etc.) and tweaked a few other rules (.cap-chip shape/padding, a hardcoded badge color). Replaced the whole _CSS block with the old (correctly-sized) one, then re-added the two genuinely new pieces needed for the precompute "cached" badge feature (.rc-head .badge-pre, and the results-column busy-spinner repositioning). Diffed the result against the pre-sync file to confirm only those two additions remain, plus one JS improvement (batched autoplay sync) that's being kept as a real upgrade. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgUUJUfzFhLB3Gaoo1BB441b25d35 -
Restore old light theme and copy, widen precompute cache to 5 examples/tab
Muhammad Uzair Khattak +1: Claude Sonnet 5app.py: the hf-demo overlay brought in a dark-themed UI redesign that replaced space-deploy's existing light theme and shortened several bits of copy. Restored: - _PALETTE back to the light values, removed the JS redirect that forced ?__theme=dark, and fixed the 2 hardcoded dark-mode literals (spinner stroke, loading-overlay background) that don't route through the palette. - The page title, header hero text (both explanation paragraphs) and its original layout (nav nested in the header div, not a flex sibling), and all 7 step-label hint texts across both tabs that the redesign had either dropped or reworded. - Remaining "Video-4M" branding text (module docstring, footer) back to A2A-Video. Kept everything structural from the redesign and the precompute-results integration -- only visual/copy regressions were touched. scripts/precompute_demo_outputs.py: build_recipe() now takes a list of stems per tab instead of one, generating a2a_01..0N / fp_01..0N (only the first of e…1f3232e -
Sync UI redesign and precompute work from hf-demo, keep Spaces fixes
Muhammad Uzair Khattak +1: Claude Sonnet 5Overlay hf-demo's current tree (Redesign demo UI + Add precompute results + this session's checkpoint/vjepa/repo-id fixes) onto space-deploy, reapplying the Spaces-environment-specific fixes that only exist on this branch since hf-demo and space-deploy have unrelated git histories (no common ancestor, so a plain merge wasn't an option): - app.py: reapplied the gradio_client bool-schema patch, the huggingface_hub.cached_download shim, the diffusers.utils.randn_tensor shim, and launch()'s allowed_paths fix -- all required for this branch's pinned dependency versions (diffusers==0.28.0, huggingface_hub>=0.30.0,<1.0.0, gradio==5.6.0) to actually boot. - inference.py: reapplied the rgb-input caption/transcription temp 0.7 -> 0.1 tuning. - fourm/utils/plotting_utils.py: reapplied the int32 -> uint8 fix for placeholder bbox-visualization frames (OpenCV requires CV_8U) -- ended up with zero net diff against this branch's prior content, confirming this file was otherwise identi…1593be5
-
Rename branding to A2A-Video in README; lower rgb-input caption/transcription temp to 0.1
Muhammad Uzair Khattak +1: Claude Sonnet 5Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>22720d5 -
Fix placeholder bbox-visualization frames to use uint8, not int32 (OpenCV requires CV_8U for drawing)
Muhammad Uzair Khattak37167e2 -
Shim diffusers.utils.randn_tensor re-export dropped in 0.28.0
Muhammad Uzair Khattakc90f3d5 -
Shim huggingface_hub.cached_download for diffusers 0.28.0's dead-code dynamic-module-loading import
Muhammad Uzair Khattak8affbcf -
Pin diffusers==0.28.0: newest version with the internal unet_2d_blocks module fourm/vq/models/uvit.py imports directly
Muhammad Uzair Khattak0c6a044 -
Bump diffusers off 0.20.0 to resolve huggingface_hub conflict with transformers>=4.53.0
Muhammad Uzair Khattakd99341f -
Pin transformers>=4.53.0 for V-JEPA2 model support
Muhammad Uzair Khattak49abbe6 -
Fix example-video serving path and add missing beartype dependency
Muhammad Uzair Khattakafb3c7f -
Patch gradio_client bool-schema bug that crashes every page load
Muhammad Uzair Khattak5be2ce5 -
Tighten huggingface_hub pin to <0.26.0 (diffusers 0.20.0 needs cached_download)
Muhammad Uzair Khattak7740586 -
Pin huggingface_hub <1.0 to fix gradio import
Muhammad Uzair Khattak618d567 -
Deploy A2A-Video demo
Muhammad Uzair Khattak4bc559f