В мире генеративного искусственного интеллекта каждый новый релиз от ведущих лабораторий воспринимается как событие. Но выход FLUX.3 Image Klein от Black Forest Labs — это не просто очередная итерация. Это фундаментальный сдвиг в том, как мы взаимодействуем с нейросетями для создания визуального контента. Если предыдущие модели были скорее «черными ящиками», где вы бросали промпт и надеялись на лучшее, то FLUX.3 предлагает беспрецедентный уровень контроля. Теперь вы можете не только описывать сцену словами, но и точно указывать, где каждый элемент должен находиться, используя систему bounding-boxes, а также комбинировать несколько референсных изображений в одном запросе.
Эта модель доступна в библиотеке Diffusers с первого дня, что делает её мгновенно доступной для разработчиков и энтузиастов. В этой статье мы подробно разберем, что умеет FLUX.3, как работает её уникальная архитектура с двумя этапами обработки, как использовать контроль компоновки (layout control) для создания сложных композиций, и какие ресурсы требуются для запуска этой мощной машины на вашем оборудовании, включая оптимизации для видеокарт NVIDIA.
01Что такое FLUX.3 Image Klein и почему это важно?
FLUX.3 Image Klein — это открытая модель генерации изображений, которая объединяет в себе три ключевые функции в одном чекпоинте: генерацию из текста (text-to-image), редактирование изображений (image-to-image) и, что самое интересное, контроль компоновки (layout control). Раньше для достижения подобного уровня контроля приходилось использовать несколько моделей или сложные пайплайны с ControlNet. Здесь же всё интегрировано в единую архитектуру.
Модель поставляется в двух основных вариантах:
- black-forest-labs/flux-3-image-klein: Дистиллированная версия, оптимизированная для скорости. Она генерирует изображение 1024×1024 всего за 16 шагов без необходимости в Classifier-Free Guidance (CFG). Это идеальный выбор для быстрых прототипов и интерактивных приложений.
- black-forest-labs/flux-3-image-klein-base: Базовая версия, работающая на 50 шагов с CFG. Она предлагает более высокое качество и стабильность, а также является обязательной для обучения LoRA-адаптеров.
Обе модели работают в рамках Modular Diffusers пайплайна. Это означает, что архитектура модульная: вы можете легко заменять отдельные компоненты (например, текстовый энкодер или VAE) или добавлять свои собственные блоки, что открывает огромные возможности для кастомизации.
02Текст в изображение: Искусство детального описания
Хотя FLUX.3 понимает простые запросы, её истинная сила раскрывается при детальном описании сцены. Модель лучше всего реагирует на промпты, которые включают в себя:
- Субъект: Кто или что находится в центре внимания.
- Окружение: Где происходит действие (лес, город, космос).
- Освещение: Время суток, тип света (золотой час, неон, мягкий рассеянный).
- Композиция: Углы обзора, фокус, глубина резкости.
- Стиль: Фотореализм, иллюстрация, масло, 3D-рендер.
Рассмотрим пример промпта для создания реалистичного фото рыси:
prompt = (
"A wide-angle wildlife photograph of a red fox standing alert in a snow-covered forest clearing at golden hour. "
"The fox is centered in the frame, its thick orange winter coat contrasting with the fresh white snow, breath "
"visible in the cold air. Snow-laden pine trees fill the softly blurred background, and low warm sunlight rakes "
"across the scene from the left, casting long blue shadows."
)Такой детальный запрос позволяет модели точно интерпретировать намерения создателя. Обратите внимание на упоминание «long blue shadows» (длинные синие тени) — это конкретный визуальный маркер, который FLUX.3 успешно воспроизводит, добавляя реализма сцене.

03Мульти-референсы: Комбинирование объектов
Одной из самых мощных функций FLUX.3 является возможность использования нескольких референсных изображений одновременно. Раньше, чтобы поместить конкретного персонажа в новую сцену, приходилось использовать сложные техники inpainting или тренировать отдельные LoRA. Здесь же вы можете просто передать список изображений и указать в промпте, какой объект откуда берется.
Синтаксис использует теги <ref_image_0>, <ref_image_1> и так далее, которые соответствуют порядку передачи изображений в аргументе image.
# Генерируем референсы
red_fox = pipe(prompt="a red fox", generator=torch.Generator().manual_seed(42), output="images")[0]
bench = pipe(prompt="a wooden bench", generator=torch.Generator().manual_seed(42), output="images")[0]
# Комбинируем их
combined = pipe(
prompt="The fox from sitting on the wooden bench from in a snowy setting.",
image=[red_fox, bench],
output="images"
)[0] В этом примере модель берет текстуру и форму лисы из первого изображения, структуру скамьи из второго, и помещает их в единую сцену, сохраняя целостность освещения и перспективы. Это открывает невероятные возможности для создания коллажей, моддинга персонажей в игры или создания рекламных макетов.

