Narzędzia AI 101

Flux przez Black Forest Labs: Następny krok w modelach tekst-do-obrazu. Czy jest lepszy niż Midjourney?

mm
Dodaj Unite.AI do preferowanych źródeł w Google
Black Forest Labs Open-Source FLUX.1: A 12 Billion Parameter Transformer Capable of Generating Images

Black Forest Labs, zespół odpowiedzialny za przełomowy model Stable Diffusion, wydał Flux – pakiet modeli stanowiących najwyższy poziom rozwoju w dziedzinie generowania obrazów za pomocą sztucznej inteligencji. Czy Flux naprawdę reprezentuje wyraźny postęp w tej dziedzinie i jak się ma do liderów branży, takich jak Midjourney? Zanurzmy się głęboko w świat Flux i odkryjmy jego potencjał w kształtowaniu przyszłości sztuki i mediów generowanych za pomocą sztucznej inteligencji.

Początki Black Forest Labs

Black Forest Labs to nie tylko kolejna firma zajmująca się sztuczną inteligencją; to potęga talentu z rekordem rozwoju podstawowych modeli generatywnych. Zespół składa się z twórców VQGAN, Latent Diffusion oraz rodziny modeli Stable Diffusion, które wstrząsnęły światem sztuki sztucznej inteligencji.

Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

Z udaną rundą finansowania Series Seed w wysokości 31 milionów dolarów pod przewodnictwem Andreessen Horowitz i wsparciem znanych aniołów biznesu, Black Forest Labs umieściło się na czele badań nad generatywną sztuczną inteligencją. Ich misja jest jasna: rozwijać i doskonalić najnowocześniejsze głębokie modele uczenia maszynowego dla mediów, takich jak obrazy i filmy, oraz poszerzać granice kreatywności, wydajności i różnorodności.

Przedstawienie rodziny modeli Flux

Black Forest Labs wprowadziło pakiet modeli FLUX.1, zaprojektowany, aby ustanowić nowe standardy w szczegółowości obrazu, przestrzeganiu podpowiedzi, stylistycznej różnorodności i złożoności scen. Rodzina Flux składa się z trzech wariantów, każdy dostosowany do różnych przypadków użycia i poziomów dostępności:

  1. FLUX.1 [pro]: Flagowy model, oferujący najwyższy poziom wydajności w generowaniu obrazów z najlepszym przestrzeganiem podpowiedzi, jakością wizualną, szczegółowością obrazu i różnorodnością wyjścia. Dostępny za pośrednictwem interfejsu API, jest pozycjonowany jako opcja premium dla profesjonalnego i przedsiębiorczego użycia.
  2. FLUX.1 [dev]: Model o otwartych wagach, destylowany z wytycznymi, przeznaczony do zastosowań niekomercyjnych. Został zaprojektowany, aby osiągnąć podobną jakość i zdolności przestrzegania podpowiedzi, jak wersja pro, przy jednoczesnej większej wydajności.
  3. FLUX.1 [schnell]: Najszybszy model w pakiecie, zoptymalizowany do rozwoju lokalnego i użycia osobistego. Jest dostępny na licencji Apache 2.0, co sprawia, że jest dostępny dla szerokiej gamy zastosowań i eksperymentów.

Przedstawię kilka unikalnych i kreatywnych przykładów podpowiedzi, które pokazują możliwości FLUX.1. Te podpowiedzi będą podkreślać moc modelu w renderowaniu tekstu, skomplikowanych kompozycjach i szczegółach, takich jak ręce.

  • Artystyczne łączenie stylów z tekstem: “Stwórz portret Vincenta van Gogha w jego charakterystycznym stylu, ale zastąp jego brodę wijącymi się pociągnięciami pędzla, tworzącymi słowa ‘Starry Night’ w kursywie.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

  • Dynamiczna scena akcji z integracją tekstu: “Superbohater wybuchający przez stronę komiksu. Linie akcji i efekty dźwiękowe powinny tworzyć nazwę bohatera ‘FLUX FORCE’ w wyrazistym, dynamicznym typografii.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

  • Surrealistyczna koncepcja z precyzyjnym umieszczaniem obiektów: “Zbliżenie na uroczego kota w kolorach brązowym i białym pod światłem okiennym. Ostre skupienie na teksturze i kolorze oczu. Naturalne oświetlenie, aby uchwycić autentyczny połysk i głębię.”
Black Forest Labs Open-Source FLUX.1

Black Forest Labs Open-Source FLUX.1

Te podpowiedzi są zaprojektowane, aby wyzwolić możliwości FLUX.1 w renderowaniu tekstu, skomplikowanych kompozycjach i szczegółach, jednocześnie pokazując jego potencjał w kreatywnym i unikalnym generowaniu obrazów.

Innowacje techniczne za Flux

W sercu imponujących możliwości Flux leży seria innowacji technicznych, które wyróżniają go spośród poprzedników i współczesnych:

Modele przepływu zasilane przez transformery w skali

Wszystkie publicznie dostępne modele FLUX.1 są zbudowane na hybrydowej architekturze, łączącej wielomodalne i równoległe bloki transformatorów dyfuzyjnych, skalowane do imponujących 12 miliardów parametrów. To reprezentuje znaczący skok w rozmiarze i złożoności modelu w porównaniu z wieloma istniejącymi modelami tekst-do-obrazu.

Modele Flux poprawiają wcześniejsze modele dyfuzyjne, wdrażając dopasowanie przepływu, ogólny i konceptualnie prosty sposób szkolenia modeli generatywnych. Dopasowanie przepływu zapewnia bardziej elastyczną ramę dla modelowania generatywnego, z modelami dyfuzyjnymi jako specjalnym przypadkiem w ramach tego szerszego podejścia.

Aby poprawić wydajność modelu i wydajność sprzętu, Black Forest Labs zintegrował zagnieżdżone wbudowania pozycyjne i warstwy uwagi równoległej. Te techniki pozwalają na lepsze radzenie sobie z relacjami przestrzennymi w obrazach oraz bardziej wydajne przetwarzanie danych w dużych skalach.

Innowacje architektoniczne

Rozłóżmy niektóre z kluczowych elementów architektonicznych, które przyczyniają się do wydajności Flux:

  1. Architektura hybrydowa: Łącząc wielomodalne i równoległe bloki transformatorów dyfuzyjnych, Flux może skutecznie przetwarzać zarówno informacje tekstowe, jak i wizualne, prowadząc do lepszego wyrównania między podpowiedziami a wygenerowanymi obrazami.
  2. Dopasowanie przepływu: To podejście pozwala na bardziej elastyczne i wydajne szkolenie modeli generatywnych. Zapewnia ujednolicowaną ramę, która obejmuje modele dyfuzyjne i inne techniki generatywne, potencjalnie prowadząc do bardziej solidnych i wszechstronnych generacji obrazów.
  3. Zagnieżdżone wbudowania pozycyjne: Te wbudowania pomagają modelowi lepiej zrozumieć i utrzymać relacje przestrzenne wewnątrz obrazów, co jest kluczowe dla generowania spójnych i szczegółowych treści wizualnych.
  4. Warstwy uwagi równoległej: Ta technika pozwala na bardziej wydajne przetwarzanie mechanizmów uwagi, które są krytyczne dla zrozumienia relacji między różnymi elementami w podpowiedziach tekstowych i generowanych obrazach.
  5. Skalowanie do 12 miliardów parametrów: Sam rozmiar modelu pozwala mu uchwycić i zsyntetyzować bardziej złożone wzorce i relacje, potencjalnie prowadząc do wyższej jakości i bardziej zróżnicowanych wyników.

Testowanie Flux: Nowy standard w syntezie obrazu

https://blackforestlabs.ai/announcing-black-forest-labs/

https://blackforestlabs.ai/announcing-black-forest-labs/

Black Forest Labs twierdzi, że FLUX.1 ustanawia nowe standardy w syntezie obrazu, przewyższając popularne modele, takie jak Midjourney v6.0, DALL·E 3 (HD) i SD3-Ultra w kilku kluczowych aspektach:

  1. Jakość wizualna: Flux ma na celu produkowanie obrazów o wyższej wierności, bardziej realistycznych szczegółach i lepszym ogólnym appealu estetycznym.
  2. Przestrzeganie podpowiedzi: Model jest zaprojektowany, aby ściślej przestrzegać podanych podpowiedzi, generując obrazy, które bardziej dokładnie odzwierciedlają intencje użytkownika, szczególnie w przypadku złożonych lub nuansowych żądań.
  3. Zmienność rozmiaru/proporcji: Flux obsługuje szeroki zakres proporcji i rozdzielczości, od 0,1 do 2,0 megapikseli, oferując elastyczność dla różnych przypadków użycia.
  4. Typografia: Model wykazuje poprawione możliwości generowania i renderowania tekstu wewnątrz obrazów, powszechny wyzwanie dla wielu modeli tekst-do-obrazu.
  5. Różnorodność wyjścia: Flux jest specjalnie dostrajany, aby zachować całą różnorodność wyjścia z pre-trenowania, oferując szerszy zakres możliwości kreatywnych.

Flux vs. Midjourney: Analiza porównawcza

https://blackforestlabs.ai/announcing-black-forest-labs/

Teraz, rozważmy palące pytanie: Czy Flux jest lepszy niż Midjourney? Aby odpowiedzieć na to, musimy rozważyć kilka czynników:

Jakość obrazu i estetyka

Oba modele, Flux i Midjourney, są znane z produkcji wysokiej jakości, wizualnie imponujących obrazów. Midjourney został doceniony za swój artystyczny styl i zdolność tworzenia obrazów o wyrazistym appealu estetycznym. Flux, z jego zaawansowaną architekturą i większą liczbą parametrów, ma na celu dopasowanie lub przewyższenie tego poziomu jakości.

Wczesne przykłady z Flux pokazują imponujące szczegóły, realistyczne tekstury i silne zrozumienie oświetlenia i kompozycji. Niemniej, subiektywna natura sztuki sprawia, że trudno jest definitywnie twierdzić o wyższości w tej dziedzinie. Użytkownicy mogą znaleźć, że każdy model ma swoje mocne strony w różnych stylach lub typach obrazów.

Przestrzeganie podpowiedzi

Jednym z obszarów, w którym Flux potencjalnie wyprzedza Midjourney, jest przestrzeganie podpowiedzi. Black Forest Labs podkreśliło swoje skupienie na poprawie zdolności modelu do dokładnego interpretowania i wykonywania podanych podpowiedzi. To mogłoby skutkować wygenerowanymi obrazami, które jeszcze bardziej dokładnie odzwierciedlają intencje użytkownika, szczególnie w przypadku złożonych lub nuansowych żądań.

Midjourney był czasem krytykowany za branie kreatywnych swobód z podpowiedziami, co może prowadzić do pięknych, ale nieoczekiwanych wyników. Podejście Flux może oferować bardziej precyzyjną kontrolę nad wygenerowanym wynikiem.

Szybkość i wydajność

Z wprowadzeniem FLUX.1 [schnell], Black Forest Labs celuje w jeden z głównych atutów Midjourney: szybkość. Midjourney jest znany ze swoich szybkich czasów generowania, co uczyniło go popularnym dla iteracyjnych procesów kreatywnych. Jeśli Flux może dopasować lub przewyższyć tę szybkość, zachowując jakość, może to być znaczący punkt sprzedaży.

Dostępność i łatwość użycia

