Möchten Sie FLUX online ausprobieren, ohne zusätzlichen Aufwand?
Sie können FLUX.1 Pro, Schnell und Dev jetzt bei Anakin AI ausführen!
Flux Schnell ist ein robustes Modell zur Text-zu-Bild-Generierung, das in der Lage ist, hochwertige Bilder aus textuellen Eingaben zu erstellen. In diesem Tutorial zeigen wir Ihnen die Schritte, um Flux Schnell lokal auf einem M3 Max MacBook Pro einzurichten und auszuführen. Diese Konfiguration ermöglicht eine effiziente Bildgenerierung mit bis zu 40 GB RAM, wobei jedes Bild etwa 30 Sekunden zum Erstellen benötigt.
Anforderungen, um Flux.1 Pro lokal auf Mac auszuführen
Bevor wir beginnen, stellen Sie sicher, dass Ihr System die folgenden Anforderungen erfüllt:
- MacBook Pro mit M3 Max Chip
- macOS (neueste Version empfohlen)
- Mindestens 40 GB verfügbarer RAM
- Anaconda oder Miniconda installiert
- Internetverbindung zum Herunterladen der Abhängigkeiten
Schritt-für-Schritt-Tutorial, um Flux.1 Pro lokal auf Mac auszuführen
Schritt-für-Schritt-Tutorial, um Flux.1 Pro lokal auf Mac auszuführen
Schritt 1: Die Umgebung einrichten
Zuerst erstellen wir eine neue Conda-Umgebung und aktivieren diese:
conda create -n flux python=3.11
conda activate flux
Schritt 2: Abhängigkeiten installieren
Jetzt installieren wir die erforderlichen Pakete:
pip install torch==2.3.1
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3
Schritt 3: Das Python-Skript vorbereiten
Erstellen Sie eine neue Python-Datei mit dem Namen flux_schnell.py
und fügen Sie den folgenden Code hinzu:
import torch
from diffusers import FluxPipeline
import diffusers# Ändern Sie die Rope-Funktion, um das MPS-Gerät zu behandeln
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "Die Dimension muss gerade sein."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# Laden Sie das Flux Schnell Modell
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
# Definieren Sie das Prompt
prompt = "Eine Katze mit einem Schild, auf dem steht: Hallo Welt"
# Generieren Sie das Bild
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
# Speichern Sie das generierte Bild
out.save("flux_image.png")
Schritt 4: Führen Sie das Skript aus
Führen Sie das Python-Skript aus:
python flux_schnell.py
Dies generiert ein Bild basierend auf dem Prompt “Eine Katze mit einem Schild, auf dem steht: Hallo Welt” und speichert es als “flux_image.png” im gleichen Verzeichnis.
Den Code verstehen
Schauen wir uns die wichtigsten Komponenten des Skripts an:
Abhängigkeiten importieren
import torch
from diffusers import FluxPipeline
import diffusers
Diese Zeilen importieren die notwendigen Module: PyTorch für Tensoroperationen, FluxPipeline aus der Diffusers-Bibliothek zur Nutzung des Flux Schnell Modells und das Diffusers-Modul für zusätzliche Funktionen.
Die Rope-Funktion ändern
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "Die Dimension muss gerade sein."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)diffusers.models.transformers.transformer_flux.rope = new_flux_rope
Dieser Abschnitt ändert die Rope (Rotary Position Embedding) Funktion, um das MPS (Metal Performance Shaders) Gerät zu unterstützen, das in Apple Silicon Chips verwendet wird. Er gewährleistet die Kompatibilität mit dem M3 Max Chip, indem Tensoren bei Bedarf auf die CPU verschoben werden.
Das Modell laden
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
Dieser Code lädt das Flux Schnell Modell aus dem Hugging Face Modellhub. Er gibt die Modellversion an, stellt den Datentyp auf bfloat16 für Effizienz ein und verschiebt das Modell zum MPS-Gerät.
Das Bild generieren
prompt = "Eine Katze mit einem Schild, auf dem steht: Hallo Welt"out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
Hier definieren wir den Prompt und nutzen das geladene Modell, um ein Bild zu generieren. Die Parameter steuern verschiedene Aspekte des Generierungsprozesses:
guidance_scale
: Auf 0 gesetzt für bedingungslose Generierung.height
undwidth
: Setzen Sie die Abmessungen des Ausgabebildes auf 1024x1024 Pixel.num_inference_steps
: Steuert die Anzahl der Rauschunterdrückungsschritte (4 in diesem Fall für schnellere Generierung).max_sequence_length
: Begrenzt die maximale Länge der Eingabesequenz.
Das Bild speichern
out.save("flux_image.png")
Schließlich speichert diese Zeile das generierte Bild als PNG-Datei mit dem Namen “flux_image.png” im aktuellen Verzeichnis.
Leistung optimieren
Um das Beste aus Ihrem M3 Max MacBook Pro herauszuholen und die ~30-Sekunden-Generierungszeit bei der Nutzung von bis zu 40 GB RAM zu erreichen, beachten Sie die folgenden Tipps:
- Schließen Sie unnötige Anwendungen: Stellen Sie sicher, dass andere ressourcenintensive Anwendungen geschlossen werden, um RAM- und CPU-Ressourcen freizugeben.
- Anpassen der Bildabmessungen: Wenn Sie schnellere Generierungszeiten benötigen, können Sie die Parameter
height
undwidth
reduzieren. Umgekehrt können Sie sie erhöhen, um eine höhere Qualität zu erzielen, zulasten längerer Generierungszeiten. - Experimentieren Sie mit
num_inference_steps
: Eine Erhöhung dieses Wertes kann zu qualitativ hochwertigeren Bildern führen, erhöht jedoch die Generierungszeit. Eine Reduzierung beschleunigt den Prozess, kann jedoch die Bildqualität verringern. - Verwenden Sie bfloat16-Präzision: Wie bereits im Skript implementiert, hilft der Einsatz des Datentyps
torch.bfloat16
, den Speicherverbrauch zu reduzieren und möglicherweise die Geschwindigkeit zu erhöhen, ohne nennenswerte Qualitätsverluste. - Batch-Verarbeitung: Wenn Sie mehrere Bilder generieren müssen, sollten Sie in Betracht ziehen, eine Batch-Verarbeitung zu implementieren, um die GPU effizienter zu nutzen.
Fehlerbehebung
Falls Sie Probleme beim Ausführen von Flux Schnell auf Ihrem M3 Max MacBook Pro haben, versuchen Sie Folgendes:
- Aktualisieren Sie die Abhängigkeiten: Stellen Sie sicher, dass alle Pakete auf dem neuesten Stand sind, insbesondere PyTorch und Diffusers.
- Überprüfen Sie die CUDA-Kompatibilität: Obwohl der M3 Max MPS verwendet, können einige CUDA-bezogene Fehler auftreten. Stellen Sie sicher, dass Sie die richtigen Versionen von PyTorch und verwandten Bibliotheken für Ihr System verwenden.
- Überwachen Sie die Ressourcennutzung: Verwenden Sie die Aktivitätsanzeige, um RAM- und CPU-Nutzung im Auge zu behalten. Wenn Sie ständig an die Grenzen stoßen, müssen Sie möglicherweise die Modellparameter anpassen oder mehr Systemressourcen freigeben.
- Cache leeren: Wenn Sie speicherbezogene Fehler haben, versuchen Sie, den PyTorch-Cache zu leeren:
torch.cuda.empty_cache()
5. Kernel neu starten: Wenn Sie ein Jupyter-Notebook oder eine ähnliche Umgebung verwenden, versuchen Sie, den Kernel neu zu starten, wenn Sie auf anhaltende Fehler stoßen.
Fazit
Die lokale Ausführung von Flux Schnell auf Ihrem M3 Max MacBook Pro bietet leistungsstarke Möglichkeiten zur Text-zu-Bild-Generierung. Mit der im Tutorial beschriebenen Einrichtung können Sie hochwertige Bilder aus textuellen Beschreibungen in etwa 30 Sekunden erstellen und dabei bis zu 40 GB RAM nutzen. Bitte beachten Sie, dass die Leistung je nach Hardware und Komplexität der Eingaben variieren kann.
Experimentieren Sie gerne mit verschiedenen Parametern, um die beste Balance zwischen Geschwindigkeit und Bildqualität für Ihre Bedürfnisse zu erreichen. Da sich KI-Modelle und Hardware weiterhin weiterentwickeln, stehen noch beeindruckendere Ergebnisse bevor. Viel Erfolg beim Generieren!