INT8 barely degrades images, and the AB-2 sampler beats Euler in 12 of 12 tests
The conventional wisdom is that complex samplers accumulate error on models compressed to INT8, such as Flux. The authors of Flow-WLS tested this on four models. INT8 noise is barely visible, and plain AB-2 beat Euler in all 12 combinations of step count and CFG on Anima. Their own Flow-WLS lost to Euler at low step counts. In practice: at CFG 3+, use flow_ab2. On distilled models at CFG 1, use flow_ab3.
AI-processed from Habr AI; edited by Hamidun News
If you run Flux, Qwen-Image and similar models on a home GPU, you almost certainly use quantized weights: the numbers in the model are rounded to 8 bits (INT8) so it fits in memory. A piece of advice circulates alongside this: don't use "fancy" samplers on such a model, meaning the algorithms that turn noise into an image step by step, because they supposedly accumulate rounding error. The author of the Flow-WLS project tested this with measurements.
It turned out that INT8 noise is barely visible in the image, and the simple AB-2 sampler beat the baseline Euler in all 12 combinations tested (3 CFG values × 4 step counts) on the Anima model. The practical upshot: if you stick with Euler only out of fear of quantization, you can drop that fear and switch samplers with a single entry in the ComfyUI dropdown. One conclusion is awkward for the author himself: his own Flow-WLS idea from an earlier work lost to Euler at low step counts.
A note on terms. CFG is the strength with which the model follows the prompt text: the higher it is, the more any error gets amplified. Euler is the simplest sampler: it takes a step based only on the current prediction. AB-2, AB-3 and AB-4 are Adams–Bashforth methods: they take into account the previous 2, 3 or 4 steps, as if you estimated speed of motion from several frames rather than one. LPIPS is a metric that shows how different two images look to a neural network's "vision"; the lower it is, the closer to the reference.
What was tested and how
The authors used four flow models: Anima (in bf16 and with simulated FP8, INT8, INT4 and NVFP4), Flux3-Klein INT8, Krea 2 INT8 (with ConvRot) and Moss-Image INT8. They used 4 prompts, 2–3 seeds, 8 to 24 steps and CFG from 1 to 5. The reference was the same model run at a very high step count (96 for the Anima portrait).
For Flux3 they compared two modes of the same model: with real INT8 kernels (Q) and with the same weights unpacked to bf16 without activation quantization (D). The difference between them shows the pure kernel error. Before the experiments, the authors wrote 15 hypotheses (H1–H15) and their confirmation criteria into the README, so that conclusions would not be fitted to the results. Some hypotheses were not confirmed, and the authors left that in the text.
Quantization is harmless, and the noise is white
The error of the real INT8 kernels is 1.3% of the velocity norm at CFG 1 and 5.7% at CFG 4. The 4.36-fold increase is explainable: the error is multiplied by guidance, like any difference between predictions. In the final latent, this amounts to a relative error of no more than 0.02. The LPIPS distance between the Q and D results is 0.014 at CFG 1 and 0.029 at CFG 4; the eye cannot tell them apart.
The noise is "white": the correlation between neighboring steps is −0.001, meaning the error is fresh at each step and does not accumulate in one direction. This is exactly the kind of noise that high-order methods amplify. Calculated relative to Euler, AB-2 increases it 1.06 times, AB-3 1.21 times and AB-4 1.97 times. But AB-4's own excess error (0.5–0.8) is tens of times larger than the effect of quantization (up to 0.02), so the culprit is not INT8 but the choice of method.
What to choose in practice
On Anima, the authors ran CFG 1, 3 and 5 at 8, 12, 16 and 24 steps, nine methods in total:
- AB-2 beats Euler in all 12 cells, by 0.03–0.12 in latent error, and the confidence intervals exclude zero;
- DPM++ 2M overtakes Euler at high CFG on 16–24 steps;
- at CFG 1 (the distilled Flux3-Klein and Krea 2), AB-3 and dynamic selection do best;
- AB-4 and long Flow-WLS windows were never the best choice at 12 steps or fewer.
The images confirm this. On Anima at 8 steps, Euler leaves almost pure black noise (LPIPS 0.89), while DPM++ 2M (0.35) and AB-2 (0.42) produce a finished image. At 16 steps, Euler scores 0.34 versus 0.20 for DPM++ 2M, 0.21 for AB-3 and 0.23 for AB-2. On Krea 2 at 12 steps, Euler gives "plastic" skin (0.34), while AB-3 (0.21) brings back pores and freckles. On Flux3-Klein at 12 steps, Euler, DPM++ 2M, AB-2 and AB-3 look the same to the eye (0.15), so there is no reason to change samplers there.
The reason lies in the nature of the network's output: a smooth trend plus noise that is uncorrelated between steps. Its magnitude is about 1% of the norm at CFG 1, about 4% at CFG 3 and 6–7% at CFG 5. Rules with large weights amplify this noise and win only while it stays small. An attempt to fit a history filter to the data gave a gain of no more than 3.4% over the best existing rule, so a new Flow-WLS-class sampler is not needed. A side result: a single-step consistency metric predicts the final ranking poorly, while one accumulated along the trajectory predicts it reasonably well (Spearman correlation 0.77 on average).
Installation: clone the YakovSava/flow-wls-research repository into ComfyUI/custom_nodes/ and restart ComfyUI. flow_ab2, flow_ab3 and flow_ab4 will appear in the sampler_name list. There is also a Flow Easy Sampler node with a choice of two options. AB-k needs no extra model calls, so it costs the same as Euler. Recommendations: for a regular model at CFG 3 and above, use flow_ab2, and also dpmpp_2m at 16+ steps; for a distilled model at CFG 1, use flow_ab3; under 12 steps, avoid flow_ab4 and long Flow-WLS windows.
Limitations
LPIPS measures distance to an image produced with many steps, not aesthetic quality; there is no blind test with human raters. The sample is small: 4 prompts, 4 models, one seed per image, with no best-of selection. For Moss-Image there is no converged reference, so only large effects are reliable; for Flux3 at CFG 4, the reference converges at 20–34%.
For Moss and Krea 2, only the Q mode was measured. The rounding error of the weights themselves, relative to the unknown bf16 original, was not measured. SDXL-like models were not tested.
AB-2 and DPM++ 2M were added to some of the experiments after the first results, which is noted in the README. AB-2 is not a new method: the value of the work lies in the measurements and in the negative result for the authors' own idea.
- Nov 6, 2026Best AI Agent Solves Only 60% of Cloud DevOps Tasks, and 80% of Failures Come from Faulty Reasoning
- Nov 6, 2026AI Agent Reply Costs Vary 100x: From 0.94 ₽ to 121.57 ₽ per Message
- Nov 6, 2026One bot for Telegram and MAX: ads brought in 416 people at 17 ₽ each
- Nov 6, 2026Tencent releases Hy4: AI that operates a PC, but fabricates answers to 89% of unfamiliar questions without search
Key Questions Answered
What was tested and how?
The authors used four flow models: Anima (in bf16 and with simulated FP8, INT8, INT4 and NVFP4), Flux3-Klein INT8, Krea 2 INT8 (with ConvRot) and Moss-Image INT8. They used 4 prompts, 2–3 seeds, 8 to 24 steps and CFG from 1 to 5. The reference was the same model run at a very high step count (96 for the Anima portrait). For Flux3 they compared two modes of the same model: with real INT8 kernels (Q) and with the same weights unpacked to bf16 without activation quantization (D).
What are the key details on Quantization is harmless, and the noise is white?
The error of the real INT8 kernels is 1.3% of the velocity norm at CFG 1 and 5.7% at CFG 4. The 4.36-fold increase is explainable: the error is multiplied by guidance, like any difference between predictions. In the final latent, this amounts to a relative error of no more than 0.02. The LPIPS distance between the Q and D results is 0.014 at CFG 1 and 0.029 at CFG 4; the eye cannot tell them apart.
What to choose in practice?
On Anima, the authors ran CFG 1, 3 and 5 at 8, 12, 16 and 24 steps, nine methods in total: AB-2 beats Euler in all 12 cells, by 0.03–0.12 in latent error, and the confidence intervals exclude zero; DPM++ 2M overtakes Euler at high CFG on 16–24 steps; at CFG 1 (the distilled Flux3-Klein and Krea 2), AB-3 and dynamic selection do best; AB-4 and long Flow-WLS windows were never the best choice at 12 steps or fewer. The images confirm this.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.