Генерацией картинок занимается stable-diffusion.cpp: он запускает те же модели, что и большие сервисы, но на обычном железе. Промптов было 32: 24 английских и 8 русских. Среди них есть ловушки — надписи («OPEN 24 HOURS»), счёт («три зелёных яблока и одно красное»), расположение («синий куб на жёлтом шаре») и очень русские вещи: самовар, матрёшки, «Булочная».
Сравни сам
Слева направо: SD-Turbo, FLUX.2 Klein, Z-Image Turbo и FLUX.3 Klein. Нажми на картинку, чтобы рассмотреть.
















































Что видно:
- Три современные модели — молодцы. Пишут текст на вывесках и экране телефона, правильно считают яблоки, ставят куб на шар, а не сплавляют их в один предмет.
- По-русски лучше всех Z-Image: идеальная «Булочная» и настоящий самовар. У FLUX.3 «Булочная» тоже красивая, но самовар превратился в чайник, а борщ — в фасолевый суп. FLUX.2 написал «Булочна» и вместо баранок положил лук.
- SD-Turbo — модель из прошлой эпохи. Вместо «OPEN 24 HOURS» рисует «O PDFENN 20FOINULSS», а русских слов не понимает вовсе: на любой русский промпт выдаёт европейскую улицу.
Сколько ждать
Минута из этого времени — запуск процесса. Почему мы не держим модель загруженной, как LLM, — ниже, в истории с подвохом. FLUX.2 Klein вдвое быстрее остальных при почти том же качестве, поэтому для дома выбор очевиден.
История с подвохом
Сначала мы запустили всё через Vulkan, как и LLM, и получили вот это:






Детективная часть:
- На Vulkan FLUX и Z-Image рисуют цветной шум. SD-Turbo при этом работает нормально. Перенос на CPU текстового энкодера ничего не дал, f16-веса тоже. Перенос на CPU VAE дал белый лист.
- Если вынести на CPU саму диффузионную модель, получается нормальная лиса, но за 6 минут на маленькой картинке. Значит, на Vulkan ломается именно диффузия.
- У Intel есть второй путь к iGPU — SYCL (oneAPI). На нём всё заработало, причём в 6 раз быстрее, чем на CPU.
- Но сервер на SYCL зависает на второй картинке. Поэтому каждая картинка рисуется в свежем процессе, и минута уходит на запуск.
- На 768 px SYCL декодировал только полосу посередине кадра. Сверху выходила блёклая фиолетовая копия, снизу ровный серый. Вылечилось флагом
--vae-tiling: картинка декодируется по кусочкам.
iGPU — один на всех
Пока идёт генерация, встроенная графика занята целиком. Когда параллельно работала языковая модель, генерация падала с нехваткой памяти. Если ставить генерацию рядом с ассистентом, ей нужна своя очередь.
Все картинки FLUX.2 Klein
Все 32 промпта — и простые, и с подвохом:































