Repository navigation
feat(video): Wan 2.1 1.3B on 8 GiB cards and on CPU; v0.2.90 - #185
Merged
Merged
Conversation
- GPU: wan2.1-t2v-1.3b in the video manifest (8 GiB floor, full_vram_gib 20). On a smaller card the runner encodes the prompt on the CPU and uses model CPU offload + VAE tiling. Rows carry their own job defaults; Wan frame counts must be 4k+1. - Nodes advertise c0mpute:video:model:<id> for what their card holds; the /v1/videos gateway requires the model's tag, rejects unknown models and applies the model's defaults. - CPU: video_cpu.rs serves wan2.1-t2v-1.3b text-to-video through the pinned stable-diffusion.cpp build (-M vid_gen) with SHA-pinned Apache-2.0 GGUF weights (5.43 GB) and ffmpeg. Opt-in: `c0mpute video setup --cpu` or [video] cpu = true / C0MPUTE_VIDEO_CPU=1. Capped at 33 frames, 480x272, 20 steps; gated per offer on RAM, load and threads. - Video joins the default worker roles (subscribes only where it can serve). - /plugins shows a model's CPU option. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ThreatCrush Security Scan13 finding(s) HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 4
Snippets are redacted; ThreatCrush never prints matched credential material. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sh1pt-actions-fleet Bot
pushed a commit
that referenced
this pull request
Nov 9, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 9, 2026
ralyodio
added a commit
that referenced
this pull request
Nov 9, 2026
…sult/{id}; v0.2.91 (#188)
* feat(gateway): songs and images survive the caller restarting; GET /v1/result/{id}; v0.2.90
With an x-request-id, /v1/music and /v1/images now run the job in a
detached task that holds its queue slot to the end: a dropped connection
(infernetprotocol.com redeploys cut every song in flight three times in
20 minutes on 2026-11-09) no longer cancels the job. The finished result is
kept 30 min (bounded, 48 entries) and GET /v1/result/{id} returns it (200),
its live progress while it runs (202) or 404.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: bump v0.2.91 (v0.2.90 is #185's)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Video generation that our own fleet can actually serve. Today the video plugin only lists models with a 24 to 48 GiB VRAM floor, and the fleet has ~7 CPU-only workers, 2 AMD GPUs and one 8 GiB NVIDIA card, so no clip has ever been generated.
GPU path: Wan 2.1 T2V 1.3B on an 8 GiB card
plugins/video/module.toml: new rowwan2.1-t2v-1.3b(Wan-AI/Wan2.1-T2V-1.3B-Diffusers, Apache-2.0, 480p@16fps).vram_gib = 8(floor with offload) andfull_vram_gib = 20(everything on the card). Rows may now carry their own job defaults; this one defaults to 33 frames of 480x272, 16 fps, 20 steps.runner.py: when the card is smaller thanfull_vram_gib, it encodes the prompt on the CPU first (the UMT5-XXL encoder is ~11 GB in bf16, and model offload would still move it onto the card whole), thenenable_model_cpu_offload()plus VAE tiling. Rows withoutfull_vram_gibbehave exactly as before. It also refuses Wan frame counts that are not 4k+1 (the pipeline rounds them and the clip then fails validation after the work is paid for). Runner version 3; the sidecar recordsoffload.video-runner.ymlprints the digest).Model tags, so jobs only reach nodes that can run them
c0mpute:video:model:<id>for each model their card can hold (nvidia-smimemory vs the manifest floors, with 512 MiB of slack). The/v1/videosgateway requires the tag of the model a job names, rejects unknown models with a 400, and fills omitted fields from that model's defaults.Role::Videois in the default worker roles. It only subscribes where it can serve.CPU path: the same model on stable-diffusion.cpp (opt-in)
video_cpu.rs. It servesvideo.txt2vidwithwan2.1-t2v-1.3bthrough the sd.cpp build the diffusion plugin already pins (master-1060-0b3b98d, which supports Wan via-M vid_gen; no bump needed). sd-cli writes PNG frames and ffmpeg encodes an H.264 MP4.c0mpute video setup --cpu, or[video] cpu = true/C0MPUTE_VIDEO_CPU=1to install in the background.C0MPUTE_VIDEO_CPU=0turns it off.c0mpute video checkreports both paths.--params-backend te=disk,vae=diskat the same per-step speed; that setting is what ships. All-disk was also 1.8 GB but more than twice as slow. No full clip finished on dev2. earlyoom killed all four runs (at steps 9, ~10 and 13 of 20, and the short 17-frame test) because host memory dipped below 10%; it also hit the music worker in the same window. So the VAE decode and MP4 encode have not run on real output here, and CPU video is not enabled on dev2 by this PR.Also
/pluginsshows a model's CPU option ("or CPU: ...") and the new hardware text.Tests
cargo test -p c0mpute-core(video, video_cpu, diffusion, config, capabilities, gateway e2e)python3 plugins/video/runner/test_runner.py🤖 Generated with Claude Code