Ге­нери­ровать кар­тинки по тек­сто­вому опи­санию — прос­то, но толь­ко если исполь­зовать готовый онлай­новый генера­тор. Уста­новить ИИ на свой компь­ютер куда слож­нее. В этой статье раз­берем­ся, какие быва­ют модели, чем отли­чает­ся Stable Diffusion от Flux, что такое AuraFlow и что вооб­ще нуж­но, что­бы делать кар­тинки у себя, — без вся­ких зап­ретов и огра­ниче­ний.

В этой статье я поп­робовал сни­зить «порог вхож­дения», отве­тив на самые прос­тые воп­росы, которые воз­ника­ют прак­тичес­ки у всех, кто пытал­ся разоб­рать­ся в тер­миноло­гии генера­тив­ного ИИ.

Статьи

В «Хакере» опуб­ликова­на серия моих ста­тей с рекомен­даци­ями по выбору, уста­нов­ке и нас­трой­ке раз­ных моделей. Спи­сок ста­тей будет попол­нять­ся, как и дру­гие спис­ки в этом матери­але.

  1. Stable Diffusion XL. Генери­руем кар­тинки ней­росетью на сво­ем компь­юте­ре
  2. Stable Diffusion XL. Выбира­ем модели, рефай­неры, лоры и сти­ли
  3. ReForge. Улуч­шаем кар­тинки, генери­руемые Stable Diffusion
  4. FLUX.1 и SwarmUI. Генери­руем кар­тинки новой откры­той моделью

Что нужно, чтобы начать создавать картинки?

Те­бе пот­ребу­ется компь­ютер (желатель­но — с виде­окар­той Nvidia), софт и базовая модель (чек­поинт). Как софт, так и модели совер­шенно бес­плат­ны; от тебя пот­ребу­ется толь­ко вре­мя и уси­лия, что­бы разоб­рать­ся в про­цес­се.

Видеокарта

Луч­ше все­го с генера­тив­ным искусс­твен­ным интеллек­том работа­ют виде­окар­ты Nvidia. Это не зна­чит, что кар­ты AMD или Intel (или даже чипы Apple Silicon со встро­енной гра­фикой) сов­сем нель­зя исполь­зовать, прос­то их под­дер­жка во мно­гих прог­раммах огра­ниче­на, и обход огра­ниче­ний пот­ребу­ет решения допол­нитель­ных проб­лем.

По­мимо архи­тек­туры виде­окар­ты, для работы ИИ кри­тичес­ким парамет­ром явля­ется объ­ем выделен­ной виде­опа­мяти (VRAM). Для ста­рых моделей дос­таточ­но 8–12 Гбайт; для сов­ремен­ных и тех, что дол­жны появить­ся в бли­жай­шем будущем, нуж­но уже 16–24 Гбайт. Это не зна­чит, что новые модели не запус­тятся на ста­рых виде­окар­тах, — прос­то работать ИИ будет при­мер­но на 30–50% мед­леннее, чем если бы у виде­окар­ты той же модели было дос­таточ­но памяти.

Софт

