Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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, wytrenowany na dość niejednoznacznie dobranych obrazach z otwartego zbioru danych LAION-5B. 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

#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 wróciła do standardowego (opracowanego przez OpenAI i stosowanego, w szczególności, w projekcie DALL-E) kodownika CLIP - jego kod również jest otwarty, ale sama baza danych, na której został wytrenowany, w przeciwieństwie do OpenCLIP, 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 SDXL Turbo i SDXL Lightning) 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 nie zostały do tej pory odpowiednio przeniesione.

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 Stable Diffusion 3 Medium (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, Stable Diffusion 3 Large, znana również jako SD3 8B. Przypomnijmy, że SDXL 1.0 — 3,5 miliarda parametrów, jednak SD3M, według twórców, jest „najbardziej zaawansowanym modelem do generacji obrazów ze wszystkich, które stworzyliśmy do tej pory”. 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”.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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 udała się głęboko rozczarować 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 CreativeML Open RAIL++-M License 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: do zastosowań niekomercyjnych — 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 znacznie bardziej obciążającą komercyjną.

#Trawa nie prowadzi do dobra

Po krótkim czasie społeczność zgodziła się, że Stable Diffusion 3 to nie Open Source. 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, że nie wszystko jest tak złe 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

Jeśli chodzi o ową nieszczęsną trawę, która w ciągu zaledwie kilku godzin stała się memem, najpierw na Hugging Face,, 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 „zajmować się zdecentralizowanymi projektami w dziedzinie sztucznej inteligencji”, brutalne naruszenie SD3M tuż przed udostępnieniem jej wag dla ograniczonego niekomercyjnego użytku (API większego modelu SD3 8B do generowania online, przypominamy, jest dostępne na stronach partnerskich od kwietnia,ale jej wagi pozostają wciąż ukryte) stało się wynikiem dążenia obecnego kierownictwa do bezpieczeństwa — „w związku z obowiązkami regulacyjnymi”, sformułowanymi jeszcze w marcu bieżącego roku jako Polityka Akceptowalnego Użytkowania. 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, można to już porównać do lobotomii: 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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 okaże się niemal tak samo jakościowy pod względem odbioru tekstu i generowania obrazów, entuzjaści sztuki AI powitali udostępnienie wag SD3M 12 czerwca z ogromnym entuzjazmem: w ciągu pierwszych 24 godzin model został pobrany 2,7 miliona razy. 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 znajduje się w tymczasowym banie. 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 ze strony Stability AI na portalu Hugging Face.

#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, o którym już kiedyś wspominaliśmy:

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 (Multimodal Diffusion Transformer, MMDiT) — i tym samym zasadniczo różni się od wcześniejszych opracowań Stability AI (i nie tylko jej), które opierają się na architekturze U-Net, zaproponowanej w 2015 roku. „Warsztat” nie jest miejscem do dogłębnego badania różnic między tymi podejściami do generacji obrazów przez AI; powiedzmy tylko, że MMDiT zapewnia zwiększoną wydajność modelu, 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 przewyższa DALL-E 3, Midjourney v6 i Ideogram v1 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 (dwa modele CLIP i jeden T5-XXL — „T5”, na marginesie, od Text-To-Text Transfer Transformer) — i w ogóle nie muszą działać z tym samym poleceniem.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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ć z bezpośredniego linku z GitHub. 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 muszą skorzystać z oszukańczego rozwiązania w postaci pakietów 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ż uzyskało możliwość uruchamiania SD3M, 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, był pracownikiem Stability AI, 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ą.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

Zainstalowanie ComfyUI w wersji przenośnej (portable) na Windows jest niezwykle proste: po pobraniu odpowiedniego archiwum ZIP z oficjalnej strony projektu 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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. oswojonego już przez nas wcześniej (niech będzie tylko na pierwszy rzut oka) 'makaronowego potwora'.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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 (wirtualne środowiska), który ma na celu między innymi przyspieszenie pracy generatywnych modeli AI. W zestawie portatywnej wersji ComfyUI nie jest on dostępny, jednak istnieje wiele sposobów jego instalacji, 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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 prawidłowo wywołać. 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 stara się utrzymać jak najwięcej informacji w pamięci wideo, 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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).

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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”).

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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 negatywne podpowiedzi dla SD3M w zasadzie nie są konieczne, — 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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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. skargi entuzjastów, że „trójka” zdecydowanie nie spełnia 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 w ogóle nie był trenowany do stosowania negatywnych podpowiedzi.Co, oczywiście, nie jest prawdą, ale w każdym razie te podpowiedzi należy stosować zdecydowanie inaczej, niż to robią operatorzy SD 1.5 i SDXL.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ę) prowadzi do zauważalnej poprawy wyglądu 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 wczesnośredniowiecznymi pouczeniami przeciwko pogaństwu,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.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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ż proponowane są bardzo nietypowe rozwiązania); 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, a także nie tylko ich, — 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 zmienił dyrektora generalnego , 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 (mowa o 80 mln USD). Pozycja samej Stability AI jako struktury biznesowej jest dziś wyraźnie niestabilna; wielu rozczarowanych entuzjastów wróży jej rychły koniec — w takiej sytuacji trudno oczekiwać od firmy przemyślanej pracy nad tak oczywistymi błędami.

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

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ą Open Model Initiative. 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) tutaj. 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?

Nowy artykuł: Praktyczny przewodnik po rysowaniu AI, część dziewiąta: SD3M — „trójka” na trójkę

Materiały w temacie:

Stability AI zmieniła kierownictwo i pozyskała 80 mln dolarów inwestycji.

Został przedstawiony generator obrazów AI Stable Diffusion Medium, któremu wystarczy karta graficzna z 5 GB pamięci.

Stability AI ugrzęzła w długach i teraz szuka dla siebie kupca.

Startup AI Stability AI zmniejszy zatrudnienie o 10% z powodu rosnącej konkurencji.

Ogłoszono Stable Diffusion 3.0 — AI do rysowania zmieniło architekturę i nauczyło się pisać.

Źródło: 3dnews.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster