3 Punkte von GN⁺ 2024-10-15 | 1 Kommentare | Auf WhatsApp teilen
  • 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-api verändert die Ausgabe leicht, die Auswirkungen auf die Qualität waren jedoch gering; bei Bedarf lässt sie sich mit go_fast=false deaktivieren
  • 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
  • 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.compile und 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
  • Die Quantisierung in flux-fp8-api verä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_fast auf false kann 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

1 Kommentare

 
GN⁺ 2024-10-15
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...

    • Im Allgemeinen hat sich mehrfach gezeigt, dass solche Ansätze bei neuronalen Netzmodellen immer wieder scheitern
      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
    • Ich glaube, das ist im Grunde derselbe Ansatz, der in Bereichen wie Bilderkennung lange gescheitert ist, bis man es schließlich mit größeren und tieferen Matrizen erzwungen hat
      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
    • Ich würde mir wünschen, dass KI-Kunst einen modularen Ansatz verfolgt. Also Charaktere, Hintergründe, Stil und Kamerabewegungen jeweils in eigenen Schritten zu erzeugen
      Alles auf einmal zu beschreiben und zu hoffen, dass einem das Ergebnis gefällt, ergibt keinen Sinn
    • Diffusionsmodelle machen im Grunde genau das. Nur gibt es keine klare Grenze zwischen „Szenengraph“ und „Gesamtbild“
      Sie beginnen mit Rauschen und fügen schrittweise immer mehr Details hinzu
    • Darin steckt die falsche Annahme, dass ein Bild eine Sammlung von Objekten sei. Das ist bei Bildern nicht unbedingt der Fall
      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

    • Es gibt OpenFLUX.1, ein feinabgestimmtes FLUX.1-schnell-Modell, bei dem die Destillation entfernt wurde. OpenFLUX.1 steht unter der Apache-2.0-Lizenz
      https://huggingface.co/ostris/OpenFLUX.1/
    • Bedeutet Open Source nicht, dass der Quellcode sichtbar und überprüfbar ist? Mir ist keine Closed-Source-App bekannt, die einen den Quellcode einsehen lässt
  • 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

    • Das Wort „nur“ klingt für die meisten hier ziemlich teuer
  • 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 finde, dieses Beispiel zeigt gut, warum Künstler wütend sind. Das LLM imitiert offenkundig den eigenen Stil eines bestimmten Künstlers, und dadurch entgeht diesem Künstler bezahlte Arbeit.
      Ich weiß nicht, ob ich dazu eine klare Position habe. Die Technik schreitet eben weiter voran. Interessant ist es trotzdem.
    • Kannst du den Prompt teilen?
  • Flux ist bei lokal gehosteten Generierungssystemen ein Spitzenkandidat in Sachen Prompt-Befolgung, aber die überall auftauchende geringe Schärfentiefe ist ärgerlich schwer loszuwerden.

    • Scheint es auf künstlerische Bilder optimiert zu sein?
  • 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.

    • In letzter Zeit frage ich mich auch, ob es über den Neuheitseffekt hinaus noch einen Wert hat. Mich würde interessieren, ob du zu anderen Tools gewechselt bist oder ob du in solchen Tools einfach keinen Wert mehr siehst.
    • Midjourney hat diesen eigenen Look und ist schwach bei Händen, Füßen und Buchstaben, deshalb habe ich es nie genutzt.
      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?

    • Das betrifft nicht nur flux; dasselbe lässt sich auch mit anderen Modellen einschließlich Stable Diffusion machen.
      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_...
    • Ich halte es für sehr unwahrscheinlich, dass es am rohen Trainingsdatensatz liegt. Ich hatte das gegenteilige Problem: Das Token „background“ führte fast unabhängig davon, wie es im Prompt verwendet wurde, zu einer starken Unschärfe im gesamten Bild; interessant war aber, dass die Prompt-Interpretation viel besser wurde.
      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 habe dasselbe erlebt, und es war wirklich seltsam. Anfangs kamen gute Ergebnisse heraus, später ging es dann kaputt.
      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

    • Im zweiten Absatz wird der Grund buchstäblich erklärt. Statt eine URL zurückzugeben, für die man eine zweite Anfrage stellen muss, um die Dateidaten zu erhalten, werden die eigentlichen Dateidaten in der Antwort zurückgegeben
    • Stimmt. Dieser Teil war nicht klar. Ich habe einen weiteren Absatz hinzugefügt, der erklärt, was man früher tun musste