Wan 2.2 A14B at 720p on a 24 GB GPU: why it runs out of memory and what to change
If you try Wan 2.2 T2V A14B at 1280×720 on a 24 GB card and get torch.OutOfMemoryError, you are not alone. A public bug report, reported in InvokeAI issue #9831 (2026-10-12) on an RTX 4090 24GB, lays out exactly when it fails, why, and which setting got it running. This post walks through that report and the official docs, step by step.
Everything below is quoted from the issue or from official documentation. We have not reproduced the runs ourselves.
1. The symptom and the conditions it was reported under
From InvokeAI issue #9831 (opened 2026-10-12, open, labelled bug, no comments when read on 2026-10-28):
- Machine: Windows 10, RTX 4090 with 24 GB VRAM, manual development checkout of InvokeAI main at 8111b5067e (7.0.0-alpha.1), Python 3.12, torch 2.13.0+cu130.
- Model: Wan 2.2 T2V A14B, GGUF Q4_K_M, both experts (High Noise and Low Noise), plus the Wan2.2-T2V-A14B-Diffusers components and the Lightning 4-step LoRAs (V1.1, high and low).
- Job: 1280×720, 81 frames, 4 steps, guidance 1.0, default invokeai.yaml.
- Error: torch.OutOfMemoryError in diffusers/models/transformers/transformer_wan.py:502.
The issue's results table (settings and outcome as reported; we list the memory outcome only):
| enable_partial_loading | device_working_mem_gb | Attention | Memory outcome reported in #9831 |
| --- | --- | --- | --- |
| true (default) | 3 (default) | PyTorch SDPA | OOM in the first transformer block, also at 832×480 |
| false | 3 | PyTorch SDPA | Completed, but VRAM full; overflowed into shared system memory |
| true | 10 | PyTorch SDPA | Completed (the issue's workaround for 24 GB) |
| true | 10 | SageAttention | Completed, but overflowed (about 1.2 GB more held than SDPA) |
| false | 3 | SageAttention | Completed, but overflowed into shared system memory |
Two details matter when you compare this with your own machine:
- The run with partial loading off did not really "fit". The issue says the card still overflowed and Windows moved memory to shared system memory instead of raising an OOM.
- This is a Windows machine on a 7.0.0 alpha development build. Linux, or a release build, may behave differently; the issue does not test them.
What to check
- Your error matches: torch.OutOfMemoryError in the Wan transformer, at the first denoise block.
- Your invokeai.yaml still has the defaults (enable_partial_loading: true, device_working_mem_gb: 3, or neither line set).
- On Windows, watch "Shared GPU memory" in Task Manager. If it climbs during generation, you are in the spill case, not the OOM case.
2. Why 24 GB is not enough here
Two experts, one at a time. The official Wan2.2 README (read 2026-10-28) describes the A14B models as a two-expert design: "a high-noise expert for the early stages, focusing on overall layout; and a low-noise expert for the later stages, refining video details. Each expert model has about 14B parameters, resulting in a total of 27B parameters but only 14B active parameters per step". So you download and load two diffusion models, but each denoise step uses one.
The official script's own guidance. For its single-GPU 1280*720 A14B command (with --offload_model True --convert_model_dtype), the README says: "This command can run on a GPU with at least 80GB VRAM." That statement is about the Wan repo's generate.py, not about InvokeAI or GGUF weights, but it tells you 720p A14B is not a small job.
What the issue found inside InvokeAI. According to #9831:
- Wan denoise has no working-memory estimate. _get_wan_transformer_working_mem_bytes returns None unless wan_memory_optimization is on, so the expert is loaded with the floor, device_working_mem_gb (3 GB), as its working memory.
- At 720p with 81 frames the transformer sees 75,600 tokens, "and the activations need far more than 3 GB."
- With partial loading on, the cache frees only 2,003 MB of the 10.8 GB UMT5 text encoder before loading the 9.2 GB expert, so the first block runs out of memory with 21.3 GiB allocated.
In short: model weights plus text encoder plus the attention activations for 75,600 tokens do not fit in 24 GB, and InvokeAI reserves only 3 GB for the activations by default.
What to check
- The InvokeAI log around model loading: is the text encoder still partly in VRAM when the expert loads?
- Your resolution and frame count. The 75,600-token figure is for 1280×720 with 81 frames only.
3. Local settings to change
3a. Raise the working memory
InvokeAI's Low-VRAM mode docs (read 2026-10-28): "Invoke reserves 3GB VRAM as working memory by default", and you can raise it in invokeai.yaml to prevent OOMs (the docs' example sets 4).
The issue's workaround for this exact case on 24 GB is 10:
# invokeai.yaml — workaround reported in InvokeAI issue #9831 for 24 GB
device_working_mem_gb: 10
With that, partial loading on and SDPA, the issue reports the 720p, 81-frame job completing. Invoke needs a restart after you edit the file.
What to check
- The OOM is gone and Task Manager's shared GPU memory stays flat during denoise.
- If you also set max_cache_vram_gb, the docs say to keep it at or below your VRAM minus device_working_mem_gb minus reserve_vram_gb.
3b. Keep partial loading on, and turn off the Windows sysmem fallback
The docs say Low-VRAM mode is enabled by default via enable_partial_loading: true. In the issue, turning it off did not prevent the overflow: the encoder was unloaded, but the run spilled into shared memory.
The same docs ask Windows users to disable the Nvidia sysmem fallback: NVIDIA Control Panel → 3D Settings → Manage 3D Settings → "CUDA - Sysmem Fallback Policy" → "Prefer No Sysmem Fallback". With it disabled, an overflow shows up as an OOM you can act on instead of silently spilling into shared system memory.
What to check
- enable_partial_loading is true (or absent) in invokeai.yaml.
- On Windows, the NVIDIA Control Panel setting reads "Prefer No Sysmem Fallback".
3c. Try wan_memory_optimization (opt-in)
From the same docs page: setting wan_memory_optimization: true makes partial-load Wan transformer weights "target about 2 GiB resident and stream remaining layers from RAM". It "reduces peak VRAM during both denoise and decode, but generation can be substantially slower and requires enough system RAM for offloaded weights." The docs also note same-seed output may differ slightly from the baseline path.
The issue explains that this flag is also what turns on Wan's working-memory estimate. It does not report a run with the flag on, so we have no figures for it.
wan_memory_optimization: true
What to check
- Free system RAM during generation; the docs say offloaded weights need it.
- Compare a short test clip against your baseline before committing to long runs.
3d. Lower the resolution, and treat frame count with care
The issue's only other resolution is 832×480. With default settings it also ran out of memory. With partial loading on and device_working_mem_gb: 10, it fit with both attention backends.
The issue tests 81 frames only. Fewer frames means a shorter clip, but the issue gives no figures for it, so try it on your own setup rather than relying on a number from us.
What to check
- At 832×480, the default settings still fail in the issue. Raise device_working_mem_gb as well; do not rely on resolution alone.
3e. Quantization, and the official script's flags
The issue already used GGUF Q4_K_M weights for both experts and still ran out of memory at default settings. Lower-bit weights alone did not fix it there; working memory did.
If you use the Wan repo's own generate.py instead of InvokeAI, the README says: "If you encounter OOM (Out-of-Memory) issues, you can use the --offload_model True, --convert_model_dtype and --t5_cpu options to reduce GPU memory usage."
On attention, these are figures reported in InvokeAI issue #9831 (one RTX 4090 24GB on Windows), not measured by us and not a claim about CloudGPU cards: the issue reports SageAttention held about 1.2 GB more than SDPA at 75,600 tokens, which pushed that card over the edge at 720p. At 832×480, the issue reports both backends fit.
What to check
- If you switched to SageAttention and shared GPU memory now climbs at 720p, switch back to SDPA and compare.
- The Wan2.2 model weights are licensed Apache-2.0 (per the README and the model card); check the license of any community GGUF build you download separately.
4. If local settings are still not enough: run the same workflow on a card with more VRAM
If the slower settings are not an option for you, the other route is more VRAM. On CloudGPU you can rent a card with more VRAM, billed per minute, and set up the same InvokeAI workflow on it. Cards listed on /pricing when we read it on 2026-10-28 include:
| Card on /pricing | VRAM (as shown on /pricing) |
| --- | --- |
| RTX 5090 32G | 32 GB |
| RTX 4090 48G | 48 GB |
| A100 80G | 80 GB |
To be clear about what this does and does not mean:
- We have not tested Wan 2.2 A14B, InvokeAI or this workflow on any of these cards. The only difference we can state is more VRAM than a 24 GB card.
- VRAM need depends on model, precision and workflow. See How much VRAM do I need to run an LLM?
- Billing is per minute, rounded up, with a 1-minute minimum, and stops when you destroy the instance (terms). Rates per card are on /pricing.
What to check
- Before renting, compare the VRAM column above with what your settings needed locally (the InvokeAI log and Task Manager tell you where it ran out).
- Destroy the instance when the job is done, so billing stops.
FAQ
Why does Wan 2.2 A14B run out of memory at 720p on a 24 GB GPU in InvokeAI?
According to InvokeAI issue #9831, Wan denoise has no working-memory estimate unless wan_memory_optimization is on, so InvokeAI reserves only the default 3 GB for activations. At 1280×720 with 81 frames the transformer sees 75,600 tokens, and the activations need far more than that.
What setting fixed it in the issue?
device_working_mem_gb: 10 in invokeai.yaml, with partial loading left on. The issue reports the 720p, 81-frame job then completed on an RTX 4090 24GB (Windows 10, InvokeAI 7.0.0-alpha.1).
Does turning off partial loading help?
Not in the issue. With enable_partial_loading: false the card still overflowed, and Windows moved memory to shared system memory instead of raising an OOM.
Does lowering the resolution to 832×480 avoid the OOM?
Not on its own. The issue reports an OOM at 832×480 with default settings too; with device_working_mem_gb: 10 it fit.
What does the official Wan2.2 README say about VRAM for A14B at 720p?
For its own single-GPU generate.py command at 1280*720, it says the command "can run on a GPU with at least 80GB VRAM", and suggests --offload_model True, --convert_model_dtype and --t5_cpu for OOM issues.
Sources
- InvokeAI issue #9831, InvokeAI#9831 (opened 2026-10-12; read 2026-10-28)
- Wan2.2 README (GitHub), Wan-Video/Wan2.2 (read 2026-10-28)
- Wan2.2-T2V-A14B model card, huggingface.co (read 2026-10-28)
- InvokeAI docs, Low-VRAM mode, invoke.ai (read 2026-10-28)
- CloudGPU /pricing and /terms (read 2026-10-28)
Quality video on local hardware: the Elsewhere Unfolds workflow
Local models can produce beautiful shots. A finished film needs more: a world that stays coherent, movement that feels intentional, music that holds together, and an edit worth watching. This is the production method we have been developing with Elsewhere Unfolds.
An early Elsewhere Unfolds cut had an attractive world, a complete timeline, and a successful render. It also had water that barely moved and clouds that stayed fixed while the camera drifted past them.
The shot manifest was satisfied. The scene did not feel alive.
That correction changed how we produced the next passages. We separated camera movement from environmental movement, tested short motion clips at normal speed, and watched them before committing to the rest of the film. The improvement came from a clearer creative requirement and a smaller review loop.
Elsewhere Unfolds makes fantasy and cosmic visual journeys with instrumental music. This guide explains the reusable production method behind that work, from the first visual promise to a finished master and vertical excerpts.
The boundary matters: our established motion, music, editing, and finishing pipeline uses local resources. Some starting images were made with a hosted image tool. That makes those productions hybrid. For an entirely local version, supply your own photographs, drawings, local 3D renders, or images from a model running on your machine. The workflow below starts with those local image files. It does not require a hosted video generator.
The examples use the Wan 2.2 TI2V-5B and ACE-Step v1 stack from our production recipes. They are a concrete baseline, not a claim that every newer model has been evaluated or that these settings suit every GPU.
The production loop
Work in three sizes: one shot, one short sequence, then the complete film. Each answers a different question.
| Size | What you are learning | What to review |
| --- | --- | --- |
| One native motion take | Can the intended action work? | Geometry, feet, motion direction, unwanted objects |
| A 30 to 60 second sequence | Do the shots and music belong together? | Orientation, pacing, transitions, emotional tone |
| The complete film | Does the experience hold up over time? | Repetition, later continuity, score joins, ending |

Our longer episodes have used an 8:01 format. That is an editorial choice, not a recommended starting assignment. Begin with a 30-second film you can finish, inspect, and revise. Padding a weak minute into eight minutes only gives you more weak material to fix.
What needs to run locally
You do not need a cluster. You need a machine that can run the chosen model, space for its weights and intermediate files, and a way to edit and review the result.
| Job | Our established tool or method | Output to keep |
| --- | --- | --- |
| World and shot planning | Written brief, storyboard, reference images | Selected brief and shot list |
| Starting artwork | Approved image files; source can vary | Original plate and provenance |
| Image-to-video motion | Wan 2.2 TI2V-5B | Native take, prompt, seed, settings |
| Instrumental music | ACE-Step v1 3.5B | Raw WAVs and selected arrangement |
| Assembly and finishing | Python orchestration and FFmpeg | Edit decisions, review copy, final master |
| Inspection | FFprobe, frame samples, normal playback | Technical results and review decisions |
Wan's documented single-GPU TI2V-5B example targets at least 24 GB of VRAM with model offloading and the text encoder on CPU. Treat that as the reference for that command, not a universal minimum or a guarantee of success. CPU RAM, free VRAM, software versions, and the selected settings still matter. Check the official Wan setup instructions against your hardware before downloading a large checkpoint.
For a first project, keep motion generation and music generation sequential. A background model can consume memory that a video job needs. If the GPU is shared, agree on an available window; do not terminate somebody else's work to make room. A waiting job is cheaper than losing an accepted take or disrupting another workload.
Initial installation and model downloads need network access. Local inference means the generation runs on your equipment. It does not make electricity, storage, setup time, or retakes free.
Record the model revision, source revision, environment, settings, and input image for each run. A seed helps repeat an experiment, but it does not guarantee identical output across different software and hardware.
1. Write the experience before writing prompts
A useful brief explains what the viewer will experience and what will change. “Beautiful cinematic fantasy, ultra detailed” cannot do that work.
Here is an illustrative brief for a small film:
> We board a floating garden before it leaves a quiet dock. A gardener crosses the terrace. The gap behind us widens, and a pale arch appears at our destination. Copper, emerald, and pearl remain the visual palette. The mood is calm anticipation. The final image resolves the journey rather than introducing another location.
Turn it into a few fixed decisions:
- The promise: a garden really leaves one place for another.
- The route: boarding terrace, departure view, onboard path, destination.
- The continuity anchors: the same moon placement, architecture, clothing, and direction of travel.
- The movement: leaves and water move; the dock recedes; a person performs one readable action.
- The exclusions: no crowds, complicated hand exchanges, or unexplained new landmarks.
Make the thumbnail and first shot agree about the film's promise. If the packaging promises a moving island, establish that island and its departure early. A long logo introduction spends attention before delivering the thing the viewer selected.
For Elsewhere, a recognizable route matters more than a collection of unrelated beautiful locations. Each shot should tell us where we are, what has changed, or where we are going.
2. Build a world that survives the next camera angle
Call the approved starting image for a shot its plate. Keep a small set of reference plates that establish materials, light, landmarks, and any recurring people.
Review the plates together before animating them. A contact sheet makes inconsistencies easier to see: a second moon appears, the destination moves behind the traveler, or a bridge no longer connects to the same terrace.
We have caught all of those classes of problem during production. One reverse view placed another complete moon outside a doorway even though the camera was already inside that moon. Another reference combination duplicated the sun. Attractive individual images can still describe an impossible route.
Use a compact shot table:
| Shot | Purpose | Action | Must remain stable |
| --- | --- | --- | --- |
| Terrace wide | Establish the world | Water ripples and leaves move | Island silhouette, moon position |
| Gardener profile | Establish habitation | One walk from left to right | Clothing, ground contact, path |
| Stern view | Prove departure | The distant dock recedes | Foreground rail, open gap |
| Bow view | Reveal destination | Gentle camera reveal | Travel direction, destination arch |
Simplify a plate when it asks too much of motion generation. Give a walking person visible feet, clear ground, and empty space ahead. Separate actions that would otherwise compete. A close hand exchange, turning crowd, and moving camera in the same five seconds create several opportunities for failure.
If you want the whole process to stay local, this is where you choose your image source. A scene rendered in a local 3D application or a drawing you made yourself is a valid plate. A local image model is another option, but it is a separate tool to qualify. We are not claiming that substituting one reproduces our hosted artwork automatically.
3. Generate one motion take with a clear job
For image-to-video work, let the plate describe the appearance. Use the motion prompt to describe the action, camera, and things that must stay stable.
An illustrative prompt:
> Locked medium-wide side view. One gardener walks naturally from left to right along the level stone path. Both feet remain visible and contact the ground. Leaves move gently in the background. Preserve the copper railing, architecture, clothing, and lighting. No additional people, no camera orbit, no cuts.
After following the upstream installation instructions and downloading the TI2V-5B checkpoint, this is the shape of a run from the Wan source directory. Replace the example input and checkpoint paths with your local files. Use a new output filename for each attempt.
python generate.py \
--task ti2v-5B \
--size '1280*704' \
--ckpt_dir ./Wan2.2-TI2V-5B \
--image ./inputs/gardener.png \
--prompt 'Locked side view. One gardener walks left to right on a level path. Feet remain visible. Leaves move gently. Preserve the railing and clothing. No extra people or cuts.' \
--frame_num 121 \
--sample_steps 50 \
--sample_solver unipc \
--sample_shift 5.0 \
--sample_guide_scale 5.0 \
--base_seed 42 \
--offload_model True \
--convert_model_dtype \
--t5_cpu \
--save_file ./gardener-take-01.mp4
These controls follow the upstream command-line interface and our established recipe. This is an adapted example, not a fresh performance benchmark. It does not enable a hosted prompt-expansion service.
At 24 fps, 121 encoded frames occupy about 5.04 seconds. An exact five-second edit uses 120 frames. Check the generated file's actual dimensions and timing: our image-conditioned production outputs have included 1248 × 704, despite the 1280*704 size setting. Do not infer the output raster from the command alone.
Watch the native take before slowing, enlarging, or stitching it. Check the start, middle, and end, then play the entire clip. Look for foot sliding, changing faces, bending rails, sudden foreground figures, and movement in the wrong direction. If the action fails, simplify the action or repair the plate before launching a large batch.
4. Treat three kinds of motion separately
Camera motion changes the viewpoint. Environmental motion changes water, mist, foliage, light, and other scene elements. Performed action is a person walking, turning, or doing something.
An image can have a convincing camera move while its waterfall remains frozen. A scene can have moving fog while its traveler slides without taking a step. Review each kind independently.

For a calm environmental shot, forward slow motion can be useful if it still looks natural. For walking or other recognizable human actions, start with native speed. Watch any interpolation for doubled limbs, smeared edges, and unstable occlusions.
Five seconds of generated movement do not become twenty seconds of new action because the editor can repeat or slow them. A reverse loop can make a person walk backward; a repeated wave or bird can reveal the loop. If a passage needs more time, generate a distinct take, cut to another angle, or shorten the passage.
Continuing from the last frame of a previous take can help connect movement, but it can also carry defects forward. Inspect that frame before making it the next input. Stop a continuation when geometry starts to drift instead of extending the error through the film.
5. Finish a short opening before expanding the film
Assemble a 30 to 60 second proof with real motion, representative music, and the intended edit rhythm. A slideshow of selected plates cannot answer whether the finished motion works.
The proof should contain the hard part. If departure is the central promise, include departure. If a recurring traveler makes the world feel inhabited, include a real walking shot. An easy landscape does not qualify a harder action later.
Review the sequence without pausing first. Does it make sense? Does the first shot deliver the promise? Is there a reason to keep watching? Then examine technical defects and individual transitions.
Once a sequence is accepted, keep its exact files and settings. Expand around it. We preserve accepted openings while generating later passages so a new render cannot silently replace the part that already worked.
Keep a simple project layout:
film/
brief.md
shots.csv
plates/
motion/raw/
motion/selected/
music/raw/
music/selected/
edit/
review/
exports/
The labels are less important than the separation. Raw sources stay intact; selected sources are explicit; review exports are disposable derivatives. Save a rejection reason beside a failed take so the next attempt changes something useful.
6. Compose and review the soundtrack as a whole
Our established music recipes use ACE-Step v1 3.5B locally. Keep the version explicit: a later release may have different installation, controls, and behavior. Use the project's documentation for the environment matching your selected release.
A music brief should describe the experience and the arrangement. For this style, we ask for warm, spacious instrumental ambience, gradual harmony, and sparse melody. We also describe what would break the mood: lyrics, voice-like passages, a strong beat, abrupt motifs, or a trailer-style crescendo.
Start with a short audition against the opening. Choose where the cue enters and whether it leaves enough space for the imagery. Then review the full arrangement, including every join and the final tail. An attractive first minute does not establish a clean ending.
Keep lossless WAV sources. Build an arrangement from selected cues with measured overlaps, deliberate fades, and enough headroom. The finished duration is the sum of the cue durations minus their overlaps. The same arithmetic applies to overlapping video transitions.
Measure the generated audio rather than assuming a requested duration is exact. We encountered a cue that was roughly 73 milliseconds short because of the installed model's duration grid. The composition had succeeded. The useful response was to preserve it, diagnose the precise discrepancy, and make a small documented finishing correction. That is different from concealing a missing passage with silence.
Check the playback path before removing noise
When static is reported, compare the original WAV, the finished export, and playback in another native player or device. In one later Elsewhere review, native Windows playback sounded correct while the WSL playback path did not. Filtering the accepted source would have changed music that was already satisfactory.
For a different batch of Shorts, a gentle cleanup was accepted after direct comparison. This was the filter used for that case:
ffmpeg -n -i source.wav \
-af 'afftdn=nr=6:nf=-48:tn=0:gs=8' \
-c:a pcm_s24le audition-clean.wav
Treat this as an audition candidate, never an automatic mastering preset. FFmpeg documents these controls under afftdn. Denoising can soften wanted texture. Compare original and cleaned versions at comparable listening levels, preserve both, and choose by listening. Waveform similarity and successful decoding cannot establish that something sounds good.
7. Edit to a timeline, not a requested runtime
Give every shot an editorial purpose and an explicit frame allocation. At 24 fps, an 8:01 film contains 11,544 presentation frames. Resolve transitions and overlaps in that frame budget rather than rounding each shot independently.
For a first 30-second exercise, prepare six accepted five-second shots at 24 fps, all with matching dimensions, codec settings, and no audio. Put the filenames in edit/shots.txt, relative to that list:
file '../motion/selected/shot-01.mp4'
file '../motion/selected/shot-02.mp4'
file '../motion/selected/shot-03.mp4'
file '../motion/selected/shot-04.mp4'
file '../motion/selected/shot-05.mp4'
file '../motion/selected/shot-06.mp4'
From the project root, assemble a straight-cut picture track:
ffmpeg -n -f concat -safe 0 -i edit/shots.txt \
-map 0:v:0 -an -c:v copy edit/picture.mp4
This simple stream-copy path requires compatible, independently prepared clips. Mixed time bases, encoders, or track layouts need normalization in your editing stage; a concat command is not a general repair tool. Keep crossfades out of the first exercise so its duration stays easy to audit. See the concat demuxer documentation.
After preparing a 30-second score with its entrance and ending already shaped, make a review export:
ffmpeg -n -i edit/picture.mp4 -i music/selected/score-30s.wav \
-map 0:v:0 -map 1:a:0 \
-c:v copy -c:a aac -b:a 320k -ar 48000 \
-movflags +faststart exports/review-30s.mp4
Both sources must cover the intended duration. Avoid adding -shortest as a reflex: it can hide an unexpectedly short input by cutting the other track. Inspect the result and listen to its ending.
Keep the native generation size distinct from the delivery size. A 3840 × 2160 export made from lower-resolution motion is an upscale. It can be a useful delivery format, but enlarging a warped railing makes a larger warped railing. Finish motion and continuity before paying for a high-resolution encode.
8. Make quality control answer specific questions
Automated checks are useful when they tell you exactly what they established. Use FFprobe to inspect the exported file:
ffprobe -v error -count_frames \
-show_entries 'stream=index,codec_type,codec_name,width,height,avg_frame_rate,nb_read_frames,duration,sample_rate,channels:format=duration' \
-of json exports/review-30s.mp4
For the exercise, expect 720 video frames at 24 fps and the planned audio channels and sample rate. AAC/container timing can differ slightly from the exact picture duration; investigate meaningful mismatches instead of treating every reported duration as identical.
Decode the entire export, including audio:
ffmpeg -v error -xerror -i exports/review-30s.mp4 \
-map 0:v:0 -map 0:a:0 -f null -
A clean decode establishes readable media. It does not establish pleasing images, good pacing, or acceptable sound. Complete three reviews:
| Review | Questions |
| --- | --- |
| Technical | Does it decode? Are the streams, dimensions, frame count, and duration correct? |
| Visual | Does the world stay coherent? Do feet, rails, water, and transitions behave? |
| Listening | Are cue joins, noise, dynamics, and the ending acceptable on real playback? |
Sample frames around transitions and at the middle of procedural effects, not just the first and last frames. We caught a highlight problem at the peak of a light treatment: an 8-bit color calculation exceeded its valid range and wrapped. The endpoints looked fine. The fix was in the finishing calculation, not another generation attempt.
When replacing one part of an accepted film, verify that the parts meant to stay unchanged did stay unchanged. File hashes identify exact copies. Decoded-frame comparisons can check preserved picture across a container change. Neither substitutes for watching the new result.
9. Expand, recover, and keep the good work
A long render has more than one kind of success. Generation can finish even if a later copy, collection, or resource-restoration step fails. Inspect the output before rerunning the expensive part.
Save completed takes as they arrive. Record the input plate, prompt, seed, model revision, native output, and selected derivative for each shot. If a job is interrupted, resume from the missing work instead of regenerating everything that already passed review.
On shared hardware, record what resource settings you changed and restore those settings after the run. Check that restoration separately from the video artifact. A good clip does not prove the machine was returned to its previous state.
Agents and scripts are helpful for preparing shot packets, tracking outputs, making contact sheets, checking files, and assembling review pages. Give them explicit limits on retries, durations, and replacement scope. Keep creative selection with the person watching and listening. A process reporting success cannot decide that a walk feels natural.
The useful efficiency measure is accepted footage per production session. A faster model that creates more unusable takes may cost more time overall. Track rejected takes and the reasons for rejection before changing models or increasing concurrency.
10. Derive Shorts from the accepted film
Choose excerpts that contain a complete visual idea: a reveal, an arrival, a short action, or a change in the world. Reframe deliberately for vertical output. A centered crop can remove the destination, the feet, or the object that makes the action understandable.
Elsewhere's vertical edits reuse the accepted picture and soundtrack. Review the new crop, text placement, entrance, and ending as a separate edit. Keep a clean version as well as any version carrying a short hook or invitation to the full film. Captions belong where there is speech or useful context; an instrumental film does not need invented narration.
Watch the export at phone size with the platform's interface area in mind. Keep the important action visible, and listen to the actual exported audio. A short excerpt can expose a rough music boundary that was unnoticeable inside a longer cue.
Publication adds another review: correct file, title, thumbnail, links, visibility, processing, and playback. Follow the platform's current disclosure requirements. Local generation and an original prompt do not settle every source or usage question; retain the provenance and applicable licenses for the material you use.
Measure the audience response separately from production quality. Compare retention and traffic sources at similar release ages where possible. A Short's views do not prove that viewers continued to the full film, and a small audience sample does not establish why one opening performed differently.
Your first local film
Make the first deliverable small enough to finish:
1. Write one paragraph describing a place, an action, and an ending.
2. Select a small set of locally sourced plates that agree about the world.
3. Prove the hardest action in one native motion take.
4. Build six distinct five-second shots with consistent technical settings.
5. Select or compose a local 30-second soundtrack and shape its ending.
6. Assemble, probe, decode, watch, and listen to the complete export.
7. Preserve the accepted version before trying a longer film or a vertical cut.
The lasting part of the Elsewhere workflow is the ability to inspect and revise each decision. You can replace a model, change an editor, or improve the hardware while keeping that method: define the experience, test its hardest part, preserve what works, and judge the film that the viewer will actually see.
---
Originally published on danmercede.com.
Mentions
Wan 2.2 A14B at 720p on a 24 GB GPU: why it runs out of memory and what to change If you try Wan 2.2 T2V A14B at 1280×720 on a 24 GB card and get torch.OutOfMemoryError, you are not alone. A public bug report, reported in InvokeAI issue #9831 (2026-10-12) on an RTX 4090 24GB, lays out exactly when it fails, why, and which setting got it running. This post walks through that report and the official docs, step by step. Everything below is quoted from the issue or from official documentation. We have not reproduced the runs ourselves. 1. The symptom and the conditions it was reported under From InvokeAI issue #9831 (opened 2026-10-12, open, labelled bug, no comments when read on 2026-10-28): - Machine: Windows 10, RTX 4090 with 24 GB VRAM, manual development checkout of InvokeAI main at 8111b5067e (7.0.0-alpha.1), Python 3.12, torch 2.13.0+cu130. - Model: Wan 2.2 T2V A14B, GGUF Q4_K_M, both experts (High Noise and Low Noise), plus the Wan2.2-T2V-A14B-Diffusers components and the Lightning 4-step LoRAs (V1.1, high and low). - Job: 1280×720, 81 frames, 4 steps, guidance 1.0, default invokeai.yaml. - Error: torch.OutOfMemoryError in diffusers/models/transformers/transformer_wan.py:502. The issue's results table (settings and outcome as reported; we list the memory outcome only): | enable_partial_loading | device_working_mem_gb | Attention | Memory outcome reported in #9831 | | --- | --- | --- | --- | | true (default) | 3 (default) | PyTorch SDPA | OOM in the first transformer block, also at 832×480 | | false | 3 | PyTorch SDPA | Completed, but VRAM full; overflowed into shared system memory | | true | 10 | PyTorch SDPA | Completed (the issue's workaround for 24 GB) | | true | 10 | SageAttention | Completed, but overflowed (about 1.2 GB more held than SDPA) | | false | 3 | SageAttention | Completed, but overflowed into shared system memory | Two details matter when you compare this with your own machine: - The run with partial loading off did not really "fit". The issue says the card still overflowed and Windows moved memory to shared system memory instead of raising an OOM. - This is a Windows machine on a 7.0.0 alpha development build. Linux, or a release build, may behave differently; the issue does not test them. What to check - Your error matches: torch.OutOfMemoryError in the Wan transformer, at the first denoise block. - Your invokeai.yaml still has the defaults (enable_partial_loading: true, device_working_mem_gb: 3, or neither line set). - On Windows, watch "Shared GPU memory" in Task Manager. If it climbs during generation, you are in the spill case, not the OOM case. 2. Why 24 GB is not enough here Two experts, one at a time. The official Wan2.2 README (read 2026-10-28) describes the A14B models as a two-expert design: "a high-noise expert for the early stages, focusing on overall layout; and a low-noise expert for the later stages, refining video details. Each expert model has about 14B parameters, resulting in a total of 27B parameters but only 14B active parameters per step". So you download and load two diffusion models, but each denoise step uses one. The official script's own guidance. For its single-GPU 1280*720 A14B command (with --offload_model True --convert_model_dtype), the README says: "This command can run on a GPU with at least 80GB VRAM." That statement is about the Wan repo's generate.py, not about InvokeAI or GGUF weights, but it tells you 720p A14B is not a small job. What the issue found inside InvokeAI. According to #9831: - Wan denoise has no working-memory estimate. _get_wan_transformer_working_mem_bytes returns None unless wan_memory_optimization is on, so the expert is loaded with the floor, device_working_mem_gb (3 GB), as its working memory. - At 720p with 81 frames the transformer sees 75,600 tokens, "and the activations need far more than 3 GB." - With partial loading on, the cache frees only 2,003 MB of the 10.8 GB UMT5 text encoder before loading the 9.2 GB expert, so the first block runs out of memory with 21.3 GiB allocated. In short: model weights plus text encoder plus the attention activations for 75,600 tokens do not fit in 24 GB, and InvokeAI reserves only 3 GB for the activations by default. What to check - The InvokeAI log around model loading: is the text encoder still partly in VRAM when the expert loads? - Your resolution and frame count. The 75,600-token figure is for 1280×720 with 81 frames only. 3. Local settings to change 3a. Raise the working memory InvokeAI's Low-VRAM mode docs (read 2026-10-28): "Invoke reserves 3GB VRAM as working memory by default", and you can raise it in invokeai.yaml to prevent OOMs (the docs' example sets 4). The issue's workaround for this exact case on 24 GB is 10: # invokeai.yaml — workaround reported in InvokeAI issue #9831 for 24 GB device_working_mem_gb: 10 With that, partial loading on and SDPA, the issue reports the 720p, 81-frame job completing. Invoke needs a restart after you edit the file. What to check - The OOM is gone and Task Manager's shared GPU memory stays flat during denoise. - If you also set max_cache_vram_gb, the docs say to keep it at or below your VRAM minus device_working_mem_gb minus reserve_vram_gb. 3b. Keep partial loading on, and turn off the Windows sysmem fallback The docs say Low-VRAM mode is enabled by default via enable_partial_loading: true. In the issue, turning it off did not prevent the overflow: the encoder was unloaded, but the run spilled into shared memory. The same docs ask Windows users to disable the Nvidia sysmem fallback: NVIDIA Control Panel → 3D Settings → Manage 3D Settings → "CUDA - Sysmem Fallback Policy" → "Prefer No Sysmem Fallback". With it disabled, an overflow shows up as an OOM you can act on instead of silently spilling into shared system memory. What to check - enable_partial_loading is true (or absent) in invokeai.yaml. - On Windows, the NVIDIA Control Panel setting reads "Prefer No Sysmem Fallback". 3c. Try wan_memory_optimization (opt-in) From the same docs page: setting wan_memory_optimization: true makes partial-load Wan transformer weights "target about 2 GiB resident and stream remaining layers from RAM". It "reduces peak VRAM during both denoise and decode, but generation can be substantially slower and requires enough system RAM for offloaded weights." The docs also note same-seed output may differ slightly from the baseline path. The issue explains that this flag is also what turns on Wan's working-memory estimate. It does not report a run with the flag on, so we have no figures for it. wan_memory_optimization: true What to check - Free system RAM during generation; the docs say offloaded weights need it. - Compare a short test clip against your baseline before committing to long runs. 3d. Lower the resolution, and treat frame count with care The issue's only other resolution is 832×480. With default settings it also ran out of memory. With partial loading on and device_working_mem_gb: 10, it fit with both attention backends. The issue tests 81 frames only. Fewer frames means a shorter clip, but the issue gives no figures for it, so try it on your own setup rather than relying on a number from us. What to check - At 832×480, the default settings still fail in the issue. Raise device_working_mem_gb as well; do not rely on resolution alone. 3e. Quantization, and the official script's flags The issue already used GGUF Q4_K_M weights for both experts and still ran out of memory at default settings. Lower-bit weights alone did not fix it there; working memory did. If you use the Wan repo's own generate.py instead of InvokeAI, the README says: "If you encounter OOM (Out-of-Memory) issues, you can use the --offload_model True, --convert_model_dtype and --t5_cpu options to reduce GPU memory usage." On attention, these are figures reported in InvokeAI issue #9831 (one RTX 4090 24GB on Windows), not measured by us and not a claim about CloudGPU cards: the issue reports SageAttention held about 1.2 GB more than SDPA at 75,600 tokens, which pushed that card over the edge at 720p. At 832×480, the issue reports both backends fit. What to check - If you switched to SageAttention and shared GPU memory now climbs at 720p, switch back to SDPA and compare. - The Wan2.2 model weights are licensed Apache-2.0 (per the README and the model card); check the license of any community GGUF build you download separately. 4. If local settings are still not enough: run the same workflow on a card with more VRAM If the slower settings are not an option for you, the other route is more VRAM. On CloudGPU you can rent a card with more VRAM, billed per minute, and set up the same InvokeAI workflow on it. Cards listed on /pricing when we read it on 2026-10-28 include: | Card on /pricing | VRAM (as shown on /pricing) | | --- | --- | | RTX 5090 32G | 32 GB | | RTX 4090 48G | 48 GB | | A100 80G | 80 GB | To be clear about what this does and does not mean: - We have not tested Wan 2.2 A14B, InvokeAI or this workflow on any of these cards. The only difference we can state is more VRAM than a 24 GB card. - VRAM need depends on model, precision and workflow. See How much VRAM do I need to run an LLM? - Billing is per minute, rounded up, with a 1-minute minimum, and stops when you destroy the instance (terms). Rates per card are on /pricing. What to check - Before renting, compare the VRAM column above with what your settings needed locally (the InvokeAI log and Task Manager tell you where it ran out). - Destroy the instance when the job is done, so billing stops. FAQ Why does Wan 2.2 A14B run out of memory at 720p on a 24 GB GPU in InvokeAI? According to InvokeAI issue #9831, Wan denoise has no working-memory estimate unless wan_memory_optimization is on, so InvokeAI reserves only the default 3 GB for activations. At 1280×720 with 81 frames the transformer sees 75,600 tokens, and the activations need far more than that. What setting fixed it in the issue? device_working_mem_gb: 10 in invokeai.yaml, with partial loading left on. The issue reports the 720p, 81-frame job then completed on an RTX 4090 24GB (Windows 10, InvokeAI 7.0.0-alpha.1). Does turning off partial loading help? Not in the issue. With enable_partial_loading: false the card still overflowed, and Windows moved memory to shared system memory instead of raising an OOM. Does lowering the resolution to 832×480 avoid the OOM? Not on its own. The issue reports an OOM at 832×480 with default settings too; with device_working_mem_gb: 10 it fit. What does the official Wan2.2 README say about VRAM for A14B at 720p? For its own single-GPU generate.py command at 1280*720, it says the command "can run on a GPU with at least 80GB VRAM", and suggests --offload_model True, --convert_model_dtype and --t5_cpu for OOM issues. Sources - InvokeAI issue #9831, InvokeAI#9831 (opened 2026-10-12; read 2026-10-28) - Wan2.2 README (GitHub), Wan-Video/Wan2.2 (read 2026-10-28) - Wan2.2-T2V-A14B model card, huggingface.co (read 2026-10-28) - InvokeAI docs, Low-VRAM mode, invoke.ai (read 2026-10-28) - CloudGPU /pricing and /terms (read 2026-10-28)
@ComfyUI 3. Wan 2.2 (18.2K★) Alibaba's open text-to-video and image-to-video models. The base layer under a huge share of open AI video right now. Wan-Video/Wan2.2 @Alibaba_Wan
Wan2.2’s 5B video model can run on a 4090. Code and weights are public. For marketing teams, that means you can build video generation into your own workflow and choose where it runs. The model is available; hardware and setup are still on you. Wan-Video/Wan2.2
Wan2.2: This Tiger Started as One Photo | GitHub Repos You Should Know #020 A still tiger photograph becomes an AI-generated moving scene. Then we freeze the result: the source photo never showed those teeth. Wan2.2 invented their appearance, along with the movement. Project: Wan-Video/Wan2.2 Classification: Worth Knowing Both examples are our actual local outputs, generated through ComfyUI with Wan2.2 I2V-A14B FP8 high/low models and LightX2V four-step adapters. No publisher demo footage is used. The behaviour, motion and unseen details are AI predictions, not recordings of real events. This is a two-example creative test, not a reliability benchmark. Licences: Wan2.2 code and official model Apache-2.0; Comfy-Org repackaged model and LightX2V adapters declare Apache-2.0. huggingface.co huggingface.co huggingface.co Photo credits: Tiger by John and Karen Hollingsworth / US Fish and Wildlife Service, public-domain US federal work. Bridalveil Fall by Michael Dolezal, CC0. Crops and AI-generated derivatives shown; no endorsement implied. commons.wikimedia.org commons.wikimedia.org).jpeg What would you bring to life? #GitHub #OpenSource #Wan22 #AI #ImageToVideo
Wan2.2.. Wan2.1-இன் அடுத்த தலைமுறை. முதல் open-source MoE video model. 5B model சாதாரண GPU-இல் இயங்குகிறது. முதலில் எந்த scene-ஐ உருவாக்குவீர்கள்? Wan-Video/Wan2.2 Instagram-லும் பின்தொடருங்கள்: instagram.com
モデルが変わっても制作は続く――AI動画のワークフローをどう設計するか Team Toonkitの原稿掲載図をもとに、AIでラベルを日本語化した説明用イラストです。実際の製品画面ではありません。 AI動画制作のツールを設計するとき、どの生成モデルを採用するかは大きな判断です。ただ、それだけで「一本の映像を完成させやすいか」は決まりません。採用したカット、キャラクターの参照画像、修正の理由が残っていなければ、モデルを変更するたびに判断をやり直すことになります。 私はToonkitでPMをしています。本稿は、Team Toonkitの韓国語原稿「モデルはコモディティになりつつある。ワークフローはそうではない」をもとに、制作ツールの設計論として再構成したものです。モデル間の比較実験ではなく、公開資料と設計上の考察を整理します。 「コモディティ化」を、性能が同じという意味で使わない 原稿の問題意識は、特定モデルの優位性だけに製品価値を預けてよいのか、という点にあります。ただし、「他社が2〜3か月で追いつく」「同じ成果物の費用が半年で半分から4分の1になった」と言うには、モデルの版、生成条件、採用基準をそろえた時系列の検証が必要です。本稿では、その数値を市場全体の事実として扱いません。 設計上の仮説は、もっと限定できます。モデルの選択肢や提供条件が変わっても、制作途中の判断を引き継げるようにする。 これは、すべてのモデルが同じ品質になるという予測に依存しません。 たとえば、GoogleのGemini API料金表では、2026年10月21日の確認時点で、Veo 3.1の音声付き720p動画はStandardが1秒あたり0.40米ドル、Fastが0.10米ドルと記載されています。同じページには、対象のPreviewエンドポイントが10月22日に終了予定という案内もあります。 この価格差は、異なるモデル区分の単価差です。「同じ品質の動画が4分の1で作れる」「以前より4倍安くなった」という証拠ではありません。また、料金を記録するときには、価格だけでなくモデルIDと提供状況も残す必要があります。ここでの数値は確認時点の例であり、これから使うモデルの推奨ではありません。 オープンなモデルにも別の条件があります。Wan2.2の公式リポジトリはコード・モデルを公開し、TI2V-5Bの掲載コマンドについて24GB以上のVRAMで実行できると説明しています。しかし、公開されていることと、運用費が安いことは別です。GPU稼働、保存、待ち時間、保守を含めて比較する必要があります。公開モデルと商用APIの品質が同等だとも、この情報だけでは判断できません。 比較する単位を「生成1回」から「採用したカット」に変える 料金表から分かるのは呼び出しの価格です。制作では、その出力を採用できるかが重要になります。 次の式を、プロジェクトごとの記録指標にすると比較しやすくなります。 採用1カットあたりの生成費 = 採用・不採用を含む実際の生成課金額 ÷ 採用カット数 採用数がゼロなら、この値は算出せず「未採用」として扱います。人の確認時間と編集時間は別に記録します。時間を費用へ換算するなら、時間単価もそろえます。 単価が低くても、同じカットを何度も作り直せば制作費は増えます。逆に高いモデルでも、少ない試行で必要な結果を得られるなら、採用単位では見え方が変わります。これは特定モデルの優劣ではなく、評価の置き方の話です。 比較時には、少なくとも次を固定・記録します。 項目 記録する内容 出力条件 秒数、解像度、縦横比、音声の有無 入力 プロンプト、参照画像とその版、対応する設定値 実行条件 提供元、モデルID・版、実行日時、課金額 採用基準 顔・衣装の連続性、動き、構図、前後カットとの接続 結果 採用/不採用と理由、確認・編集にかかった時間 モデルルーティングの前に、カットの要件を保存する 「アクションならモデルA、静かな場面ならモデルB」と固定すると、モデル更新のたびに判断を作り直すことになります。先に保存したいのは、モデル名ではなくカットの要件です。 カットの要件 候補を絞る条件 出力で確認する点 同じ人物を続けて出す 必要な参照画像を入力できるか 顔・衣装・小道具が前後とつながるか 大きな動きを見せる 必要な尺・入力方式に対応するか 動作の順序、身体や物体の破綻 セリフや環境音が必要 音声生成または別工程を使えるか 映像との同期、音の内容 構図だけ先に決めたい 予算・待ち時間内で試せるか 本生成へ引き継ぐ構図が定まるか 候補の選択は、まず必須条件で絞り、次に自分たちの評価用カットで比較し、最後に採用単位の費用と時間を見る、という順序にします。評価用カットには、正面顔だけでなく、横顔、動作、小道具の持ち替えなど、作品に必要な難しい条件も含めます。 最初から自動選択にする必要はありません。人が選ぶ段階でも「なぜその候補を選んだか」を残せば、後からルールを見直せます。予算上限や再試行回数の上限も、カットごとに決めておくと際限のない再生成を防げます。 一貫性を、プロンプトだけに持たせない キャラクターの一貫性を扱うなら、作品全体の定義と、一回の生成条件を分けて管理したいと考えています。以下は設計案であり、Toonkitの内部実装を示すものではありません。 プロジェクト ├─ キャラクター定義 v3(外見・衣装・参照画像) ├─ スタイル定義 v2(色・線・光の方針) └─ シーン └─ カットの要件 ├─ 試行1:入力・モデル・設定・結果・不採用理由 ├─ 試行2:入力・モデル・設定・結果・採用理由 └─ タイムラインで使用する採用結果 大事なのは、定義を更新しても過去の試行が何を参照していたかを変えないことです。「現在のキャラクター」へのリンクだけでは、生成当時の状態を後から確認できません。入力ファイルや設定の版を固定して保存します。 LoRAなどのアダプターを使う場合も、すべてのモデルで使えると仮定せず、対応する基盤モデルと版をひも付けます。別モデルへ切り替えるときは、参照画像や共通の外見定義を出発点にして、互換性と出力を再確認します。 また、前の生成結果だけを次の参照にすると、途中の変化を引き継ぐ可能性があります。承認済みの基準画像を残し、前カットとの連続性と基準画像からのずれを両方確認する、という設計が考えられます。 一本の映像として確認する工程を残す カット単体では採用できても、並べると視線の向きや小道具の位置がつながらないことがあります。そこで、カットの承認とシーケンスの承認を分けます。 シナリオから、カットごとの目的・人物・必要な動作を決める。 絵コンテで、構図と前後の接続を確認する。 必須条件を満たすモデル候補で生成し、試行を記録する。 カット単体の採用基準で確認する。 タイムラインで前後を見て、連続性とテンポを確認する。 修正する場合は、対象カットとそれに依存する後続カットを特定する。 この構造なら、モデルを差し替えるときも、作品全体を最初からやり直すのではなく、影響する範囲を判断できます。ただし、入力を保存しても生成結果の完全再現は保証されません。目的は、判断と変更箇所を追跡できるようにすることです。 私がワークフローの価値と考えるのは、この「判断を引き継げること」です。新しいモデルを試せることに加えて、これまで決めたキャラクター、構図、採用理由を失わずに試せること。モデルの性能がどの速度で変わっても、制作ツールとして取り組む意味のある課題だと考えています。 AIアニメーション制作は、Toonkitで試してみてください! toonkit.io
请帮我搭建一套开源、免费、本地运行的 「AI 儿童英语绘本动画生成系统」。 优先研究并复用以下 GitHub 项目: 1、ComfyUI(AI 绘图与视频工作流) Comfy-Org/ComfyUI 2、Pixelle-Video(自动化短视频制作) ATH-MaaS/Pixelle-Video 3、Wan2.2(AI 动画生成) Wan-Video/Wan2.2 4、Piper TTS(本地英语配音) OHF-Voice/piper1-gpl 目标:输入一句故事主题, 自动生成适合3~6岁儿童的英语动画。 具体要求: 1、AI 自动编写英语故事、角色对话和分镜。 2、生成统一画风的3D卡通动物角色。 3、让角色走路、说话、互动,保持形象一致。 4、自动生成英语配音及中英双语字幕。 5、自动添加背景音乐,合成60秒动画。 6、输出1080×1920竖屏MP4,适配抖音。 7、支持批量生成,并提供中文操作界面。 执行方式: 先检查电脑配置、项目功能及开源许可证, 优先复用现成代码,不重复造轮子。 禁止调用付费API,优先使用本地免费模型 模型和素材必须符合实际使用及商用授权要求 先制作一条10秒测试视频, 成功后再生成60秒完整版。 如果硬件不足,自动推荐轻量级替代方案 现在开始检查环境、制定方案并实施
Quality video on local hardware: the Elsewhere Unfolds workflow Local models can produce beautiful shots. A finished film needs more: a world that stays coherent, movement that feels intentional, music that holds together, and an edit worth watching. This is the production method we have been developing with Elsewhere Unfolds. An early Elsewhere Unfolds cut had an attractive world, a complete timeline, and a successful render. It also had water that barely moved and clouds that stayed fixed while the camera drifted past them. The shot manifest was satisfied. The scene did not feel alive. That correction changed how we produced the next passages. We separated camera movement from environmental movement, tested short motion clips at normal speed, and watched them before committing to the rest of the film. The improvement came from a clearer creative requirement and a smaller review loop. Elsewhere Unfolds makes fantasy and cosmic visual journeys with instrumental music. This guide explains the reusable production method behind that work, from the first visual promise to a finished master and vertical excerpts. The boundary matters: our established motion, music, editing, and finishing pipeline uses local resources. Some starting images were made with a hosted image tool. That makes those productions hybrid. For an entirely local version, supply your own photographs, drawings, local 3D renders, or images from a model running on your machine. The workflow below starts with those local image files. It does not require a hosted video generator. The examples use the Wan 2.2 TI2V-5B and ACE-Step v1 stack from our production recipes. They are a concrete baseline, not a claim that every newer model has been evaluated or that these settings suit every GPU. The production loop Work in three sizes: one shot, one short sequence, then the complete film. Each answers a different question. | Size | What you are learning | What to review | | --- | --- | --- | | One native motion take | Can the intended action work? | Geometry, feet, motion direction, unwanted objects | | A 30 to 60 second sequence | Do the shots and music belong together? | Orientation, pacing, transitions, emotional tone | | The complete film | Does the experience hold up over time? | Repetition, later continuity, score joins, ending |  Our longer episodes have used an 8:01 format. That is an editorial choice, not a recommended starting assignment. Begin with a 30-second film you can finish, inspect, and revise. Padding a weak minute into eight minutes only gives you more weak material to fix. What needs to run locally You do not need a cluster. You need a machine that can run the chosen model, space for its weights and intermediate files, and a way to edit and review the result. | Job | Our established tool or method | Output to keep | | --- | --- | --- | | World and shot planning | Written brief, storyboard, reference images | Selected brief and shot list | | Starting artwork | Approved image files; source can vary | Original plate and provenance | | Image-to-video motion | Wan 2.2 TI2V-5B | Native take, prompt, seed, settings | | Instrumental music | ACE-Step v1 3.5B | Raw WAVs and selected arrangement | | Assembly and finishing | Python orchestration and FFmpeg | Edit decisions, review copy, final master | | Inspection | FFprobe, frame samples, normal playback | Technical results and review decisions | Wan's documented single-GPU TI2V-5B example targets at least 24 GB of VRAM with model offloading and the text encoder on CPU. Treat that as the reference for that command, not a universal minimum or a guarantee of success. CPU RAM, free VRAM, software versions, and the selected settings still matter. Check the official Wan setup instructions against your hardware before downloading a large checkpoint. For a first project, keep motion generation and music generation sequential. A background model can consume memory that a video job needs. If the GPU is shared, agree on an available window; do not terminate somebody else's work to make room. A waiting job is cheaper than losing an accepted take or disrupting another workload. Initial installation and model downloads need network access. Local inference means the generation runs on your equipment. It does not make electricity, storage, setup time, or retakes free. Record the model revision, source revision, environment, settings, and input image for each run. A seed helps repeat an experiment, but it does not guarantee identical output across different software and hardware. 1. Write the experience before writing prompts A useful brief explains what the viewer will experience and what will change. “Beautiful cinematic fantasy, ultra detailed” cannot do that work. Here is an illustrative brief for a small film: > We board a floating garden before it leaves a quiet dock. A gardener crosses the terrace. The gap behind us widens, and a pale arch appears at our destination. Copper, emerald, and pearl remain the visual palette. The mood is calm anticipation. The final image resolves the journey rather than introducing another location. Turn it into a few fixed decisions: - The promise: a garden really leaves one place for another. - The route: boarding terrace, departure view, onboard path, destination. - The continuity anchors: the same moon placement, architecture, clothing, and direction of travel. - The movement: leaves and water move; the dock recedes; a person performs one readable action. - The exclusions: no crowds, complicated hand exchanges, or unexplained new landmarks. Make the thumbnail and first shot agree about the film's promise. If the packaging promises a moving island, establish that island and its departure early. A long logo introduction spends attention before delivering the thing the viewer selected. For Elsewhere, a recognizable route matters more than a collection of unrelated beautiful locations. Each shot should tell us where we are, what has changed, or where we are going. 2. Build a world that survives the next camera angle Call the approved starting image for a shot its plate. Keep a small set of reference plates that establish materials, light, landmarks, and any recurring people. Review the plates together before animating them. A contact sheet makes inconsistencies easier to see: a second moon appears, the destination moves behind the traveler, or a bridge no longer connects to the same terrace. We have caught all of those classes of problem during production. One reverse view placed another complete moon outside a doorway even though the camera was already inside that moon. Another reference combination duplicated the sun. Attractive individual images can still describe an impossible route. Use a compact shot table: | Shot | Purpose | Action | Must remain stable | | --- | --- | --- | --- | | Terrace wide | Establish the world | Water ripples and leaves move | Island silhouette, moon position | | Gardener profile | Establish habitation | One walk from left to right | Clothing, ground contact, path | | Stern view | Prove departure | The distant dock recedes | Foreground rail, open gap | | Bow view | Reveal destination | Gentle camera reveal | Travel direction, destination arch | Simplify a plate when it asks too much of motion generation. Give a walking person visible feet, clear ground, and empty space ahead. Separate actions that would otherwise compete. A close hand exchange, turning crowd, and moving camera in the same five seconds create several opportunities for failure. If you want the whole process to stay local, this is where you choose your image source. A scene rendered in a local 3D application or a drawing you made yourself is a valid plate. A local image model is another option, but it is a separate tool to qualify. We are not claiming that substituting one reproduces our hosted artwork automatically. 3. Generate one motion take with a clear job For image-to-video work, let the plate describe the appearance. Use the motion prompt to describe the action, camera, and things that must stay stable. An illustrative prompt: > Locked medium-wide side view. One gardener walks naturally from left to right along the level stone path. Both feet remain visible and contact the ground. Leaves move gently in the background. Preserve the copper railing, architecture, clothing, and lighting. No additional people, no camera orbit, no cuts. After following the upstream installation instructions and downloading the TI2V-5B checkpoint, this is the shape of a run from the Wan source directory. Replace the example input and checkpoint paths with your local files. Use a new output filename for each attempt. python generate.py \ --task ti2v-5B \ --size '1280*704' \ --ckpt_dir ./Wan2.2-TI2V-5B \ --image ./inputs/gardener.png \ --prompt 'Locked side view. One gardener walks left to right on a level path. Feet remain visible. Leaves move gently. Preserve the railing and clothing. No extra people or cuts.' \ --frame_num 121 \ --sample_steps 50 \ --sample_solver unipc \ --sample_shift 5.0 \ --sample_guide_scale 5.0 \ --base_seed 42 \ --offload_model True \ --convert_model_dtype \ --t5_cpu \ --save_file ./gardener-take-01.mp4 These controls follow the upstream command-line interface and our established recipe. This is an adapted example, not a fresh performance benchmark. It does not enable a hosted prompt-expansion service. At 24 fps, 121 encoded frames occupy about 5.04 seconds. An exact five-second edit uses 120 frames. Check the generated file's actual dimensions and timing: our image-conditioned production outputs have included 1248 × 704, despite the 1280*704 size setting. Do not infer the output raster from the command alone. Watch the native take before slowing, enlarging, or stitching it. Check the start, middle, and end, then play the entire clip. Look for foot sliding, changing faces, bending rails, sudden foreground figures, and movement in the wrong direction. If the action fails, simplify the action or repair the plate before launching a large batch. 4. Treat three kinds of motion separately Camera motion changes the viewpoint. Environmental motion changes water, mist, foliage, light, and other scene elements. Performed action is a person walking, turning, or doing something. An image can have a convincing camera move while its waterfall remains frozen. A scene can have moving fog while its traveler slides without taking a step. Review each kind independently.  For a calm environmental shot, forward slow motion can be useful if it still looks natural. For walking or other recognizable human actions, start with native speed. Watch any interpolation for doubled limbs, smeared edges, and unstable occlusions. Five seconds of generated movement do not become twenty seconds of new action because the editor can repeat or slow them. A reverse loop can make a person walk backward; a repeated wave or bird can reveal the loop. If a passage needs more time, generate a distinct take, cut to another angle, or shorten the passage. Continuing from the last frame of a previous take can help connect movement, but it can also carry defects forward. Inspect that frame before making it the next input. Stop a continuation when geometry starts to drift instead of extending the error through the film. 5. Finish a short opening before expanding the film Assemble a 30 to 60 second proof with real motion, representative music, and the intended edit rhythm. A slideshow of selected plates cannot answer whether the finished motion works. The proof should contain the hard part. If departure is the central promise, include departure. If a recurring traveler makes the world feel inhabited, include a real walking shot. An easy landscape does not qualify a harder action later. Review the sequence without pausing first. Does it make sense? Does the first shot deliver the promise? Is there a reason to keep watching? Then examine technical defects and individual transitions. Once a sequence is accepted, keep its exact files and settings. Expand around it. We preserve accepted openings while generating later passages so a new render cannot silently replace the part that already worked. Keep a simple project layout: film/ brief.md shots.csv plates/ motion/raw/ motion/selected/ music/raw/ music/selected/ edit/ review/ exports/ The labels are less important than the separation. Raw sources stay intact; selected sources are explicit; review exports are disposable derivatives. Save a rejection reason beside a failed take so the next attempt changes something useful. 6. Compose and review the soundtrack as a whole Our established music recipes use ACE-Step v1 3.5B locally. Keep the version explicit: a later release may have different installation, controls, and behavior. Use the project's documentation for the environment matching your selected release. A music brief should describe the experience and the arrangement. For this style, we ask for warm, spacious instrumental ambience, gradual harmony, and sparse melody. We also describe what would break the mood: lyrics, voice-like passages, a strong beat, abrupt motifs, or a trailer-style crescendo. Start with a short audition against the opening. Choose where the cue enters and whether it leaves enough space for the imagery. Then review the full arrangement, including every join and the final tail. An attractive first minute does not establish a clean ending. Keep lossless WAV sources. Build an arrangement from selected cues with measured overlaps, deliberate fades, and enough headroom. The finished duration is the sum of the cue durations minus their overlaps. The same arithmetic applies to overlapping video transitions. Measure the generated audio rather than assuming a requested duration is exact. We encountered a cue that was roughly 73 milliseconds short because of the installed model's duration grid. The composition had succeeded. The useful response was to preserve it, diagnose the precise discrepancy, and make a small documented finishing correction. That is different from concealing a missing passage with silence. Check the playback path before removing noise When static is reported, compare the original WAV, the finished export, and playback in another native player or device. In one later Elsewhere review, native Windows playback sounded correct while the WSL playback path did not. Filtering the accepted source would have changed music that was already satisfactory. For a different batch of Shorts, a gentle cleanup was accepted after direct comparison. This was the filter used for that case: ffmpeg -n -i source.wav \ -af 'afftdn=nr=6:nf=-48:tn=0:gs=8' \ -c:a pcm_s24le audition-clean.wav Treat this as an audition candidate, never an automatic mastering preset. FFmpeg documents these controls under afftdn. Denoising can soften wanted texture. Compare original and cleaned versions at comparable listening levels, preserve both, and choose by listening. Waveform similarity and successful decoding cannot establish that something sounds good. 7. Edit to a timeline, not a requested runtime Give every shot an editorial purpose and an explicit frame allocation. At 24 fps, an 8:01 film contains 11,544 presentation frames. Resolve transitions and overlaps in that frame budget rather than rounding each shot independently. For a first 30-second exercise, prepare six accepted five-second shots at 24 fps, all with matching dimensions, codec settings, and no audio. Put the filenames in edit/shots.txt, relative to that list: file '../motion/selected/shot-01.mp4' file '../motion/selected/shot-02.mp4' file '../motion/selected/shot-03.mp4' file '../motion/selected/shot-04.mp4' file '../motion/selected/shot-05.mp4' file '../motion/selected/shot-06.mp4' From the project root, assemble a straight-cut picture track: ffmpeg -n -f concat -safe 0 -i edit/shots.txt \ -map 0:v:0 -an -c:v copy edit/picture.mp4 This simple stream-copy path requires compatible, independently prepared clips. Mixed time bases, encoders, or track layouts need normalization in your editing stage; a concat command is not a general repair tool. Keep crossfades out of the first exercise so its duration stays easy to audit. See the concat demuxer documentation. After preparing a 30-second score with its entrance and ending already shaped, make a review export: ffmpeg -n -i edit/picture.mp4 -i music/selected/score-30s.wav \ -map 0:v:0 -map 1:a:0 \ -c:v copy -c:a aac -b:a 320k -ar 48000 \ -movflags +faststart exports/review-30s.mp4 Both sources must cover the intended duration. Avoid adding -shortest as a reflex: it can hide an unexpectedly short input by cutting the other track. Inspect the result and listen to its ending. Keep the native generation size distinct from the delivery size. A 3840 × 2160 export made from lower-resolution motion is an upscale. It can be a useful delivery format, but enlarging a warped railing makes a larger warped railing. Finish motion and continuity before paying for a high-resolution encode. 8. Make quality control answer specific questions Automated checks are useful when they tell you exactly what they established. Use FFprobe to inspect the exported file: ffprobe -v error -count_frames \ -show_entries 'stream=index,codec_type,codec_name,width,height,avg_frame_rate,nb_read_frames,duration,sample_rate,channels:format=duration' \ -of json exports/review-30s.mp4 For the exercise, expect 720 video frames at 24 fps and the planned audio channels and sample rate. AAC/container timing can differ slightly from the exact picture duration; investigate meaningful mismatches instead of treating every reported duration as identical. Decode the entire export, including audio: ffmpeg -v error -xerror -i exports/review-30s.mp4 \ -map 0:v:0 -map 0:a:0 -f null - A clean decode establishes readable media. It does not establish pleasing images, good pacing, or acceptable sound. Complete three reviews: | Review | Questions | | --- | --- | | Technical | Does it decode? Are the streams, dimensions, frame count, and duration correct? | | Visual | Does the world stay coherent? Do feet, rails, water, and transitions behave? | | Listening | Are cue joins, noise, dynamics, and the ending acceptable on real playback? | Sample frames around transitions and at the middle of procedural effects, not just the first and last frames. We caught a highlight problem at the peak of a light treatment: an 8-bit color calculation exceeded its valid range and wrapped. The endpoints looked fine. The fix was in the finishing calculation, not another generation attempt. When replacing one part of an accepted film, verify that the parts meant to stay unchanged did stay unchanged. File hashes identify exact copies. Decoded-frame comparisons can check preserved picture across a container change. Neither substitutes for watching the new result. 9. Expand, recover, and keep the good work A long render has more than one kind of success. Generation can finish even if a later copy, collection, or resource-restoration step fails. Inspect the output before rerunning the expensive part. Save completed takes as they arrive. Record the input plate, prompt, seed, model revision, native output, and selected derivative for each shot. If a job is interrupted, resume from the missing work instead of regenerating everything that already passed review. On shared hardware, record what resource settings you changed and restore those settings after the run. Check that restoration separately from the video artifact. A good clip does not prove the machine was returned to its previous state. Agents and scripts are helpful for preparing shot packets, tracking outputs, making contact sheets, checking files, and assembling review pages. Give them explicit limits on retries, durations, and replacement scope. Keep creative selection with the person watching and listening. A process reporting success cannot decide that a walk feels natural. The useful efficiency measure is accepted footage per production session. A faster model that creates more unusable takes may cost more time overall. Track rejected takes and the reasons for rejection before changing models or increasing concurrency. 10. Derive Shorts from the accepted film Choose excerpts that contain a complete visual idea: a reveal, an arrival, a short action, or a change in the world. Reframe deliberately for vertical output. A centered crop can remove the destination, the feet, or the object that makes the action understandable. Elsewhere's vertical edits reuse the accepted picture and soundtrack. Review the new crop, text placement, entrance, and ending as a separate edit. Keep a clean version as well as any version carrying a short hook or invitation to the full film. Captions belong where there is speech or useful context; an instrumental film does not need invented narration. Watch the export at phone size with the platform's interface area in mind. Keep the important action visible, and listen to the actual exported audio. A short excerpt can expose a rough music boundary that was unnoticeable inside a longer cue. Publication adds another review: correct file, title, thumbnail, links, visibility, processing, and playback. Follow the platform's current disclosure requirements. Local generation and an original prompt do not settle every source or usage question; retain the provenance and applicable licenses for the material you use. Measure the audience response separately from production quality. Compare retention and traffic sources at similar release ages where possible. A Short's views do not prove that viewers continued to the full film, and a small audience sample does not establish why one opening performed differently. Your first local film Make the first deliverable small enough to finish: 1. Write one paragraph describing a place, an action, and an ending. 2. Select a small set of locally sourced plates that agree about the world. 3. Prove the hardest action in one native motion take. 4. Build six distinct five-second shots with consistent technical settings. 5. Select or compose a local 30-second soundtrack and shape its ending. 6. Assemble, probe, decode, watch, and listen to the complete export. 7. Preserve the accepted version before trying a longer film or a vertical cut. The lasting part of the Elsewhere workflow is the ability to inspect and revise each decision. You can replace a model, change an editor, or improve the hardware while keeping that method: define the experience, test its hardest part, preserve what works, and judge the film that the viewer will actually see. --- Originally published on danmercede.com.
5/5 Wan2.2 光や構図まで指定して、映画っぽい見た目の動画を作れるオープンなモデル 今回は拡散の部分にMoEを入れてきた Wan-Video/Wan2.2 t.co