04Контроль компоновки (Layout Control): JSON-магия
Самая инновационная часть FLUX.3 — это система контроля компоновки. Она позволяет вам не просто описывать, что должно быть на картинке, но и точно указывать координаты каждого элемента. Это делается через добавление JSON-списка регионов после текстового описания.
Каждый регион в JSON имеет следующие поля:
id: Уникальный идентификатор, который ссылается на тег в промпте (например,<background_1>).bbox: Бounding box в формате[y_min, x_min, y_max, x_max]. Важно: координаты нормализованы в диапазоне 0–1000, что означает, что один и тот же JSON будет работать для изображений любого размера.desc: Текстовое описание того, что должно находиться внутри этого bounding box.
Давайте разберем пример создания минималистичной графики с силуэтом бегуна:
layout_prompt = (
"Minimalist graphic illustration featuring a black silhouette of a person centered against a "
"solid, vibrant chartreuse background . The figure is captured in a dynamic, mid-stride running "
"pose, facing toward the left side of the frame. "
'[{"id": "background_1", "bbox": [0, 0, 1000, 1000], "desc": "A flat field of neon yellow-green with a subtle paper texture and fine, organic grain."}, '
'{"id": "silhouette_1", "bbox": [150, 150, 850, 850], "desc": "A black silhouette of a person in motion, made of dense stippled ink. The leading edges are solid; the trailing arm and leg dissolve into coarse square pixels and scattered dots."}]'
) В этом коде мы говорим модели: «Займи весь фон (0,0 до 1000,1000) неоново-зеленым цветом, а в центре, в квадрате от 150 до 850, помести силуэт бегуна». Модель строго соблюдает эти границы, что критически важно для дизайна интерфейсов, плакатов и типографики, где важна точная композиция.

05Редактирование с перемещением объектов
Контроль компоновки работает не только для генерации с нуля, но и для редактирования существующих изображений. Вы можете указать, откуда берется объект (src_bbox в референсном изображении) и куда он должен переместиться (tgt_bbox в новом изображении).
Представьте, что у вас есть фото с фигуркой рыцаря, и вы хотите сдвинуть его влево, не меняя остальной фон. Для этого нужно зафиксировать остальные элементы, присвоив им одинаковые src_bbox и tgt_bbox, а для рыцаря указать разные координаты.
edit_prompt = (
"In , move the miniature grey amigurumi knight figure upwards and to the left along the "
"yarn cliff . Keep the rest of the image completely unchanged... "
'[{"id": "knight_1", "from": "ref_image_0", "src_bbox": [500, 150, 850, 350], "tgt_bbox": [194, 55, 544, 255], "desc": "..."}, '
'{"id": "backdrop_1", "from": "ref_image_0", "src_bbox": [0, 0, 1000, 1000], "tgt_bbox": [0, 0, 1000, 1000], "desc": "..."}]'
) Здесь рыцарь перемещается из области [500, 150, 850, 350] в [194, 55, 544, 255], а фон (backdrop) остается на месте, так как его координаты не меняются. Это мощный инструмент для точечного редактирования сцен без необходимости перегенерировать всё изображение заново.

06Архитектура: Как устроен монстр под капотом
Чтобы понять, почему FLUX.3 так быстро и качественно работает, нужно заглянуть в её архитектуру. Модель является латентной flow-моделью, что означает, что она работает не с пикселями напрямую, а со сжатым латентным представлением.
От пикселей к токенам
VAE (Variational Autoencoder) в FLUX.3 сжимает изображение в 8 раз по каждой оси и использует 32 канала. Затем каждые 2x2 патча латента упаковываются в один токен с 128 каналами. Таким образом, один токен покрывает область 16x16 пикселей. Изображение 1024x1024 превращается в сетку 64x64, то есть 4096 токенов. Шум, с которого начинается генерация, имеет точно такую же форму.
Текстовый энкодер Qwen3-VL
В отличие от стандартных CLIP-энкодеров, FLUX.3 использует Qwen3-VL — большую мультимодальную языковую модель. Но здесь есть нюанс: модель не берет только последний слой. Она извлекает скрытые состояния из восьми слоев (4, 8, ..., 32 из 36) и объединяет их. Каждый текстовый токен становится вектором размерности 20,480 (8 * 2560), который затем проецируется в ширину трансформера (3072). Это дает трансформеру богатый контекст на разных уровнях абстракции языка.
Двухэтапная обработка
Трансформер обрабатывает токены в два этапа:
- Этап 1: Пер-модальные блоки. Текстовые токены, токены шума изображения и токены референсных изображений обрабатываются отдельно. У каждого типа токенов свои собственные веса (по 5 блоков на поток). На этом этапе каждый тип данных «очищается» и структурируется независимо.
- Этап 2: Совместные блоки. Все потоки объединяются в одну последовательность
[text | image | reference]и проходят через 28 общих блоков. Здесь происходит магия взаимодействия: изображение учится у текста, а референсы интегрируются в сцену.
Такая архитектура позволяет модели сначала понять каждый компонент по отдельности, а затем гармонично объединить их, избегая артефактов, характерных для простых слияний.

07Оптимизация и запуск на разных GPU
FLUX.3 — мощная модель, и для её работы требуется значительный объем видеопамяти. Однако Black Forest Labs и сообщество Diffusers предоставляют несколько путей для запуска даже на слабых картах.
Квантование: FP8 и NVFP4
Помимо стандартного bf16, модель доступна в квантованных форматах:
- FP8R (Rowwise FP8): Работает на GPU с вычислительной способностью 8.9+ (Ada, Hopper, Blackwell). Весы деquantize каждый шаг, что экономит память, но не всегда дает прирост скорости.
- NVFP4: Эксклюзивно для архитектур Blackwell (RTX 50xx, H200 и т.д.) при использовании библиотек flashinfer. Это самый быстрый и эффективный по памяти вариант.
Загрузить квантованные веса можно через from_single_file, что позволяет избежать загрузки полного bf16 чекпоинта, если у вас мало VRAM.
from diffusers import BFLQuantizationConfig, Flux3Transformer2DModel, ModularPipeline
model_id = "black-forest-labs/flux-3-image-klein-base"
variant = "fp8r" # или "nvfp4"
transformer = Flux3Transformer2DModel.from_single_file(
f"https://huggingface.co/{model_id}/blob/main/variants/{variant}/model.safetensors",
config=model_id,
subfolder="transformer",
quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16),
dtype=torch.bfloat16,
)
pipe = ModularPipeline.from_pretrained(model_id)
pipe.load_components(dtype=torch.bfloat16)
pipe.update_components(transformer=transformer)
pipe.to("cuda")Управление памятью
Если у вас даже 24 ГБ VRAM мало, используйте ComponentsManager с автоматическим CPU-offloading. Это перемещает компоненты на CPU, когда они не используются, экономя память ценой небольшого снижения скорости. Также полезно предварительно закодировать латенты (--cache_latents при обучении) и использовать 8-битный оптимизатор Adam.
08Обучение LoRA: Адаптация под свой стиль
FLUX.3 поддерживает обучение LoRA как для text-to-image, так и для image-to-image. Это позволяет вам обучить модель специфическому стилю (например, таро-карты, аниме, архитектурный скетч) или научить её выполнять конкретные инструкции по редактированию.
Для обучения стиля таро-карт используется скрипт train_dreambooth_lora_flux3_klein.py. Ключевые параметры для экономии памяти:
--gradient_checkpointing: Пересчитывает активации на обратном проходе, снижая потребление VRAM.--cache_latents: Предварительно кодирует изображения, освобождая VAE.--use_8bit_adam: Хранит состояния оптимизатора в 8-битном формате.
accelerate launch train_dreambooth_lora_flux3_klein.py \
--pretrained_model_name_or_path="black-forest-labs/flux-3-image-klein-base" \
--dataset_name="multimodalart/1920-raider-waite-tarot-public-domain" \
--caption_column="caption" \
--instance_prompt="trtcrd" \
--output_dir="trained-flux3-tarot-lora" \
--mixed_precision="bf16" \
--resolution=1024 \
--use_aspect_ratio_buckets \
--train_batch_size=1 \
--rank=16 \
--lora_alpha=16 \
--learning_rate=1e-4 \
--lr_scheduler="constant" \
--max_train_steps=1500 \
--validation_prompt="a trtcrd of a cat, tarot style" \
--validation_epochs=25 \
--seed=0 \
--push_to_hubДля image-to-image редактирования используется аналогичный скрипт, но данные подаются в виде троек: (референсное изображение, целевое изображение, инструкция). Референс адресуется в промпте как <ref_image_0>.
09Что это значит на практике
Появление FLUX.3 Image Klein меняет парадигму работы с генеративным ИИ. Больше не нужно довольствоваться случайными результатами или сложными компромиссами между качеством и контролем. Теперь вы можете:
- Создавать точные макеты: Используя JSON-координаты, вы можете размещать элементы дизайна в строго заданных позициях, что идеально для UI/UX дизайна и рекламных баннеров.
- Комбинировать референсы: Легко смешивать объекты из разных источников, создавая сложные сцены без необходимости сложного inpainting.
- Экономить ресурсы: Благодаря дистилляции и квантованию, запуск качественной генерации стал возможен даже на потребительских видеокартах, особенно с учетом оптимизаций для российских пользователей, использующих локальные серверы.
- Кастомизировать под себя: Гибкая архитектура и поддержка LoRA позволяют адаптировать модель под любые нишевые задачи, от медицинской визуализации до художественных проектов.
FLUX.3 — это не просто еще одна модель. Это инструмент, который возвращает контроль в руки создателя, позволяя направлять творческий процесс с хирургической точностью. Если вы работали с генерацией изображений раньше, обязательно попробуйте этот релиз — он того стоит.
Источник: Hugging Face ↗