Midjourney zyskał popularność częściowo dzięki swojej przyjaznej dla użytkownika interfejsowi i integracji z Discord. Flux, jako nowszy, może potrzebować czasu, aby rozwijać podobnie dostępne interfejsy. Niemniej, otwarta natura modeli FLUX.1 [schnell] i [dev] może prowadzić do szerokiej gamy narzędzi i integracji opracowanych przez społeczność, potencjalnie przewyższając Midjourney pod względem elastyczności i opcji dostosowywania.

Możliwości techniczne

Zaawansowana architektura i większy rozmiar modelu Flux sugerują, że może on mieć więcej surowej możliwości w zakresie zrozumienia złożonych podpowiedzi i generowania skomplikowanych szczegółów. Podejście dopasowania przepływu i hybrydowa architektura mogą pozwolić Flux na radzenie sobie z szerszym zakresem zadań i generowanie bardziej zróżnicowanych wyników.

Rozważania etyczne i ograniczanie uprzedzeń

Oba modele, Flux i Midjourney, stają w obliczu wyzwania dotyczącego rozważań etycznych w obrazach generowanych za pomocą sztucznej inteligencji, takich jak uprzedzenia, dezinformacja i kwestie praw autorskich. Nacisk Black Forest Labs na transparentność i ich zaangażowanie w uczynienie modeli powszechnie dostępnymi mogą potencjalnie prowadzić do bardziej solidnego nadzoru społeczności i szybszych postępów w tych dziedzinach.

Implementacja kodu i wdrożenie

Używanie Flux z Diffusers

Modele Flux mogą być łatwo zintegrowane z istniejącymi przepływami pracy za pomocą biblioteki Hugging Face Diffusers. Oto krok-po-kroku przewodnik po użyciu FLUX.1 [dev] lub FLUX.1 [schnell] z Diffusers:

  1. Najpierw, zainstaluj lub zaktualizuj bibliotekę Diffusers:
!pip install git+https://github.com/huggingface/diffusers.git
  1. Następnie, możesz użyć FluxPipeline, aby uruchomić model:
import torch
from diffusers import FluxPipeline

<p># Załaduj model
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)</p>

<p># Włącz wyłączanie modelu CPU (opcjonalnie)
pipe.enable_model_cpu_offload()</p>

<p># Wygeneruj obraz
prompt = "Kot trzymający znak, na którym jest napisane 'witaj świecie'"
image = pipe(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
output_type="pil",
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]</p>

<p># Zapisz wygenerowany obraz
image.save("flux-dev.png")

Ten fragment kodu demonstruje, jak załadować model FLUX.1 [dev], wygenerować obraz z podpowiedzią tekstową i zapisać wynik.

Wdrażanie Flux jako API z LitServe

Dla tych, którzy chcą wdrożyć Flux jako skalowalną usługę API, Black Forest Labs zapewnia przykład z użyciem LitServe, silnika inferencyjnego o wysokiej wydajności. Oto rozbiór procesu wdrożenia:

Definiowanie serwera modelu:

from io import BytesIO
from fastapi import Response
import torch
import time
import litserve as ls
from optimum.quanto import freeze, qfloat8, quantize
from diffusers import FlowMatchEulerDiscreteScheduler, AutoencoderKL
from diffusers.models.transformers.transformer_flux import FluxTransformer2DModel
from diffusers.pipelines.flux.pipeline_flux import FluxPipeline
from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5TokenizerFast

<p>class FluxLitAPI(ls.LitAPI):
def setup(self, device):
# Załaduj składniki modelu
scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="scheduler")
text_encoder = CLIPTextModel.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
text_encoder_2 = T5EncoderModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="text_encoder_2", torch_dtype=torch.bfloat16)
tokenizer_2 = T5TokenizerFast.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="tokenizer_2", torch_dtype=torch.bfloat16)
vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="vae", torch_dtype=torch.bfloat16)
transformer = FluxTransformer2DModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="transformer", torch_dtype=torch.bfloat16)</p>

