Ovis-U1 Text to Image
A whole checkpoint-free image generator living inside a VLM
- model
- IMAGE
Type a sentence, get a 1024×1024 image - and there's no KSampler, no checkpoint loader, no VAE node anywhere in the chain. That's the whole trick of Ovis-U1: it's one 3B model that both understands and generates images, and this node is the generation half. If you've already got the model loaded by the Ovis-U1 Model Loader, this node is just a prompt box, a few sliders, and an IMAGE output that plugs straight into a Save Image or Preview Image node.
Before you get excited: this is not a Flux competitor, and nobody should expect it to be. What it is, is a freebie - a small Apache-2.0 model that does a perfectly respectable first-pass render on a 12 GB card, no extra weights to juggle. Think "ideation in the same workflow that's doing your captioning," not "replace your flagship generator."
How it works
The important thing to understand is that you're not feeding a CLIP text encoder. The node wraps the model's own classifier-free-guidance pipeline, and it's a two-pass dance. It builds an unconditional condition first - a blank white image plus the literal prompt "<image>\nGenerate an image." - and asks the model for its condition there (no_both_cond). Then it builds the conditional pass with your actual prompt, which it wraps internally as:
<image>
Describe the image by detailing the color, shape, size, texture, quantity, text, and spatial relationships of the objects: {your prompt}
Then it calls generate_img with both conditions and lets the model's guidance machinery do its thing. The takeaway for you: write plain natural language, not tag soup. The model is a language model under the hood and rewards describing what you actually want.
The inputs that matter
- prompt - multiline, default
a cute cat sitting on a windowsill. Natural language, as above. - width / height - 64 to 2048 in steps of 64, default 1024. The node snaps them to multiples of 32, so don't obsess over exact numbers.
- steps - default 50, and it's a good default. More isn't free here; the model generates image tokens, so sampling is the expensive part.
- txt_cfg - default 5.0. This is your guidance scale, and it behaves like you expect: too low and the image drifts from the prompt, too high and it gets overcooked. 5 is a sensible starting point.
- seed -
-1means random. Set it if you want reproducible runs.
The single output is IMAGE, a normal ComfyUI image tensor, so everything downstream - Save Image, Preview Image, any post-processing node - just works.
Installing it
This is one of four nodes in the ComfyUI-Ovis-U1 pack, so install is the pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/neverbiasu/ComfyUI-Ovis-U1.git
cd ComfyUI-Ovis-U1
pip install -r requirements.txt
or find "Ovis-U1" in ComfyUI Manager. Then wire Model Loader → Text to Image → Save Image. The first run downloads ~6 GB of weights into models/ovis/, so don't panic at the wait. Full detail on the loader's device/dtype options lives in the Model Loader article - for generation, the short version is: bfloat16 on any modern card, float16 if your GPU chokes on bf16.
Common issues & honest expectations
- Blurry small text. Ovis-U1 renders through an SDXL-era VAE, and fine text is where that shows up. If you need legible typography, generate elsewhere.
- Identity drift. Same story as the editing node: the model is strong on scene-level changes and weaker on keeping exact details stable across generations. Great for concept exploration, not for character-consistent renders.
- It's slow-ish for its size. 3B tokens are still generated one autoregressive step at a time, so 50 steps at 1024² isn't instant. Lower the resolution or steps for quick iterations.
The community consensus from the model's launch was basically "impressed it works at this size, and it's not going to beat a dedicated diffusion model for quality." That's a fair read. Use it as the quick-and-dirty generator that shares a single model with your captioning and editing - that's where it genuinely shines.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | OVIS_MODEL | — | |
| prompt | STRING | a cute cat sitting on a windowsill | — |
| width | INT | 102464–2048 | — |
| height | INT | 102464–2048 | — |
| steps | INT | 501–200 | — |
| txt_cfg | FLOAT | 5.00–20 | — |
| seed | INT | -1-1–2147483647 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |