Una card di titolo generata che recita "FLUX 3 Image Klein vs FLUX 3 Image Klein Pup", con sottotitolo "uno genera l'immagine, l'altro scrive il prompt". Una card a sinistra recita "Klein: generatore da 5,6B, 5,6 GB FP8, INT8 da 8 GB", una card a destra recita "Pup: fine-tune di Qwen3.5 da 9B, 18,8 GB BF16, Apache 2.0", e un footer recita "Entrambi i valori secondo le model card di Hugging Face." Il logo OrcaRouter si trova in basso a destra.
Guides & Insights

FLUX 3 Image Klein vs FLUX 3 Image Klein Pup: un modello contro il proprio autore di prompt

Autore

Magnus Corvin

Data di pubblicazione

Ultimi modelli · 20Vedi tutti i modelli →
Benchmark: Artificial Analysis · aggiornato ogni giorno
Torna a tutti gli articoli

Il nome sul repository invita a un confronto che non esiste. FLUX 3 Image Klein e FLUX 3 Image Klein Pup sembrano due modelli di una famiglia, come ogni altra pagina "vs" di questo blog mette a confronto due generatori con punti di forza diversi. Non sono questo. FLUX 3 Image Klein è il modello di immagini da 5,6B rilasciato il 15 ottobre 2026. FLUX 3 Image Klein Pup — intitolato "Prompt Upsampler" sulla sua scheda modello — è un modello linguistico da 9B il cui unico compito è riscrivere il tuo prompt breve nella didascalia lunga e dettagliata che il modello di immagini è stato addestrato a ricevere.

La vera domanda, quindi, non è quale dei due sia migliore. È se il secondo sia opzionale. Black Forest Labs dice di no: la scheda del modello afferma chiaramente che Klein "non è pensato per funzionare senza un upsampler del prompt davanti" e che un prompt breve inviato così com'è produce un output generico. È proprio questa affermazione che vale la pena esaminare, perché accettarla cambia il tuo budget di memoria, la tua latenza, i tuoi obblighi di licenza e — in un caso specifico — la precisione delle tue modifiche.

Che cosa è in realtà ciascuno dei due

La separazione è più netta di quanto suggerisca la denominazione. Un modello ha la visione, l'altro no, e solo uno dei due tocca mai un pixel.

• Ruolo — Klein genera e modifica immagini; Pup produce testo e non renderizza mai nulla

• Parametri — 5,6B per il generatore, 9B per l'upsampler, quindi il modello ausiliario è quello più grande

• Discendenza — Klein è un modello di immagini della linea FLUX 3; Pup è un fine-tuning completo di Qwen/Qwen3.5-9B, a sua volta derivato da Qwen3.5-9B-Base

• Pesi su disco — 11,2 GB in BF16 e 5,6 GB in FP8 per Klein; 18,8 GB per i safetensors di Pup in BF16

• Licenza — FLUX Kommunity License per Klein, con la sua soglia di ricavi di $5M; Apache 2.0 per Pup

• Input: Klein accetta testo, immagini di riferimento e bounding box; Pup accetta la stessa richiesta più fino a 10 immagini di riferimento e restituisce un prompt

• Output — pixel contro testo inglese

Quell'ultima riga è quella che le persone trascurano. La lingua di output di Pup è sempre l'inglese, anche quando la richiesta in input è in un'altra lingua. Se la tua pipeline registra i prompt per la revisione, il prompt che vede il tuo revisore non è quello digitato dal tuo utente.

Il numero di 8 GB non sopravvive alla pipeline predefinita

L'affermazione hardware principale per Klein è che la build INT8 gira su una scheda RTX con appena 8 GB di VRAM. Tale affermazione riguarda il generatore e, di per sé, sembra reggere — il checkpoint quantizzato è realizzato per questo, e i tempi pubblicati insieme ad esso sono stati misurati da NVIDIA.

Ora aggiungi la pipeline predefinita. I pesi di Pup sono 18,8 GB in BF16 prima di qualsiasi overhead di runtime. Non puoi far stare 18,8 GB di pesi in 8 GB di VRAM. I due numeri descrivono due cose diverse, e il materiale di lancio li mette abbastanza vicini da far ragionevolmente concludere a un lettore che l'intera cosa giri su una vecchia scheda. Non è così, non nella configurazione che BFL dice essere quella prevista dal modello.

Ci sono tre modi onesti per uscirne, e comportano costi diversi:

• Quantizza l'upsampler — esistono build GGUF della community per Pup nelle varianti Q8_0, Q5_K_M, IQ4_XS e IQ3_S con un proiettore visivo separato, che riduce notevolmente l'helper a un certo costo in termini di qualità del prompt

• Esegui l'upsampler altrove — è un modello di testo, quindi non deve condividere una GPU con il generatore, solo un hop di rete

