Nodes/ComfyUI-RH-Bernini-Full/Bernini Full Text to Image
ComfyUI Node

Bernini Full Text to Image

The whole Bernini pipeline in one node — MLLM planner and all

By RH-RunningHub·Created 3 months ago·Updated 3 months ago· 7
Bernini Full Text to Image
    • image
    promptA clean studio product image of a red ceramic teapot on a white table, soft daylight
    negative_promptlow quality, blurry, distorted, text, watermark
    width512
    height512
    steps4
    seed1234
    quality_presetstandard
    accelerationwan2.2_lightx2v_4step
    memory_modekeep_loaded_batch

    Most Bernini nodes in the wild are running Bernini-R - the renderer-only model that Kijai's integration targets, and the thing everyone actually runs. This node is not that. RHBerniniFullTextToImage drives the full Bernini pipeline: the 7B MLLM semantic planner, the Qwen2.5-VL vision encoder, T5 text encoding, and the 14B diffusion transformer, all from one node. It's a text-to-image node that carries the entire model stack under the hood.

    Why would you want that? Two reasons. First, it's the honest version of "test the model before you go editing": ByteDance's own README tells you to start with text-to-image when checking your environment, and this is that check. Second, the planner is the half of the paper that barely ever reached a working local path - the community consensus is that nobody got anything out of it that Bernini-R didn't already give them, so running it yourself is the only way to form your own opinion. It costs you: this is the heaviest thing you'll load, and the first cold load of the qint8 model isn't something a bigger GPU skips.

    The pack is by RunningHub (the cloud GPU platform, RH-RunningHub/ComfyUI-RH-Bernini-Full), and it does real local inference - no API, no key, no RunningHub account needed. You just need the model on disk and a serious chunk of VRAM.

    What you actually set

    The node is deliberately bare-bones. All the scary internals (omega scales, guidance modes, planning steps) are hard-coded defaults; the widgets that matter:

    • prompt - a plain instruction, not a tag soup. Bernini prompts like an edit request even for pure generation, so "a clean studio product image of a red ceramic teapot on a white table, soft daylight" works better than teapot, studio, product.
    • steps - defaults to 4, which only makes sense with LightX2V acceleration active (see the gotcha below). The example workflows in the repo use 50 steps with acceleration off.
    • width / height - 64–2048, step 16. Bigger is a straight VRAM trade; 512² is a sensible floor to confirm the pipeline works.
    • quality_preset - standard (default) or quality. Quality just gives the planner more time (planning step 25 → 35), not more diffusion steps.
    • seed - clamped to a valid uint32 for you, so any integer works.
    • acceleration and memory_mode - shared with every node in the pack, described below.

    It outputs a single standard IMAGE socket, so wire it straight into SaveImage (or anything that takes an image).

    Installing the pack

    This install is the same for all six nodes in the pack, and it's heavier than a typical custom node:

    cd ComfyUI/custom_nodes
    git clone https://github.com/RH-RunningHub/ComfyUI-RH-Bernini-Full.git
    cd ComfyUI-RH-Bernini-Full
    pip install -r requirements.txt
    pip install --no-deps git+https://github.com/ByteDance-Seed/[email protected]
    

    The --no-deps on VeOmni matters - it's a hard dependency (the MLLM and parallel code import it), but installing it with deps can replace your torch/CUDA and break your whole ComfyUI. Then grab the model:

    cd ComfyUI/models
    modelscope download --model Gluttony10/Bernini-Diffusers-qint8 --local_dir diffusers/Bernini-Diffusers-qint8
    

    It must sit at ComfyUI/models/diffusers/Bernini-Diffusers-qint8 with the bernini/, mllm/, t5_text_encoder/, t5_tokenizer/, and vae/ subfolders intact. The node validates the folder's config.json (must say model_type: "bernini") and will refuse a Bernini-R path outright. ComfyUI Manager also finds it if you search the pack title.

    Where people get burned

    • The acceleration setting silently no-ops. If wan2.2_lightx2v_4step is selected but the Seko V2.0 LoRA pair isn't in ComfyUI/models/loras, the node just runs without LoRAs and prints a warning. Your 4-step default then produces mush. Either download Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0/high_noise_model.safetensors + low_noise_model.safetensors, or set acceleration to none and raise steps.
    • VRAM. The qint8 package is quantized with optimum-quanto, so it fits where the fp16 full model won't - but "fits" is doing a lot of work. memory_mode: low_vram_unload frees VAE/planner/T5/transformer stages after each run and clears CUDA cache, which helps you run more things in sequence; it does nothing for the first load.

    For a quick sanity check before committing to video, this is the node to run - it's the cheapest thing the pack does, and if the pipeline loads here, your install is correct.

    CategoryRunningHub/Bernini

    Inputs (9)

    NameTypeDefaultDescription
    promptSTRINGA clean studio product image of a red ceramic teapot on a white table, soft daylightText prompt or edit instruction.
    negative_promptSTRINGlow quality, blurry, distorted, text, watermarkNegative prompt.
    widthINT51264–2048Output width in pixels. Larger values increase VRAM use and runtime.
    heightINT51264–2048Output height in pixels. Larger values increase VRAM use and runtime.
    stepsINT41–100Diffusion steps.
    seedINT12340–4294967295Random seed. Values are clamped to NumPy's valid 0 to 2**32-1 range before inference.
    quality_presetCOMBOstandardstandard balances speed and quality; quality spends more planning time for better output.
    accelerationCOMBOwan2.2_lightx2v_4stepAuto-load the Wan2.2 T2V LightX2V 4-step LoRA pair from ComfyUI/models/loras when available.
    memory_modeCOMBOkeep_loaded_batchkeep_loaded_batch keeps the Bernini pipeline cached for faster consecutive jobs; low_vram_unload frees memory after each run.

    Outputs (1)

    NameTypeDescription
    imageIMAGE