Ciekawe, jak historia wydania otwartych modeli do przekształcania tekstowych wskazówek w obrazy, opracowanych i trenowanych przez firmę Stability AI, przypomina serię wzlotów i upadków kolejnych wersji systemu operacyjnego Microsoft. Po legendarnie udanym Windows XP, przypomnijmy, pojawił się problematyczny Windows Vista; następnie znakomita „siódemka” — a za nią jałowy Windows 8. Po podstawowej, niezbyt atrakcyjnej, ale stopniowo dopracowanej przez entuzjastów wersji 1.5 Stable Diffusion, nadeszła jawnie nieudana SD 2.0 — nieudana, ponieważ zawierała nietypowy dla modeli tego rodzaju kodownik OpenCLIP, z . W trakcie takiego wyboru odrzucono nie tylko nieodpowiednie (NSFW) wizualne odniesienia, ale także obrazy i ilustracje autorstwa znanych artystów, takich jak słynny Greg Rutkowski. To ostatnie ostatecznie zirytowało entuzjastów: kiedy dla SD 1.5 nawet w wersji podstawowej, bez stosowania specjalnie wytrenowanych punktów kontrolnych, świetnie działały proste wskazówki ze stylami — „epic mediefal fantasy landscape, in the style of Greg Rutkowski” — i rezultat był imponujący, to SD 2.0 przestała „rozpoznawać” nazwiska najbardziej znanych ilustratorów, których prawa autorskie do stworzonych dzieł są nadal aktualne i którzy nie zechcieli udostępnić tych prac do treningu AI. Trzeba było używać więcej słów do opisania pożądanych efektów, a przy zbyt długich wskazówkach model radził sobie słabo.

Siedli — wstali, siedli — wstali
W połączeniu ze zmienionym kodownikiem (przekształtnikiem tekstowych wskazówek na cyfrowe tokeny, z którymi model już później pracuje), niemożność stosowania nazwanych stylów po prostu pozbawiła entuzjastów motywacji do dopracowywania „dwójki” samodzielnie. No cóż: tutaj trzeba było równocześnie zrozumieć, jak dostosowywać już opracowaną technikę tworzenia wskazówek do nowego kodownika i dodatkowo uczyć model rozpoznawania obrazów i tematów, z którymi twórcy na etapie początkowego treningu go nie zapoznali, - a jakościowej różnicy w porównaniu do „półtoraka” generowane obrazy „dwójki” wciąż nie gwarantowały. Tak, od standardowego dla SD 1.5 rozmiaru 512x512 punktów nastąpił skok jakościowy do 768x768, ale w tym czasie społeczność już na całego korzystała z upscalerów, outpainterów i innego narzędzia do zwiększania rozmiarów finalnego obrazu, więc SD 2.0 przeszła, w zasadzie, niezauważona. SDXL (opracowanego przez OpenAI i stosowanego, w szczególności, w projekcie DALL-E) - jego kod również jest otwarty, ale sama baza danych, na której został wytrenowany, , jest proprietarna. Dodatkowo standardowy rozmiar płótna wzrósł w „Oversize” do 1024x1024, plus pojawił się szereg dodatkowych ulepszeń, - więc entuzjaści z przyjemnością przystąpili do jego dopracowania. I obecnie SDXL (a także nowo pojawiające się mniej wymagające względem „sprzętu” jego pochodne, takie jak i ) można uznać za najbardziej popularny otwarty generator obrazów AI. Niemniej jednak zagorzały zwolennicy SD 1.5 argumentują przeciwko temu, wskazując, że tak ważne narzędzia, jak ControlNet, w SDXL .
I oto od 12 czerwca 2024 r., w chwili „wydania na wolność” kodu modelu, umożliwiającego lokalne generacje, powinien nastać czas „otwartej” wersji SD 3 - precyzując, to (SD3M lub SD3 2B) z 2 miliardami parametrów roboczych. Przypomnijmy, że ta liczba odnosi się do całkowitej liczby wag na wejściach wszystkich perceptronów modelu. Jeszcze wcześniej, w kwietniu, Stability AI doprowadziła do porządku i zaproponowała do komercyjnego użytku model z 8 milionami parametrów, , znana również jako SD3 8B. Przypomnijmy, że SDXL 1.0 — , jednak SD3M, według twórców, jest . Chodziło o to, że przy mniejszych niż w „Oversize” wymaganiach dotyczących pamięci wideo, nawet w odpowiedzi na proste sugestie, powinna generować obrazy „na nowym poziomie fotorealistyczności”. Wśród zalet „trójki” wymieniano również „bezprecedensową jakość typografii generowanego na stworzonych obrazach tekstu”, „głębsze zrozumienie sugestii dzięki połączeniu wysiłków trzech kodowań” oraz „gotowość do efektywnego dalszego trenowania nawet na ograniczonych zbiorach danych”.