• Saltalo con --no-pup — gratuito, immediato e l'opzione che BFL sconsiglia

L'aritmetica della memoria è la cosa più utile da capire su questa combinazione. Spiega anche una categoria di lamentele: qualcuno segnala che Klein è lento o non ci sta, e in realtà sta dicendo che ha eseguito la pipeline documentata su hardware dimensionato per quella ridotta all'essenziale.

Cosa fa Pup a un prompt

Si espande. Una richiesta come «un uomo che passeggia con il suo cane, sole pomeridiano» diventa una didascalia di scena completa che copre soggetto, ambientazione, illuminazione, camera e composizione — la scheda del modello descrive l'output come una lunga didascalia di circa un paio di centinaia di parole con l'impostazione media. Il modello di immagini viene quindi condizionato da quella didascalia invece che dalla tua frase.

Questa è una capacità concreta, non un trucco. I modelli di immagine in stile diffusione sono sensibili alla specificità del prompt, e un prompt di cinque parole lascia quasi ogni decisione compositiva ai prior del modello. Un upsampler rende quelle decisioni esplicite e coerenti, ed è per questo che l'output della pipeline predefinita appare più intenzionale rispetto all'output dello stesso checkpoint alimentato con la frase grezza.

È anche una perdita di controllo, e la perdita è silenziosa. La tua frase non viene annotata — viene sostituita. Se l'upsampler decide che la luce pomeridiana è l'ora d'oro e il cane è un border collie, il generatore non ha modo di sapere che non intendevi questo. Per il lavoro esplorativo è una caratteristica. Per una shot list, è una variabile che non hai chiesto.

Quattro modalità, e perché la modalità conta più del prompt

Pup non è un unico modello con un unico comportamento. Seleziona un system prompt in base al compito, e ce ne sono quattro: text-to-image, image-to-image, text-to-image con bounding box e image-to-image con bounding box. La modalità sbagliata produce un prompt ben scritto per il compito sbagliato: un fallimento che sembra un problema di qualità del modello e non lo è.

Anche le impostazioni di campionamento variano in base alla modalità, e la differenza non è superficiale. La decodifica è greedy a temperatura zero, con un massimo di 3.584 nuovi token e il pensiero disabilitato. La penalità di presenza è 1,5 per testo-immagine e 0 per le modifiche. Quello zero è deliberato: una penalità di ripetizione incoraggia il modello a introdurre nuovo materiale, che è esattamente ciò che non si vuole quando il compito è riformulare fedelmente un'istruzione di modifica. Anche le immagini di riferimento vengono ridimensionate in modo diverso a seconda di quante se ne forniscono — circa 1 megapixel per una, 724² per due, 512² per tre o più — quindi un lavoro con dieci riferimenti si condiziona su immagini molto più piccole rispetto a un lavoro con un solo riferimento.

A generated two-card memory diagram titled 'The default pipeline does not fit in 8 GB'. The left card, headed 'FLUX 3 Image Klein', lists 'Parameters 5.6B', 'FP8 weights 5.6 GB', 'BF16 weights 11.2 GB' and 'INT8 build from 8 GB VRAM'. The right card, headed 'FLUX 3 Image Klein Pup', lists 'Parameters 9B', 'BF16 weights 18.8 GB' and 'Licence Apache 2.0'. A bar across the bottom reads 'Default pipeline: generator plus 18.8 GB of upsampler weights'. A footer reads 'Weights per the Hugging Face model cards; the 8 GB claim covers the INT8 generator alone.' The OrcaRouter logo sits bottom-right.

La licenza è divisa esattamente a metà

Questa è la parte a cui viene dedicata quasi nessuna attenzione e a cui probabilmente se ne dovrebbe. Le due metà della pipeline sono soggette a licenze diverse. Klein è FLUX Kommunity License: gratuita per uso commerciale sotto i 5 milioni di dollari di fatturato annuo, con licenza a pagamento al di sopra. Pup è Apache 2.0, senza alcuna condizione sul fatturato.

Quindi un'azienda sopra la soglia può usare liberamente il prompt upsampler e ha comunque bisogno di una licenza per usare il generatore che alimenta. E un'azienda sotto la soglia che vuole fare fine-tuning sul lato prompt ha molto più margine di una che vuole fare fine-tuning sul lato immagine. Se prevedi di distribuire, leggi le due licenze separatamente invece di trattare "lo stack Klein" come un'unica cosa. La metà permissiva è quella che è facile trascurare.

Cosa cambia effettivamente quando lo disattivi

Disattivare Pup è un singolo flag, e gli effetti sono asimmetrici tra le attività.

• Testo-immagine — la regressione più grave. I prompt brevi diventano generici, che è esattamente il problema di cui BFL avverte, e il divario aumenta quanto più breve è il prompt

