Das kürzlich veröffentlichte Flussmodell von Black Forest Labs hat für seine beeindruckenden Fähigkeiten zur Bildungsgenerierung an Popularität gewonnen. Die Größe verhinderte jedoch zunächst die Verwendung bei Standard -Verbraucherhardware. Diese Einschränkung hat die Nutzung von API -Diensten angeregt, um die lokale Modellbelastung zu vermeiden. Die On-Premise-Bereitstellung blieb jedoch aufgrund der GPU-Anforderungen kostspielig. Glücklicherweise unterstützt die Diffusors -Bibliothek von Hugging Face nun die Quantisierung über BitsandBytes und ermöglicht einen Flussinferenz auf Maschinen mit nur 8 GB GPU -RAM.
Lernziele:
Dieser Artikel ist Teil des Datenwissenschaftsblogathons.
Inhaltsverzeichnis:
Was ist Fluss?
Fluss, der von Schwarzwaldlabors (den Schöpfer stabiler Diffusion) entwickelt wurde, stellt einen signifikanten Fortschritt in Text-zu-Image-Modellen dar. Es baut auf einer stabilen Diffusion auf und bietet eine verbesserte Leistung und Ausgangsqualität. Obwohl es anfänglich ressourcenintensiv ist, ermöglichen Optimierungen eine effiziente Ausführung der Verbraucherhardware. Dieser Artikel zeigt, wie die Quantisierung die Zugänglichkeit von Fluss verbessert. Das folgende Bild zeigt den Kompromiss zwischen kreativem Potenzial und Rechenkosten.
Flux verfügt über mehrere wichtige architektonische Komponenten:
Flux ist in mehreren Versionen erhältlich: Flux-Schmnell (Open-Source), Flux-Dev (offen, mit einer restriktiveren Lizenz) und Flux-Pro (Closed-Source, api-zugänglich).
Warum ist die Quantisierung wichtig?
Quantisierung, eine Technik zur Reduzierung der Modellgröße durch Speichern von Parametern mit weniger Bits, ist entscheidend, um große Modelle auf begrenzter Hardware auszuführen. Obwohl es in der Bilderzeugung weniger verbreitet ist, reduziert es den Speicherpfotenpunkt ohne wesentliche Leistungsverlust erheblich. Neuronale Netzwerkparameter werden typischerweise in 32 Bit gespeichert, die Quantisierung kann diese auf 4 Bit reduzieren.
Quantisierung mit BitsandBytes
Die Bitsandbytes-Bibliothek ermöglicht eine effiziente K-Bit-Quantisierung für Pytorch. Die Integration in die Diffusors -Bibliothek macht den Lauffluss auf 8 GB GPUs möglich.
Wie funktioniert Bitsandbytes?
BitsandBytes quantisiert sich auf 8 und 4-Bit-Präzision. 8-Bit-Quantisierung behandelt Ausreißer unterschiedlich, um die Leistungsverschlechterung zu minimieren. Die 4-Bit-Quantisierung komprimiert das Modell, das häufig mit Qlora zur Feinabstimmung verwendet wird.
Ausführen von Fluss auf Verbraucherhardware
Schritt 1: Umgebungsaufbau
Stellen Sie eine GPU-fähige Umgebung sicher (z. B. Nvidia T4/L4 oder Google Colab). Installieren Sie die erforderlichen Pakete:
! ! !
Abhängigkeiten importieren:
Diffusoren importieren Importtransformatoren Bitsandbytes als BNB importieren von Diffusoren importieren Fluxpipeline, FluxTransformer2DModel aus Transformatoren importieren t5encodermodel Taschenlampe importieren GC importieren
Schritt 2: GPU -Speicherverwaltung
Definieren Sie eine Funktion, um den GPU -Speicher zwischen Modelllasten zu löschen:
Def Flush (): gc.collect () fackler.cuda.emppty_cache ()) fackler.cuda.reset_max_memory_allocated () fackler.cuda.reset_peak_memory_stats () spülen()
Schritt 3: Laden des 4-Bit-T5-Text-Encoders
Laden Sie den T5-Encoder mit 4-Bit-Quantisierung:
CKPT_ID = "Black-Forest-Labs/Flux.1-Dev" CKPT_4bit_id = "HF-Internal-Test/Flux.1-dev-nf4-pkg" Eingabeaufforderung = "Ein süßer Hund in Paris Fotoshooting" text_encoder_2_4bit = t5encodermodel.from_pretraed ( CKPT_4bit_id, subdolder = "text_encoder_2", )
Schritt 4: Erzeugen von Texteinbettungen
Codieren die Eingabeaufforderung mit dem quantisierten Encoder:
pipeline = fluxpipeline.from_pretrated ( "Black-Forest-Labs/Flux.1-Dev", text_encoder_2 = text_encoder_2_4bit, Transformator = keine, vae = keine, fackel_dtype = fackel.float16, ) mit fackel.no_grad (): Eingabeaufforderung_embeds, Pooled_prompt_embeds, text_ids = pipeline.encode_prompt ( Eingabeaufforderung = Eingabeaufforderung, Eingabeaufforderung_2 = Keine, max_sequence_length = 256 ) Del Pipeline spülen()
Schritt 5: Laden des 4-Bit-Transformators und der VAE
Laden Sie den Transformator und VAE im 4-Bit-Modus:
Transformator_4bit = FluxTransformer2DModel.from_Pretrained (CKPT_4bit_id, SubFolder = "Transformator") pipeline = fluxpipeline.from_pretrated ( CKPT_ID, text_encoder = keine, text_encoder_2 = keine, Tokenizer = keine, tokenizer_2 = keine, Transformator = Transformator_4bit, fackel_dtype = fackel.float16, ) pipeline.enable_model_cpu_offload ())
Schritt 6: Bildgenerierung
Generieren Sie das Bild:
print ("Denoising laufen lassen.") Höhe, Breite = 512, 768 Bilder = Pipeline ( forderung_embeds = forderd_embeds, Pooled_prompt_embeds = Pooled_prompt_embeds,, num_inference_steps = 50, GUITEL_SCALE = 5.5, Höhe = Höhe, Breite = Breite, output_type = "pil", ) .images Bilder [0]
Die Zukunft der Bildung von On-Device-Bildungen
Quantisierung und effiziente Modellbehandlung bringen leistungsstarke KI für Verbraucherhardware und demokratisierten den Zugriff auf eine fortschrittliche Bildgenerierung.
Abschluss
Der Fluss in Kombination mit der Quantisierung ermöglicht eine qualitativ hochwertige Bildgenerierung bei 8 GB GPUs. Dieser Fortschritt macht eine ausgefeilte KI für ein breiteres Publikum zugänglich.
Wichtigste Imbiss:
diffusers
und transformers
vereinfachen die Bilderzeugung.Häufig gestellte Fragen (wie original, aber neu formatiert für eine bessere Lesbarkeit)
Q1. Zweck der 4-Bit-Quantisierung? Die 4-Bit-Quantisierung reduziert den Speicherverbrauch und ermöglicht es, dass große Modelle wie Fluss effizient auf begrenzten Ressourcen ausgeführt werden.
Q2. Ändern der Textaufforderung? Ersetzen Sie die prompt
durch die gewünschte Textbeschreibung.
Q3. Bildqualität/Stil anpassen? Passen Sie num_inference_steps
(Qualität) und guidance_scale
(Eingabeaufforderung) im Pipeline -Aufruf an.
Q4. Speicherfehler in Colab bearbeiten? Gewährleistung der GPU-Verwendung, der 4-Bit-Quantisierung und der gemischten Präzision. Erwägen Sie, num_inference_steps
zu senken oder CPU -Offloading zu verwenden.
Q5. Das Skript lokal ausführen? Ja, aber sicherstellen, dass ausreichende GPU -Ressourcen und -gedächtnissen sicherstellen.
Das obige ist der detaillierte Inhalt vonWie führe ich das Flussmodell auf 8 GB GPU -RAM aus? - Analytics Vidhya. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!