Прак­тичес­ки весь софт для генера­тив­ных ИИ бес­пла­тен, дос­тупен в исходных кодах и работа­ет в окне бра­узе­ра с исполь­зовани­ем биб­лиоте­ки gradio.

  1. Fooocus: иде­аль­ный про­дукт для начина­ющих и поль­зовате­лей онлай­новых сер­висов, мак­сималь­но близ­ко подошед­ший к иде­оло­гии «одной кноп­ки». Под­держи­вает толь­ко модели SDXL, зато пред­лага­ет авто­мати­чес­кое рас­ширение зап­росов локаль­ной язы­ковой моделью (GPT-подоб­ная LLM), что рез­ко повыша­ет раз­нооб­разие и кра­соту сге­нери­рован­ных кар­тинок. Прак­тичес­ки не тре­бует уста­нов­ки и сов­сем не тре­бует нас­трой­ки: дос­таточ­но рас­паковать архив и запус­тить. Даже модель Fooocus ска­чает самос­тоятель­но.
  2. AUTOMATIC1111: клас­сичес­кий кон­серва­тив­ный WebUI, апс­трим для раз­нооб­разных фор­ков. Силь­ные сто­роны — ста­биль­ность и образцо­вая под­дер­жка пла­гинов‑рас­ширений (в фор­ках на осно­ве Forge некото­рые рас­ширения для A1111 не работа­ют).
  3. Stable Diffusion web UI for AMDGPUs: форк A1111 для виде­окарт AMD. В отли­чие от ори­гина­ла, под­держи­вает тех­нологии DirectML, тран­сля­тор ZLUDA, Onnx Runtime и опти­миза­ции Olive.
  4. WebUI Forge: форк AUTOMATIC1111 с более высокой ско­ростью работы и опти­мизи­рован­ным механиз­мом работы с виде­опа­мятью. На дан­ный момент ведет­ся активная раз­работ­ка, репози­торий в ста­тусе экспе­римен­таль­ного; в про­дук­те будут отра­баты­вать­ся новые тех­нологии — от интерфей­са gradio 4 до нового движ­ка. Помимо архи­тек­туры Stable Diffusion, Forge так­же под­держи­вает Flux. Некото­рые пла­гины от A1111 не будут работать, что час­тично ком­пенси­рует­ся наличи­ем ряда встро­енных рас­ширений, выпол­няющих ана­логич­ные фун­кции.
  5. WebUI reForge: активно раз­рабаты­ваемый форк опи­сан­ного выше WebUI Forge. Здесь при­сутс­тву­ют как опти­миза­ции Forge, так и новин­ки из AUTOMATIC1111 и ComfyUI. Сегод­ня имен­но этот форк работа­ет с моделя­ми SD1.5/SDXL/CosXL быс­трее и ста­биль­нее про­чих. Исполь­зует ста­рую вер­сию gradio, поэто­му сов­мести­мость с пла­гина­ми A1111 луч­ше, чем в ори­гиналь­ном Forge.
  6. ComfyUI: мощ­ный, рас­ширя­емый и отлично опти­мизи­рован­ный про­дукт с самой широкой под­дер­жкой раз­ных архи­тек­тур и тех­нологий. Интерфейс в сти­ле блок‑схем — не для всех, одна­ко он же поз­воля­ет сох­ранять и исполь­зовать как свои, так и сто­рон­ние блок‑схе­мы в виде готовых про­ектов. Я не рекомен­дую начинать зна­комс­тво с генера­тив­ными ИИ с этой обо­лоч­ки из‑за слож­ности осво­ения. Имен­но Comfy пер­вым получа­ет под­дер­жку новых архи­тек­тур и моделей — час­то бук­валь­но в день их выхода.
  7. SwarmUI: обо­лоч­ка для Comfy, напоми­нающая WebUI. Сов­меща­ет удоб­ный интерфейс и «все­ядность» Comfy. Об этом про­дук­те я под­робно писал.

Есть и дру­гие вари­анты.

  1. InvokeAI: один из нем­ногих про­дук­тов, работа­ющих как самос­тоятель­ное при­ложе­ние, а не через бра­узер. По воз­можнос­тям — что‑то сред­нее меж­ду A1111 и Fooocus с мак­сималь­но удоб­ным поль­зователь­ским интерфей­сом. Для прод­винутых поль­зовате­лей есть режим наподо­бие Comfy.
  2. StabilityMatrix: надс­трой­ка, из которой мож­но уста­нав­ливать раз­личные веб‑интерфей­сы и рулить ими.
  3. Draw Things: экс­клю­зив­ный UI для Mac/iOS. Опти­маль­ный софт для чипов Apple Silicon. Под­держи­вает модели как Stable Diffusion, так и Flux.
  4. SD.Next: еще один форк A1111 с под­дер­жкой мно­жес­тва моделей и архи­тек­тур. К сожале­нию, про­дукт сло­жен в нас­трой­ке, а ста­биль­ность работы оставля­ет желать луч­шего. В сос­тав фор­ка вхо­дит мно­жес­тво пре­дус­танов­ленных пла­гинов.
  5. Krita Diffusion: фак­тичес­ки, это ней­росете­вой пла­гин к опен­сор­сно­му гра­фичес­кому редак­тору Krita. Поз­воля­ет как уда­лять, дорисо­вывать и перери­совы­вать объ­екты в самом изоб­ражении, так и «рас­ширять» кар­тинку в сто­роны, убе­дитель­но дорисо­вывая отсутс­тву­ющий кон­тент.

Что из это­го выб­рать?

Ес­ли у тебя Mac, нач­ни с Draw Things. Если прос­тота исполь­зования «из короб­ки» и качес­твен­ные изоб­ражения даже по самым прос­тым тек­сто­вым зап­росам для тебя важ­нее рас­ширя­емос­ти и прод­винутых воз­можнос­тей — ставь Fooocus. Для моделей SDXL отлично под­ходят WebUI reForge или SwarmUI; для Flux — SwarmUI или WebUI Forge. Ори­гиналь­ный WebUI Forge подой­дет любите­лям экспе­римен­тировать с новей­шими тех­нологи­ями. Если у тебя виде­окар­та AMD, поп­робуй форк WebUI AMDGPU.

info

A1111, WebUI Forge и reForge мож­но уста­нав­ливать парал­лель­но в раз­ные катало­ги. При этом все три дис­три­бути­ва могут исполь­зовать общие пап­ки с моделя­ми раз­ных типов. Для это­го пре­дус­мотре­ны парамет­ры коман­дной стро­ки (файл webui-user.bat), такие как --models-dir, --ckpt-dir, --lora-dir, --clip-models-path, --embeddings-dir.

Модели и архитектуры

Для генера­тив­ного ИИ раз­работа­но нес­коль­ко семей­ств моделей. В рам­ках одно­го семей­ства может быть и единс­твен­ная модель (нап­ример, это отно­сит­ся к AuraFlow или Kolors), и мно­жес­тво моделей как изна­чаль­ного раз­работ­чика, так сто­рон­них и даже обыч­ных поль­зовате­лей. Нап­ример, для архи­тек­тур Stable Diffusion 1.5 (SD1.5) и Stable Diffusion XL (SDXL) в силу их популяр­ности и откры­той лицен­зии дос­тупны тысячи раз­нооб­разных моделей.

Архитектуры

Пе­речис­лю основные семей­ства моделей.

На этом модели про­изводс­тва Stability AI закан­чива­ются и начина­ются модели, раз­работан­ные дру­гими ком­пани­ями.

Пе­речис­ленные ниже модели не получи­ли широко­го рас­простра­нения, но под­держи­вают­ся в ComfyUI/SwarmUI.

Ка­кие из этих моделей сто­ит поп­робовать? Flux мож­но и нуж­но поль­зовать­ся пря­мо сей­час, если поз­воля­ет железо. AuraFlow пред­став­ляет безус­ловный инте­рес, но пока ско­рее теоре­тичес­кий; модель в про­цес­се обу­чения. Lumina Next — очень инте­рес­ная, мощ­ная модель, но ее уста­нов­ка чрез­мерно слож­на.

Поль­зователь Reddit выложил под­робное срав­нение (с кар­тинка­ми!) моделей PixArt Sigma, Hunyuan DiT, SD3 Medium и Lumina-Next-T2I.

Базовые и дополнительные модели

Су­щес­тву­ют мно­гочис­ленные базовые модели (чек­поин­ты) на осно­ве как перечис­ленных выше, так и дру­гих архи­тек­тур. Так­же сущес­тву­ет мно­жес­тво допол­нитель­ных под­клю­чаемых моделей (LoRA, Lycoris, DoRA), о которых нуж­но знать сле­дующее: это неболь­шие допол­нения к базовой модели (чек­поин­ту), работа­ющие в рам­ках базовой архи­тек­туры, для которой они соз­даны, и опи­сыва­ющие кон­цепцию, стиль или пер­сонажа, которых нет в основной модели. Кро­ме того, есть так называ­емые тек­сто­вые инверсии (embedding), которые при помощи все­го одно­го токена помога­ют базовой модели «най­ти» ту или иную кон­цепцию, если такая кон­цепция есть в самой модели. Тек­сто­вые инверсии, в отли­чие от лор, работа­ют в щадящем режиме, реали­зуя задан­ные кон­цепции незави­симо от обще­го сти­ля кар­тинки и не вли­яя на него.

