In der heutigen sich schnell entwickelnden KI-Landschaft ist die Nachfrage nach hochwertigen, kommentierten Datensätzen und maßgeschneiderten Modellen größer als je zuvor. Um diesen Bedarf zu befriedigen, zielt unser Projekt darauf ab, ein innovatives Modul zu entwickeln, das die Datenannotation nahtlos mit der Modellfeineinstellung integriert. Dieses Modul nutzt modernste Sprachmodelle wie Claude oder ChatGPT-4, um bereitgestellte Kundenbilder zu kennzeichnen und anschließend ein stabiles Diffusion XL (SDXL) -Modell mit diesen Anmerkungen zu optimieren.
Das Ziel dieses Projekts ist es, ein robustes und effizientes Modul zu erstellen, das den Datenannotationsprozess automatisiert und das Modelltraining verbessert. Durch die Integration fortschrittlicher KI-Funktionen möchten wir ein hoch anpassungsfähiges und präzises SDXL-Modell erstellen, das mit dem neu kommentierten Datensatz fein abgestimmt ist.
Verwenden Sie die Claude/Chatgpt-4 (oder ähnliche) API, um qualitativ hochwertige Annotationen für einen Satz von 5-20 Kundenbildern zu generieren.
Stellen Sie sicher, dass Anmerkungen genau und konsistent sind, um einen zuverlässigen Datensatz für Schulungszwecke zu erstellen.
Fein ein SDXL-Modell mit dem kommentierten Datensatz abteilen.
Implementieren Sie die LORA-Techniken (Low-Rang Adaptation), um die Leistung des Modells basierend auf den spezifischen Merkmalen der kommentierten Daten zu optimieren.
Dieses Projekt soll die Effizienz und Genauigkeit der KI -Modellentwicklung verbessern, indem wichtige Prozesse automatisiert und integriert werden. Die Kombination fortschrittlicher Sprachmodelle für Annotation und ausgefeilte Feinabstimmungsmethoden führt zu einer hochwirksamen Lösung, die den wachsenden Bedürfnissen verschiedener KI-Anwendungen entspricht. Durch die Reduzierung der manuellen Arbeit und die Verbesserung der Modellleistung bietet dieses Projekt einen erheblichen Wert für die Industrie, die sich auf generative KI -Technologien verlassen.

