Nodes/asyncdiff_comfyui/ADAnimateDiffSampler
ComfyUI Node

ADAnimateDiffSampler

AnimateDiff video, split across your GPUs — ADAnimateDiffSampler

By SlackinJack·Created 2 years ago·Updated about a year ago· 0
ADAnimateDiffSampler
  • model
  • motion_adapter
  • config
  • control_net
  • ip_adapter
  • image
  • IMAGE
positive_prompt
negative_prompt
width512
height512
seed0
steps60
guidance_scale3.5
num_frames25

ADADSampler is the pack's AnimateDiff video sampler: an SD 1.5 checkpoint plus a temporal motion module in, a video clip out, with the denoising split across your GPUs by AsyncDiff. It's the node that the original AsyncDiff paper demoed - ~1.8x faster on AnimateDiff with two devices - and it's the one place in this pack where all the optional adapters actually plug in.

So the honest positioning up front: AnimateDiff is the old guard. It made SD 1.5 produce motion-coherent video by injecting a temporal attention module into the frozen UNet, and the whole SD 1.5 ecosystem - LoRAs, ControlNets, IP-Adapters - kept working untouched because the motion module never touched the spatial weights. That was a superpower in 2023. By now, Wan and the other video models have taken the quality crown, and the community verdict is that AnimateDiff survives as a look and a migration path, not a capability leader. If you have the GPU budget for a modern video model, use it. If you're here, it's because you're working the SD 1.5 angle - and this sampler is a real way to do that across multiple cards.

How it works

AnimateDiff injects temporal transformer blocks that attend across the time axis of your frames, learning motion without retraining the base model. The motion_adapter input is that temporal module - the thing that turns a still-image model into a video model. AsyncDiff then parallelizes the denoising of all those frames across your GPUs: the denoiser is split into model_n components, and after a warm-up phase each component predicts its next input and computes ahead of the chain, so the serial denoising loop becomes a pipeline.

Inputs that matter

  • model and motion_adapter - both AD_MODEL, both from ADModelLoader. Model is your SD 1.5 checkpoint; motion_adapter is the AnimateDiff motion module. Two loaders, two wires, easy to swap the wrong one in - don't.
  • config - mandatory AD_CONFIG from ADPipelineConfigurator.
  • positive_prompt / negative_prompt - your prompt, and with AnimateDiff, negative matters more than usual.
  • num_frames (default 25) - frames of video. AnimateDiff's native training context is 16 frames, and the pack doesn't bring the sliding-context-window machinery that AnimateDiff-Evolved uses for arbitrary length - so keep this modest.
  • width / height (default 512) - SD 1.5 native res. seed, steps (default 60), guidance_scale (default 3.5) - 3.5 is a low CFG, which is normal for AnimateDiff.

The optional inputs are where this node shines: control_net (from ADControlNetLoader) steers spatial structure across frames - keeping a subject placed, locking a pose; ip_adapter (from ADIPAdapterLoader) pulls style or identity from a reference image; image conditions generation on an input frame. Wire these in and you're doing character-consistent, structurally-guided animated video on SD 1.5.

Output is IMAGE - a batch of frames. Send it to a video-combine node for an mp4.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/SlackinJack/asyncdiff_comfyui.git
cd asyncdiff_comfyui
./clone_asyncdiff_repo.sh   # required - pulls the upstream AsyncDiff framework

Restart ComfyUI, or ComfyUI Manager (search "asyncdiff_comfyui"). Multi-GPU NVIDIA, CUDA >= 12.0, distributed/diffusers deps - the pack standard.

Where people get burned

First, multi-GPU or nothing - one card and this is a slower AnimateDiff than the native ComfyUI path. Second, the README's support note says the pack's tested lane is stable-video-diffusion-img2vid; this AnimateDiff sampler is real but sits outside that tested lane, so treat yourself as the QA. Third, if the output comes out visibly noisy, the configurator's time_shift toggle exists precisely for that. And keep num_frames honest - this pipeline doesn't do infinite-length AnimateDiff; short clips are its comfort zone.

CategoryAsyncDiff/Samplers (AnimateDiff)

Inputs (14)

NameTypeDefaultDescription
modelAD_MODEL
motion_adapterAD_MODEL
configAD_CONFIG
positive_promptSTRING
negative_promptSTRING
widthINT5128–4294967295
heightINT5128–4294967295
seedINT00–4294967295
stepsINT601–4294967295
guidance_scaleFLOAT3.50–4294967295
num_framesINT251–4294967295
control_netoptAD_CONTROLNET
ip_adapteroptAD_IPADAPTER
imageoptIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE