Nodes/ComfyUI-OpenDiTWrapper/(Down)Load OpenDiT T5 Model
ComfyUI Node

(Down)Load OpenDiT T5 Model

OpenSora's text brain is bigger than its diffusion model

By kijai·Created 2 years ago·Updated 2 years ago· 43
(Down)Load OpenDiT T5 Model
    • opendit_t5_encoder
    model
    precisionbf16

    Here's a fact that surprises most people the first time they piece a video workflow together: OpenSora v3 doesn't use CLIP, and it doesn't use a small text encoder like the ones in SDXL. It conditions on T5-XXL - a 4.7-billion-parameter encoder, bigger than the 2.8B diffusion model it feeds. This node loads that encoder. If you want to know why OpenSora's prompt following beats most image models, this is most of the answer.

    What it loads and why city96's copy

    The node downloads city96/t5-v1_1-xxl-encoder-bf16 on first run into ComfyUI/models/t5. If that repo name looks familiar, it's city96 - the person known across the community for GGUF quantization of text encoders. Here the checkpoint is the bf16-converted T5-XXL encoder, already in the half precision OpenSora expects, so you're not juggling a 20GB fp32 download and hoping the conversion works.

    The mechanism underneath is the same T5Encoder OpenSora ships: your prompt gets tokenized, embedded through 24 transformer layers (4096-wide hidden state), and condensed into the caption embedding the STDiT3 backbone consumes. In this wrapper, the encode happens during the conditioning step - this node's only job is to have the encoder loaded and ready when OpenDiTConditioning asks for it.

    Inputs and output

    • model - city96/t5-v1_1-xxl-encoder-bf16, the only option.
    • precision - bf16 (default), fp16, fp32. T5-XXL in bf16 is roughly 9.5GB of weights - you'll feel that on the memory front, which is why bf16 and offloading matter so much here.

    The output opendit_t5_encoder (type OPENDITT5) is the feed for OpenDiTConditioning, and that's its entire life. It does not pass through to the sampler directly; the conditioning node consumes it and hands the sampler an already-encoded opendit_cond.

    Installing

    Same as every other node in this pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/kijai/ComfyUI-OpenDiTWrapper
    pip install -r requirements.txt
    pip install xformers --no-deps
    

    or search "ComfyUI-OpenDiTWrapper" in ComfyUI Manager. On Windows portable, run pip through python_embeded\python.exe. Restart, then let the first run download the encoder.

    Common issues

    The T5 download is the heaviest single dependency in the pack - a multi-gigabyte pull into ComfyUI/models/t5 that makes your first queue run look hung. Let it finish; the terminal will print "Downloading OpenSora model to: ..." while it works.

    The other classic trap is thinking a smaller precision saves you much. fp16 and bf16 are basically the same memory footprint here, and fp32 will hurt. If you're close to the VRAM edge, this encoder is the first thing to consider offloading - the conditioning node already shuttles it back to RAM after encoding unless you tell it to keep the model loaded, so leave keep_model_loaded off in most workflows and you're fine.

    CategoryOpenDitWrapper

    Inputs (2)

    NameTypeDefaultDescription
    modelCOMBO1 options: city96/t5-v1_1-xxl-encoder-bf16
    precisionCOMBObf163 options: fp16, bf16, fp32

    Outputs (1)

    NameTypeDescription
    opendit_t5_encoderOPENDITT5