Для начала работы тебе нуж­но будет ска­чать одну или нес­коль­ко базовых моделей и сох­ранить ее в соот­ветс­тву­ющей пап­ке. Впро­чем, прак­тичес­ки все веб‑интерфей­сы авто­мати­чес­ки кача­ют какую‑то базовую модель, если ты попыта­ешь­ся сге­нери­ровать кар­тинку сра­зу пос­ле уста­нов­ки.

Из каких частей состоит базовая модель

Ар­хитек­турно модели генера­тив­ного ИИ сос­тоят из трех вза­имос­вязан­ных час­тей.

  1. Тек­сто­вый декодер. Это одна или нес­коль­ко (в SDXL — две, Flux — тоже две, но дру­гие) моделей, задача которых — перевод токенов из тек­сто­вого зап­роса в век­торы, ука­зыва­ющие на коор­динаты в мно­гомер­ном латен­тном прос­транс­тве. К сло­ву, мер­ность латен­тно­го прос­транс­тва SDXL — 65 535. В качес­тве тек­сто­вого декоде­ра могут исполь­зовать­ся CLIP (прос­той тек­сто­вый декодер раз­работ­ки OpenAI, соз­дателей ChatGPT), T5 (локаль­ная LLM раз­работ­ки Google) и дру­гие. В SDXL исполь­зует­ся пара из OpenCLIP-ViT/G и CLIP-ViT/L, пер­вый из которых декоди­рует зап­росы, написан­ные на естес­твен­ном язы­ке, а вто­рой — клю­чевые сло­ва, перечис­ленные через запятую; Flux исполь­зует CLIP-ViT/L для декоди­рова­ния клю­чевых слов и T5xxl для работы с естес­твен­ными зап­росами.
  2. Ос­новная модель, пред­став­ленная сжа­тыми дан­ными в латен­тном прос­транс­тве. На сегод­няшний день самыми популяр­ными архи­тек­турами для таких моделей явля­ются U-Net (исполь­зует­ся в SDXL, Kolors) и DiT (более новая архи­тек­тура, которую исполь­зуют поч­ти все модели, вышед­шие пос­ле SDXL). Чаще все­го обу­чению под­верга­ется имен­но основная модель; тек­сто­вые декоде­ры и VAE, как пра­вило, сто­рон­ние раз­работ­чики не тро­гают.
  3. Ва­риацион­ный авто­коди­ров­щик (VAE) — это модель‑кодек, которая исполь­зует­ся для сжа­тия пик­сель­ного изоб­ражения в латен­тное прос­транс­тво и его вос­ста­нов­ления из латен­тно­го прос­транс­тва, «про­являя» таким обра­зом латен­тный «негатив» (тех­ничес­кие детали). Имен­но VAE отве­чает за то, что­бы «вытащить» сге­нери­рован­ную кар­тинку из латен­тно­го прос­транс­тва в прос­транс­тво пик­селей; эта модель ока­зыва­ет вли­яние на кон­траст и цве­топе­реда­чу (отто­го для SDXL сущес­тву­ет базовый и нес­коль­ко кас­томных VAE), но не вли­яет на ком­позицию изоб­ражения. В SDXL исполь­зуют прос­тые и несовер­шенные по сов­ремен­ным мер­кам 4-каналь­ные VAE, тог­да как SD3 и Flux исполь­зуют более качес­твен­ный и сов­ремен­ный 16-каналь­ный VAE.

В чем разница между архитектурами U-Net и DiT?

U-Net работа­ет как набор луп — он «сжи­мает» изоб­ражение, что­бы выделить важ­ные детали, а затем «раз­ворачи­вает» его обратно, вос­ста­нав­ливая кар­тинку и добав­ляя детали на каж­дом шаге. Это похоже на про­цесс сжа­тия и рас­паков­ки фай­ла, но с добав­лени­ем информа­ции на каж­дом шаге.

DiT — более «умный» спо­соб обра­бот­ки дан­ных. Он исполь­зует тран­сфор­меры, которые ана­лизи­руют кар­тинку целиком, понимая, какие час­ти свя­заны меж­ду собой и каким обра­зом. Поп­робуй, нап­ример, сге­нери­ровать кар­тинку с челове­ком, который дер­жит меч; модели DiT смо­гут пра­виль­но нарисо­вать хват меча чаще, чем это смо­жет сде­лать модель с U-Net.

