Nodes/ComfyUI-DeepSeek-JanusPro/🧩Janus Image Generation
ComfyUI Node

🧩Janus Image Generation

Janus Generates Pixels Autoregressively (and Hands You Five)

By ZHO-ZHO-ZHO·Created 2 years ago·Updated 2 years ago· 106
🧩Janus Image Generation
  • model
  • processor
  • tokenizer
  • images
promptMaster shifu racoon wearing drip attire
seed12345
cfg_weight5.0
temperature1.00

The first time you run this node you'll get five images for the price of one, and exactly zero control over resolution. Both of those are features, sort of. Janus Image Generation is text-to-image from DeepSeek's Janus-Pro-7B, and it works nothing like the Stable Diffusion or Flux graphs you're used to. No KSampler. No steps. No scheduler. No negative prompt. Just a language model quietly predicting pixels.

Why it's weird (in a good way)

Janus-Pro is autoregressive, not diffusion. It's a language model that treats image generation as next-token prediction: instead of denoising noise, it predicts image tokens one at a time until it has 576 of them (24×24 patches at the model's native 384×384), then a VQ decoder turns those tokens into pixels. This is the same mechanism its sibling node uses to understand images - which is the whole point of the model. One set of weights, two jobs, both sequence prediction.

So when you wire the loader's model, processor, and tokenizer in here, you're getting a genuinely different way of making images, not a reskinned checkpoint. If you've only ever used diffusion, this node is a small education in how the "other camp" does it.

The inputs that matter

  • prompt - a multiline text box, default Master shifu racoon wearing drip attire. Janus is decent at following detailed prompts; the community's finding on the 1B version (great adherence) holds up in spirit here.
  • cfg_weight - default 5, range 1–10. This is a real CFG implemented by hand in the node's loop: it generates a condition and an uncond pass per candidate and amplifies the difference. It's the one knob you'll actually turn; higher = more prompt-literal and more cooked, lower = freer.
  • temperature - default 1, range 0–1. Higher = more variety, lower = more deterministic.
  • seed - default 12345. Note the node truncates it to 32-bit internally, so huge seeds collapse to the same result as their small equivalent.

The output

images (IMAGE) - a batch of five 768×768 images, always. That's the parallel_size the node runs: five candidate prompts in parallel, each producing an image. It's actually fast for exactly this reason - one run covers the whole batch. Wire this into any PreviewImage or SaveImage node and pick your favorite.

Where people get burned

  • You get five images whether you asked for five or not. It's not a bug, but it surprises everyone the first time.
  • Resolution is fixed. The model's native size is 384×384, and this node upscales to 768 internally. Don't fight it - you can't, there's no width/height input, and that's the model's limit, not the node's laziness.
  • Keep temperature above 0. The generation loop divides by temperature with no guard, so a literal 0 produces NaN garbage. Treat the slider floor as "don't."
  • Quality expectations. The honest verdict from people who ran it: prompt adherence is genuinely good, aesthetics are "average to good." It's soft, a bit blobby, not a Flux or SDXL replacement. Don't reach for this to make portfolio pieces - reach for it because one model doing everything is neat, or because you want to see autoregressive generation in the flesh.

If you're on a 12 GB card, note the 7B loader wants ~14 GB of VRAM. The pack's own understanding node is arguably the more useful half of this model - but this is the fun half.

Category🧩Janus

Inputs (7)

NameTypeDefaultDescription
modelJANUS_MODEL
processorPROCESSOR
tokenizerTOKENIZER
promptSTRINGMaster shifu racoon wearing drip attire
seedINT123450–18446744073709550000
cfg_weightFLOAT5.01–10
temperatureFLOAT1.000–1

Outputs (1)

NameTypeDescription
imagesIMAGE