В феврале 2024 года StabilityAI анонсировали третье поколение генеративной нейронной сети Stable Diffusion. Спустя четыре месяца, 12 июня, вышла «Сommunity-версия» Stable Diffusion 3 Medium. Нам обещают хорошую оптимизацию для домашних компьютеров, улучшенное восприятие запросов и бонусом новую лицензию.

Привет, Хабр! Меня зовут Вова Туров, я разработчик в Selectel. В этой статье на примере множества картинок сравним локальные «чистые» модели SD и «закрытые» сервисы с Stable Diffusion 3, а также выясним, стоит ли платить за новую модель. Под катом вас ждет множество изображений!

Используйте навигацию, если не хотите читать текст полностью:

Новое лицензионное соглашение
Визуальное сравнение
Сравнение производительности
Заключение

Новое лицензионное соглашение


Stable Diffusion долгое время радовала своей открытостью. Каждый пользователь мог развернуть модель локально, дообучить разными способами и использовать результат по своему желанию. В том числе в коммерческих целях — лицензия CreativeML Open RAIL++-M это позволяет.

К сожалению, Stable Diffusion 3 вышла под другой лицензией с тремя уровнями использования.

  • Некоммерческая. Лицензия бесплатна и дает доступ к API StabilityAI, в том числе к SDXL Turbo.
  • Creator License. Стоимость — 20 $/мес, региональных цен нет. Включает в себя 6 000 генераций в Stable Diffusion 3 Medium и право использовать их в коммерческих целях. Но есть и ограничения — у проекта должен быть годовой доход меньше миллиона долларов и менее миллиона активных пользователей в месяц.
  • Enterprise License. На индивидуальных условиях для крупных компаний.

Отдельно стоит отметить, что Creator License дает бесплатные генерации только для Medium-версии, которую можно развернуть локально. Закрытую Large-версию нужно оплачивать отдельно с примерным тарифом 0,07 $ за изображение. При этом на странице модели на Hugging Face указано, что локальная Medium-версия недоступна для коммерческого использования.

Для сравнения, Midjourney предоставляет 200 изображений за 10 $ (0,05 $ за изображение) или 900 изображений за 30 $ (0,03 $ за изображение). При этом тариф за 30 $ отличается наличием безлимитных генераций с пониженным приоритетом.



Визуальное сравнение


Для сравнения поколений я использую как локальные модели, так и официальное API StabilityAI. Пробежимся по первым.


Локальные модели запускаются через ComfyUI. Это обусловлено тем, что на момент написания статьи интерфейс от AUTOMATIC1111 не поддерживает третье поколение моделей. Старые версии запускаются со стандартной схемой (workflow) ComfyUI, а SD3 — с отдельной. Модели, доступные через StabilityAI API — Stable Diffusion 3 Medium и Stable Diffusion 3 Large.

Текст посвящен Stable Diffusion, однако есть множество конкурентов, которые стараются не отставать. Добавим несколько сторонних моделей:


Для взаимодействия с «внешними» Stable Diffusion используется Python-скрипт из документации.


Запрос: lighthouse on a cliff overlooking the ocean.

Первый запрос я нашел в документации API. Абстрактные пейзажи — это хороший старт. Medium, на мой взгляд, рисует «плоские» картинки, а вот Large выдает интересный результат. DALL-E самостоятельно выделилась не квадратным изображением. Пейзажи сразу были хороши, поэтому перейдем к генерации людей.


Запрос: photo of a woman lying in the grass, best quality.

Сложно сказать, что «чистая» Stable Diffusion ранних версий рисовала людей хорошо, но SDXL укрепляла надежду в светлое будущее красивой анатомии. SD3 в текущем варианте разрушила эти надежды. В сообществе на Reddit высказывают мысли, что плохая генерация анатомии может быть следствием цензуры модели. Впрочем, на civitai уже можно найти рефайнеры для SD3.