Es gibt verschiedene Arten von Feinabstimmungen. Die Auswahl der Feinabstimmungsmethoden hängt von den Systemspezifikationen und der Verwendung ab. LORA-Modelle (Low-Rank Adaptation) bieten eine größere Effizienz und Kompaktheit. Sie funktionieren wie Adapter, die auf vorhandenen Checkpoint -Modellen aufbauen. Insbesondere aktualisieren LORA -Modelle nur eine Teilmenge von Parametern aus dem Checkpoint -Modell, wodurch die Funktionen verbessert werden. Dieser Ansatz ermöglicht es LORA-Modellen, eine kleinere Größe aufrechtzuerhalten, die typischerweise zwischen 2 MB und 500 MB reicht, und ermöglicht eine häufige Feinabstimmung für bestimmte Konzepte oder Stile.
Zum Beispiel sind bei der Feinabstimmung eines stabilen Diffusionsmodells mit DreamBooth das gesamte Modell, um sich an ein bestimmtes Konzept oder Stil anzupassen, erhebliche Rechenressourcen aufgrund der daraus resultierenden großen Modellgröße (ca. 2 bis 7 GBs) und intensiver GPU-Verwendung erforderlich. Im Gegensatz dazu erzielen LORA -Modelle vergleichbare Inferenzergebnisse mit signifikant niedrigeren GPU -Anforderungen.
Während Lora eine weit verbreitete Methode ist, gibt es alternative Ansätze zur Modifizierung der stabilen Diffusion. Eine solche Methode beinhaltet das Cross -Daten -Modul, das Eingaben verarbeitet, die vom Konvertieren von Eingabeaufforderungstext in Texteinbettungen abgeleitet werden. Textinversionen stellen einen anderen Ansatz dar, der noch kompakter und schneller als Lora ist. Textinversionen beschränken sich jedoch nur auf feine Abtunigung von Texteinbettungen für bestimmte Konzepte oder Stile. Die zugrunde liegende U-NET, die für die Bilderzeugung verantwortlich ist, bleibt unverändert und schränkt textuelle Inversionen auf die Generierung von Bildern ein, die denen, die während des Trainings verwendet wurden, ohne die Möglichkeit, völlig neue Ausgänge zu erzeugen, ähnlich wie bei der Erzeugung von Bildern einschränken.
In diesem Projekt gibt es zwei Arten von Feinabstimmungsmethoden. Die erste Option ist die Verwendung der Kombination von Dreambooth und Lora und der andere verwendet nur Lora. Die erste Option ist die beste Wahl und die bevorzugte Methode in diesem Projekt. Die Gründe für diese Wahl sind:
Verbesserte Anpassungsfähigkeit: Dreambooth ist eine Feinabstimmungsmethode, die eine umfassende Anpassung des gesamten Modells an bestimmte Konzepte oder Stile ermöglicht. Durch Feinabstimmung mit Dreambooth kann das SDXL-Modell nuancierte Details und Eigenschaften lernen, die eng mit den gewünschten Ausgängen übereinstimmen.
Effizienz und Kompaktheit: Lora (Anpassung mit niedriger Rang) kommt nach der Feinabstimmung von Dreambooth ins Spiel. LORA -Modelle sind so konzipiert, dass sie die Effizienz optimieren, indem nur eine Teilmenge der Parameter des Checkpoint -Modells aktualisiert wird. Dieser Ansatz reduziert die Modellgröße (typischerweise 2 MB auf 500 MB) im Vergleich zu vollständig abgestimmten Modellen, wie sie ausschließlich durch Dreambooth modifiziert sind.
Reduzierte Rechenressourcen: Kombinieren von Dreambooth mit LORA -Ergebnissen in Modellen, die während des Trainings und der Inferenz weniger GPU -Ressourcen erfordern. Dreambooth erfordert zunächst erhebliche Ressourcen aufgrund seines umfassenden Feinabstimmungsprozesses, aber die nachfolgende Parameterreduzierung von LORA stellt sicher, dass das Modell überschaubar und effizient bleibt.
Erhaltung der Leistung: Trotz seiner Effizienzgewinne behält Lora die hochwertige Leistung bei, die durch Dreambooth-Feinabstimmung erzielt wird. Diese Kombination stellt sicher, dass das Modell seine Fähigkeit beibehält, beeindruckende Ausgänge zu erzeugen, vergleichbar mit denen, die von einem vollständig fein abgestimmten Modell erzeugt werden.
Flexibilität für die iterative Verfeinerung: Der iterative Ansatz von Dreambooth, gefolgt von Lora, ermöglicht eine iterative Verfeinerung und Feinabstimmung. Diese Flexibilität ist in Szenarien von entscheidender Bedeutung, in denen eine kontinuierliche Anpassung an sich entwickelnde Konzepte oder Stile erforderlich ist, ohne die Effizienz oder Leistung des Modells zu beeinträchtigen.
Wie oben erwähnt, ist die bevorzugte Art, ein SDXL-Modell in diesem Projekt zu feuern, die Kombination Dreambooth und Lora. Die Begründung hinter der Kombination von Dreambooth und Lora liegt in der Optimierung des Kompromisses zwischen Modellanpassungsfähigkeit und Recheneffizienz. Dreambooth ermöglicht eine gründliche Anpassung der Parameter des Modells an bestimmte Nuancen in den Daten oder gewünschten Ausgaben. Diese umfassende Anpassung kann jedoch zu größeren Modellgrößen und erhöhten Rechenanforderungen führen, insbesondere während des Trainings und der Inferenz. Andererseits interveniert Lora nach dem Deaktivieren, um das Modell zu optimieren und seine Größe zu verringern und gleichzeitig seine Leistung zu erhalten. Diese Kombination nutzt die Stärken beider Ansätze: Dreambooth für präzise Anpassung und LORA für ein effizientes Parametermanagement.
Die Hauptschritte dieses Feinabstimmungsansatzes sind:
Parameteranpassung: Verwenden Sie Dreambooth, um den gesamten Parametersatz innerhalb des SDXL -Modells anzupassen, um enger mit den definierten Zielen ausgerichtet zu werden. Dieser Prozess beinhaltet iterative Updates basierend auf dem Zieldatensatz oder der gewünschten Ausgabeeigenschaften.
Schulungsphase: Führen Sie den Feinabstimmungsprozess mit den definierten Zielen und Schulungsdaten aus. Diese Phase stellt sicher, dass das SDXL -Modell fein auf die spezifischen Nuancen und Anforderungen der jeweiligen Aufgabe abgestimmt wird.
Parameterauswahl: Post-Dreambooth, Identifizieren von Teilmengen von Parametern, die für die Aufrechterhaltung oder Verbesserung der Leistung am wichtigsten sind. Dieser Schritt beinhaltet die Analyse der Bedeutung und Auswirkung verschiedener Parameter innerhalb des fein abgestimmten SDXL-Modells.
Niedrige Faktorisierung: Wenden Sie LORA-Techniken wie eine Matrixfaktorisierung mit niedriger Rang auf diese ausgewählten Parameter-Teilmengen an. Lora zersetzt die Parametermatrizen in niedrigrangige Komponenten, wodurch die Redundanz reduziert wird und die Rechenressourcen auf die einflussreichsten Parameter fokussiert.
Selektives Parameter-Update: Aktualisieren Sie nur die identifizierten Komponenten mit niedrigem Rang und optimieren damit die Effizienz des Modells und erhalten Sie gleichzeitig die Leistungsmetriken.
(Zurück nach oben)
Accelerate ist eine vielseitige und benutzerfreundliche Bibliothek, die durch Umarmung des Gesichts entworfen wurde, um den Prozess des Trainings und Bereitstellens maschinelles Lernens auf einer Vielzahl von Hardware-Setups zu optimieren und zu optimieren. Es bietet eine einheitliche Schnittstelle, die die Komplexität der Konfiguration und Verwaltung verschiedener verteilter Trainingsumgebungen wie Multi-GPU- und TPU-Setups abstrahiert. Accelerate erleichtert es Entwicklern, ihren Pytorch -Code zu skalieren und sich eher auf die Modellentwicklung als auf die zugrunde liegende Infrastruktur zu konzentrieren.
Die Vorteile dieser Bibliothek sind:
Vereinfacht das verteilte Training: Beseitigt die Notwendigkeit, komplexe verteilte Setups manuell zu konfigurieren und zu verwalten, sodass Sie sich auf die Entwicklung und Feinabstimmung Ihrer Modelle konzentrieren können.
Verbessert die Ressourcenauslastung: Maximiert die Verwendung verfügbarer Hardware und stellt sicher, dass Ihr GPUs und Ihr TPUs effektiv verwendet werden, um Schulungs- und Inferenzprozesse zu beschleunigen.
Unterstützt große Modelle: Erleichtert den Umgang mit großen Modellen, die erhebliche Speicher- und Rechenleistung erfordern, wodurch es zugänglich ist, um mit modernsten neuronalen Netzwerken zu arbeiten.
Reduziert die Entwicklungsaufwand: strömt die Integration verteilter Schulungen in Ihre Projekte, spart Zeit und verringert den Overhead, der mit der Verwaltung verschiedener Hardwareumgebungen verbunden ist.
BitsandBytes ist eine effiziente und innovative Bibliothek, die die Leistung großer neuronaler Netzwerke, insbesondere im Zusammenhang mit Schulungen und Inferenz, optimieren soll. Es bietet Werkzeuge und Techniken, um den Speicherverbrauch und den Rechenaufwand erheblich zu reduzieren, ohne die Genauigkeit zu beeinträchtigen. Eine der herausragenden Merkmale von BitsandBytes ist die Unterstützung für 8-Bit-Präzisionsoptimierer.
In diesem Projekt verwenden wir die 8-Bit-Optimierer-Technik. Der 8-Bit-Optimierer in BitsandBytes ist eine Technik, die die Genauigkeit von Gewichten und Gradienten von 32-Bit-Schwimmpunktzahlen bis zu 8-Bit-Ganzzahlen während des Trainings quantifiziert. Die Verwendung des 8-Bit-Optimierers von BitsandBytes ist besonders vorteilhaft für Projekte, an denen große neuronale Netze beteiligt sind, wie z. Die Hauptgründe für die Verwendung des 8-Bit-Optimierers sind:
Umgang mit größeren Modellen: Stimmen Sie größere Modelle in den verfügbaren Hardwarespeicher ein und ermöglichen das Training hochmoderner Architekturen, die ansonsten nicht realisierbar wären.
Schnelleres Training: Die Trainingszeiten beschleunigen, indem Sie die Rechenlast reduzieren und schnellere Experimente und Iteration ermöglichen.
Ressourcenoptimierung: Maximieren Sie die Verwendung verfügbarer Hardware, verringern Sie die Notwendigkeit kostspieliger Upgrades und die effiziente Verwendung vorhandener Ressourcen.
Verbesserte Leistung: Erzielen Sie eine vergleichbare Genauigkeit und Leistung für herkömmliche 32-Bit-Trainingsmethoden und profitieren gleichzeitig von den reduzierten Speicher- und Rechenanforderungen.
Die von Sugging Face entwickelte Transformers-Bibliothek ist eine Open-Source-Bibliothek, die eine breite Palette hochmoderner vorgeschriebener Modelle für die natürliche Sprachverarbeitung (NLP) und andere Aufgaben bietet. Es unterstützt eine Vielzahl von Transformer -Architekturen wie Bert, GPT, T5, Roberta und vielen anderen. Die Bibliothek ist so konzipiert, dass diese leistungsstarke Modelle für eine Vielzahl von Anwendungen verwendet werden können, einschließlich Textklassifizierung, Übersetzung, Fragenbeantwortung und vielem mehr.
Die Vorteile der Verwendung dieser Bibliothek sind:
Zugriff auf modernste Modelle: Zugriff auf einige der fortschrittlichsten Modelle in NLP und darüber hinaus, um sicherzustellen, dass Sie mit erstklassigen Architekturen arbeiten.
Schnelle Entwicklung: Die unkomplizierte API der Bibliothek ermöglicht schnelles Prototyping und Experimentieren, was den Entwicklungsprozess erheblich beschleunigt. Übertragungslernfunktionen: Feinstimmen Sie leistungsstarke vorgebrachte Modelle für Ihre spezifischen Aufgaben, nutzen Sie Vorkenntnisse und erzielen Sie mit weniger Daten eine hohe Leistung.
Vielseitige Anwendungen: Verwenden Sie die Bibliothek für ein breites Spektrum von Aufgaben, einschließlich Textklassifizierung, Stimmungsanalyse, benannte Entitätserkennung, maschinelle Übersetzung und vielem mehr.
Robuste Unterstützung in der Gemeinschaft: Nutzen Sie eine starke Gemeinschaft und umfangreiche Ressourcen, die durch das Umarmungsgesicht bereitgestellt werden, um sicherzustellen, dass Sie die Unterstützung haben, die zur Bewältigung von Herausforderungen und Innovationen in Ihren Projekten erforderlich ist.
Die PEFT-Bibliothek (parametereffiziente Feinabstimmung) ist so konzipiert, dass sie den Feinabstimmungsprozess von großflächigen maschinellen Lernmodellen optimieren. PEFT wurde entwickelt, um die Herausforderungen der Feinabstimmung massiven Modelle mit begrenzten Rechenressourcen zu bewältigen, und konzentriert sich auf Techniken, die eine effiziente Anpassung von vorgebliebenen Modellen an neue Aufgaben mit minimalen Änderungen an den Parametern des Modells ermöglichen.
Vorteile der Verwendung von PEFT:
Effizienz: Konzentriert sich auf parametereffiziente Methoden und reduziert den Rechen- und Speicheraufwand, der mit großen Umstimmungsmodellen verbunden ist.
Barrierefreiheit: Ermöglicht es, hochmoderne Modelle für Standardhardware zu optimieren und den Zugriff auf fortschrittliche maschinelle Lerntechniken zu demokratisieren.
Geschwindigkeit: Beschleunigt den Feinabstimmungsvorgang und ermöglicht schnellere Modellaktualisierungen und Bereitstellungen.
Leistung: Gewährleistet eine hohe Leistung, selbst wenn weniger Parameter dank fortschrittlicher Feinabstimmentechniken angepasst werden.
Vielseitigkeit: Kann auf eine breite Palette von Modellen und Aufgaben angewendet werden und bietet ein vielseitiges Werkzeug für Praktiker für maschinelles Lernen.
(Zurück nach oben)
Die Backpropagation, die diese Gradienten berechnet, erfordert das Speichern von Zwischenaktivierungen des Modells. Dies kann maßgeschneiderte intensiv sein, insbesondere für große Modelle wie SDXL. Gradient CheckPointing befasst sich mit dieser Speicherherausforderung, indem sie die Speicherverwendung gegen zusätzliche Berechnungszeit abgeben. Anstatt alle Zwischenaktivierungen während des gesamten Modells während der Backpropagation zu speichern, werden die Aktivierungen, die die Aktivierungen regelmäßig aus zuvor gespeicherten Checkpoints abbauen. Dieser Ansatz reduziert die Nutzung des Spitzengedächtnisses, indem Aktivierungen während des Rückwärtspasses im Fliegen neu berechnet werden. Durch die Verwendung von Gradientenprüfungen wird der Speicheraufwand für die Speicherung aller Zwischenaktivierungen verringert. Dies ist besonders vorteilhaft, wenn Feinabstimmungsmodelle, die umfangreiche Parameteranpassungen (Dreambooth) und selektive Updates (LORA) durchlaufen haben. Während Gradient Checkpointing reduziert den Speicherverbrauch, führt der zusätzliche Rechenaufwand aufgrund einer Neubekämpfung ein. Der Kompromiss zwischen Speicher und Berechnung muss basierend auf den verfügbaren Ressourcen und den spezifischen Feinabstimmungszielen ausgeglichen werden.
Adam (adaptive Momentschätzung) ist ein beliebter Optimierungsalgorithmus, der im Deep -Lernen weit verbreitet ist. Es kombiniert adaptive Lernraten für jeden Parameter mit Impuls, um die Konvergenz zu beschleunigen. Normalerweise verwendet Adam 32-Bit-Gleitkomma-Nummern (einzelne Genauigkeit) zum Speichern von Gradienten und Aktualisierungsparametern. '8-Bit Adam' modifiziert dies durch Verwendung von 8-Bit-Festpunktnummern für diese Operationen. Durch die Verwendung von 8-Bit-Präzision anstelle von 32-Bit reduziert das 8-Bit-Adam den Speicher Fußabdruck erheblich, um Gradienten und Parameter während des Trainings zu speichern. Dies ist besonders vorteilhaft für große Modelle wie SDXL, die zahlreiche Parameter haben. Bei niedrigeren Präzisions arithmetischen Operationen können die Berechnungen aufgrund reduzierter Anforderungen an die Speicherbandbreite möglicherweise beschleunigt werden. Dies kann zu schnelleren Trainingszeiten führen, insbesondere zu Hardwarearchitekturen, die für niedrigere Präzisionsvorgänge optimiert sind. Es gibt jedoch einen Kompromiss. Die Verwendung niedrigerer Präzision kann die Genauigkeit und Stabilität des Modells beeinflussen, insbesondere wenn sie nicht sorgfältig implementiert werden. Möglicherweise sind Techniken wie Gradientenskalierung oder adaptive Präzisionsanpassung erforderlich, um potenzielle Genauigkeitsverlust zu verringern.
Es gibt zwei Präzisionsniveaus in der Gleitkomma-Präzision, 32-Bit-Schwimmpunkt und 16-Bit-Schwimmpunkt. 32-Bit-Schwimmpunkt ist die Standardgenauigkeit, die in den meisten Deep-Lern-Frameworks zum Speichern von Modellparametern und zur Durchführung von Berechnungen verwendet wird. Es bietet eine hohe numerische Genauigkeit, erfordert jedoch mehr Speicher- und Rechenressourcen. 16-Bit-Schwimmpunkt ist das reduzierte Präzisionsformat, das die halbe Erinnerung an 32-Bit-Schwimmpunkt verwendet. Es beschleunigt Berechnungen, insbesondere bei GPUs mit Tensorkernen und gleichzeitig eine ausreichende numerische Präzision für viele tiefe Lernaufgaben. Die Verwendung von 16-Bit-Präzision kann die Trainingszeiten erheblich beschleunigen, insbesondere für große Modelle wie SDXL, die komplexe Berechnungen beinhalten. Eine verringerte Präzision erfordert auch weniger Speicherbandbreite, was es möglich macht, größere Modelle oder Stapelgrößen innerhalb der verfügbaren Hardwaregrenzen zu trainieren.
(Zurück nach oben)
Anweisungen zum Einrichten Ihres Projekts mit Colab. Bitte folgen Sie dem folgenden Link, um es selbst zu trainieren. Sie finden das vorgezogene Modell im Ordner "statue_lora".
Verwenden Sie die folgenden Befehle, um die stromlitische Inferenz -Demo mit dem mit dem Marmorstatue -Datensatz trainierten Modell auszuführen.
Um die erforderlichen Pakete in einem Terminal zu installieren, geben Sie ein:
pip install -r requirements.txtIn einem Terminal: Typ:
streamlit run main.py(Zurück nach oben)