В SD1.5 и SDXL в сос­тав фай­ла модели могут вхо­дить как все три час­ти, так и толь­ко пер­вые две (раз­работ­чики моделей, как пра­вило, ука­зыва­ют эту осо­бен­ность в опи­сании); в пос­леднем слу­чае VAE нуж­но под­клю­чать отдель­но. Для Flux сущес­тву­ют интегри­рован­ные модели, но в силу боль­шого объ­ема T5xxl (а так­же из‑за того, что сущес­тву­ют раз­ные пред­став­ления это­го декоде­ра — нап­ример, 8-бит­ный вари­ант для обыч­ных и 16-бит­ный для топовых виде­окарт) раз­работ­чики пред­почита­ют пуб­ликовать толь­ко U-Net (на самом деле, конеч­но же, DiT) отдель­но. Кста­ти, базовая модель FLUX.1 [dev] была опуб­ликова­на имен­но в таком раз­дель­ном виде.

Обученные модели и ремиксы

Ба­зовые модели (чек­поин­ты) быва­ют обу­чен­ные (trained) и ремик­сы (merged). Изна­чаль­но под­разуме­валось, что «обу­чен­ные» модели — те, которые под­вер­глись глу­боко­му тюнин­гу в течение нес­коль­ких «эпох» (цик­лов обу­чения и кор­рекции на одном и том же наборе дан­ных), одна­ко со вре­менем в чис­ло обу­чен­ных ста­ли вклю­чать и модели, в сос­таве которых, помимо базовой модели или ремик­са, есть хотя бы одна лора, самос­тоятель­но обу­чен­ная авто­ром. Соот­ветс­твен­но, ремикс — это модель, в сос­тав которой вхо­дят дру­гие модели (обу­чен­ные или ремик­сы) и, воз­можно, лоры, соз­данные дру­гими поль­зовате­лями.

У обо­их клас­сов моделей есть свои осо­бен­ности. Так, модели, обу­чен­ные клас­сичес­ким спо­собом, час­то име­ют шерохо­ватос­ти, которые мож­но сгла­дить, добавив в микс час­ти дру­гих моделей. С дру­гой сто­роны, мно­гочис­ленные ремик­сы и ремик­сы ремик­сов час­то стра­дают от отсутс­твия раз­нооб­разия; это может выражать­ся, нап­ример, в том, что на всех сге­нери­рован­ных изоб­ражени­ях вмес­то раз­нооб­разных живых людей при­сутс­тву­ет некое усреднен­ное син­тетичес­кое лицо. С этим, опять же, мож­но бороть­ся, добавив в ремикс нуж­ные бло­ки от обу­чен­ной модели, но мно­гие соз­датели ремик­сов делать это­го поп­росту не уме­ют.

Не сто­ит фик­сировать вни­мание толь­ко на «обу­чен­ных» (trained) моделях: хороших ремик­сов (merged) ничуть не мень­ше, и качес­тво кар­тинки они спо­соб­ны выдать ничуть не хуже.

Где брать базовые модели

Есть нес­коль­ко ресур­сов, на которых пуб­лику­ются раз­личные модели. Самый круп­ный из них — Civit.ai. Име­ет смысл акти­виро­вать филь­тры, что­бы отоб­ражались толь­ко базовые модели (checkpoint) тре­буемой архи­тек­туры или архи­тек­тур (нап­ример, SDXL, Pony или Flux); в про­тив­ном слу­чае тебе при­дет­ся про­дирать­ся через десят­ки тысяч все­воз­можных лор, соз­данных для раз­ных архи­тек­тур.

Ряд моделей пуб­лику­ется на сай­те Tensor.art, в том чис­ле экс­клю­зив­но (нап­ример, кре­атив­ная модель Kika_real). Наконец, ресурс, на котором пуб­лику­ются модели с откры­тым исходным кодом Hugging Face, с которо­го, в час­тнос­ти, мож­но ска­чать кван­тован­ные вер­сии модели Flux, а так­же кван­тован­ные вер­сии тек­сто­вых декоде­ров t5.

До­пол­нитель­ные модели (LoRA, DoRA, Lycoris, а так­же тек­сто­вые инверсии) мож­но ска­чать с тех же сай­тов, не забыв поменять филь­тры.