<p># Kwantyzacja do 8-bitów, aby zmieścić się na karcie L4 GPU
quantize(transformer, weights=qfloat8)
freeze(transformer)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)</p>

<p># Inicjalizacja potoku Flux
self.pipe = FluxPipeline(
scheduler=scheduler,
text_encoder=text_encoder,
tokenizer=tokenizer,
text_encoder_2=None,
tokenizer_2=tokenizer_2,
vae=vae,
transformer=None,
)
self.pipe.text_encoder_2 = text_encoder_2
self.pipe.transformer = transformer
self.pipe.enable_model_cpu_offload()</p>

<p>def decode_request(self, request):
return request["prompt"]</p>

<p>def predict(self, prompt):
image = self.pipe(
prompt=prompt,
width=1024,
height=1024,
num_inference_steps=4,
generator=torch.Generator().manual_seed(int(time.time())),
guidance_scale=3.5,
).images[0]
return image</p>

<p>def encode_response(self, image):
buffered = BytesIO()
image.save(buffered, format="PNG")
return Response(content=buffered.getvalue(), headers={"Content-Type": "image/png"})</p>

<p># Uruchom serwer
if __name__ == "__main__":
api = FluxLitAPI()
server = ls.LitServer(api, timeout=False)
server.run(port=8000)</p>

Ten kod ustawia serwer LitServe dla Flux, w tym ładowanie modelu, obsługę żądań, generowanie obrazu i kodowanie odpowiedzi.

Uruchom serwer:

</pre>
python server.py
<pre>

Użyj API modelu:

Możesz przetestować API za pomocą prostego skryptu klienta:

import requests
import json

<p>url = "http://localhost:8000/predict"
prompt = "robot siedzący w fotelu, malujący obraz na sztaludze przedstawiający futurystyczny krajobraz miasta, w stylu pop art"</p>

<p>response = requests.post(url, json={"prompt": prompt})
with open("generated_image.png", "wb") as f:
f.write(response.content)</p>

<p>print("Obraz wygenerowany i zapisany jako generated_image.png")</p>

Kluczowe cechy wdrożenia

  1. Architektura serwerless: Konfiguracja LitServe pozwala na skalowalne, serwerless wdrożenie, które może skalować do zera, gdy nie jest używane.
  2. API prywatne: Możesz wdrożyć Flux jako prywatne API na własnej infrastrukturze.
  3. Obsługa wielu GPU: Konfiguracja jest zaprojektowana, aby działać wydajnie na wielu GPU.
  4. Kwantyzacja: Kod demonstruje, jak kwantyzować model do 8-bitowej precyzji, pozwalając mu działać na mniej wydajnym sprzęcie, takim jak NVIDIA L4 GPU.
  5. Wyłączanie CPU: Metoda enable_model_cpu_offload() jest używana, aby zachować pamięć GPU, wyłączając części modelu na CPU, gdy nie są używane.

Praktyczne zastosowania Flux

Wersatylność i potęga Flux otwierają szeroki zakres potencjalnych zastosowań w różnych branżach:

  1. Przemysł kreatywny: Projektanci graficzni, ilustratorzy i artyści mogą używać Flux, aby szybko generować obrazy koncepcyjne, plansze nastrój i wizualne inspiracje.
  2. Marketing i reklama: Marketerzy mogą tworzyć niestandardowe wizualizacje dla kampanii, treści w mediach społecznościowych i makiet produktów z niezwykłą szybkością i jakością.
  3. Rozwój gier: Projektanci gier mogą używać Flux, aby szybko prototypować środowiska, postacie i aktywa, przyspieszając proces pre-produkcji.
  4. Architektura i projektowanie wnętrz: Architekci i projektanci mogą generować realistyczne wizualizacje przestrzeni i struktur na podstawie opisów tekstowych.
  5. Edukacja: Edukatorzy mogą tworzyć niestandardowe pomoce wizualne i ilustracje, aby ulepszyć materiały edukacyjne i uczynić złożone pojęcia bardziej przystępnymi.
  6. Film i animacja: Artyści storyboard i animatorzy mogą używać Flux, aby szybko wizualizować sceny i postacie, przyspieszając proces pre-wizualizacji.

