2 Punkte von GN⁺ 2024-02-14 | 1 Kommentare | Auf WhatsApp teilen
  • Stable Cascade ist die offizielle Codebasis von Stability AI und bietet Trainings- und Inferenz-Skripte für ein Bildgenerierungsmodell auf Basis der Würstchen-Architektur sowie mehrere Modell-Checkpoints.
  • Der zentrale Unterschied besteht darin, dass es in einem deutlich kleineren Latent Space als Stable Diffusion arbeitet: 1024x1024-Bilder werden statt auf 128x128 wie bei Stable Diffusion auf 24x24 encodiert, was Inferenzgeschwindigkeit und Trainingskosten reduziert.
  • Das Modell besteht aus einer dreistufigen Kaskade mit Stage A, Stage B und Stage C: Stage A und B übernehmen die Bildkompression, Stage C erzeugt aus Text-Prompts eine 24x24-Latent-Repräsentation.
  • Zu den bereitgestellten Funktionen gehören Text-to-Image, Bildvariationen, Image-to-Image, ControlNet, LoRA, Bildrekonstruktion sowie Training von Grund auf und Fine-Tuning; Zugriff ist auch über diffusers 🤗 möglich.
  • Die Codebasis befindet sich in einer frühen Entwicklungsphase, daher kann es unerwartete Fehler oder nicht optimierten Trainings- und Inferenz-Code geben. Der Code steht unter der MIT License, die Modellgewichte unter der Stability AI Non-Commercial Research Community License.

Welches Problem Stable Cascade lösen will

  • Stable Cascade ist die offizielle Stable-Cascade-Codebasis und stellt Trainings- und Inferenz-Skripte sowie mehrere nutzbare Modelle bereit.
  • Das Modell basiert auf der Würstchen-Architektur.
  • Der wichtigste Unterschied zu Modellen wie Stable Diffusion ist, dass es in einem deutlich kleineren Latent Space arbeitet.
    • Stable Diffusion nutzt einen Kompressionsfaktor von 8 und encodiert 1024x1024-Bilder auf 128x128.
    • Stable Cascade erreicht einen Kompressionsfaktor von 42 und kann 1024x1024-Bilder auf 24x24 encodieren.
    • Das textkonditionierte Modell wird in diesem hochkomprimierten Latent Space trainiert.
  • Ein kleiner Latent Space führt zu schnellerer Inferenz und günstigerem Training.
  • Eine frühere Version dieser Architektur erzielte gegenüber Stable Diffusion 1.5 eine 16-fache Kostensenkung.

Leistung und Effizienz

  • Stable Cascade wird als Modell vorgestellt, das für Einsatzfälle geeignet ist, in denen Effizienz wichtig ist.
  • Bekannte Erweiterungsmethoden wie Fine-Tuning, LoRA, ControlNet, IP-Adapter und LCM sind auch mit diesem Ansatz möglich.
  • In der eigenen Evaluation zeigte Stable Cascade in fast allen Vergleichen die beste Leistung sowohl bei Prompt-Ausrichtung als auch bei ästhetischer Qualität.
  • Die menschliche Bewertung wurde mit einer Mischung aus parti-prompts und aesthetic prompts durchgeführt.
    • Stable Cascade wurde mit 30 Inferenzschritten verglichen.
    • Vergleichsmodelle waren Playground v2 mit 50 Schritten, SDXL mit 50 Schritten, SDXL Turbo mit 1 Schritt und Würstchen v2 mit 30 Schritten.
  • Das größte Modell enthält 1,4 Milliarden Parameter mehr als Stable Diffusion XL, zeigt aber eine schnellere Inferenzzeit.

