Nodes/ComfyUI-I2VGEN-XL/Modelscope Pipeline Loader
ComfyUI Node

Modelscope Pipeline Loader

The Loader That Doesn't Actually Generate Anything

By chaojie·Created 3 years ago·Updated 2 years ago· 28
Modelscope Pipeline Loader
    • pipe
    taskimage-to-video
    modeldamo/i2vgen-xl
    model_revisionv1.1.3
    devicecuda:0

    Let's get the misleading part out of the way first: this node doesn't generate a thing. It's the front half of a two-node pack that runs Alibaba's old image-to-video model I2VGen-XL, and its only job is to construct the pipeline object the other node actually runs. Think of it as the "Load Model" step for a video model that predates everything you've probably seen people use for video in ComfyUI.

    Why this model, though? I2VGen-XL is Alibaba's image-to-video model from December 2023 - a two-stage, Stable-Diffusion-based cascade that animates a still image into a short clip. It shipped through ModelScope, Alibaba's model hub (their answer to Hugging Face), which means no API key, no account, no huggingface-cli login: pipeline() just downloads the weights into ~/.cache/modelscope/hub on first use and runs locally. By 2026 it's genuinely old - Alibaba's own Wan 2.1/2.2 blew past it in quality, and that's what the community actually runs. What this pack has going for it is that i2vgen-xl is small next to Wan's 14B transformer, so it's one of the lightest self-contained image-to-video paths you can wire up on a modest GPU. It's a curiosity with a real niche, not the current standard.

    How it works

    The node is a thin wrapper around one ModelScope call:

    pipe = pipeline(task=task, model=model, model_revision=model_revision, device=device)
    

    That pipe object gets passed out as a ModelscopePipeline and into I2VGEN-XL Simple, which is the node that feeds it an image and gets back a video. You will never touch the pipeline's internals.

    All four inputs are strings, and here's the honest answer: you can leave every one at its default. That's the whole point of a loader. Still, the two worth knowing:

    • device - cuda:0 by default. If you have two GPUs, this is how you pick one (cuda:1). Putting cpu here "works" the same way walking to the next town works. Don't.
    • model_revision - v1.1.3, which pins the exact checkpoint version. You basically never need to touch it unless a cache is corrupted and you want a clean download.

    The other two - task (image-to-video) and model (damo/i2vgen-xl) - look temptingly generic, and technically they are: ModelScope pipelines cover everything from text-to-speech to object detection. But here's the trap: the sibling node in this pack hardcodes i2vgen-xl's calling convention (pipe(image_path, caption=text) and reads OutputKeys.OUTPUT_VIDEO). Point the loader at another model and the Simple node will break in ways that are annoying to debug. The name says "generic loader"; the pack says "I2VGEN-XL only."

    The single output, pipe (type ModelscopePipeline), wires straight into I2VGEN-XL Simple. Nothing else.

    Installing it

    Via ComfyUI Manager, search ComfyUI-I2VGEN-XL (or "I2VGEN"). Or the manual way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/chaojie/ComfyUI-I2VGEN-XL
    pip install -r requirements.txt
    

    Then restart ComfyUI. Two things to brace for. First, the requirements.txt is a wall of heavy packages - transformers, xformers, fairscale, open-clip-torch, torchsde, pytorch-lightning and friends. That's a real dependency footprint, the kind that can collide with other packs sharing your Python environment. Second, the node code will auto-pip install "modelscope" --upgrade if it's missing at import time, which means your first ComfyUI launch after installing can silently kick off a surprise install inside the app. Let it finish.

    The model itself downloads on the first run into ~/.cache/modelscope/hub/damo/i2vgen-xl/ - a multi-gigabyte download. It's not hung; it's downloading.

    Known issues

    The README documents two fixes you'll likely need, both because i2vgen-xl's ModelScope distribution is brittle:

    1. ValueError: attempted relative import beyond top-level package - delete all content from the two cached files ~/.cache/modelscope/hub/damo/i2vgen-xl/tools/__init__.py and tools/modules/__init__.py.
    2. CUDA out of memory - the pipeline loads in fp32, which is wasteful. Edit ~/.cache/modelscope/hub/damo/i2vgen-xl/ms_wrapper.py and change self.model.to(gpu) to self.model.half().to(gpu).

    If you're here in 2026, keep expectations calibrated: this is a 2023 model that was overtaken by its own lab's next generation. It's worth installing for the curiosity, the tiny VRAM footprint, or a quick single-image-to-video demo - not for competing with Wan. For that, run Wan.

    CategoryModelscope

    Inputs (4)

    NameTypeDefaultDescription
    taskSTRINGimage-to-video
    modelSTRINGdamo/i2vgen-xl
    model_revisionSTRINGv1.1.3
    deviceSTRINGcuda:0

    Outputs (1)

    NameTypeDescription
    pipeModelscopePipeline