Oczywiście zakładano, że społeczność entuzjastów, otrzymując nową, długo oczekiwaną zabawkę, zacznie dopracowywać ją z tą samą pasją, z jaką „półtorakę” i „Oversize” w swoim czasie. Jednak od samego początku wszystko poszło nie tak: SD3M w pierwszych godzinach po publikacji plików modelu na Hugging Face i Civitai swoją publiczność, i to w podwójny sposób. Po pierwsze — niewytłumaczalną na pierwszy rzut oka idiosynkrazją wobec sugestii zawierających na pozór niewinną frazę „leżąc na/w trawie” (lying on/in the grass); po drugie — niesamowicie niejasnymi sformułowaniami w umowie użytkownika, w których nawet profesjonalni prawnicy nie byli w stanie się szybko zorientować. I chociaż z punktu widzenia przeciętnego entuzjasty sztuki AI ostatnie wydaje się nieistotne, dalszy rozwój modelu będzie miał bezpośredni wpływ na kwestię prawną — aż do tego, że żaden rozwój może w ogóle nie nastąpić.
Poprzednie dzieła Stable Diffusion z otwartym kodem (a dokładniej, z publicznie dostępnymi wartościami wag sieci neuronowych, które można pobrać i wykonać lokalnie), takie jak SDXL, były towarzyszone jednym z typowych dla modeli generatywnych z takimi cechami jak „niewygasła, ogólnoświatowa, niewyłączna, bezpłatna, nieodpłatna, nieodwołalna licencja na prawa autorskie w celu reprodukcji, przygotowywania, publicznej prezentacji, publicznego wykonania, sublicencjonowania i rozpowszechniania dodatkowych materiałów zarówno samego modelu, jak i jego pochodnych”. Natomiast „Trojeczka” przewiduje dwa rodzaje licencjonowania: — z dość rozprężającymi sformułowaniami jak „Stability AI udziela Ci niewyłącznej, ogólnoświatowej, niezbywalnej, niepodlegającej sublicencjonowaniu, odwołalnej, nieodpłatnej oraz ograniczonej licencji na własność intelektualną” — a .
Trawa nie prowadzi do dobra
Po krótkim czasie społeczność zgodziła się, że . I zasadniczo ogłosiła bojkot firmy-dewelopera, nie chcąc tracić czasu i energii na dokańczanie wyraźnie surowego i niewłaściwie opracowanego modelu — mając świadomość, że Stability AI w każdej chwili może bez żadnego powodu swoich menedżerów mediów cofnąć licencję wydaną wcześniej konkretnemu entuzjaście zajmującemu się taką dokańczaniem. Umowa licencyjna została sformułowana w taki sposób, że studiujący ją nieprawnicy mają wrażenie, jakby po cofnięciu zgody na komercyjne zastosowanie SD3M byłyby zobowiązani do usunięcia wszystkich stworzonych przez siebie pochodnych z udzielonej im licencjonowanej własności intelektualnej, w tym zarówno samych modeli dokańczających (LoRA, tekstowe inwersje, całe punkty kontrolne), jak i ich pochodnych (cytat: „Po rozwiązaniu tej Umowy musisz usunąć i zaprzestać używania jakichkolwiek produktów oprogramowania lub prac pochodnych”) — to znaczy, owoce pracy już innych ludzi, którzy używali tych pochodnych modeli jako punktu wyjścia do swojej własnej pracy; przy czym nikt za to nie płacił, wykonane z czystego entuzjazmu.
Wkrótce po tym, jak fala oburzenia w tej sprawie osiągnęła stratosferyczne wysokości, zaczęły pojawiać się doniesienia już od profesjonalnych prawników, I co do recenzji z zakazem dalszego użytkowania dotyczy tylko pewnych pomocniczych produktów z zamkniętym kodem, które Stability AI przekaże użytkownikowi komercyjnemu (powiedzmy, w celu przyspieszenia i optymalizacji tej samej wstępnej szkolenia SD3M), — jednak sama firma jeszcze nie dostarczyła ostatecznych wyjaśnień w tej sprawie. A sam fakt tak przytłaczającej ciszy przez już trzy tygodnie (w momencie pisania tego artykułu) od momentu udostępnienia „trójki” w trybie publicznym szkodzi reputacji dewelopera znacznie bardziej niż trawa — generowanym przez jego dzieło dziewczynom.

Jeśli chodzi o ową nieszczęsną trawę, która w ciągu zaledwie kilku godzin stała się memem, , a potem praktycznie na wszystkich bardziej lub mniej tematycznych platformach w sieci, okazało się, że obecność w podpowiedzi frazy takiej jak „dziewczyna leżąca na trawie” prowadzi do pojawienia się w wynikach „trójki” nie tylko halucynacji, ale także koszmarnych tworów chorej — w sensie medycznym — wyobraźni artystów i filmowców specjalizujących się w body horror (prosimy, jeśli rozsądek i życie są dla Ciebie drogie — trzymaj się od tego z daleka i nawet nie próbuj wpisywać tej frazy w oknie wyszukiwania obrazów z wyłączonym filtrem bezpieczeństwa). Przy tym obrazy stojących — a w nieco mniejszym stopniu siedzących — ludzi udają się „trójce” na pewną czwórkę z plusem, a portrety czasami wychodzą wręcz doskonałe; przynajmniej nie gorzej niż w podstawowym modelu SDXL 1.0, — problem jest w pewnym wewnętrznym tabu na poziom horyzontalny ciała ludzkiego.
Sądząc po komentarzu Emada Mostaka, założyciela i byłego (do marca 2024 roku) szefa Stability AI, który opuścił firmę, aby , brutalne naruszenie SD3M tuż przed udostępnieniem jej wag dla ograniczonego niekomercyjnego użytku (API większego modelu SD3 8B do generowania online, przypominamy, ale jej wagi pozostają wciąż ukryte) stało się wynikiem dążenia obecnego kierownictwa do bezpieczeństwa — , sformułowanymi jeszcze w marcu bieżącego roku jako . Zgodnie z tą polityką stosowania modelu generatywnego SD3M użytkownikom nie wolno "dokonywać, promować, wspierać, ułatwiać, zachęcać, planować, podżegać ani wspierać dalszej przemocy, terroryzmu ani tworzenia treści wywołujących nienawiść, które dyskryminują lub zagrażają chronionej grupie ludzi (niezależnie od płci, przynależności etnicznej, tożsamości lub orientacji seksualnej, religii itp.)" — więc żadne zdjęcia pand w ich naturalnym otoczeniu walczących z dzikimi smokami! Tylko koty w zabawnych kapeluszach, psy w uroczych kurtkach, butelki z nieznaną zawartością oraz świeże ciastka prosto z pieca!
Mówiąc technicznie, możliwe, że osłabienie modelu polegało na tym, że z zestawu danych treningowych po prostu wykluczono obrazy z leżącymi ludźmi i inne zdjęcia, które jakoś sugerowały nieprzyzwoitą interpretację, — dlatego teraz "trójka" po prostu "nie rozumie" znaczenia słowa "leżeć". Lub może zaktualizowana architektura SD3 pozwoliła na dość pewne zidentyfikowanie wag na perceptronach, które aktywują się podczas generowania "niesprawnych" obrazów, — i te wagi zostały bezpośrednio przed wydaniem wybiórczo zresetowane, co skutkowało "wymuszonym halucynowaniem". Najprawdopodobniej, : kodownik poprawnie przekształca tekst w tokeny, ale w "zabezpieczonej" przestrzeni latentnej te tokeny już na nic konkretnego nie wskazują, — dlatego rezultujące piksele układają się na obrazku w zasadzie losowo.

Biorąc pod uwagę dostępność API pełnoprawnego, ale zamkniętego modelu SD3 8B przez kilka ostatnich miesięcy oraz gorące zapewnienia menedżerów mediów Stability AI, że "skompaktowany" 2B , entuzjaści sztuki AI powitali udostępnienie wag SD3M 12 czerwca z ogromnym entuzjazmem: . Obecnie można ją zdobyć, choć nieco bardziej okrężną drogą, niż przy punktach kontrolnych SDXL i SD 1.5. Właściwie, typowa droga prowadzi przez stronę Civitai, z której większość modeli jest pobierana bez rejestracji, ale od 17 czerwca, aż do chwili przekazania niniejszego artykułu do składu, strona dotycząca „trójki” tego serwisu . A powód jest jeden: licencja komercyjna na SD3M jest napisana w tak niejasnym języku, że nawet prawnicy Civitai wzięli sobie chwilę na dokładniejsze jej zbadanie. Bo jeśli jakiś entuzjasta wytrenuje na swoim komputerze LoRA dla „trójki” i umieści ją na Civitai, a Stability AI nagle postanowi, że wynik jest niestosowny, i cofnie winowajcy licencję — jak wtedy postąpi serwis-hostingowy? Przecież on nie tylko przechowuje checkpointy, dodatkowe cykle i modele, lecz także umożliwia odwiedzającym generację obrazów w chmurze oraz trenowanie tych samych LoRA, tekstowych inwersji i tym podobnych. Tak więc, póki sąd i sprawy, pliki samego modelu i trzech docelowych konwerterów tekstu na tokeny można zdobyć tylko .
Zaczynamy
Prawda jest taka, że jest pewien szczegół: aby uzyskać dostęp do linków do pobrania, trzeba się zalogować na stronie, a następnie potwierdzić zaakceptowanie wspomnianej wcześniej drakońskiej umowy licencyjnej — jednak procedura ta jest bezpłatna i w Rosji w pełni dostępna. Do wyboru oferowane są cztery warianty samych modeli (models) oraz cztery konwertery wskazówek tekstowych na tokeny (encoders), plus trzy wzorcowe cykle do użycia w środowisku roboczym ComfyUI, :
modele:
- sd3_medium.safetensors
- sd3_medium_incl_clips.safetensors
- sd3_medium_incl_clips_t5xxlfp8.safetensors
- sd3_medium_incl_clips_t5xxlfp16.safetensors
kodery:
- clip_g.safetensors
- clip_l.safetensors
- t5xxl_fp8_e4m3fn.safetensors
- t5xxl_fp16.safetensors
cykle:
- sd3_medium_example_workflow_basic.json
- sd3_medium_example_workflow_multi_prompt.json
- sd3_medium_example_workflow_upscaling.json
W ramach tego „Warsztatu” ograniczymy się do podstawowego modelu sd3_medium.safetensors (4,2 GB), trzech enkoderów — clip_g.safetensors (1,3 GB), clip_l.safetensors (234 MB) oraz t5xxl_fp8_e4m3fn.safetensors (4,7 GB), a także do cyklogramu sd3_medium_example_workflow_multi_prompt.json. Rzecz w tym, że na naszej stronie testowej zainstalowano, przypomnijmy, kartę graficzną GeForce GTX 1070 z 8 GB pamięci wideo, a w tej pamięci nie zmieszczą się większe modele ze wszystkimi zintegrowanymi przetwornikami jednocześnie. W przypadku punktów kontrolnych opartych na SD 1.5 i SDXL, enkodery domyślnie są zintegrowane z głównym plikiem, ale w tym przypadku tych przetworników jest nie dwa, a trzy, w sumie na 6 GB z hakiem, — razem z samym modelem już przekracza to 10 GB; a jeśli wziąć 16-bitową wersję enkodera T5XXL, to będzie potrzeba jeszcze bardziej wydajnej karty graficznej. Natomiast w opcji, gdy najpierw do pamięci wideo ładowane są przetworniki tekstu na tokeny, a potem model pracujący z tymi tokenami, można spokojnie obejść się nawet 6-GB adapterem graficznym. Z tego punktu widzenia modularna „trójka” zdecydowanie wygrywa w porównaniu do typowego punktu kontrolnego SDXL na 5-7 GB.
SD3M to model oparty na multimodalnych transformatorach dyfuzyjnych () — i tym samym zasadniczo różni się od wcześniejszych opracowań Stability AI (i nie tylko jej), które opierają się na „Warsztat” nie jest miejscem do dogłębnego badania różnic między tymi podejściami do generacji obrazów przez AI; powiedzmy tylko, że , jego zdolność do pracy z większą liczbą tokenów (co z kolei pozwala operatorowi formułować dość obszerne tekstowe podpowiedzi, a systemowi — na dość precyzyjne ich śledzenie), a także lepszą jakość uzyskiwanych obrazów. Pełnowymiarowy SD3 8B jest w stanie generować obrazy na płótnie o rozdzielczości 4 MP (2048×2048 punktów), a także w takich aspektach, jak reprodukcja tekstu w obrazie, dokładność dopasowania uzyskanego obrazu do tekstowej podpowiedzi oraz ogólna estetyka wizualna. Przetwarzanie tekstu na wektory tokenów odbywa się tutaj za pomocą trzech enkoderów ( i jeden T5-XXL — „T5”, na marginesie, od ) — i w ogóle nie muszą działać z tym samym poleceniem.

Ale dość wstępów: zabierzmy się za to, co jest poświęcone „Warsztatowi”, — generowaniu obrazów na podstawie modelu SD3M. Użyjemy do tego, jak już wspomniano, środowiska ComfyUI, które można pobrać . Podkreślamy, że ta opcja jest tylko do uruchomienia na kartach graficznych NVIDIA lub bezpośrednio na CPU AMD lub Intel (co będzie, oczywiście, znacznie wolniejsze): właściciele kart graficznych AMD rocm i pytorch, które można zainstalować za pomocą menedżera pakietów pip.
Po zakończeniu instalacji środowiska pracy należy umieścić wcześniej pobrane pliki .safetensors: modele — w katalogu ComfyUImodelscheckpoints, zamienniki tekstu w tokeny — w ComfyUImodelsclip. I — można zaczynać!
Czas przyspieszyć
Warto wspomnieć, że AUTOMATIC1111, dobrze znane czytelnikom wcześniejszych „Warsztatów” na temat rysowania AI, również , jednak w ComfyUI wsparcie nowego modelu pozostaje najbardziej kompleksowe. Nic dziwnego — aż do niedawna autor „makaronowego potwora”, znany społeczności entuzjastów pod pseudonimem ComfyAnonimous, lub po prostu Comfy, , gdzie pracował, w szczególności, nad wewnętrznym środowiskiem pracy, którym posługują się sami deweloperzy. Jak zobaczymy nieco później, najnowsza wersja ComfyUI rzeczywiście świadczy o tym, że jej autor ma pewne insidera dotyczące tego, jak działa i funkcjonuje ten kontrowersyjny model, — insiderzy, którymi twórcy innych środowisk pracy do lokalnego uruchomienia Stable Diffusion 3 Medium z oczywistych przyczyn się nie mogą.

Zainstalowanie ComfyUI w wersji przenośnej (portable) na Windows jest niezwykle proste: po pobraniu odpowiedniego archiwum ZIP wystarczy go rozpakować do dowolnego wygodnego katalogu; najlepiej oczywiście na logicznej partycji, która jest oparta na SSD, a nie na HDD — wymiana między dyskiem a pamięcią, biorąc pod uwagę nadchodzące cykle ładowania i wyładowania modeli, nawet dla generacji jednego jedynego obrazu (najpierw środowisko musi umieścić w wideo RAM konwertery tekstu na tokeny, następnie wyczyścić pamięć wideo i załadować sam SD3M) oczekuje się tym bardziej złożonej, im mniej w распоряжении tego komputera jest pamięci wideo. Przy okazji, przenośna instalacja ma również tę przewagę, że jest całkowicie niezależna: nic — poza ilością wolnego miejsca na dysku logicznym — nie stoi na przeszkodzie, aby rozwinąć lokalnie dowolną liczbę kopii ComfyUI, aby swobodnie eksperymentować z różnymi rozszerzeniami, nie obawiając się zepsuć już dopracowanego i doskonale działającego systemu.

Upewniwszy się, że plik głównej modelu SD3M bez wbudowanych kodowników tekstu na tokeny (plik stableDiffusion3SD3_sd3Medium.safetensors, 4,2 GB) znajduje się w podkatalogu checkpoints (w przypadku naszej testowej instalacji pełna ścieżka to C:Fun-n-GamesComfyUI-SD3ComfyUImodelscheckpoints), a wszystkie trzy modele kodowników (pliki stableDiffusion3SD3_textEncoderClipG.safetensors, stableDiffusion3SD3_textEncoderClipL.safetensors oraz stableDiffusion3SD3_textEncoderT5E4m3fn.safetensors; 1,3 GB, 234 MB i 4,7 GB odpowiednio) — w podkatalogu clip (C:Fun-n-GamesComfyUI-SD3ComfyUImodelsclip), można uruchomić środowisko robocze dwukrotnym kliknięciem na plik run_nvidia_gpu.bat w głównym folderze (w naszym przypadku C:Fun-n-GamesComfyUI-SD3). Po uruchomieniu serwera w otwartym oknie wiersza poleceń Windows automatycznie (zgodnie z ustawieniami pliku BAT) otworzy się nowa karta w domyślnej przeglądarce, która będzie dostępna pod adresem 127.0.0.1/8188 i w której dostępny będzie interfejs webowy. (niech będzie tylko na pierwszy rzut oka) 'makaronowego potwora'.

W zasadzie, jeśli masz do dyspozycji nowoczesną kartę graficzną NVIDIA (z serii RTX, a nie GTX, nawet z 6 GB VRAM), możesz od razu załadować do środowiska roboczego referencyjny przepływ pracy stworzony przez samego ComfyAnonimous, o którym już wcześniej wspomniano — plik comfy_example_workflows_sd3_medium_example_workflow_multi_prompt.json z wieloma oknami do wprowadzania podpowiedzi, po jednym dla każdego z trzech kodery — i pracować z nim. Jednak najpierw trzeba dostosować cztery nazwy plików modeli (w węzłach ich ładowania) do dostępnych. Autor referencyjnego przepływu pracy najwyraźniej operował w swoim miejscu pracy (w Stability AI, jak już wspomniano) na plikach lokalnych, które nazywały się nieco inaczej, więc, jeśli naciśniesz przycisk „Queue Prompt” w spartańskim interfejsie ComfyUI zaraz po załadowaniu przepływu, środowisko robocze wyświetli komunikat o błędzie.
Trójpolówka dla AI-generacji
Jednak można to łatwo naprawić: znacznie bardziej frustruje fakt, że nasza przestarzała GTX 1070 potwornie wolno przetwarza SD3M — generacja obrazu trwa 27-30 sekund na każdą iterację, a jeśli weźmiemy pod uwagę, że parametr „Steps” w referencyjnym przepływie pracy jest ustawiony na „28”, czas niepotrzebnie się wydłuża. Dlatego przeprowadzimy niewielką optymalizację — skorzystamy z modułu Python venv (), który ma na celu między innymi przyspieszenie pracy generatywnych modeli AI. W zestawie portatywnej wersji ComfyUI nie jest on dostępny, , które ostatecznie sprowadzają się do wdrożenia pełnego środowiska Python na lokalnym komputerze — oraz aktywacji niezbędnego modułu już z tego środowiska.