Przyszłość Flux i generowania obrazu z tekstu

Black Forest Labs wyraźnie stwierdziło, że Flux to tylko początek ich ambicji w dziedzinie generatywnej sztucznej inteligencji. Zapowiedzieli plany rozwoju konkurencyjnych systemów generatywnych tekst-do-wideo, obiecując precyzyjne tworzenie i edytowanie możliwości w wysokiej rozdzielczości i niezwykłej szybkości.

Ten plan drogi sugeruje, że Flux nie jest samodzielnym produktem, ale częścią szerszego ekosystemu narzędzi generatywnej sztucznej inteligencji. W miarę ewolucji technologii możemy spodziewać się:

  1. Poprawiona integracja: Bezproblemowe przepływy pracy między generowaniem obrazu z tekstu a generowaniem wideo, umożliwiające bardziej złożone i dynamiczne tworzenie treści.
  2. Ulepszona dostosowywalność: Większa kontrola nad generowanymi treściami, możliwa dzięki zaawansowanym technikom inżynierii podpowiedzi lub intuicyjnym interfejsom użytkownika.
  3. Generowanie w czasie rzeczywistym: W miarę jak modele takie jak FLUX.1 [schnell] będą się poprawiać, możemy zobaczyć możliwości generowania w czasie rzeczywistym, które mogą rewolucjonizować tworzenie treści na żywo i interaktywne media.
  4. Generowanie między modalnościami: Możliwość generowania i manipulowania treściami w wielu modalnościach (tekst, obraz, wideo, audio) w spójny i zintegrowany sposób.
  5. Odpowiedzialny rozwój AI: Kontynuacja skupienia na tworzeniu modeli AI, które są nie tylko potężne, ale także odpowiedzialne i etyczne.

Wnioski: Czy Flux jest lepszy niż Midjourney?

Pytanie, czy Flux jest “lepszy” niż Midjourney, nie ma prostego odpowiedzenia. Obie modele reprezentują najwyższy poziom technologii generowania obrazu z tekstu, każdy ze swoimi mocnymi stronami i unikalnymi cechami.

Flux, z jego zaawansowaną architekturą i naciskiem na przestrzeganie podpowiedzi, może oferować bardziej precyzyjną kontrolę i potencjalnie wyższą jakość w pewnych scenariuszach. Jego wersje open-source również zapewniają możliwości dostosowywania i integracji, które mogą być bardzo wartościowe dla deweloperów i badaczy.

Midjourney, z drugiej strony, ma udokumentowany rekord, dużą i aktywną bazę użytkowników oraz charakterystyczny styl artystyczny, który wiele użytkowników polubiło. Jego integracja z Discord i przyjazny interfejs użytkownika uczyniły go bardzo dostępnym dla kreatywnych na wszystkich poziomach umiejętności technicznych.

Ostatecznie, “lepszy” model może zależeć od konkretnego przypadku użycia, preferencji osobistych i ewoluujących możliwości każdej platformy. Co jest pewne, to że Flux reprezentuje znaczący krok naprzód w dziedzinie generatywnej sztucznej inteligencji, wprowadzając innowacyjne techniki i poszerzając granice tego, co jest możliwe w syntezie obrazu z tekstu.

Przez ostatnie pięć lat zanurzałem się w fascynującym świecie Machine Learning i Deep Learning. Moja pasja i ekspertyza doprowadziły mnie do udziału w ponad 50 różnorodnych projektach inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja nieustanna ciekawość również skierowała mnie w stronę Natural Language Processing, dziedziny, którą chcę dalej eksplorować.