Dreistufige Modellstruktur

  • Stable Cascade besteht, wie der Name andeutet, aus drei Modellen in einer Kaskadenstruktur zur Bilderzeugung: Stage A, Stage B und Stage C.
  • Stage A und Stage B komprimieren Bilder, ähnlich wie der VAE von Stable Diffusion.
  • Stage C nimmt Text-Prompts entgegen und erzeugt eine kleine 24 x 24 Latent-Repräsentation.
  • Stage A ist ein VAE, Stage B und Stage C sind Diffusionsmodelle.
  • Dieses Release stellt die folgenden Checkpoints bereit:
    • Stage C: Versionen mit 1 Milliarde und 3,6 Milliarden Parametern
    • Stage B: Versionen mit 700 Millionen und 1,5 Milliarden Parametern
    • Stage A: 20 Millionen Parameter, wegen der geringen Größe fest vorgegeben
  • Für Stage C wird die Nutzung der 3,6-Milliarden-Version dringend empfohlen, da sich die meisten Fine-Tuning-Arbeiten auf diese Version konzentrierten.
  • Bei Stage B liefern beide Versionen gute Ergebnisse, die Version mit 1,5 Milliarden Parametern ist jedoch besser bei der Rekonstruktion kleiner, feiner Details.
  • Für die besten Ergebnisse wird vorgeschlagen, jeweils die größeren Varianten der einzelnen Stages zu verwenden.

Inferenzfunktionen und Notebooks

  • Das Modell kann über die Notebooks im Bereich inference ausgeführt werden.
  • Dieser Bereich enthält Details zu Modell-Downloads, Compute-Anforderungen und Tutorials zur Nutzung.
  • Text-to-Image

    • text_to_image.ipynb bietet grundlegende Funktionen für Text-to-Image, Bildvariationen und Image-to-Image.
    • Bildvariationen können Bild-Embeddings verstehen und Variationen eines gegebenen Bildes erzeugen; im Beispiel wird kein Prompt angegeben.
    • Image-to-Image funktioniert, indem ein Bild bis zu einem bestimmten Punkt verrauscht und dann von diesem Startpunkt aus generiert wird.
    • Im Beispiel wird das linke Bild zu 80 % verrauscht und die Caption A person riding a rodent. verwendet.
    • Das Modell ist über die stable-cascade-Dokumentation von Hugging Face auch in der Bibliothek diffusers 🤗 zugänglich.
  • ControlNet

    • controlnet.ipynb behandelt die Nutzung der für Stable Cascade bereitgestellten ControlNets oder eines selbst trainierten ControlNets.
    • Die ControlNets dieses Releases umfassen Inpainting / Outpainting, Face Identity, Canny und Super Resolution.
    • Face Identity ControlNet soll später veröffentlicht werden.
    • Sie können im selben Notebook verwendet werden; pro ControlNet muss nur die Konfiguration angepasst werden.
  • LoRA

    • Stable Cascade stellt eine eigene Implementierung für LoRA-Training und -Nutzung bereit.
    • LoRA kann zum Fine-Tuning des textkonditionierten Modells Stage C verwendet werden.
    • Neue Tokens können hinzugefügt und trainiert werden, und dem Modell lassen sich LoRA-Layer hinzufügen.
    • lora.ipynb zeigt, wie trainierte LoRAs verwendet werden.
  • Bildrekonstruktion

    • reconstruct_images.ipynb zeigt, wie Bilder encodiert und decodiert werden, sowie die Vorteile des hochkomprimierten Ansatzes.
    • Der Diffusion Autoencoder von Stable Cascade ermöglicht das Arbeiten in einem stark komprimierten Raum.
    • Stage A und Stage B können ähnlich verwendet werden wie der VAE von Stable Diffusion beim Training eigener Modelle.
    • Der Beispiel-Batch 4 x 3 x 1024 x 1024 wird zu 4 x 16 x 24 x 24 encodiert.
    • Der räumliche Kompressionsfaktor beträgt 1024 / 24 = 42.67.
    • Anschließend kann er mit Stage A und Stage B wieder zu 4 x 3 x 1024 x 1024 decodiert werden.
    • Laut Beschreibung liegen die Rekonstruktionsergebnisse selbst bei kleinen Details sehr nah am Original; mit Standard-VAEs und Ähnlichem sei eine solche Rekonstruktion nicht möglich.