Miejmy nadzieję, że nasi czytelnicy śledzący nasze „Warsztaty” już mają aktywną instalację AUTOMATIC1111 na swoich maszynach. W takim przypadku wszystko jest znacznie prostsze: moduł venv jest już wdrożony, a wszystko, co trzeba zrobić, aby go aktywować przy uruchamianiu środowiska roboczego ComfyUI, to . Na początek należy zakończyć pracę serwera, przełączając się na jego okno i naciskając „Ctrl” + „C”, a następnie wpisując „y” w celu potwierdzenia; następnie skopiować plik BAT run_nvidia_gpu.bat do nowego, nazwijmy go run_with_venv.bat. Oryginalny plik uruchamiający jest dość zwięzły — po prostu wywołuje przenośną wersję Pythona z parametrem —windows-standalone-build:
.python_embededpython.exe -s ComfyUImain.py —windows-standalone-build
pauza
Ten parametr sam w sobie nie jest szczególnie jednoznaczny — oznacza pewne optymalizacje, które prawdopodobnie są przystosowane do nowszych kart graficznych NVIDIA i dlatego mogą pogarszać życie tych, którzy nadal wierzą w swoje zasłużone GTX. Z tego powodu usuniemy —windows-standalone-build z linii poleceń, a przy okazji zrezygnujemy z innej nowoczesnej optymalizacji — domyślnie aktywnego „inteligentnego menedżera pamięci”, smart memory, który , nie usuwając jej. To rzeczywiście przyspiesza rysowanie obrazków przez AI, jednak jednocześnie przekształca nasz moralnie przestarzały komputer w system jednoprocesowy — nie można już przeglądać internetu, grać, ani nawet pracować z dokumentami i pocztą na PC równolegle z aktywnością środowiska roboczego. Tak więc dla tych, którzy nie mają dedykowanego komputera do sztuk AI, optymalnym rozwiązaniem wydaje się taki plik BAT do uruchamiania ComfyUI (nie tylko w celu generowania obrazków z SD3M, nawiasem mówiąc — nadaje się także dla SDXL):
@echo off
call cd C:Fun-n-GamesGitstable-diffusion-webuivenvScripts
echo %
call activate.bat
echo venv activated
call cd C:Fun-n-GamesComfyUI-SD3
echo %
call .python_embededpython.exe -s ComfyUImain.py —disable-smart-memory
pauza
Zakłada się, że przenośna instalacja ComfyUI znajduje się w katalogu C:Fun-n-GamesComfyUI-SD3, a AUTOMATIC1111 została wcześniej zainstalowana w C:Fun-n-GamesGitstable-diffusion-webui. Liczne „echo” są potrzebne jedynie do wizualnej kontroli, żeby upewnić się, że zmiana katalogów przebiega prawidłowo i odpowiednie polecenia są wykonywane — po tym, jak wszystko zostanie udoskonalone, można je usunąć z pliku BAT.

Ponownie uruchamiamy środowisko robocze, tym razem klikając dwukrotnie na run_with_venv.bat. Ponieważ wcześniej po prostu zamknęliśmy serwer, a interfejs webowy pozostał nienaruszony, w odpowiedniej zakładce powinna wciąż być ta sama podstawowa grafika ComfyUI ze skorygowanymi nazwami modeli. Zwróćmy uwagę na jej prawą część: znajduje się tam węzeł „Preview Image”, który nie zapisuje gotowego obrazka na dysku, a jedynie go wyświetla. Jeśli za każdym razem uruchamiasz grafikę w celu wygenerowania dokładnie jednego obrazu, oceniasz go wizualnie, wprowadzasz zmiany w parametrach i uruchamiasz ponownie — to całkiem funkcjonalna opcja: pożądany obrazek zawsze można zapisać ręcznie, klikając prawym przyciskiem myszy. Ale jeśli w środowisku roboczym wykonujesz wiele generacji w kolejności, lepiej, aby ich wyniki były automatycznie gromadzone w pamięci trwałej (domyślnie w katalogu ComfyUIoutput).

Dlatego lepiej od razu zmienić węzeł „Preview Image” na „Save Image”. W tym celu klikamy dwukrotnie lewym przyciskiem myszy na dowolnym pustym miejscu w grafice — otworzy się okno wyboru węzłów z polem wyszukiwania. W tym polu zaczynamy wpisywać „Save…” — i praktycznie od razu zobaczymy poszukiwany tytuł. Następnie wystarczy kliknąć na niego i podłączyć wejście nowego węzła do wyjścia „IMAGE” węzła „VAE Decode”, do którego pierwotnie był podłączony „Preview Image”. Sam „Preview Image” można następnie usunąć — wystarczy go zaznaczyć, klikając na nagłówku, i nacisnąć klawisz „Del” na klawiaturze.

A teraz — nadszedł czas, aby uruchomić podstawową grafikę opracowaną przez ComfyAnonimous (z naszymi skromnymi poprawkami) do wykonania. Oto co się dzieje:

Bardzo imponujący obrazek, z nawet pewnym nastrojem — i nie powiesz, że został stworzony przy pomocy tej samej modelu, której instrukcja rysowania ludzi leżących na trawie jest całkowicie zaskakująca. Przy tym system działa dość sprawnie — około 5-6 s na iterację dla obrazu o powierzchni 1 Mpx na GTX 1070 można uznać za przyzwoity wynik. Dla porównania: ten sam komputer w tej samej ComfyUI z tym samym plikiem BAT generuje obrazki SDXL o podobnych rozmiarach, zużywając około 6-7 s na każdą iterację, więc „trójka” jest zdecydowanie mniej wymagająca dla sprzętu komputerowego, na którym odbywa się generacja AI.

Teraz dostosujemy wymiary płótna. Niedaleko od węzła „EmptySD3LatentImage”, który je określa, znajduje się „pusty” (w sensie, że nie jest podłączony do niczego z żadnej strony) węzeł pomocniczy „Note”, w którym znajduje się ważne przypomnienie: łączna powierzchnia obrazu w przypadku SD3M powinna wynosić około 1 Mpiksel, co należy uwzględnić przy dobieraniu wymiarów boków prostokątnego płótna. Ustalimy je więc jako 1344×768 — to właśnie około 1,03 Mpiksel i wyjdzie.
Zwróćmy uwagę: powyżej znajduje się węzeł „Seed”, w którym określono właściwie ziarno, w tym przypadku „945512652412924”, i wskazano, że po generacji nie powinno się ono zmieniać (parametr „fixed”).

Wykonamy tę samą cyklogramę z wcześniej ustalonym ziarnem, ale już dla prostokątnego płótna. Od razu widać, że czas wykonania jest ogólnie krótszy, chociaż prędkość renderowania pozostała taka sama — mniej niż 6 s na iterację. I to jest logiczne: skoro podpowiedzi tekstowe się nie zmieniały, to nie trzeba ponownie ładować kodera dla nich. Obraz na wyjściu, jak można się domyślić, nieco różni się od pierwszego, kwadratowego, ale nie zasadniczo — ogólna kompozycja, jak można się było spodziewać, została zachowana.

Teraz zwróćmy uwagę na węzły „CLIPTextEncodeSD3” i „CLIP Text Encode (Negative Prompt)”. Pierwszy wyróżnia się tym, że zawiera od razu trzy pola wejściowe; jeśli usuniemy z nich tekst, staną się widoczne adnotacje, dla jakich koderów są przeznaczone — od góry do dołu to CLIP G, CLIP L i T5XXL. Wcześniej takich węzłów w ComfyUI z oczywistych powodów nie było. Wzorcowy cyklogram zawiera powtarzające się krótkie podpowiedzi dla pierwszych dwóch pól tekstowych (dla koderów CLIP G i CLIP L) i znacznie dłuższą dla trzeciego — T5XXL. Oczywiście, że zawartością tych pól można w szerokich granicach manipulować, a samo badanie, w jakim zakresie zmiana tekstu w nich wpływa na końcowy obraz, stanowi zadanie niebanalne, ale niesamowicie intrygujące. Jednak, z przyczyn, które staną się jasne nieco później, na razie nie zajmiemy się tym dogłębnie.
A oto w węźle „CLIP Text Encode (Negative Prompt)” nie ma nic szczególnego — jednak warto docenić, jak złożona jest droga od niego do odpowiedniego wejścia „conditioning” głównego węzła „KSampler”! Ta droga rozdziela się, przy czym jedna z jej gałęzi (górna w tym przypadku) wskazuje, że od 10% kroków generacji do jej zakończenia system w ogóle nie weźmie pod uwagę negatywnej podpowiedzi (przechodzenie przez węzeł „ConditioningZeroOut” oznacza zerowanie warunku). Z kolei druga gałąź przesyła negatywną podpowiedź (również warunkowo z połowiczną wagą) do dalszego przetwarzania bez zmian — ale tylko w pierwszych 10% całkowitej liczby kroków generacji.
Mglista dal
Jeszcze raz: pierwsze 10%, tzn. 3 z 28 wyznaczonych w tym przypadku, kroków generacji negatywna podpowiedź jest przesyłana do węzła „KSampler”, który zajmuje się formowaniem obrazu w przestrzeni latentnej (w przestrzeni pikseli, tzn. w zrozumiałym dla człowieka obrazku, a rezultatem jej wydania zajmuje się następny węzeł, „VAE Decoder”), w sposób normalny: górna gałąź (z zerowaniem warunku) jest nieaktywna, działa tylko dolna. Pozostałe 90% kroków (25 z 28 w naszym przypadku) negatywna podpowiedź nie działa w ogóle: aktywna jest właśnie górna gałąź przekazywania warunków — z ich zerowaniem, natomiast ruch w dół jest zablokowany przez graniczny parametr aktywacji odpowiedniego węzła „ConditioningSetTimestepRange”. Teraz rozumiesz, dlaczego niektórzy recenzenci twierdzą, że , — efekt z nich (jeśli rozważać właśnie tę, bazową, cyklogramę i zakładać, że na stronach z internetową generacją w modelu SD3 Medium obowiązują podobne zasady) jest minimalny.

I jednak istnieje: jeśli po prostu połączyć wyjście węzła „CLIP Text Encode (Negative Prompt)” z odpowiednim wejściem „KSampler” (lub oznaczyć wszystkie pośrednie węzły na tej drodze jako „pomijane”, „Bypass”, co da ten sam efekt), jakość końcowego obrazu wyraźnie się pogorszy. Można to zresztą traktować jako pośredni dowód na „niedopieczenie” SD3M, ponieważ dostosowanie siły i znaczenia negatywnego podpowiedzi, mówiąc szczerze, powinno być w zasięgu deweloperów jeszcze przed upublicznieniem wag modelu. wygórowanych oczekiwań, które marketing Stability AI nurtował w jej kierunku, wydają się całkowicie uzasadnione.
Brak chociażby krótkiego oficjalnego przewodnika po pracy ze SD3M spowodował, że w sieci już krążą plotki, jakoby ten model Co, oczywiście, nie jest prawdą, ale w każdym razie te podpowiedzi należy stosować zdecydowanie inaczej, W particularze, entuzjaści na poważnie twierdzą, że dodanie do negatywnego pola szczegółowych opisów jak największej liczby nieprzyzwoitości (tak, dobrze słyszysz, starego dobrego „nsfw, nude” nie wystarczy — trzeba będzie naprawdę uruchomić wyobraźnię) nawet nieszczęsnej dziewczyny leżącej na trawie. Czy to prawda czy nie — nie da się tego ustalić bez wnikliwej weryfikacji (zresztą nie ma pewności, że nawet oznaczenie „18+” w nagłówku naszej strony uchroni publikację przed pozwami ze strony rozwścieczonych obrońców moralności, jeśli zaryzykujemy opublikowanie złożonej przez entuzjastów „cudownej podpowiedzi” — jakkolwiek byłaby po angielsku). Ta zabawna sytuacja przypomina kazus z dzięki którym — właśnie dlatego, że zawierały dość szczegółowe opisy tego, czego i jak nie należy robić porządnym chrześcijanom — przetrwały do naszych czasów chociaż fragmentaryczne pisemne świadectwa o wierzeniach i zwyczajach przedchrześcijańskiej Rusi.

