Nodes/ComfyUI-EasyAnimate/EasyAnimateLoader
ComfyUI Node

EasyAnimateLoader

The one node that turns three model files into a video pipeline

By chaojie·Created 2 years ago·Updated 2 years ago· 56
EasyAnimateLoader
    • EasyAnimateModel
    pixart_pathPixArt-XL-2-512x512
    motion_ckpteasyanimate_v1_mm.safetensors
    sampler_nameDPM++
    devicecuda
    transformer_ckptNone
    lora_ckptNone
    vae_ckptNone
    lora_weight0.55

    EasyAnimateLoader is the entire "get this model into ComfyUI" step compressed into a single node. EasyAnimate - Alibaba PAI's open-source text-to-video model from mid-2024 - isn't a checkpoint you drop in like an SDXL model. It's a whole stack: a PixArt diffusion transformer, a motion module, and a MagViT video VAE. This node assembles all of it, fuses the pieces, and hands you one wire labeled EasyAnimateModel that you plug into EasyAnimateRun. Nothing before it, nothing between. That's the whole job.

    A little context, because it matters for expectations. PixArt was the DiT the community loved for prompt adherence before Flux ate everyone's attention - it's in our "forgotten models" hall of fame for a reason. EasyAnimate took that 2D backbone and bolted an AnimateDiff-style motion module onto it to make it animate. The release thread's top comment was "sora-like is a stretch," and that's about right: it's a workable, lightweight video baseline, not a Sora competitor. If you're reaching for this in 2026 you're either excavating video history or you want a small T2V stack that doesn't need a datacenter.

    How it works

    Under the hood the loader is doing real surgery, and it's worth knowing because it explains every weird print in your console. It takes your PixArt diffusers folder, inflates the 2D transformer into a 3D one via Transformer3DModel.from_pretrained_2d, then loads the motion module's weights into it with strict=False. That's why you'll see lines like missing keys: X, unexpected keys: Y - the motion module and the transformer intentionally don't match key-for-key, and the loader is fine with that. It's not an error; it's Tuesday.

    Then it grabs the VAE from the diffusers folder, optionally merges a portrait LoRA at lora_weight, and enables model CPU offload while pinning the transformer to your chosen device. The offload is the difference between this running on an 8GB card and it exploding - the text encoder and VAE sit on CPU, only the transformer actually needs VRAM.

    The inputs that matter

    • pixart_path - this is a dropdown populated by os.listdir of your ComfyUI/models/diffusers folder. If you see put_diffusers_models_here in the list, that's the placeholder file, not a model. You haven't extracted PixArt yet.
    • motion_ckpt - the easyanimate_v1_mm.safetensors motion module from your checkpoints folder. This is what actually makes the image model move.
    • device - cuda or cpu. cuda is the point; cpu is for sanity-checking that everything loads without a GPU attached.
    • sampler_name - here's the honest gotcha: the dropdown does nothing. The code reads your selection and then immediately overwrites it with "DPM++". Don't waste time poking it.
    • Optional transformer_ckpt, vae_ckpt, and lora_ckpt let you override components with files from your checkpoints/vae folders, plus lora_weight (default 0.55) for the portrait LoRA's strength.

    Installing it

    Either search "EasyAnimate" in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/chaojie/ComfyUI-EasyAnimate
    

    then restart ComfyUI. The heavy part isn't the install, it's the downloads:

    # Motion module (4.1GB) → ComfyUI/models/checkpoints
    # PixArt base (11.4GB)  → ComfyUI/models/diffusers, then:
    tar -xvf PixArt-XL-2-512x512.tar
    

    Optional extras: a portrait checkpoint (2.3GB) and its LoRA (654MB), both into checkpoints. The pack's requirements.txt pulls in diffusers, transformers, xformers, decord, timm, omegaconf and friends - all normal, but they install into your one shared Python environment, so a version conflict with another pack is the most likely failure on first run.

    If something's wrong

    Start with the missing-model symptoms: an empty or placeholder-only pixart_path means the tar isn't extracted in models/diffusers. The missing keys spam is normal, but a motion module that fails to find any of its keys usually means you grabbed the wrong safetensors. And when you've loaded it and it still won't run, remember the sampler input is a decoy - the scheduler is DPM++ no matter what you pick, so if your results look off, change steps, not samplers.

    CategoryEasyAnimate

    Inputs (8)

    NameTypeDefaultDescription
    pixart_pathCOMBOPixArt-XL-2-512x5121 options: put_diffusers_models_here
    motion_ckptCOMBOeasyanimate_v1_mm.safetensors0 options:
    sampler_nameCOMBODPM++5 options: Euler, Euler A, DPM++, PNDM, DDIM
    deviceCOMBOcuda2 options: cuda, cpu
    transformer_ckptoptCOMBONone1 options: None
    lora_ckptoptCOMBONone1 options: None
    vae_ckptoptCOMBONone1 options: None
    lora_weightoptFLOAT0.550–1

    Outputs (1)

    NameTypeDescription
    EasyAnimateModelEasyAnimateModel