Nodes/⚗ AlchemicaSampler/⚗ Alchemica · Calibration [1.0, use Alchemica Calibration (measure your checkpoint)]
ComfyUI Node

⚗ Alchemica · Calibration [1.0, use Alchemica Calibration (measure your checkpoint)]

20 minutes of GPU time to teach the sampler how your Krea 2 actually thinks

By Nessuno76·Created 23 days ago·Updated 6 days ago· 3
⚗ Alchemica · Calibration [1.0, use Alchemica Calibration (measure your checkpoint)]
  • model
  • positive
  • latent_image
  • modello_riferimento
  • latent_riferimento
  • grafico
  • report
◄seed1001►
◄passi_densi40►
◄cfg1.00►
◄profilokrea2_turbo_nvfp4►
◄modalitaaccumula►
◄sonda_eta0.50►
◄measure_half_restrue►

If you only ever run one thing from this pack, make it this. Everything else here works without it - every −1 value falls back to a sensible default and the report tells you it did - but this is the node the pack's name is about. It measures your checkpoint and writes a profile that the calibrated scheduler and every auto value then read.

The premise: Krea 2 Turbo is a distilled model that ships at 8 steps and CFG 1, and nobody published the step schedule it wants. You can keep guessing from a forum thread, or you can ask the model.

What it measures

It walks a deliberately dense Euler trajectory - 40 steps by default, 60 for more precision, up to 120 - and at every sigma records the model's prediction D(x, σ). From that sequence it derives four things:

  • Step cost, ‖dD/dσ‖ / σ. Euler's local error goes as h²·cost, so the step distribution minimising total error with a fixed step count has density n(σ) ∝ √(cost). That's the calibrated scheduler: steps packed where the prediction is actually changing.
  • Composition lock-in - low-frequency similarity between the prediction at each sigma and the final image. This is where the hand-off sigma comes from (98.5% locked at ≈0.87, per the pack's measurements).
  • Birth of detail - high-frequency similarity and energy. This gives the detail window and the restart sigma.
  • Quantisation error, optionally. Connect a reference model (Krea 2 FP8 against your NVFP4, say) with modello_riferimento and it replays the exact same states through both and reports the relative error, average and peak, at which sigma.

That last one is the neatest feature on the node and the least discussed. It answers "is my 4-bit checkpoint costing me anything, and where?" with a number instead of a debate.

The inputs

model - the checkpoint to measure. positive - any conditioning; the pack's example workflow measures four different prompts and averages them, which is why profiles improve the more you run them. latent_image - at the resolution you really generate at, and that means the final one.

seed - 1001, fixed, so measurements are reproducible.

passi_densi - the measuring trajectory's length. 40 is enough; 60 is more precise. This is the field that sets the runtime.

cfg - as you will actually use the model. 1.0 for Turbo; 3.5 if you're calibrating Raw.

profilo - the file name the profile gets, written into the pack's profili/ directory (that's ComfyUI/custom_nodes/ComfyUI-AlchemicaSampler/profili/). Name it after the checkpoint. Worth knowing if you ever move or back up your install: profiles live there, not in models/, and they are not included with the pack.

modalita - accumula averages this measurement into the existing profile; re-running the same prompt updates its sample rather than adding a duplicate. sostituisci starts from scratch. Accumulate is the default and the right one.

The outputs

latent_riferimento - the final latents from the measuring run. Wire it to VAEDecode and you can see what it was looking at.

grafico - an IMAGE plotting the step density, composition, detail and high-frequency energy against sigma, with the 8-step and 12-step calibrated schedules marked over the top. Adjusting the passi_densi and watching whether the curve gets smoother is how you know you've measured enough.

report - a STRING, and the most useful output of the three. It includes the profile's sample count and the resolutions it was measured at, the checkpoint fingerprint, the resolved hand-off and restart sigmas, the detail window, sample schedules, and a diagnostics block with your GPU, compute capability, torch version and CUDA version, plus warnings. If NVFP4 feels slower than FP8, this report is the first thing to read.

Note this node is marked as a terminal output node - you queue it on its own, without a decode-and-save path being required.

Actually doing it

Open the pack's KREA2_TARATURA (3 MP) or KREA2_TARATURA_4MP example workflow from Workflow → Browse templates → ComfyUI-AlchemicaSampler. Pick your checkpoint in the loader, press Queue. Budget 15–20 minutes at 4 MP. Four prompts get measured and averaged; press R in the browser to refresh the menus afterwards, then set profilo to (auto) everywhere and every −1 fills itself in.

Where it gets weird

Exotic quantisations may only produce an "architecture" fingerprint. If the pack can't identify your checkpoint precisely, the report warns you, and the honest move is to choose the profile by hand rather than trusting (auto). This is the node's real limitation: a profile is only "yours" if the fingerprint matches.

The 3 MP and 4 MP profiles come out nearly identical (hand-off 0.87 versus 0.864), so one calibration covers both. (auto) picks the closest resolution profile among those for this checkpoint, which is why calibrating at 5 MP for a 4 MP workflow is a waste.

You can skip all of it. No profile, everything still runs on the analytic schedule, the report says so, and on plenty of checkpoints you'd struggle to see the difference. The calibration is where the pack's claims come from, not a tax you must pay.

Installing

It's part of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler

Then restart the ComfyUI server. No dependencies to install, but ComfyUI 0.36.0 or newer is required by the pack as a whole, and you need Krea 2 plus the Qwen3-VL encoder and Qwen-Image VAE already working - the calibration runs a real sampling loop, so if the loader is broken, this is where you find out.

Category⚗ AlchemicaMente/legacy (1.0)

Inputs (11)

NameTypeDefaultDescription
modelMODELThe model to calibrate (e.g. Krea 2 Turbo NVFP4)
positiveCONDITIONING—
latent_imageLATENTAt the resolution you really generate at (the FINAL one)
seedINT10010–18446744073709550000—
passi_densiINT4016–120Steps of the measuring trajectory. 40 is enough, 60 is more precise
cfgFLOAT1.000–10As you will use it (Turbo: 1.0)
profiloSTRINGkrea2_turbo_nvfp4File name inside profili/
modalitaCOMBOaccumulaaccumula (accumulate) = averages with the other prompts; re-running the same prompt UPDATES its sample instead of adding one. sostituisci (replace) = start from scratch
sonda_etaFLOAT0.500–1Probe intensity ONLY for measuring eta/detail-boost tolerance (eta_sicuro/detail_sicuro) - not the eta you will generate with
measure_half_resBOOLEANtrueAlso measures at HALF resolution (+~30% time): stage 1 of two-stage sampling then gets its own step spacing (calibration v2)
modello_riferimentooptMODELOptional: e.g. Krea 2 FP8, to measure the error introduced by NVFP4 quantization

Outputs (3)

NameTypeDescription
latent_riferimentoLATENT—
graficoIMAGE—
reportSTRING—