Teraz, miejmy nadzieję, stało się jasne, dlaczego dalsze zgłębianie SD3M na tym etapie wydaje się nieco nierozsądne i nieefektywne. Rzeczywiście jest wiele do omówienia i zbadania: od dość sztywnych parametrów generacji w węźle „KSampler” (CFG — 4,5-5,0; liczba kroków — około 28; pary sampler/scheduler — wyłącznie dpmpp_2m/sgm_uniform, w przeciwnym razie jakość wyników znacząco spada); po znaczący rozrzut subiektywnej jakości generacji przy ściśle tych samych parametrach startowych, ale z różnymi zapytaniami; oraz pozbycie się legendarnego „przekleństwa leżenia w/nad trawą” (w tym celu już ); a także ustalenie, które dokładnie parametry generacji wpływają na każdy z trzech konwerterów tekstu na tokeny — i jak, manipulując nimi, osiągnąć prawdziwe arcydzieła AI w sztuce wizualnej (jeśli coś takiego z „trójką” jest w ogóle możliwe).
Tym bardziej, że zwolnienie Emada Mostaka w marcu i ComfyAnonimous w czerwcu, , — to nie jedyne problemy, które dotknęły Stability AI. Jak donosi Reuters, powołując się na The Information, ten brytyjski startup dosłownie chwilę temu (w momencie pisania tego artykułu) po raz kolejny , którym został Prem Akkaraju, protegowany znanej globalnej grupy inwestorów IT — która, z kolei, jest gotowa zainwestować w firmę znaczną kwotę gotówki (). Pozycja samej Stability AI jako struktury biznesowej jest dziś wyraźnie niestabilna; wielu rozczarowanych — w takiej sytuacji trudno oczekiwać od firmy przemyślanej pracy nad tak oczywistymi błędami.

Niestety, nieprzemyślana polityka licencyjna powstrzymuje społeczność przed samodzielnym doprowadzeniem SD3M do perfekcji, jak miało to miejsce w przypadku SD 1.5 i SDXL. Przynajmniej pochodne punktów kontrolnych i narzędzia takie jak LoRA dla ostatnich dwóch modeli na pewno pozostaną dostępne do lokalnego wykonania, nawet gdy (i jeśli) Stability AI zakończy swoją drogę jako struktura komercyjna. Zaraz po spektakularnej klęsce „trójki” na profilowych forach w sieci coraz częściej rozlegały się głosy za stworzeniem niekomercyjnego projektu do opracowania generatywnego modelu do przekształcania tekstu w obrazy na podstawie crowdfundingu – i do tej pory ruch ten zaczyna przybierać formę pod nazwą . O gotowości do aktywnego przystąpienia do niego już zadeklarowali Invoke (jedna z platform do generacji AI online, skierowana na profesjonalne studia), Comfy Org (zespół zajmujący się wsparciem i rozwojem ComfyUI), Civitai (nie wymaga przedstawienia) oraz zespół stojący za LAION (bazą adnotowanych obrazów, na której w dużej mierze trenują się tego rodzaju modele).
W najbliższej perspektywie nowe wydania „Warsztatu” prawdopodobnie będą kierować się na prace z tymi modelami, dla których społeczność już zdążyła stworzyć szeroki zestaw usprawnień i dodatkowych narzędzi – na „półtoraka” i „Oversize”. Może nadszedł czas na triumf SD3M, ale dziś trudno nawet przypuszczać, kiedy dokładnie to nastąpi. A tymczasem zainteresowani mogą pobrać archiwum z przedstawionymi w tym artykule generacjami SD3M (cyklogramy są zintegrowane bezpośrednio w plikach PNG; wystarczy przeciągnąć obrazek na pole robocze ComfyUI z „Eksploratora” Windows, aby odtworzyć cały porządek i parametry generacji) . Może ktoś z naszych czytelników odkryje wcześniej niż bywalcy Reddit i Hugging Face optymalny sposób dystrybucji tekstu na trzech polach podpowiedzi?

Materiały w temacie:
.
.
.
.
.
Źródło: 3dnews.ru
