Wie man Flux Schnell lokal auf einem M3 Max MacBook Pro verwendet

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

Build APIs Faster & Together in Apidog

Wie man Flux Schnell lokal auf einem M3 Max MacBook Pro verwendet

Start for free
Inhalte
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 und width: 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:

  1. Schließen Sie unnötige Anwendungen: Stellen Sie sicher, dass andere ressourcenintensive Anwendungen geschlossen werden, um RAM- und CPU-Ressourcen freizugeben.
  2. Anpassen der Bildabmessungen: Wenn Sie schnellere Generierungszeiten benötigen, können Sie die Parameter height und width reduzieren. Umgekehrt können Sie sie erhöhen, um eine höhere Qualität zu erzielen, zulasten längerer Generierungszeiten.
  3. 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.
  4. 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.
  5. 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:

  1. Aktualisieren Sie die Abhängigkeiten: Stellen Sie sicher, dass alle Pakete auf dem neuesten Stand sind, insbesondere PyTorch und Diffusers.
  2. Ü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.
  3. Ü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.
  4. 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!