Das Bildgenerierungsmodell FLUX ist schnell und Open Source
(replicate.com)- Die Ausführungsgeschwindigkeit von FLUX wurde bei Replicate deutlich erhöht, und sogar der Optimierungscode wurde veröffentlicht, sodass sich die Implementierung prüfen und individuell erweitern lässt
- Gemessen Ende-zu-Ende erreicht FLUX.1 [schnell] nun bis zu 0,29 Sekunden bei 512x512 und 4 steps sowie 0,72 Sekunden bei 1024x1024 und 4 steps
- Die Geschwindigkeitssteigerung ist das Ergebnis einer Kombination aus Optimierungen auf Basis von
flux-fp8-api,torch.compile, den schnellen CuDNN-Attention-Kernels in Nightly-Torch und einer neuen synchronen HTTP-API - Die Quantisierung von
flux-fp8-apiverändert die Ausgabe leicht, die Auswirkungen auf die Qualität waren jedoch gering; bei Bedarf lässt sie sich mitgo_fast=falsedeaktivieren - Replicate veröffentlicht die FLUX-Verbesserungen und arbeitet gemeinsam mit der AI Compiler Study Group und Forschenden an schnellem Open-Source-FLUX
FLUX-Ausführungsgeschwindigkeit und öffentliche Demo
- Bei Replicate laufen FLUX-Modelle jetzt schneller, und die Optimierungsimplementierung wurde als Open Source veröffentlicht
- Die mit dem Python-Client in den westlichen USA gemessenen Ende-zu-Ende-Geschwindigkeiten sind wie folgt
- FLUX.1 [schnell], 512x512, 4 steps: 0,29 Sekunden, P90 0,49 Sekunden
- FLUX.1 [schnell], 1024x1024, 4 steps: 0,72 Sekunden, P90 0,95 Sekunden
- FLUX.1 [dev], 1024x1024, 28 steps: 3,03 Sekunden, P90 3,90 Sekunden
- Die Demo für FLUX.1 [schnell] wird mit Echtzeit-Eingabe bereitgestellt; auch die komplette App und der Quellcode sind einsehbar
Optimierungsansatz und Qualitätskontrolle
- Viele Modelle bei Replicate werden von der Community beigetragen, die FLUX-Modelle werden jedoch in Zusammenarbeit mit Black Forest Labs gepflegt
- Für die Geschwindigkeitsverbesserung wurden zwei Maßnahmen umgesetzt
- Als Ausgangspunkt diente Alex Reddens flux-fp8-api; verwendet werden außerdem
torch.compileund die schnellen CuDNN-Attention-Kernels aus Nightly-Torch-Builds - Zusätzlich wurde die neue synchrone HTTP-API von Replicate integriert, damit alle Bildmodelle schneller arbeiten
- Als Ausgangspunkt diente Alex Reddens flux-fp8-api; verwendet werden außerdem
- Die Quantisierung in
flux-fp8-apiverändert die Modellausgabe leicht, die Auswirkungen auf die Qualität waren jedoch gering- Es gibt ein Tool zum Vergleich der Ausgaben von Tausenden Prompts mit FLUX.1 [schnell] und FLUX.1 [dev], und die Vergleichsergebnisse lassen sich direkt ansehen
- Durch Setzen des Eingabewerts
go_fastauffalsekann diese Optimierung deaktiviert werden
- Da oft unklar ist, ob Modellanbieter Optimierungen einsetzen, die die Qualität beeinflussen, legt Replicate die Optimierungsverfahren offen und ermöglicht Nutzern, sie abzuschalten
Open-Source-Code und Nutzungspfade
- Der FLUX-Optimierungscode ist unter github.com/replicate/cog-flux veröffentlicht
- Replicate veröffentlicht die FLUX-Verbesserungen als Open Source und arbeitet zusammen mit der AI Compiler Study Group sowie KI-Forschenden an einer schnellen Open-Source-Version von FLUX
- Mit FLUX sind unter anderem folgende Dinge möglich
1 Kommentare
Hacker-News-Kommentare
Text-zu-Bild-Modelle wirken ineffizient. Ich frage mich, ob es möglich und besser wäre, die Schritte aufzuteilen, etwa Text→Szenengraph→semantisch segmentiertes Bild→finales Bild
Jede Stufe ließe sich separat trainieren und modularisieren, und Bilder könnten vermutlich leichter bearbeitet werden, statt sie mit einem neuen Prompt komplett neu zu erzeugen. Dann wäre es viel einfacher, Dinge wie „Objekt x steht neben Objekt y, und darüber steht der Text foo“ zu generieren, während Kunststil oder Realitätsgrad einem finalen Rendering-Modell überlassen werden könnten, das von der Prompt-Befolgung getrennt ist
Das fühlt sich ähnlich an wie video2video oder Frame-für-Frame-img2img-Modelle, die die Ausgabe von Videospielen verbessern
https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
Wenn man ein neuronales Netz von a→b und eines von b→c trainieren kann, lässt sich diese Kombination meist durch ein einfacheres neuronales Netz ersetzen, das direkt von a→c geht. Das ergibt Sinn, weil bei der Umwandlung von a nach b Informationen verloren gehen können. Ein einzelnes neuronales Netz stellt sicher, dass die relevanten Informationen aus a, die zur Erzeugung von c nötig sind, in höhere Schichten weitergegeben werden
Merkmale zu extrahieren und wie ein Mensch zu schlussfolgern klingt plausibel, aber am Ende scheint es einfacher gewesen zu sein, das rein vom Computer betriebene Pattern Matching zu skalieren
Alles auf einmal zu beschreiben und zu hoffen, dass einem das Ergebnis gefällt, ergibt keinen Sinn
Sie beginnen mit Rauschen und fügen schrittweise immer mehr Details hinzu
Ich möchte ein Foto von gefrorenem türkisfarbenem Pfirsichflaum
Eine nichtkommerzielle Lizenz ist kein Open Source. Denn wenn der ursprüngliche Rechteinhaber die Wartung einstellt, kann niemand anders übernehmen, oder man müsste wie ein kostenloser Sklave arbeiten
Der Kern von Open Source liegt darin, was möglich ist, wenn der ursprüngliche Autor aufhört zu arbeiten. Open Source gibt jedem die Lizenz, die Entwicklung fortzuführen, und dazu gehört selbstverständlich auch die Möglichkeit, dafür Geld zu verlangen. Wenn dieser Aspekt fehlt, sollte man es nicht Open Source nennen
Nur FLUX.1 [schnell] ist Open Source (Apache2), FLUX.1 [dev] hat eine nichtkommerzielle Lizenz
https://huggingface.co/ostris/OpenFLUX.1/
Wenn man FLUX.schnell einfach ausprobieren möchte, kann man den Prompt in eine Pollinations-URL einfügen
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
Die Geschwindigkeit ist wirklich erstaunlich. Mit nur drei L40S-GPUs erzeugen wir 8000 Bilder alle 30 Minuten für Nutzer. Zur Einordnung: Ich bin von Pollinations
Am liebsten nutze ich Flux, um Bilder mit weißem Hintergrund für Substack zu erstellen. Der nachfolgende Text ist hervorragend, und über das Artwork lässt sich auch visuell etwas vermitteln.
[1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...
Ich weiß nicht, ob ich dazu eine klare Position habe. Die Technik schreitet eben weiter voran. Interessant ist es trotzdem.
Flux ist bei lokal gehosteten Generierungssystemen ein Spitzenkandidat in Sachen Prompt-Befolgung, aber die überall auftauchende geringe Schärfentiefe ist ärgerlich schwer loszuwerden.
Ich habe gerade mein Midjourney-Abo gekündigt. Für das, was ich machen will, fühlt es sich zu weit zurückgefallen an.
Ich habe auch länger darüber nachgedacht, Replicate und Ideogram zu verwenden.
Es ist verrückt, dass nicht einmal ein Jahr nach Emads Absturz ein lokales Open-Source-Modell herausgekommen ist, das besser ist. Das zeigt, wie flach der Burggraben dieser Firmen ist, und dank der riesigen Mengen an verbranntem Geld profitieren wir davon.
Weiß jemand, womit FLUX 1.1 trainiert wurde? Ich habe mit dem Pro-Modell fast 100 Bilder mit Zwei-Wort-Prompts nach dem Muster „Kamera-Dateiname + einfaches Wort“ erzeugt, und alle sahen aus wie Handyfotos von irgendjemandem.
Ohne Text hätte ich nicht einmal daran gedacht, dass es KI-Bilder sein könnten. Manchmal wirken sie wie abgeschnittene Fotos; es kommen viele Essensfotos, unaufgeräumte Esstische und Wohnungen vor.
Wurden öffentliche Facebook-Posts, Snapchat oder Vkontakte gescrapet? Wurden private Bilder aus OneDrive oder Dropbox gekauft? Wenn man als zweites Wort einen Frauennamen eingibt, schlägt fast immer der NSFW-Filter an. Deshalb vermute ich, dass ziemlich private Bilder im Trainingsset enthalten sind.
Schaut es euch selbst an. Vorsicht: Musik mit Autoplay.
people: https://vm.tiktok.com/ZGdeXEhMg/
food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
signs: https://vm.tiktok.com/ZGdeXoAgy/
[edit] Wenn man sich solche Bilder ansieht, fühlt es sich unangenehm an, als würde man private Fotos von jemandem anschauen. Prompts wie „IMG00012.JPG forbid“ enthalten nicht genug steuernde Information, um solche Bilder zu beschreiben; sie können also nur aus den Trainingsdaten stammen.
Ich glaube nicht, dass FLUX 1.1 pro einen fundamental anderen Trainingssatz verwendet hat als frühere öffentliche Modelle. Es könnte für solche Generierungen aber anfälliger sein.
Es fühlt sich wirklich seltsam an. Also noch einmal die Frage: Gibt es Informationen zu den Trainingsdaten, die für diese Modelle verwendet wurden?
Die beiden Reddit-Posts unten behandeln diese Dateinamenkonvention ein wenig.
DSC_0001-9999.JPG - Nikon-Standard
DSCF0001-9999.JPG - Fujifilm-Standard
IMG_0001-9999.JPG - allgemeines Bild
P0001-9999.JPG - Panasonic-Standard
CIMG0001-9999.JPG - Casio-Standard
PICT0001-9999.JPG - Sony-Standard
Photo_0001-9999.JPG - Android-Foto
VID_0001-9999.mp4 - allgemeines Video
Zusätzlich habe ich auch eine Version mit Dateinamen von 3D-Software erstellt. Ich habe alle getestet, aber nur einige hatten Wirkung.
Autodesk Filmbox (FBX): my_model0001-9999.fbx
Stereolithography (STL): Model0001-9999.stl
3ds Max: 3ds_Scene0001-9999.max
Cinema 4D: Project0001-9999.c4d
Maya (ASCII): Animation0001-9999.ma
SketchUp: SketchUp0001-9999.skp
[1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
[2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_...
Zusammen mit einer starken Korrektur auf Text hin ist es sehr wahrscheinlich, dass viel Tuning betrieben wurde, um das Modell Bilder bevorzugen zu lassen, die flux-typisch aussehen.
Welchem Prozess auch immer sie gefolgt sind: Sie haben das Modell so hypersensibel gemacht, dass schon das Vorkommen bestimmter Begriffe stärker wirkt als ein LoRA.
Die gezeigten Fotos sind im Gesamtkontext nicht besonders bemerkenswert. Es braucht nicht viel Aufwand, um aus dem Standardbildformat herauszukommen und fotorealistische Ergebnisse zu erzielen. Persönlich glaube ich eher, dass sie die Defaults auf die Bilder einstellen wollen, die die Leute haben möchten, statt Hyperrealismus zu verstecken.
Ich weiß nicht, warum alle kritischen Kommentare zu Flux downgevotet oder geflaggt werden; das ist ziemlich merkwürdig.
Es wird auf eine Vergleichsseite verwiesen und behauptet, die Qualität sei ähnlich, aber zunächst einmal ist sehr deutlich, dass es viel weniger Details gibt. Noch schlimmer ist das Beispiel „3/4-Frontansicht einer gelben 2017 Corvette, die an einem bewölkten Tag eine Kurve auf einer Bergstraße mit Blick auf ein grünes Tal nimmt“.
Das ursprüngliche Modell zeigt die Front, die Speed-Version zeigt das Heck der Corvette. Das ist ein völlig anderes Bild. Nicht ähnlich, sondern auffällig anders.
https://flux-quality-comparison.vercel.app/
Jedes Mal, wenn ein Thread zu einem Meta-Modell auftaucht, hagelt es Korrekturen, dass es nicht wirklich Open Source sei.
Dann sollte man das auch bei FLUX klarstellen. Von den veröffentlichten Modellen ist nur FLUX schnell Open Source, und da es aus einem proprietären Modell destilliert wurde, ist es deutlich schwieriger zu handhaben.
Ironischerweise haben Metas Llama-Modelle aus praktischer Sicht eine viel permissivere Lizenz und lassen sich mit Metas eigenen Open-Source-Frameworks oder vielen Third-Party-Tools sehr einfach feinabstimmen. Bei FLUX schnell ist das nicht so.
Meiner Meinung nach sollte die Open-Source-Community ihre Kräfte um OpenFLUX oder ähnliche Projekte bündeln, die die künstlichen Einschränkungen von Schnell beheben wollen: https://huggingface.co/ostris/OpenFLUX.1
Es heißt, man habe „eine neue synchrone HTTP-API hinzugefügt, die alle Bildmodelle von Replicate deutlich schneller macht“ – warum ist es denn schneller, wenn sie synchron ist? Also angeklickt und nachgesehen
https://replicate.com/changelog/2024-10-09-synchronous-api
„Die Client-Bibliotheken und die API machen Modellläufe jetzt deutlich schneller, insbesondere wenn Dateien zurückgegeben werden“
…danke, aber?
Ich teile hier meine Frustration als Entwickler. Wenn ihr wollt, dass es im Gedächtnis bleibt und wir zu Unterstützern werden, wäre es gut, das etwas besser zu erklären