• Multi-reference — è l'upsampler che trasforma "metti queste tre persone in una stanza" in una descrizione che tiene conto di tutti e tre i riferimenti; senza di esso, l'aderenza ai riferimenti diventa notevolmente più lasca

• {{1}}Layout con riquadro di delimitazione{{/1}} — la modalità esiste per convertire l'intento spaziale in una didascalia che lo preservi, quindi rimuoverla riporta l'onere sulla tua formulazione

• Modifica precisa — il caso meno definito, e quello in cui disattivarla può essere d'aiuto

Quell'ultimo punto è quello controintuitivo e deriva dallo stesso luogo della penalità di presenza zero. Un'istruzione di modifica è di solito ristretta: cambia questo oggetto, sposta questo elemento, rimuovi questa cosa. Il compito dell'upsampler è espandere, quindi espande sia la scena attorno alla tua istruzione sia l'istruzione stessa. Quando la modifica è davvero locale, quell'espansione circostante è rumore, nella migliore delle ipotesi. Quando contraddice qualcosa nell'inquadratura, è peggio del rumore.

La nostra esperienza diretta nell'uso di Klein su modifiche localizzate — cambiare un oggetto, spostare un elemento in una regione delimitata, mantenere intatto il resto dell'inquadratura — è che il modello è più convincente proprio in questa modalità ristretta. Il che rende la questione dell'upsampler più urgente anziché meno pressante: il compito in cui il generatore è più forte è anche quello in cui l'espansione dell'helper è meno gradita. Prova entrambe le impostazioni sui tuoi prompt di modifica prima di decidere. Questo è un caso in cui il consiglio generico del fornitore e il tuo carico di lavoro specifico possono legittimamente divergere.

A screenshot of the Hugging Face model card for black-forest-labs/flux-3-image-klein-pup, showing the title FLUX 3 Image Klein Prompt Upsampler, a description of a 9B vision-language model that expands a short image request into a detailed prompt for FLUX 3 Image, the statement that Klein is not meant to run without a prompt upsampler in front of it, the worked example turning 'A man walking with his dog, afternoon sun' into a 220-word caption, an Apache 2.0 licence, 9B parameters in BF16, and a model tree showing a fine-tune of Qwen3.5-9B.A screenshot of the Hugging Face model card for black-forest-labs/flux-3-image-klein, showing a gated-model notice asking the visitor to agree to share contact information, a sample image grid, a model size of 6B parameters in BF16, the tag 'License: flux-kommunity-license', 3,241 downloads in the last month, and model-tree counts of 1 adapter, 4 fine-tunes and 5 quantizations.

La decisione, in pratica

Se chiami l'API del fornitore invece di scaricare qualcosa, gran parte di questo è irrilevante. L'endpoint ospitato applica lato server il proprio prompt upsampling e il proprio ripristino dei pixel, quindi stai già ottenendo il comportamento con prompt espanso, che tu ci pensi o no. La scelta diventa concreta solo quando prendi i pesi.

Quando lo fai, la suddivisione è all'incirca questa. Mantieni Pup se i tuoi prompt sono brevi, il tuo lavoro è esplorativo o stai generando anziché modificando. Scartalo, oppure esegui una build quantizzata, se la tua scheda è piccola, le tue modifiche sono ristrette e letterali, oppure i tuoi prompt sono già abbastanza lunghi e specifici che l'espansione aggiunge soprattutto invenzione. Quantizzalo se vuoi entrambe le cose e puoi accettare una certa perdita di qualità dei prompt in cambio di far stare l'intera pipeline su un unico dispositivo.

Una nota pratica su come provarlo a basso costo: le due metà falliscono indipendentemente, e un livello di routing è il modo abituale per evitare di scommettere un percorso di produzione su un singolo endpoint. OrcaRouter gestisce un'unica API compatibile con OpenAI su oltre 200 modelli con 0% di ricarico — il prezzo di listino del provider passato invariato — e failover automatico tra provider, così un endpoint degradato non diventa un job fallito. Questo non ti aiuta con Klein stesso, che non è nel nostro catalogo di 210 modelli e non è qualcosa che serviamo. Per questa pipeline, i pesi e l'API del fornitore sono le route; l'argomento del routing conta per i modelli che ci metti intorno.

Cosa cambierebbe la risposta

Un'ablazione pubblicata. Nessuno ha rilasciato un confronto affiancato di Klein con e senza Pup sugli stessi prompt, valutato da qualcuno diverso dal laboratorio, e proprio quella singola tabella mancante è ciò che rende questa una questione di giudizio. Finché non esiste, la posizione difendibile è quella poco affascinante: l'upsampler fa parte del sistema così come è progettato, la dichiarazione sugli 8 GB non lo copre, e l'unico carico di lavoro in cui potresti ragionevolmente sovrascrivere l'impostazione predefinita è quello in cui questo modello è più forte.