Nodes/Emu35-Comfyui-Nodes/Emu 3.5 Loader V2
ComfyUI Node

Emu 3.5 Loader V2

The loader you actually want, with a Blackwell fix built in

By EricRollei·Created 9 months ago·Updated 9 months ago· 5
Emu 3.5 Loader V2
    • model
    • tokenizer
    • vq_model
    • device_info
    model_name
    vq_model_nameNo folders found in models/emu35
    precisionauto
    devicecuda:0
    vq_devicesame

    Emu 3.5 Loader V2 is the loader the pack wants you to use. Everything from the original Loader is here - the folder dropdowns, the precision selection, the same three outputs - plus the two things that actually make it workable on real hardware: control over where things load, and an attention implementation that doesn't produce garbage on Blackwell GPUs.

    The Blackwell thing is worth stopping on. SDPA attention on NVIDIA's sm_120 architecture (RTX 50-series, with CUDA 12.8) has a known failure mode with Emu 3.5: noise, garbage output, silent corruption. V2 simply hardcodes attn_implementation="eager" on load, which is the recommended setting for Blackwell and works fine on Ampere and Ada too. If you've been getting nonsense images from the V1 path on a 50-series card, this is why the V2 loader fixes it.

    On the memory side, device gives you cuda:0, cuda:1, or auto. auto uses accelerate's device map to split the model across multiple GPUs - which is how you get the 65B base model running across two cards. The separate vq_device lets you park the vision tokenizer on a different device entirely, including cpu.

    The inputs that matter

    • model_name / vq_model_name - folder dropdowns from ComfyUI/models/emu35/. "No folders found in models/emu35" means the weights aren't downloaded yet.
    • precision - auto, bf16, fp16, fp32, or nf4 (quantize). auto reads config.json and handles pre-quantized NF4 builds correctly.
    • device - cuda:0, cuda:1, or auto (multi-GPU split). Default cuda:0.
    • vq_device - same, cuda:0, cuda:1, or cpu. The cpu option is the known 24GB-VRAM trick: the vision tokenizer only runs at encode/decode time, so leaving it on CPU frees the card for the 34B main model.

    Outputs

    • model (EMU_MODEL), tokenizer (EMU_TOKENIZER), vq_model (EMU_VQ) - wire all three into your sampler, same as V1.
    • device_info (EMU_DEVICE_INFO) - a new V2 port carrying where everything actually landed; useful for debugging multi-GPU placement.

    Install

    cd ComfyUI/custom_nodes
    git clone --recursive https://github.com/EricRollei/Emu35-Comfyui-Nodes.git emu35
    cd emu35
    pip install -r requirements.txt
    

    Weights in models/emu35/: BAAI/Emu3.5-Image (34B, BF16) + BAAI/Emu3.5-VisionTokenizer, or wikeeyang/Emu35-Image-NF4 for 24GB cards. The base 65B model (BAAI/Emu3.5) is what story and VQA nodes need.

    Real-world caveats

    Loading is only half the fight. On a single 24GB card people still hit OOM ~30% through inference with NF4 - the fixes that actually worked were ComfyUI's --lowvram flag with --reserved-vram tuned up, plus V2's vq_device=cpu. And mind the expectation on speed: this is autoregressive token prediction, not diffusion. A 1024x1024 image is roughly 4,000 tokens, and at the ~5 tok/s a 96GB card manages, that's over ten minutes a pop. V2 loads the model efficiently; it can't make the model fast.

    CategoryEmu3.5

    Inputs (5)

    NameTypeDefaultDescription
    model_nameCOMBO1 options: No folders found in models/emu35
    vq_model_nameCOMBONo folders found in models/emu351 options: No folders found in models/emu35
    precisionCOMBOauto5 options: auto, bf16, fp16, fp32, nf4 (quantize)
    deviceCOMBOcuda:03 options: cuda:0, cuda:1, auto
    vq_deviceoptCOMBOsame4 options: same, cuda:0, cuda:1, cpu

    Outputs (4)

    NameTypeDescription
    modelEMU_MODEL
    tokenizerEMU_TOKENIZER
    vq_modelEMU_VQ
    device_infoEMU_DEVICE_INFO