Training, App und Lizenz

  • Der Trainingscode umfasst das Training von Stable Cascade von Grund auf, Fine-Tuning, ControlNet und LoRA.
  • Ausführliche Trainingsanleitungen stehen im training folder bereit.
  • Die Codebasis befindet sich in einer frühen Entwicklungsphase.
    • Es kann unerwartete Fehler geben.
    • Trainings- und Inferenz-Code ist möglicherweise noch nicht vollständig optimiert.
    • Bei Interesse sollen weitere Updates mit aktuellen Verbesserungen und Optimierungen veröffentlicht werden.
    • Ideen, Feedback und Beiträge zu Updates sind willkommen.
  • Für die Ausführung der Gradio-App wird zunächst Folgendes installiert:
  • Im Projekt-Root wird die Gradio-App mit folgendem Befehl gestartet:
    • PYTHONPATH=./ python3 gradio_app/app.py
  • Der Code steht unter der MIT LICENSE.
  • Die über Hugging Face verfügbaren Modellgewichte stehen unter der STABILITY AI NON-COMMERCIAL RESEARCH COMMUNITY LICENSE.

1 Kommentare

 
GN⁺ 2024-02-14
Meinungen auf Hacker News
  • Nachdem ich es ein paar Stunden ausprobiert habe, scheint die Prompt-Treue deutlich besser zu sein
    Im Moment wirkt die Qualität niedriger als bei einigen SDXL-Modellen, aber ich will mir ein Urteil vorbehalten, bis ich es noch ein paar Tage getestet habe
    Es ist auch schnell; gefühlt etwa 2- bis 3-mal schneller als nicht-turbo SDXL

    • Ich würde Prompt-Treue jederzeit der Qualität vorziehen
      Wenn man ControlNet, OpenPose und sogar eine Depth Map einsetzen muss, um ein bestimmtes Aussehen oder eine bestimmte Tiefe zu erzwingen, wird die Lösung bei jeder Generierung viel zu maßgeschneidert
      In meinen eigenen Tests war es beim Befolgen des Prompts besser, und die Bilder gefallen mir visuell auch besser
    • Mich würde interessieren, wie viel VRAM nötig ist
      Das größte Modell soll 1,4 Milliarden Parameter mehr haben als SDXL, und SDXL verlangt schon viel VRAM
    • Kann man es auch auf der CPU ausführen?
  • Sehr beeindruckend
    Soweit ich es verstehe, erhält Stability AI derzeit Venture Capital, aber es sieht so aus, als müssten sie enorm viel Geld verbrennen, und es ist unklar, ob das Geschäftsmodell tragfähig ist
    Vielleicht wäre das etwas für staatliche Forschungsförderung

    • Stability AI verbrennt schon seit einiger Zeit viel Geld, und deshalb scheint ein neues Modell wie Stable Cascade nicht mehr Open Source unter einer kommerziell freundlichen Lizenz zu sein
      Es wurde berichtet, dass sie zum Zeitpunkt des Deals mit Intel monatlich rund 8 Millionen Dollar für Rechnungen und Gehälter ausgaben, während der Umsatz nur einen Bruchteil davon ausmachte
      Der Umsatz im August lag bei 1,2 Millionen Dollar, und es gab einen später gelöschten X-Post von Mostaque, laut dem man in diesem Monat bei Software und Services auf 3 Millionen Dollar zusteuerte
      https://fortune.com/2023/11/29/stability-ai-sale-intel-ceo-r...
    • Ich habe früher irgendwo hier auf HN einen Kommentar von Stability-AI-Gründer Emad gesehen, in dem er erklärte, was genau das Geschäftsmodell ist und wie es weitergehen soll
      Heute liefert die HN-Suche keine guten Treffer, deshalb finde ich den konkreten Kommentar, an den ich denke, nicht
      Falls ihn jemand finden kann: Die Nutzerseite ist hier: https://news.ycombinator.com/user?id=emadm
    • Ich finde, Stability sollte Forschungszuschüsse erhalten
    • Die Forschenden gehören nicht zu stability.ai, sondern zu Universitäten in Deutschland und Kanada
      Daher frage ich mich, wie diese Struktur aussieht
      Ist das exklusive Arbeit für stability.ai?
  • Den Commits nach wurde die Lizenz von MIT auf eine eigene Custom-Lizenz geändert: https://github.com/Stability-AI/StableCascade/commit/209a526...
    Ist es rechtlich möglich, einen älteren Snapshot von vor der Lizenzänderung unter der bisherigen MIT-Lizenz zu verwenden?

    • Die Absicht scheint ziemlich eindeutig gewesen zu sein, eine nicht-kommerzielle Lizenz zu verwenden; wenn man es wirklich darauf anlegt, könnte das vor Gericht landen
      Im Allgemeinen betrachten Gerichte den Gesamtzusammenhang und die Absicht und verstehen auch, dass bürokratische Fehler passieren können
      Eine Ausnahme könnte aber sein, wenn ein Unternehmen behauptet, es habe im Vertrauen auf die frühere Lizenz erhebliche Ressourcen investiert
      Der Zeitpunkt des Commits scheint ziemlich wichtig. Wenn das Repository vor der Veröffentlichung nur ein paar Stunden lang MIT-lizenziert war, dürfte es für ein Unternehmen schwer sein zu behaupten, es habe substanzielle Investitionen getätigt
    • Ja, möglich
      Diesen Commit kann man weiterhin nach Belieben unter der zum Veröffentlichungszeitpunkt geltenden MIT-Lizenz verwenden
      Das ist so ähnlich, als hätte man ein E-Book gekauft und später erscheint die zweite Auflage nur noch als Hardcover; das E-Book der ersten Auflage kann man trotzdem weiterhin lesen
    • Modellarchitektur, Trainingscode usw. sind weiterhin MIT-lizenziert; die Gewichte, also das Ergebnis des Trainings auf einem riesigen GPU-Cluster, und der verwendete Datensatz scheinen unter der neuen Lizenz zu stehen
    • Der Code ist MIT-lizenziert, das Modell steht unter einer nicht-kommerziellen Lizenz
      Unterschiedliche Werke stehen unter unterschiedlichen Lizenzen
      Stability AI erklärte, diese nicht-kommerzielle Lizenz gelte, weil es sich wie bei SDXL 0.9 um eine technische Vorschau handle
    • Die MIT-Lizenz ist nicht wie die GPL ansteckend
      Man kann eine MIT-lizenzierte Codebasis schließen, aber man kann die Lizenz von bereits veröffentlichtem altem Code nicht rückwirkend ändern
      In den frühen Commits von Stability gab es eine MIT-Lizenz, also kann man diesen Commit forken und nach Belieben verwenden
      Knifflig ist, dass sie einen Commit gemacht haben, der die Lizenz von MIT auf proprietär ändert, aber keine Codeänderungen enthält
      Das dürfte möglicherweise unwirksam sein, weil man dieselbe Codebasis nicht unter zwei einander widersprechenden Lizenzen vertreiben kann
      Die neue Lizenz kann nur auf Änderungen angewendet werden, die nach der Lizenzänderung zur Codebasis hinzugefügt wurden
      Ich würde es nicht unbedingt „illegal“ nennen, aber da dieselbe Software bereits unter einer Open-Source-Lizenz veröffentlicht wurde, dürfte die Behauptung, sie sei proprietäre Software, vor Gericht schwer Bestand haben
  • Hier gibt es einen optimierten Playground: https://www.fal.ai/models/stable-cascade

    • „sign in to run“ wirkt wie eine verpasste Marketingchance
      Gerade in einem so umkämpften Bereich; und bei der HN-Zielgruppe ist es wahrscheinlich, dass Leute es lieber selbst ausführen, wenn sie sich schon für den Test einer einzelnen Bildgenerierung registrieren sollen
  • Wie andere Bildgeneratoren, die ich ausprobiert habe, bekommt auch dieser Klaviertasten nicht richtig hin [1]
    Um die Gruppen schwarzer Tasten zählen zu können, braucht es vermutlich einen anderen Ansatz
    [1] https://fal.ai/models/stable-cascade?share=13d35b76-d32f-45c...

    • Ich glaube, das geht noch darüber hinaus
      In meinem Fall hatten die meisten Basketballbilder mehr als einen Ball
      Ich bin kein Experte, aber es scheint, als würde das Training die grundlegenden Einschränkungen menschlichen kulturellen Lebens – etwa dass alle Klaviertasten gleich sein sollten oder dass es in einem Spiel nur einen Ball gibt – nicht oder nur teilweise erfassen
    • Wie bei menschlichen Händen ist Konsistenz ein Problem, das sich durch größere Modellgröße und mehr Training lösen lässt
  • Dieses Modell wurde auf der Würstchen-Architektur aufgebaut
    Es gibt ein Video, in dem einer der Autoren sehr gut erklärt, wie dieses Modell funktioniert
    https://www.youtube.com/watch?v=ogJsCPqgFMk

    • Ein gutes Video; zusammengefasst etwa so :)
      Gemini Advanced> Summarize this video: https://www.youtube.com/watch?v=ogJsCPqgFMk
      In diesem Video geht es um die Trainingsmethode für ein Text-zu-Bild-Diffusionsmodell namens Würstchen.
      Sie ist deutlich effizienter als bisherige Ansätze wie Stable Diffusion 1.4 und kann mit nur einem Sechzehntel der Trainingszeit und Rechenleistung vergleichbare Ergebnisse erzielen.
      Der Kern ist ein zweistufiger Kompressionsprozess.
      Im ersten Schritt komprimiert ein VQ-VAE Bilder in einen latenten Raum, der viermal kleiner ist als der von Stable Diffusion verwendete latente Raum; im zweiten Schritt komprimiert ein Diffusionsmodell den latenten Raum erneut um den Faktor 10.
      Dadurch ergibt sich eine Gesamtkompression um den Faktor 40, also deutlich mehr als die 8-fache Kompression von Stable Diffusion.
      Dank des komprimierten latenten Raums kann das Text-zu-Bild-Diffusionsmodell von Würstchen deutlich kleiner sein und schneller trainiert werden als Stable-Diffusion-Modelle.
      Würstchen kann auf einer einzelnen GPU in 24.000 GPU-Stunden trainiert werden, während Stable Diffusion 1.4 150.000 GPU-Stunden benötigt.
      Es ist effizient und kann dennoch Bilder in ähnlicher Qualität wie Stable Diffusion erzeugen; bei Bildern mit höherer Auflösung oder mehr Details liefert es teils sogar bessere Qualität.
      Insgesamt ist Würstchen ein wichtiger Fortschritt im Bereich der Text-zu-Bild-Generierung: Es ermöglicht ein effizienteres und günstigeres Modelltraining und kann den Einsatzbereich etwa auf Marketingbilder, Buchillustrationen und personalisierte Avatare ausweiten.
  • Gibt es eine Möglichkeit, mehrere Bilder desselben Modells zu erzeugen?
    Zum Beispiel Bilder eines Automodells, das aus verschiedenen Winkeln gedreht wird, wobei es immer dasselbe generierte Auto bleibt.

    • Vermutlich müsste jemand mit den nötigen Ressourcen Zero123 [1] auf diesem Backbone trainieren
      [1] https://zero123.cs.columbia.edu/
    • Das ist möglich.
      Eingabebild => Embedding => N-Bilder-Flow; und wenn man auch die Perspektive eines 3D-Renderings berücksichtigt, kann man auf diese N Bilder ControlNet anwenden.
      Hinweis: „The model can also understand image embeddings, which makes it possible to generate variations of a given image (left). There was no prompt given here.“
  • Ich erinnere mich, dass ich früher mit diesen beiden Forschern herumexperimentiert habe, um die optimale Methode zu finden, Stage B bedingt an latente Repräsentationen zu koppeln.
    Am Ende hat das einfache Aneinanderhängen der Eingangskanäle an das nächstliegende Upsample der latenten Repräsentation besser funktioniert als sehr fancy Cross-Attention mit relativen 2D-Positions-Embeddings, also haben wir es aufgegeben.
    Dieses Modell war früher als Würstchen v3 bekannt.

  • Läuft es auf AMD?
    Ich konnte nichts zur Unterstützung finden.
    Nutzer, die Stable Diffusion auf AMD ausführen, dürften unter Performance-Einbußen leiden; für solche Projekte ist das also eine ziemlich wichtige Funktion.

  • Am beeindruckendsten finde ich die Kompression.
    Bilder um den Faktor 42 komprimieren zu können, ist ein enormer Vorteil auf Mobilgeräten, bei schlechten Internetverbindungen oder beidem.

    • Das ist eine 42-fache Kompression in räumlicher Richtung, und statt der 3 Kanäle von RGB braucht man 16 Kanäle.
    • Inzwischen arbeitet bestimmt jemand an einem schnellen KI-basierten Videocodec, der ein kleines vortrainiertes Modell enthält und auch in Umgebungen mit begrenztem Speicher wie Fernsehern läuft.
      Das zielt darauf ab, 8K-Auflösung bei geringer Bandbreite bereitzustellen.