Ein MLX -Flussport basiert auf der Implementierung von Huggingface -Diffusoren.
Führen Sie die leistungsstarken Flussmodelle von Black Forest Labs lokal auf Ihrem Mac aus!
MFLUX ist ein Linien-für-Linie-Port der Flux-Implementierung in der Suggingface Diffusers-Bibliothek nach Apple MLX. MFLUX wird absichtlich minimal und explizit gehalten - Netzwerkarchitekturen sind hartcodiert und es werden keine Konfigurationsdateien verwendet, mit Ausnahme der Tokenizer. Ziel ist es, eine winzige Codebasis mit dem einzigen Zweck zu haben, diese Modelle auszudrücken (wodurch zu viele Abstraktionen vermieden werden). Während die MFLUX -Prioritäten Lesbarkeit gegenüber Allgemeinheit und Leistung, kann es immer noch ziemlich schnell und sogar schneller quantisiert werden.
Alle Modelle werden in MLX von Grund auf neu implementiert und nur die Tokenisierer werden über die Huggingface -Transformatoren -Bibliothek verwendet. Davon abgesehen gibt es nur minimale Abhängigkeiten wie Numpy und Kissen für die einfache Nachbearbeitung im Bild.
Für Benutzer ist der einfachste Weg, MFLUX zu installieren, die Verwendung uv tool
: Wenn Sie uv
installiert haben, einfach:
uv tool install --upgrade mflux
Um die mflux-generate
und verwandte Befehlszeile auszuführen. Sie können zu den Nutzungsleitfäden unten springen.
Der T5 -Encoder ist vom Satzstück abhängig, das ab November 2024 kein installierbares Radartefakt für Python 3.13 enthält. Bis Google ein 3.13 Rad veröffentlicht, müssen Sie Ihr eigenes Rad mit offiziellen Bauanweisungen erstellen oder zu Ihrer Bequemlichkeit verwenden .whl
Vorbereitet von Mitwirkenden @anthonywu. Die folgenden Schritte sollten für die meisten Entwickler funktionieren, obwohl Ihr System variieren kann.
uv venv --python 3.13
python -V # e.g. Python 3.13.0rc2
source .venv/bin/activate
# for your convenience, you can use the contributor wheel
uv pip install https://github.com/anthonywu/sentencepiece/releases/download/0.2.1-py13dev/sentencepiece-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
# enable the pytorch nightly
uv pip install --pre --extra-index-url https://download.pytorch.org/whl/nightly -e .
mkdir -p mflux && cd mflux && python3 -m venv .venv && source .venv/bin/activate
Dadurch wird eine virtuelle Umgebung im mflux
-Ordner erstellt und aktiviert. Installieren Sie danach Mflux über PIP:
pip install -U mflux
git clone [email protected]:filipstrand/mflux.git
make install
make test
make lint
und make format
installieren und ruff
verwendet. Sie können Ihren Editor/Ihre IDE automatisch auf Lint/Format einrichten oder unsere bereitgestellten make
-Helper verwenden:make format
- Formatiert Ihren Codemake lint
- Zeigt Ihre FININT -Fehler und -warnungen an, fixiert aber nicht automatischmake check
pre-commit
Formatieren Sie Ihren Code und versuchen Sie, LinuT -Fehler automatisch zu behebenruff
-Dokumentation zu fortgeschrittenen Verwendungen Führen Sie den Befehl mflux-generate
, indem Sie eine Eingabeaufforderung und das Modell und einige optionale Argumente angeben. Zum Beispiel verwenden wir hier eine quantisierte Version des schnell
-Modells für 2 Schritte:
mflux-generate --model schnell --prompt " Luxury food photograph " --steps 2 --seed 2 -q 8
In diesem Beispiel wird das leistungsstärkere dev
mit 25 Zeitschritten verwendet:
mflux-generate --model dev --prompt " Luxury food photograph " --steps 25 --seed 2 -q 8
Standardmäßig werden Modelldateien in den Ordner .cache
in Ihrem Home -Verzeichnis heruntergeladen. Zum Beispiel sieht der Weg in meinem Setup so aus:
/Users/filipstrand/.cache/huggingface/hub/models--black-forest-labs--FLUX.1-dev
Um dieses Standardverhalten zu ändern, können Sie dies tun, indem Sie die Umgebungsvariable HF_HOME
ändern. Weitere Informationen zum Anpassen dieser Einstellung finden Sie in der Umarmungsgesichtsdokumentation .
Flux.1-Dev benötigt derzeit einen gewährten Zugriff auf sein Umarmungsface-Repo. Bei der Fehlerbehebung finden Sie im Ausgabe -Tracker
--prompt
(erforderlich, str
): Textbeschreibung des zu generierenden Bildes.
--model
oder -m
(erforderlich, str
): Modell für die Generation ( "schnell"
oder "dev"
).
--output
(optional, str
, Standard: "image.png"
): Ausgabebildfilename.
--seed
(optional, int
, Standard: None
): Saatgut für die Zufallszahlengenerierung. Standard ist zeitbasiert.
--height
(optional, int
, Standardeinstellung: 1024
): Höhe des Ausgangsbildes in Pixel.
--width
(optional, int
, Standard: 1024
): Breite des Ausgabebildes in Pixel.
--steps
(optional, int
, Standard: 4
): Anzahl der Inferenzschritte.
--guidance
(optional, float
, Standard: 3.5
): Leitlinienskala (nur für "dev"
-Modell verwendet).
--path
(optional, str
, Standard: None
): Pfad zu einem lokalen Modell auf der Festplatte.
--quantize
oder -q
(optional, int
, Standard: None
): Quantisierung (wählen Sie zwischen 4
oder 8
).
--lora-paths
(optional, [str]
, Standard: None
): Die Pfade zu den Lora-Gewichten.
--lora-scales
(optional, [float]
, Standard: None
): Die Skala für jede jeweilige Lora (standardmäßig 1.0
, wenn nicht angegeben und nur ein Lora-Gewicht geladen wird.)
--metadata
(optional): Exportieren einer .json
Datei mit den Metadaten für das Bild mit demselben Namen. (Auch ohne diese Flagge wird die Bildmetadaten gespeichert und kann mit exiftool image.png
angezeigt werden)
--controlnet-image-path
(erforderlich, str
): Pfad zum lokalen Bild, das von ControlNET verwendet wird, um die Ausgabeerzeugung zu leiten.
--controlnet-strength
(optional, float
, Standard: 0.4
): Einflussgrad Das Kontrollbild hat auf die Ausgabe. Reicht von 0.0
(kein Einfluss) bis 1.0
(Volleinfluss).
--controlnet-save-canny
(optional, bool, Standard: Falsch): Wenn gesetzt, speichert das von ControlNET verwendete Referenzbild für Kantenerkennung.
--init-image-path
(optional, str
, Standard: None
): Lokaler Pfad zum anfänglichen Bild für die Bild-zu-Image-Erzeugung.
--init-image-strength
(optional, float
, Standard: 0.4
): Steuert, wie stark das anfängliche Bild das Ausgabebild beeinflusst. Ein Wert von 0.0
bedeutet keinen Einfluss. (Standard ist 0.4
)
--config-from-metadata
oder -C
(optional, str
): [Experimentell] Pfad zu einer vorherigen Datei, die über --metadata
gespeichert wurde, oder eine kompatible handgefertigte Konfigurationsdatei, die sich an das erwartete Args-Schema hält.
{
"$schema" : " http://json-schema.org/draft-07/schema# " ,
"type" : " object " ,
"properties" : {
"seed" : {
"type" : [ " integer " , " null " ]
},
"steps" : {
"type" : [ " integer " , " null " ]
},
"guidance" : {
"type" : [ " number " , " null " ]
},
"quantize" : {
"type" : [ " null " , " string " ]
},
"lora_paths" : {
"type" : [ " array " , " null " ],
"items" : {
"type" : " string "
}
},
"lora_scales" : {
"type" : [ " array " , " null " ],
"items" : {
"type" : " number "
}
},
"prompt" : {
"type" : [ " string " , " null " ]
}
}
}
{
"model" : " dev " ,
"seed" : 42 ,
"steps" : 8 ,
"guidance" : 3.0 ,
"quantize" : 4 ,
"lora_paths" : [
" /some/path1/to/subject.safetensors " ,
" /some/path2/to/style.safetensors "
],
"lora_scales" : [
0.8 ,
0.4
],
"prompt" : " award winning modern art, MOMA "
}
Oder erstellen und führen Sie mit der richtigen Python -Umgebung ein separates Skript wie das folgende aus:
from mflux import Flux1 , Config
# Load the model
flux = Flux1 . from_alias (
alias = "schnell" , # "schnell" or "dev"
quantize = 8 , # 4 or 8
)
# Generate an image
image = flux . generate_image (
seed = 2 ,
prompt = "Luxury food photograph" ,
config = Config (
num_inference_steps = 2 , # "schnell" works well with 2-4 steps, "dev" works well with 20-25 steps
height = 1024 ,
width = 1024 ,
)
)
image . save ( path = "image.png" )
Weitere Optionen zum Konfigurieren von MFLUX finden Sie in generate.py.
Diese Zahlen basieren auf dem nicht quantisierten schnell
Modell, wobei die Konfiguration im folgenden Code-Snippet bereitgestellt wird. Führen Sie Folgendes aus: zum Zeitpunkt Ihrer Maschine:
time mflux-generate
--prompt " Luxury food photograph "
--model schnell
--steps 2
--seed 2
--height 1024
--width 1024
Um die Spezifikation Ihrer Maschine zu finden (einschließlich der Anzahl der CPU -Kerne, GPU -Kerne und Speicher, führen Sie den folgenden Befehl aus:
system_profiler SPHardwareDataType SPDisplaysDataType
Gerät | M-Serie | Benutzer | Gemeldete Zeit | Notizen |
---|---|---|---|---|
MAC Studio | 2023 M2 Ultra | @awni | <15s | |
MacBook Pro | 2024 M4 Max (128 GB) | @ivanfioravanti | ~ 19s | |
MacBook Pro | 2023 M3 Max | @karpathie | ~ 20s | |
- - | 2023 m2 max (96 GB) | @explorigin | ~ 25s | |
MAC Mini | 2024 M4 Pro (64 GB) | @Stoobs | ~ 34s | |
MAC Mini | 2023 M2 Pro (32 GB) | @leekichko | ~ 54s | |
- - | 2022 M1 max (64 GB) | @Bosseparra | ~ 55s | |
MacBook Pro | 2023 m2 max (32 GB) | @filipstrand | ~ 70s | |
- - | 2023 M3 Pro (36 GB) | @Kush-Gupt | ~ 80er Jahre | |
MacBook Pro | 2021 M1 Pro (32 GB) | @filipstrand | ~ 160er Jahre | |
- - | 2021 M1 Pro (16 GB) | @QW-in | ~ 175S | Könnte Ihren Mac einfrieren |
MacBook Air | 2020 M1 (8 GB) | @mbvillaverde | ~ 335S | Mit Auflösung 512 x 512 |
Beachten Sie, dass diese Zahlen die Anwendung von Grund auf neu starten. Dies bedeutet exiftool image.png
dass das Modell E/A, das Einstellen/Quantisieren von Gewichten usw. durchzuführen ist Dauer der Denoising -Schleife (ohne Texteinbettung).
Diese Benchmarks sind nicht sehr wissenschaftlich und sollen nur Ballpark -Zahlen geben. Sie wurden in verschiedenen Zeiten mit unterschiedlichen MFLUX- und MLX-Versionen usw. durchgeführt. Zusätzliche Hardwareinformationen wie die Anzahl der GPU-Kerne, MAC-Geräte usw. sind nicht immer bekannt.
Bei der Erzeugung eines Bildes gibt es nur eine einzige Quelle der Zufälligkeit: das anfängliche latente Array. In dieser Implementierung wird dieser anfängliche Latente durch den Parameter seed
vollständig deterministisch gesteuert. Wenn wir jedoch eine feste Instanz dieses latenten Arrays importieren, das aus der Implementierung von Diffusoren gespeichert ist, erzeugt MFLUX ein identisches Bild für die Implementierung von Diffusoren (unter der Annahme einer festen Eingabeaufforderung und der Verwendung der Standardparametereinstellungen in der Diffusoren -Einrichtung).
Die folgenden Bilder veranschaulichen diese Äquivalenz. In allen Fällen wurde das Schnell -Modell für zwei Zeitschritte ausgeführt. Die Implementierung von Diffusoren wurde im CPU -Modus ausgeführt. Die Präzision für MFLUX kann in der Konfigurationsklasse eingestellt werden. Es gibt typischerweise einen spürbaren, aber sehr geringen Unterschied im endgültigen Bild beim Umschalten zwischen 16 Bit und 32 -Bit -Präzision.
Luxury food photograph
detailed cinematic dof render of an old dusty detailed CRT monitor on a wooden desk in a dim room with items around, messy dirty room. On the screen are the letters "FLUX" glowing softly. High detail hard surface render
photorealistic, lotr, A tiny red dragon curled up asleep inside a nest, (Soft Focus) , (f_stop 2.8) , (focal_length 50mm) macro lens f/2. 8, medieval wizard table, (pastel) colors, (cozy) morning light filtering through a nearby window, (whimsical) steam shapes, captured with a (Canon EOS R5) , highlighting (serene) comfort, medieval, dnd, rpg, 3d, 16K, 8K
A weathered fisherman in his early 60s stands on the deck of his boat, gazing out at a stormy sea. He has a thick, salt-and-pepper beard, deep-set blue eyes, and skin tanned and creased from years of sun exposure. He's wearing a yellow raincoat and hat, with water droplets clinging to the fabric. Behind him, dark clouds loom ominously, and waves crash against the side of the boat. The overall atmosphere is one of tension and respect for the power of nature.
Luxury food photograph of an italian Linguine pasta alle vongole dish with lots of clams. It has perfect lighting and a cozy background with big bokeh and shallow depth of field. The mood is a sunset balcony in tuscany. The photo is taken from the side of the plate. The pasta is shiny with sprinkled parmesan cheese and basil leaves on top. The scene is complemented by a warm, inviting light that highlights the textures and colors of the ingredients, giving it an appetizing and elegant look.
MFLUX unterstützt den Auslauf von Fluss im 4-Bit- oder 8-Bit-quantisierten Modus. Durch das Ausführen einer quantisierten Version kann der Erzeugungsprozess erheblich beschleunigt und den Speicherverbrauch durch mehrere Gigabyte reduziert werden. Quantisierte Modelle nehmen auch weniger Speicherplatz ein.
mflux-generate
--model schnell
--steps 2
--seed 2
--quantize 8
--height 1920
--width 1024
--prompt " Tranquil pond in a bamboo forest at dawn, the sun is barely starting to peak over the horizon, panda practices Tai Chi near the edge of the pond, atmospheric perspective through the mist of morning dew, sunbeams, its movements are graceful and fluid — creating a sense of harmony and balance, the pond’s calm waters reflecting the scene, inviting a sense of meditation and connection with nature, style of Howard Terpning and Jessica Rossier "
In diesem Beispiel werden Gewichte zur Laufzeit quantisiert - dies ist bequem, wenn Sie keine quantisierte Kopie der Gewichte auf die Festplatte speichern möchten, aber dennoch von der potenziellen Beschleunigung und RAM -Reduktion profitieren möchten.
Durch die Auswahl des Flags --quantize
oder -q
ist 4
, 8
oder vollständig entfernt, erhalten wir alle 3 Bilder oben. Wie zu sehen ist, gibt es einen kaum Unterschied zwischen den Bildern (insbesondere zwischen dem 8-Bit und dem nicht quantisierten Ergebnis). Die Bildgenerierungszeiten in diesem Beispiel basieren auf einer 2021 M1 Pro (32 GB) Maschine. Obwohl die Bilder nahezu identisch sind, gibt es eine ~ 2x-Geschwindigkeit, indem die 8-Bit-quantisierte Version auf dieser speziellen Maschine ausgeführt wird. Im Gegensatz zur nicht quantisierten Version ist die 8-Bit-Version der Swap-Speicherverbrauch drastisch reduziert und die GPU-Auslastung ist während der gesamten Generation nahezu 100%. Die Ergebnisse hier können zwischen verschiedenen Maschinen variieren.
Die Modellgrößen für schnell
und dev
in verschiedenen Quantisierungsebenen sind wie folgt:
4 Bit | 8 Bit | Original (16 Bit) |
---|---|---|
9,85 GB | 18.16GB | 33.73GB |
Der Grund, warum Gewichte nicht vollständig halbiert werden, liegt darin, dass eine kleine Anzahl von Gewichten nicht quantisiert und in voller Präzision aufbewahrt wird.
Um eine lokale Kopie der quantisierten Gewichte zu speichern, führen Sie den Befehl mflux-save
so aus:
mflux-save
--path " /Users/filipstrand/Desktop/schnell_8bit "
--model schnell
--quantize 8
Beachten Sie, dass Sie beim Speichern einer quantisierten Version die originalen Umarmungsgewichte benötigen.
Es ist auch möglich, Lora -Adapter beim Speichern des Modells, z. B.
mflux-save
--path " /Users/filipstrand/Desktop/schnell_8bit "
--model schnell
--quantize 8
--lora-paths " /path/to/lora.safetensors "
--lora-scales 0.7
Beim Erstellen von Bildern mit einem solchen Modell muss kein Lora -Adapter angegeben werden, da es bereits in die gespeicherten quantisierten Gewichte gebacken wird.
Um ein neues Bild aus dem quantisierten Modell zu generieren, geben Sie einfach einen --path
an, an dem es gespeichert wurde:
mflux-generate
--path " /Users/filipstrand/Desktop/schnell_8bit "
--model schnell
--steps 2
--seed 2
--height 1920
--width 1024
--prompt " Tranquil pond in a bamboo forest at dawn, the sun is barely starting to peak over the horizon, panda practices Tai Chi near the edge of the pond, atmospheric perspective through the mist of morning dew, sunbeams, its movements are graceful and fluid — creating a sense of harmony and balance, the pond’s calm waters reflecting the scene, inviting a sense of meditation and connection with nature, style of Howard Terpning and Jessica Rossier "
HINWEIS: Beim Laden eines quantisierten Modells von der Festplatte müssen Sie nicht in -q
-Flagge weitergeben, da wir dies aus den Gewichtsmetadaten schließen können.
Hinweis: Sobald wir ein lokales Modell (quantisiert oder nicht) über das Argument --path
angegeben haben, sind die Cache -Modelle von Huggingface -Cache nicht erforderlich, um das Modell zu starten. Mit anderen Worten, Sie können den 34-GB-Diskspace (pro Modell) zurückerobern, indem Sie das vollständige 16-Bit-Modell aus dem Cache von Suggingface-Cache löschen, wenn Sie dies wünschen.
Wenn Sie die vollständigen Modelle nicht herunterladen und selbst quantisieren möchten, sind die 4-Bit-Gewichte hier für einen direkten Download erhältlich:
MFLUX unterstützt auch das Ausführen eines nicht quantisierten Modells direkt von einem benutzerdefinierten Ort aus. Im folgenden Beispiel wird das Modell in /Users/filipstrand/Desktop/schnell
platziert:
mflux-generate
--path " /Users/filipstrand/Desktop/schnell "
--model schnell
--steps 2
--seed 2
--prompt " Luxury food photograph "
Beachten Sie, dass beim Laden eines Modells von der Festplatte das Flag --model
-Flag eingestellt werden muss.
Beachten Sie auch, dass im Gegensatz zu der typischen alias
-Art der Initialisierung des Modells (das intern umgeht, dass die erforderlichen Ressourcen heruntergeladen werden) beim Laden eines Modells direkt von der Festplatte benötigt, dass die heruntergeladenen Modelle wie folgt aussehen:
.
├── text_encoder
│ └── model.safetensors
├── text_encoder_2
│ ├── model-00001-of-00002.safetensors
│ └── model-00002-of-00002.safetensors
├── tokenizer
│ ├── merges.txt
│ ├── special_tokens_map.json
│ ├── tokenizer_config.json
│ └── vocab.json
├── tokenizer_2
│ ├── special_tokens_map.json
│ ├── spiece.model
│ ├── tokenizer.json
│ └── tokenizer_config.json
├── transformer
│ ├── diffusion_pytorch_model-00001-of-00003.safetensors
│ ├── diffusion_pytorch_model-00002-of-00003.safetensors
│ └── diffusion_pytorch_model-00003-of-00003.safetensors
└── vae
└── diffusion_pytorch_model.safetensors
Dies spiegelt wider, wie die Ressourcen für den Fluss in das Umarmungsface -Repo platziert werden.1. Im Gegensatz zu quantisierten, die direkt aus diesem Projekt exportiert wurden, müssen ein wenig anders verarbeitet werden, weshalb wir diese Struktur oben benötigen.
Eine Möglichkeit, die Bilderzeugung zu konditionieren, besteht darin, von einem vorhandenen Bild zu beginnen und MFLUX neue Variationen zu erzeugen. Verwenden Sie das Flag --init-image-path
Flag, um das Referenzbild anzugeben, und die --init-image-strength
, um zu steuern, wie sehr das Referenzbild die Erzeugung leiten soll. Angesichts des folgenden Referenzbildes wurde beispielsweise der folgende Befehl das erste Bild unter Verwendung der Skizzierlora erstellt:
mflux-generate
--prompt " sketching of an Eiffel architecture, masterpiece, best quality. The site is lit by lighting professionals, creating a subtle illumination effect. Ink on paper with very fine touches with colored markers, (shadings:1.1), loose lines, Schematic, Conceptual, Abstract, Gestural. Quick sketches to explore ideas and concepts. "
--init-image-path " reference.png "
--init-image-strength 0.3
--lora-paths Architectural_Sketching.safetensors
--lora-scales 1.0
--model dev
--steps 20
--seed 43
--guidance 4.0
--quantize 8
--height 1024
--width 1024
Wie bei ControlNET kombiniert diese Technik gut mit LORA -Adaptern:
In den obigen Beispielen werden die folgenden Loras verwendet, die Skizzieren, Animationsaufnahmen und Flux-Film-Kamera verwendet werden.
MFLUX Support Lading -geschulte LORA -Adapter (tatsächliche Schulungsunterstützung kommt).
Das folgende Beispiel the_hound lora von @thelastben:
mflux-generate --prompt " sandor clegane " --model dev --steps 20 --seed 43 -q 8 --lora-paths " sandor_clegane_single_layer.safetensors "
Das folgende Beispiel ist flux_1_dev_lora_paper-cutout-Stil Lora von @norod78:
mflux-generate --prompt " pikachu, Paper Cutout Style " --model schnell --steps 4 --seed 43 -q 8 --lora-paths " Flux_1_Dev_LoRA_Paper-Cutout-Style.safetensors "
Beachten Sie, dass in Lora trainierte Gewichte normalerweise mit einem Auslöser mit Wort oder Ausdruck trainiert werden. Im letzteren Fall sollte der Satz beispielsweise den Ausdruck "Papierausschnittstil" enthalten.
Beachten Sie auch, dass dieselben Lora -Gewichte sowohl mit den schnell
als auch mit den dev
gut funktionieren können. Siehe das ursprüngliche LORA -Repository, um zu sehen, für welchen Modus es geschult wurde.
Mehrere Loras können eingesandt werden, um die Auswirkungen der einzelnen Adapter zu kombinieren. Das folgende Beispiel kombiniert beide oben genannten Loras:
mflux-generate
--prompt " sandor clegane in a forest, Paper Cutout Style "
--model dev
--steps 20
--seed 43
--lora-paths sandor_clegane_single_layer.safetensors Flux_1_Dev_LoRA_Paper-Cutout-Style.safetensors
--lora-scales 1.0 1.0
-q 8
Um den Unterschied zu erkennen, zeigt dieses Bild die vier Fälle an: einen der beiden Adapter, die vollständig aktiv, teilweise aktiv sind und überhaupt keine Lora. Das obige Beispiel zeigt auch die Verwendung der Flagge --lora-scales
.
Da verschiedene Feinabstimmungsdienste unterschiedliche Implementierungen des Flusses verwenden können, können sich die entsprechenden LORA-Gewichte, die auf diesen Diensten geschult sind, voneinander unterscheiden. Das Ziel von Mflux ist es, die häufigsten zu unterstützen. Die folgende Tabelle zeigt die aktuell unterstützten Formate:
Unterstützt | Name | Beispiel | Notizen |
---|---|---|---|
✅ | Bfl | Civitai - Impressionismus | Viele Dinge über Civitai scheinen zu funktionieren |
✅ | Diffusoren | Flux_1_dev_lora_paper-cutout-Stil | |
XLABS-AI | Flux-Realismlora |
Um zusätzliche Formate, Beispiele oder andere Vorschläge im Zusammenhang mit der Unterstützung von LORA -Format zu melden, finden Sie in Ausgabe 47.
MFLUX verfügt über die Steuerung der Steuerung für eine noch feinkörnigere Kontrolle über die Bilderzeugung. Durch Bereitstellung eines Referenzbildes über --controlnet-image-path
und einen Stärkeparameter über --controlnet-strength
können Sie die Erzeugung zum Referenzbild führen.
mflux-generate-controlnet
--prompt " A comic strip with a joker in a purple suit "
--model dev
--steps 20
--seed 1727047657
--height 1066
--width 692
-q 8
--lora-paths " Dark Comic - s0_8 g4.safetensors "
--controlnet-image-path " reference.png "
--controlnet-strength 0.5
--controlnet-save-canny
Dieses Beispiel kombiniert das ControlNET -Referenzbild mit dem Lora Dark Comic Flux .
generate-controlnet
. Im Moment ist das verwendete ControlNET Instantx/Flux.1-Dev-Controlnet-Canny, das für das dev
trainiert wurde. Es kann gut mit schnell
funktionieren, aber die Leistung ist nicht garantiert.
ControlNet kann auch zusammen mit Lora -Adaptern zusammenarbeiten. Im folgenden Beispiel wird das gleiche Referenzbild als ControlNET -Eingabe mit verschiedenen aktiven Eingabeaufforderungen und LORA -Adaptern verwendet.
export HF_HUB_DISABLE_PROGRESS_BARS=1
--args
zu übergebenalias mflux-dev='mflux-generate --model dev'
alias mflux-schnell='mflux-generate --model schnell --metadata'
Dieses Projekt ist unter der MIT -Lizenz lizenziert.