跳到主要内容

视频生成模型

AnimateDiff 本地部署:显存要求、版本选型与出片成本一次讲清

AnimateDiff 不是一个视频模型,它是一块插进你现有 SD1.5 权重里的动作模块。这意味着你的角色 LoRA、你的画风底模,原样会动——而且一张 8GB 卡就能起步。

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.67GBfp16 常驻约 4GB;512×512×16 帧采样峰值约 6–8GB16 帧滑窗,可无限接长当前默认选择。配套 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同 v216 帧已被取代。mm_sd_v15 训练数据里的 WebVid-10M 素材带 Shutterstock 水印,出图会隐约透出来,别再拿它当默认。
AnimateDiff SDXL-Beta(mm_sdxl_v10_beta.ckpt)950MB官方 README 口径:推理通常需要约 13GB16 帧 @ 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 走脚本批量——两条路都给你

  1. 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
  2. 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
  3. 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)
  4. 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 —

常见问题

AnimateDiff 本地部署到底需要多大显存?8GB 卡够不够?

够。SD1.5 底模加 v3 动作模块 fp16 常驻约 4GB,512×512、16 帧采样峰值大致落在 6–8GB,8GB 卡开 VAE slicing 能跑。上 768 分辨率再叠 ControlNet 就得往 12–16GB 想,AnimateDiff-SDXL 官方 README 直接写了约 13GB。在 NexGPU 上,前两档你用 RTX 3090 24GB($0.193/卡·时)就全覆盖了,按秒计费,试完就停。

现在都有 Wan、HunyuanVideo 了,还有必要部署 AnimateDiff 吗?

看你要什么。论文生视频的画面上限和物理合理性,那批原生 DiT 视频模型确实赢了,而且赢得不小。但它们吃不下你在 SD1.5 上训的角色 LoRA 和画风底模——AnimateDiff 的整个价值就在这儿:底模冻结、只插时序层,你的角色是谁出来还是谁。做 IP 一致的短动画、给已有插画风格加动效、批量做素材,它仍然是最便宜的路。两条路都想试的话,NexGPU 上 2,000+ 预置镜像里 ComfyUI 和 PyTorch 都现成,换个实例的事。

为什么我用 AnimateDiff 生成的视频里隐约有 Shutterstock 水印?

你多半用的是 mm_sd_v15。原始动作模块在 WebVid-10M 上训练,那份数据里大量素材带 Shutterstock 水印,模块把它当成了视频的固有纹理。换 v3_sd15_mm.ckpt 或 mm_sd_v15_v2.ckpt 就基本没有了;如果你在用 v3 的 domain adapter,把它的权重从 1.0 降到 0.5 左右,那股廉价库存视频的味道也会淡下去。换模块重跑一轮在 3090 上就几毛钱的事。

MotionLoRA 加载了却完全没效果,是我哪里配错了?

不是配错,是版本不匹配。官方那八个相机运动 LoRA 文件名前缀就是 v2_lora_——它们只对 mm_sd_v15_v2 这个 v2 动作模块生效,挂到 v3_sd15_mm 上不会报错,但也不会有任何位移。要相机运动就退回 v2 模块,或者改用 CameraCtrl 那条路。想同时要 v3 的画质和 v2 的运镜,就得跑两条链路合成——正好用 NexGPU 单节点最多 14 张卡的配置并行验证。

AnimateDiff 最长能生成多少帧?长视频是不是特别吃显存?

长度基本不吃显存,这是 AnimateDiff 最被低估的一点。ComfyUI 的 Context Options 按 context_length=16、context_overlap=4 做滑窗,UNet 每次只处理 16 帧;diffusers 侧的 FreeNoise 同理,官方文档明确支持 256 帧以上并能按帧号切换提示词。真正的显存尖峰在 VAE 解码,用 enable_slicing 或 split inference 摊掉就行。所以想做长片,你该加的是时间预算不是显存预算——而时间在按秒计费下就是钱,选张快卡比选张大卡划算。

AnimateDiff 生成的内容能商用吗?授权怎么算?

得分两层看。AnimateDiff 本身(动作模块、SparseCtrl、代码)是 Apache-2.0,这层很宽松。但你挂的底模是另一回事——原版 SD1.5 走 CreativeML Open RAIL-M,社区微调模型条款五花八门,Civitai 上每个检查点的商用条款都要单独确认。动作模块从来不改变底模的授权。技术侧我们能保证的是环境干净、权重是你自己拉的、实例是独占的:NexGPU 全网 1,175 个已验证可租节点、2,498 张 GPU,SSH、Jupyter、REST API、CLI 随便挑,中英文支持直接在 Telegram 上找人,没有工单队列。控制台在 console.nexgpu.net。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。