AnimateDiff 的原论文是《AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning》(arXiv 2307.04725,ICLR 2024 Spotlight),作者是 Yuwei Guo、Ceyuan Yang、Bo Dai 等人,仓库 github.com/guoyww/AnimateDiff 以 Apache-2.0 开源。它的做法很反直觉:底模一个参数都不动,只在 UNet 里插入一组时序注意力层——也就是那个 0.4B 左右的 motion module。所以你在 Civitai 上下的任何 SD1.5 检查点、任何角色 LoRA,套上去就能出动画,画风不跑偏。这是它到今天仍然被部署的唯一理由,也是它和原生视频模型的根本分野。
把话说透:官方主仓的功能线停在 v3(2023 年 12 月的 v3_sd15_mm.ckpt + SparseCtrl + Domain Adapter),此后没有新的动作模块发布。真正在维护的是生态——Kosinkadink 的 ComfyUI-AnimateDiff-Evolved 补齐了滑动上下文窗口、fp8、AnimateLCM、CameraCtrl、PIA 这些能力;Hugging Face diffusers 则把它拆成了 AnimateDiffPipeline、AnimateDiffSDXLPipeline、AnimateDiffSparseControlNetPipeline、AnimateDiffVideoToVideoPipeline 一整套。如果你要的是纯文生视频的画面上限,Wan、HunyuanVideo、LTX-Video 这批原生 DiT 视频模型早已经越过去了。但那些模型吃不下你的 SD1.5 角色 LoRA,AnimateDiff 能。
显存这块 AnimateDiff 有个很特别的性质:视频长度基本不推高显存。ComfyUI 的 Context Options 默认按 context_length=16、context_overlap=4 的滑窗切片,UNet 每次只看 16 帧;FreeNoise 在 diffusers 侧做的是同一件事。所以 16 帧和 160 帧的采样峰值几乎一样,真正的显存尖峰跑到了 VAE 解码那一步,用 vae.enable_slicing() 或 tiling 就压下去了。理解这一点,你选卡的逻辑会完全不同——你要买的不是「更长视频的显存」,而是分辨率、ControlNet 链路和吞吐。
01 —
版本与权重对照
文件名、体积、显存口径都按官方 Hugging Face 仓库 guoyww/animatediff 实际列出的来
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| AnimateDiff v3(v3_sd15_mm.ckpt) | 约 0.4B 动作模块 / 1.67GB | fp16 常驻约 4GB;512×512×16 帧采样峰值约 6–8GB | 16 帧滑窗,可无限接长 | 当前默认选择。配套 v3_sd15_adapter.ckpt(102MB)域适配 LoRA,权重建议压到 0.5 左右,拉满会把 WebVid 的廉价质感带进画面。 |
| AnimateDiff v2(mm_sd_v15_v2.ckpt) | 453M 动作模块 / 1.82GB | 与 v3 同量级,512 分辨率 8GB 卡可跑 | 16 帧滑窗 | 唯一吃官方相机运动 MotionLoRA 的模块。八个 v2_lora_*.ckpt(ZoomIn/ZoomOut/PanLeft/PanRight/TiltUp/TiltDown/RollingClockwise/RollingAnticlockwise)各 77.5MB,只认 v2。 |
| AnimateDiff v1(mm_sd_v14 / mm_sd_v15) | 各 1.67GB | 同 v2 | 16 帧 | 已被取代。mm_sd_v15 训练数据里的 WebVid-10M 素材带 Shutterstock 水印,出图会隐约透出来,别再拿它当默认。 |
| AnimateDiff SDXL-Beta(mm_sdxl_v10_beta.ckpt) | 950MB | 官方 README 口径:推理通常需要约 13GB | 16 帧 @ 1024×1024 | 标着 beta 就是 beta,动作稳定性明显不如 SD1.5 线。SDXL 侧不少人反而回去用 HotshotXL 的 hsxl_temporal_layers.safetensors。 |
| SparseCtrl RGB / Scribble(v3_sd15_sparsectrl_*.ckpt) | 各 1.99GB | 在 v3 基础上再加约 2GB 常驻 | 任意数量条件帧 | v3 专属控制编码器。RGB 版就是 AnimateDiff 的图生视频路径,只给首帧也行;Scribble 版收线稿。diffusers 里对应 AnimateDiffSparseControlNetPipeline 的 controlnet_frame_indices。 |
| AnimateLCM(wangfuyun/AnimateLCM) | 约 0.5B | 与 v3 相当,步数少所以更快 | 16 帧滑窗 | 一致性蒸馏加速版,4–8 步就出片而不是 25–50 步。配 AnimateLCM_sd15_t2v_lora.safetensors 使用,还有 I2V 变体。批量筛风格时性价比最高。 |
02 —
NexGPU 选卡建议
按分辨率和链路复杂度选,不按视频长度选——长度靠滑窗解决,不吃显存
SD1.5 + v3 动作模块,512×512、16–32 帧,验证提示词和风格
RTX 3090 24GB$0.193/卡·时
峰值 6–8GB 的活给 24GB 卡是绰绰有余,而这是全站最便宜的 24GB 选项,跑一整轮风格筛选的钱不到一杯咖啡。
768 分辨率出片主力,叠 ControlNet / SparseCtrl / IP-Adapter 多控制链路
RTX 4090 24GB$0.540/卡·时
显存和 3090 一样,但采样吞吐是另一个档次;控制链一多,瓶颈就从显存转到算力,这时候贵的那张反而更省钱。
AnimateDiff-SDXL / HotshotXL 1024×1024,或者出片后接高倍放大
RTX 5090 32GB$0.723/卡·时
官方 SDXL 口径约 13GB,再叠放大和 VAE 解码就贴着 24GB 的天花板了;32GB 给你留出不用开 tiling 的余量。
自训动作模块、大规模视频到视频改写、或者多路并发出片
A100 PCIE 80GB$0.824/卡·时
训练时序层要同时装下底模、动作模块、优化器状态和整段帧批次,80GB 才不用做梯度检查点;单卡时价只比 48GB 的 A6000($0.817)贵不到一分钱。
03 —
四步跑起来
ComfyUI 走图形工作流,diffusers 走脚本批量——两条路都给你
- 01
开实例,装 AnimateDiff-Evolved 节点
在 NexGPU 控制台选 ComfyUI 预置镜像开机,SSH 或 Jupyter 进去,把 Evolved 节点拉进 custom_nodes。这个节点包才是滑动上下文窗口、fp8、AnimateLCM、CameraCtrl 的载体,原仓的 scripts.animate 只适合复现论文。
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved - 02
拉动作模块和你自己的底模
动作模块放 ComfyUI/models/animatediff_models,MotionLoRA 放 ComfyUI/models/animatediff_motion_lora,底模照旧放 checkpoints。想省本地带宽就直接在实例里下——NexGPU 节点分布在 51 个国家和地区,选个离 Hugging Face 近的入口,1.67GB 几分钟的事。
huggingface-cli download guoyww/animatediff v3_sd15_mm.ckpt v3_sd15_adapter.ckpt --local-dir ComfyUI/models/animatediff_models - 03
不想开 UI,用 diffusers 直接批量
MotionAdapter 加载 v1-5-3 权重,底模换成你自己的 SD1.5 检查点。调度器必须显式写 beta_schedule="linear"、clip_sample=False、timestep_spacing="linspace"、steps_offset=1——用默认 DDIM 配置出来的就是一坨闪烁的糊状物,这是新手第一天最常踩的坑。
adapter = MotionAdapter.from_pretrained("guoyww/animatediff-motion-adapter-v1-5-3", torch_dtype=torch.float16) - 04
拉长时长,顺手压显存
ComfyUI 侧接一个 Context Options◆Standard Uniform 节点(context_length 16、context_stride 1、context_overlap 4)。diffusers 侧开 FreeNoise,能推到 256 帧以上还支持按帧号切提示词。VAE 解码是真正的显存尖峰,slicing 和 CPU offload 一起上就稳了。
pipe.enable_free_noise(context_length=16, context_stride=4); pipe.vae.enable_slicing(); pipe.enable_model_cpu_offload()
一轮出片到底花多少钱
拿 RTX 4090 24GB($0.540/卡·时)跑 SD1.5 + v3_sd15_mm、512×512、16 帧、DDIM 25 步:按每条两秒片子 30 秒出片估算,一小时出 3600 ÷ 30 = 120 条,单条 $0.540 ÷ 120 ≈ $0.0045。一轮 200 条的风格筛选约占 100 分钟机时,$0.540 × (100 ÷ 60) ≈ $0.90。换成 AnimateLCM 走 6 步采样,同样的预算大约能出三到四倍的量。预算再往下压就上 RTX 3090 24GB($0.193/卡·时)——采样慢一截,但 512 分辨率这活它完全扛得住,同样 100 分钟只要 $0.193 × 1.67 ≈ $0.32。存储另算:底模加动作模块加产出留 20GB,$0.414/GB·月 × 20 = $8.28/月;出片下载 5GB 走 $0.0081/GB ≈ $0.04。按秒计费、按小时计价,实例一停算力立刻停算,存储要销毁才停——所以调完参数记得把不用的卷删掉。
04 —