Запрос: funny smiling brown dog, with glasses, with tongue hanging out. Ralph Steadman-inspired character design with exaggerated, thick line hand-drawn style. Rendered to give a plush, soft texture feel. Create this in vector style with watercolor effects, set against a plain white background. The artwork should embody a minimalist aesthetic, focusing on the front view of the character. High emphasis on the unique Steadman dynamic lines, while maintaining a charming and whimsical look.

Рисунки животных генерируются отлично, на детальные описания нейросети реагируют хорошо. Исключение — DALL-E, которая ответила, что запрос нарушает контентную политику.

Длинные запросы могут путать генерацию. Однако еще больше путают максимально краткие и сухие запросы. Например, «ложка».


Запрос: spoon.

Обычная ложка запутала только SD1.5, Kandinsky 3.1 и PixArt. Остальные справились успешно. Посредник в общении с DALL-E, ChatGPT, пыталась выяснять что именно нужно нарисовать. В итоге ответ «просто ложка» привел к желаемому результату.

В прошлом обзоре на Midjourney я отмечал, что генерация текста значительно улучшилась. Посмотрим, есть ли такая тенденция у SD.


Запрос: t-shirt with text «best grandma».

С текстами все относительно хорошо, хотя дополнительные детали наводят на вопросы. Почему ideogram нарисовал молодую девушку? Почему Kandinsky нарисовал «best grandma», если его попросили «лучшая бабуля»? Чьи колени на фоне у Midjourney? Эти вопросы останутся без ответа.

Осталось еще одно испытание — отрицание в запросе.


Запрос: burger without cucumber.

Вот так попросишь бургер без огурцов, а в восьми случаях из десяти они есть. И это не значит, что в двух оставшихся пожелание исполнено — в них что-то не так с бургером в целом.

«Да расскажите ему кто-нибудь про негативный промпт!» — наверняка подумали вы. Да, промпт-инжиниринг никто не отменял, но этот запрос очень человечный.


Запрос: burger. Негативный запрос: cucumber.

Да, так гораздо лучше, но не все нейронные сети принимают такой вид бургеров.

В конце визуальной части небольшой бонус: картинки из официальных промптов SD3 Medium, запрошенные во всех нейросетях.


Запрос: anime art of a steampunk inventor in their workshop, surrounded by gears, gadgets, and steam. He is holding a blue potion and a red potion, one in each hand.


Запрос: photo of picturesque scene of a road surrounded by lush green trees and shrubs. The road is wide and smooth, leading into the distance. On the right side of the road, there's a blue sports car parked with the license plate spelling «SD32B». The sky above is partly cloudy, suggesting a pleasant day. The trees have a mix of green and brown foliage. There are no people visible in the image. The overall composition is balanced, with the car serving as a focal point.

В своем Telegram-канале я предлагал угадать где на этой картинке Midjourney (подписей не было). Подписывайтесь, там можно увидеть заметки по темам статей, над которыми я работаю, и небольшие познавательные посты.


Запрос: a vibrant street wall covered in colorful graffiti, the centerpiece spells «SD3 MEDIUM», in a storm of colors.

Все изображения из статьи доступны в архиве.

Сравнение производительности


Критерии «красивее», «фотореалистичнее» и «лучше понимает запрос» — субъективные метрики, которые сильно зависят от стиля, личных предпочтений человека и умения составлять запросы. Однако нам обещали производительность, которую мы можем измерить.

Для запуска локальных моделей используется следующая аппаратная конфигурация:

  • Intel i5-10500,
  • 32 GB RAM,
  • RTX 3060,
  • SSD,
  • Windows 10.

Какие параметры измеряем? Во-первых, объем занимаемой VRAM. Замеряется мониторингом ОС (диспетчером задач). Во-вторых, среднее время генерации изображения размером 1024x1024. Отображается в логах ComfyUI для каждого запроса.

Для разных моделей используется одинаковая конфигурация запроса.

  • Запрос: a female character with long, flowing hair that appears to be made of ethereal, swirling patterns resembling the Northern Lights or Aurora Borealis. The background is dominated by deep blues and purples, creating a mysterious and dramatic atmosphere. The character's face is serene, with pale skin and striking features. She wears a dark-colored outfit with subtle patterns. The overall style of the artwork is reminiscent of fantasy or supernatural genres.
  • Негативный запрос: <пусто>.
  • Шагов: 20.
  • Сэмплер: dpmpp_2m.
Модель
Объем выделенной VRAM, ГБ
Среднее время генерации изображения размером 1024x1024, с
Stable Diffusion 1.5
2.6
9.97
Stable Diffusion 2.1
2.7
7.44
Stable Diffusion XL 1.0
4.4
12.00
Stable Diffusion 3 Medium (стандартный workflow)
4.4
14.15
Stable Diffusion 3 Medium (специальный wokflow)
4.5
19.12
Вот так при сравнении «в лоб» оптимизация не видна. Видеопамяти актуальная модель требует не меньше, а времени занимает больше. Может быть есть возможность запускать модель на видеокартах с малым объемом оперативной памяти, но мне это останется неизвестным.

Заключение


Сообщества и различные социальные сети подогревают недовольство новой моделью за ее непонимание человеческой анатомии. Также новая лицензия и закрытость Large-модели могут огорчить профессиональных пользователей Stable Diffusion.

Стоит ли переходить на Stable Diffusion 3? Кажется, что сейчас это нерационально: оригинальная модель получила ограничения, а дообученных моделей еще нет. Остается только следить за развитием событий. Вдруг поменяют лицензию и опубликуют Large-версию.

Комментарии (15)


  1. AlexB17
    26.06.2024 08:36
    +3

    Похоже зафайнтюненые SDXL модели останутся с нами надолго - такая надежда была на локальный SD3 и такое разочарование...


    1. Zlobnyi
      26.06.2024 08:36
      +1

      А можете в двух словах описать что это за тюнинг? Я их даже качал и генерил с их помощью картинки, но без понимания что я делаю )


      1. KMiNT21
        26.06.2024 08:36

        Просто берется датасет (новые изображения + их словесные описания) и модель любая (например, базовая), и запускается тренировка модели.

        Если обновляются веса в этом же файле, то это будет новый чек-поинт (т.е. такой же файлик, только байтики внутри чуть другие). Но можно записывать результат и в виде отдельного небольшого файла (см. LoRa).

        Для дообучения модели своим датасетом можно использовать, например, OneTrainer.


  1. Pol1mus
    26.06.2024 08:36

    Почему у них такие маленькие требования. LLM жрут видеопамять сотнями гигабайт а для рисования достаточно 4?


    1. Firemoon Автор
      26.06.2024 08:36

      Я могу ответить только достаточно поверхностно: LLM и рисующие нейросети имеют разную специфику и, соответственно, архитектуру.

      Ранее в статье про Midjourney я писал, что у них появилась команда /shorten, которая немного показывает как работает токенайзер, который удаляет предлоги и прочий «шум». Ну и генерация изображения -- это итеративный процесс, в котором картинка за пару десятков шагов «вытягивается» из шума. Причем картинки, в общем-то, понятны на любом языке. На страничке анонса SD3 написано, что их новые модели имеют от 800 миллионов параметров до 8 миллиардов. Примем эти «параметры» за некую метрику размера модели.

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

      Для сравнения GPT-J-6B, опенсурсный аналог GPT-3, состоит из 6 миллиардов параметров и (в моих тестах) достаточно часто говорит дичь. Причем только на английском. Википедия заявляет (а она может врать), что настоящая GPT-3 содержит 175 миллиардов параметров, ну и GPT-3 уже умела говорить на многих языках.

      Отсюда простой вывод: чем больше параметров в модели -- тем больше нужно мощности, чтобы с ней поладить.


      1. Pol1mus
        26.06.2024 08:36

        Мне кажется надо плясать от размера обучающего набора. Картинки намного больше весят чем тексты.


        1. Moog_Prodigy
          26.06.2024 08:36
          +3

          Картинки весят больше, но вы не правы. Можно просмотреть десяток или сотню картинок с котом, и потом вы уже сможете хотя бы словесно его описать, что у него вот такие вот ушки, такие размеры, есть хвост, такой вот носик и тд. Вы после этого сможете отличить кота от собаки. Но при этом вы не описываете как кот устроен внутри, и что он вообще делает. Вы знаете что такое парейдолия? Вот SD как раз так и работает на этом принципе, если не вдаваться в детали. На входе у нее картинка из случайных пикселей, задаваемых сидом, а уже затем модель ищет в этом шуме нечто похожее на наш запрос. И так много раз (параметр Sampler Steps). В итоге на выходе мы получаем нечто похожее на наш запрос. Или нет, если накрутить CFG.

          В случае текстовых моделей, для того, чтобы описать понятие "кот", нужно прочесть условно говоря, несколько десятков энциклопедий, полностью разобраться в анатомии, повадках и мнениях других людей - владельцев котов, ветеринаров, заводчиков и тд. А потом связать это в многомерном пространстве в тензор. И вот эти все шаги на каждое понятие. Потом они внутри все хитросплетаются, и получается некий аналог Вики, где вообще любое слово - есть ссылка да множественная. Описал по простому. Но вот именно поэтому LLM такие прожорливые - они слишком много знают. Именно эта избыточность дала им такое свойство - быть ИИ, хоть и не все это признают (ну назвать то можно как угодно). Можно конечно сказать "а зачем мне в модели китайский, суахили или иврит?" Но она не хранит прям конкретные словари, а именно понятия. Уберете эти языки - качество модели упадет. Уберете еще что-то - качество упадет. И вот мы ярко видим, как лоботомия моделей (цензура) напрямую влияет на качество работы. Убирают неудобные темы, политику, секс, а в итоге получают тупенького дауна, который даже черный квадрат нарисовать не в состоянии "это нарушает чьи то там права правоторговцев".


          1. Aizz
            26.06.2024 08:36

            Кстати, по поводу "Убирания неугодного" пример как раз SD3 очень показателен. На том же реддите есть картинки, в которых сравнивают оригинальный SD3 и с искусственно разбалансированными весами модели. В обычной ситуации это ухудшает качество, а в случае с SD3 наоборот - улучшает, потому что начинает проходить сквозь фильтр "правильного".


            1. Moog_Prodigy
              26.06.2024 08:36

              А как значит "улучшает"? Это "улучшает" только для "некоторых"?Я вот вижу полную деградацию. И во всем интернете об этом говорят. Я пользовался пару раз и оба раза оно мне сказало что я что-то там нурашил. А я хотел получить картинкой простое разбитое окно (разбитое стекло). Локальная SD это делает на раз два. Но она делает вообще что угодно, я уже забыл что такое сайты с вирусами.

              SD3 хуже по всем показателям, только по скорости неизвестно, но примерно то же самое что и на локалке. Посему - фтопку! Ничего там хорошего нет.


  1. shadovv76
    26.06.2024 08:36

    можете ссылку на рефайнеры дать на сивитай?


    1. Firemoon Автор
      26.06.2024 08:36

      civit.ai -> Models -> Filters -> (выбрать) SD3 -> Закрыть фильтры

      Прям ссылку на эту поисковый запрос, увы, нельзя сделать.


      1. shadovv76
        26.06.2024 08:36

        вчера вечером всё еще действовал временный бан на эти модели. Сивитаи вел консультации с СтабилитиАИ


  1. shadovv76
    26.06.2024 08:36

    вчера вечером всё еще действовал временный бан на эти модели. Сивитаи вел консультации с СтабилитиАИ


  1. ALogachev
    26.06.2024 08:36

    "photo of a woman lying in the grass, best quality. " - stable diffusion работает с питерским вайбом... :)


  1. Axelaredz
    26.06.2024 08:36

    В целом Stable Diffusion 3 Medium работает на 8 Gb VRAM, но частенько падает)
    модель которая 6 гиговая вместе текстовыми интерпретаторами.
    ComfyUI, карта 2060s, проц rysen 5 3600 6x, RAM 16 Gb, ос Kubuntu 24.04