Buckets:
| # | |
| # Лицензия Apache License, Version 2.0 («Лицензия»); | |
| # вы можете использовать этот файл только в соответствии с Лицензией. | |
| # Вы можете получить копию Лицензии по адресу | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Если это не требуется применимым законодательством или не оговорено письменно, программное | |
| # распространяется по Лицензии на условиях «КАК ЕСТЬ», | |
| # БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, прямо указанных или подразумеваемых. | |
| # См. Лицензию для получения конкретных условий, регулирующих разрешения и | |
| # ограничениями Лицензии. --> | |
| # FLUX 3 Image Klein | |
| FLUX 3 Image Klein — это модель генерации изображений с 5,6 млрд параметров от Black Forest Labs: единый трансформер ([Flux3Transformer2DModel](/docs/diffusers/main/ru/api/models/flux3_transformer#diffusers.Flux3Transformer2DModel)) генерирует изображения по текстовому запросу, как самостоятельно, так и в сочетании с одним или несколькими референсными изображениями. Текстовое условие формируется с помощью Qwen3-VL, а для изображений используется упакованный автоэнкодер FLUX.2 (`AutoencoderKLFlux2`). | |
| FLUX 3 Image Klein поставляется в виде [модульного конвейера](../../modular_diffusers/overview). Начните с генерации изображения по тексту: | |
| ```python | |
| import torch | |
| from diffusers import ModularPipeline | |
| pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base") | |
| pipe.load_components(dtype={"vae": torch.float32, "default": torch.bfloat16}) | |
| pipe.to("cuda") | |
| image = pipe( | |
| prompt="A red fox in a snow-covered forest clearing at golden hour", | |
| generator=torch.Generator().manual_seed(0), | |
| output="images", | |
| )[0] | |
| image.save("fox.png") | |
| ``` | |
| `prompt` — единственный обязательный входной параметр: конвейер использует рекомендуемые настройки выборки (50 шагов, guidance scale 3.5, scheduler shift 6.93) и по умолчанию генерирует изображения размером 1024 x 1024. За один вызов принимается один промпт; для получения нескольких изображений по одному промпту используйте `num_images_per_prompt`. | |
| As you can see in the example above, loading and running differ a little from a `DiffusionPipeline`. Loading is lazy: [from_pretrained()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) only builds the pipeline, and you call [load_components()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.load_components) to load the weights. A call returns the pipeline state, and you ask for what you need with `output`: `output="images"` here, or `output=["images", "prompt"]` to also get the caption the prompt upsampler wrote. | |
| > [!TIP] | |
| > Если вы впервые работаете с `ModularPipeline`, прочитайте [быстрый старт](../../modular_diffusers/quickstart), а если вы знакомы со стандартными пайплайнами — [Переход из DiffusionPipeline](../../modular_diffusers/coming_from_diffusion_pipeline). Помимо загрузки и вывода, есть несколько других отличий: [guidance](#guidance-scale), [callbacks](#per-step-callbacks) и [offloading](#memory). | |
| ## Увеличение размера промпта | |
| Промпт имеет значение: FLUX 3 Image Klein принимает полные описания сцены, в которых указаны объект, композиция, освещение и атмосфера, а не короткие запросы; запрос, отправленный в исходном виде, приводит к общему результату. Именно поэтому конвейер сначала запускает апгрейдер промпта для каждого запроса, будь то генерация изображения по тексту или редактирование. Это отдельная 9B-модель от Black Forest Labs ([black-forest-labs/flux-3-image-klein-pup](https://huggingface.co/black-forest-labs/flux-3-image-klein-pup)), которая расширяет `prompt` до такого описания перед текстовым энкодером, поэтому достаточно короткого промпта. | |
| Модель-апгрейдер промпта превращает короткий запрос, а при редактировании — вместе с референсными изображениями, в полное описание сцены, которое получает модель: средний план и стиль, сцена, освещение и камера, каждый объект с его цветами, материалами и позицией в кадре. Одна модель покрывает генерацию изображений по тексту, редактирование с референсными изображениями и компоновку с использованием рамок. Написанное ею описание возвращается как вывод `prompt`. В примере выше запросите его вместе с изображениями, чтобы увидеть, что получила модель изображений: | |
| ```python | |
| out = pipe( | |
| prompt="A red fox in a snow-covered forest clearing at golden hour", | |
| generator=torch.Generator().manual_seed(0), | |
| output=["images", "prompt"], | |
| ) | |
| print(out["prompt"]) | |
| ``` | |
| ``` | |
| Full-color outdoor wildlife photograph taken from a low eye-level perspective in a snow-covered forest clearing at golden hour. In the center foreground, a red fox stands in profile facing left, its body turned toward the viewer and its head raised as it looks across the clearing. The fox has dense rust-red winter fur, a white throat and chest, black lower legs, pointed ears with dark tips, and a long bushy tail ending in white. ... | |
| ``` | |
| Полное описание занимает около 240 слов; `max_new_tokens` ограничивает его длину (по умолчанию 3584). | |
| Вы можете вывести `doc` шага, чтобы увидеть, что он принимает и что записывает: | |
| ```python | |
| print(pipe.blocks.sub_blocks["prompt_upsampler"].doc) | |
| ``` | |
| ``` | |
| Inputs: | |
| prompt (`str`): | |
| The edit instruction to expand into the full caption (one per call). | |
| image (`Image | list`, *optional*): | |
| The reference image(s) of the edit, at most 10; the same ones the pipeline receives. | |
| boxes (`list`, *optional*): | |
| Layout boxes, each {'id', 'desc', 'from', 'src_bbox', 'tgt_bbox'} with the boxes as [y_min, x_min, y_max, x_max] in | |
| 0-1: ... | |
| max_new_tokens (`int`, *optional*, defaults to 3584): | |
| The most tokens the upsampler may generate for the caption. | |
| Outputs: | |
| prompt (`str`): | |
| The full caption, replacing the request. | |
| ``` | |
| Как и другие блоки в конвейере, блок `prompt_upsampler` также выполняется самостоятельно. Рекомендуемый способ — вынуть его из блоков: вынутый блок становится автономным апсемплером, а оставшиеся блоки образуют конвейер, который принимает расширенный описатель как `prompt`: | |
| ```python | |
| blocks = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base").blocks | |
| pup_block = blocks.sub_blocks.pop("prompt_upsampler") | |
| pup = pup_block.init_pipeline("black-forest-labs/flux-3-image-klein-base") | |
| pup.load_components(dtype=torch.bfloat16) | |
| pup.to("cuda") | |
| caption = pup(prompt="A red fox in a snow-covered forest clearing at golden hour", output="prompt") | |
| pipe = blocks.init_pipeline("black-forest-labs/flux-3-image-klein-base") | |
| pipe.load_components(dtype={"vae": torch.float32, "default": torch.bfloat16}) | |
| pipe.to("cuda") | |
| image = pipe(prompt=caption, generator=torch.Generator().manual_seed(0), output="images")[0] | |
| ``` | |
| Таким образом, его можно использовать как отдельный этап, на собственном GPU или за собственным endpoint, а UI может отображать сгенерированное описание и позволять пользователю отредактировать его перед генерацией. На место upsampler можно поставить любую другую LLM, используя те же системные промпты: передайте ей `system_prompts["t2i"]` из репозитория upsampler (или `"i2i"`, при этом ссылки должны идти в начале пользовательского сообщения) в качестве системного промпта, а запрос — в качестве пользовательского сообщения, и передайте возвращённое описание как `prompt` в `pipe`. | |
| ## Изображение в изображение | |
| Передайте одно или несколько эталонных изображений с помощью `image`. Одно эталонное изображение сохраняется целиком: оно уменьшается только при размере более 4 мегапикселей, дополняется до сетки 16 пикселей, а по умолчанию генерация выполняется в его размере, поэтому результат редактирования имеет размер исходного изображения. Несколько эталонных изображений приводятся к размеру менее 1 мегапикселя каждое и обрезаются по сетке, а по умолчанию генерация выполняется в размере первого из них. Указанные `height`/`width` переопределяют значения по умолчанию. Опишите *целевое* изображение как полную подпись к эталонному с включённым в неё редактированием, а не как однострочную инструкцию, либо позвольте [prompt upsampler](#prompt-upsampling) составить её на основе инструкции и эталонных изображений: | |
| ```python | |
| night = pipe( | |
| prompt="the same scene at night under a full moon", | |
| image=image, | |
| generator=torch.Generator().manual_seed(0), | |
| output=["images", "prompt"], | |
| ) | |
| ``` | |
| При наличии нескольких ссылок обращайтесь к ним как к первому изображению, второму изображению и так далее в том порядке, в котором они передаются в `image`; в подписи для модели изображений они обозначаются как `<ref_image_0>`, `<ref_image_1>` и так далее: | |
| ```python | |
| combined = pipe( | |
| prompt="the fox from the first image sitting on the wooden bench from the second image", | |
| image=[image, bench], | |
| height=768, | |
| width=1360, | |
| output="images", | |
| )[0] | |
| ``` | |
| Передайте `height` и/или `width`, чтобы переопределить вычисленный размер. | |
| ## Управление макетом | |
| Чтобы явно разместить контент, передайте `boxes`: для каждого элемента укажите `id`, краткое `desc` и `bbox` в формате `[y_min, x_min, y_max, x_max]` в диапазоне 0–1 (начало координат — левый верхний угол), чтобы результат не зависел от размера вывода. Апсемплер размещает подпись вокруг них, ссылаясь на каждый элемент как `<id>`, и добавляет таблицу с координатами, сохраняя ваши значения без изменений: | |
| ```python | |
| boxes = [ | |
| {"id": "balloon_1", "desc": "a red and yellow striped hot-air balloon", "bbox": [0.08, 0.06, 0.48, 0.38]}, | |
| {"id": "balloon_2", "desc": "a small blue hot-air balloon", "bbox": [0.20, 0.62, 0.42, 0.80]}, | |
| ] | |
| out = pipe(prompt="hot-air balloons over a green valley at sunrise", boxes=boxes, output=["images", "prompt"]) | |
| ``` | |
| При редактировании поле указывает источник с помощью `from`: `"target"` с `tgt_bbox` добавляет новый элемент в это место, `"ref_image_0"` с `src_bbox` и `tgt_bbox` перемещает элемент из этого эталонного изображения (равные поля оставляют его на месте): | |
| ```python | |
| boxes = [{"id": "cactus", "desc": "a small potted cactus", "from": "target", "src_bbox": None, "tgt_bbox": [0.55, 0.62, 0.85, 0.85]}] | |
| out = pipe(prompt="add a small potted cactus in the marked spot", image=mug, boxes=boxes, output=["images", "prompt"]) | |
| boxes = [{"id": "knight", "desc": "the knight figure", "from": "ref_image_0", "src_bbox": [0.50, 0.15, 0.85, 0.35], "tgt_bbox": [0.19, 0.06, 0.54, 0.26]}] | |
| out = pipe(prompt="move the knight up and to the left, keep the rest unchanged", image=knight, boxes=boxes, output=["images", "prompt"]) | |
| ``` | |
| Подпись, которую читает модель изображения, содержит элементы, помеченные в тексте как `<id>`, а также таблицу, добавленную в формате JSON, где координаты ячеек указаны в системе координат 0–1000; для просмотра содержимого выведите результат `prompt`. Подпись, написанная вручную в таком формате, передаётся в конвейер без этого шага, как описано в разделе [Улучшение промпта](#prompt-upsampling). | |
| ## Масштаб направляющего сигнала | |
| Пайплайн применяет классификаторно-свободное управление (classifier-free guidance) через свой компонент `guider` и не принимает аргумент `guidance_scale` во время вызова. По умолчанию используется [ClassifierFreeGuidance](/docs/diffusers/main/ru/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance) с `guidance_scale=3.5`, что является рекомендуемым значением для обоих рабочих процессов. Чтобы изменить его, создайте обновлённую копию guider: | |
| ```python | |
| pipe.guider = pipe.guider.new(guidance_scale=5.0) | |
| ``` | |
| См. [руководство по guider](../../using-diffusers/guiders), чтобы переключиться на другой метод guidance. | |
| ## Модель с дистилляцией по шагам | |
| Чекпоинт, полученный с помощью дистилляции шагов, генерирует результат за 16 шагов без классификаторного свободного руководства. Его трансформер представляет собой flow map: на каждом шаге ему сообщаются текущий временной шаг и тот, к которому шаг перескакивает. Он загружается так же, как базовая модель (файл `modular_model_index.json` в репозитории указывает на [Flux3DistilledModularPipeline](/docs/diffusers/main/ru/api/pipelines/flux3#diffusers.Flux3DistilledModularPipeline) и [Flux3DistilledAutoBlocks](/docs/diffusers/main/ru/api/pipelines/flux3#diffusers.Flux3DistilledAutoBlocks)); в пайплайне нет `guider`, и он не принимает `negative_prompt`: | |
| ```python | |
| pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein") | |
| pipe.load_components(dtype=torch.bfloat16) | |
| pipe.to("cuda") | |
| image = pipe(prompt=prompt, generator=torch.Generator().manual_seed(0), output="images")[0] | |
| ``` | |
| Он поддерживает те же два сценария использования, что и базовая модель. `num_inference_steps` по умолчанию равно 16; модель обучена для 4–16 шагов. | |
| ## Воспроизводимая генерация | |
| Генератор `generator` фиксирует шум, который извлекает конвейер (см. [Воспроизводимость](../../using-diffusers/reusing_seeds)). Чтобы переиспользовать шум, извлеченный в другом месте, передайте его как `latents` с формой `(batch_size, 128, height // 16, width // 16)`. Например, [реализация BFL](https://github.com/black-forest-labs/flux-3-image-klein) извлекает шум в виде токенов изображения на CPU и преобразует его в bf16; это позволяет воспроизвести ее образец для заданного seed: | |
| ```python | |
| height, width = 1024, 1024 | |
| h, w = height // 16, width // 16 | |
| noise = torch.randn((h * w, 128), generator=torch.Generator().manual_seed(0)).to(torch.bfloat16) | |
| latents = noise.T.reshape(1, 128, h, w) | |
| image = pipe(prompt=prompt, latents=latents, height=height, width=width, output="images")[0] | |
| ``` | |
| ## Рабочие процессы | |
| Пайплайн поддерживает два рабочих процесса: `text2image` и `image_conditioned`; тот, который будет выполнен, определяется входными данными (`image` выбирает image-to-image). Метод [from_pretrained()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.from_pretrained) также может создать пайплайн для одного рабочего процесса с помощью аргумента `workflow`, при этом он ожидает и загружает только те компоненты, которые нужны этому рабочему процессу: | |
| ```python | |
| from diffusers.modular_pipelines import Flux3AutoBlocks | |
| print(Flux3AutoBlocks().available_workflows) | |
| # ["text2image", "image_conditioned"] | |
| t2i = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base", workflow="text2image") | |
| print(t2i.blocks.doc) | |
| ``` | |
| ## Обработчики на каждом шаге | |
| Чтобы использовать существующую функцию обратного вызова, вставьте блок в цикл денойзинга. В [руководстве по callback-функциям](../../using-diffusers/callback#modular-pipelines) приведён простой пример с блоком `CallbackOnStepEnd` и вспомогательной функцией `walk_denoise_loops`: | |
| ```python | |
| blocks = Flux3AutoBlocks() # or Flux3DistilledAutoBlocks | |
| for loop in walk_denoise_loops(blocks): | |
| loop.sub_blocks["callback"] = CallbackOnStepEnd() | |
| pipe = blocks.init_pipeline("black-forest-labs/flux-3-image-klein-base") | |
| image = pipe(prompt=caption, callback_on_step_end=my_callback, output="images")[0] | |
| ``` | |
| Чтобы остановить процесс досрочно, вызовите исключение из колбэка; флаг `interrupt` отсутствует. | |
| ## Память | |
| Загрузка всего в bf16 занимает около 39 ГБ весов: трансформер содержит 5,5 млрд параметров, текстовый энкодер Qwen3-VL-4B — 4 млрд, а [prompt upsampler](#prompt-upsampling) — 9 млрд (около 19 ГБ отдельно), при этом image VAE находится в fp32. Пайплайн, собранный без шага upsampler (см. там), загружает около 20 ГБ. Для GPU с меньшим объемом памяти включите offloading компонентов; менеджер перемещает компоненты между CPU и GPU по мере необходимости на каждом шаге, включая upsampler: | |
| ```python | |
| from diffusers import ComponentsManager, ModularPipeline | |
| manager = ComponentsManager() | |
| pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base", components_manager=manager) | |
| pipe.load_components(dtype={"vae": torch.float32, "default": torch.bfloat16}) | |
| manager.enable_auto_cpu_offload(device="cuda") | |
| ``` | |
| ## Загрузка из одного файла | |
| [Flux3Transformer2DModel](/docs/diffusers/main/ru/api/models/flux3_transformer#diffusers.Flux3Transformer2DModel) загружает трансформер напрямую из пакета модели Black Forest Labs с помощью [from_single_file()](/docs/diffusers/main/ru/api/loaders/single_file#diffusers.loaders.FromOriginalModelMixin.from_single_file). Файл `config.json` не читается; передайте конфигурацию diffusers через параметры `config` и `subfolder`. | |
| ```python | |
| import torch | |
| from diffusers import Flux3Transformer2DModel, ModularPipeline | |
| transformer = Flux3Transformer2DModel.from_single_file( | |
| "https://huggingface.co/black-forest-labs/flux-3-image-klein-base/blob/main/model.safetensors", | |
| config="black-forest-labs/flux-3-image-klein-base", | |
| subfolder="transformer", | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base") | |
| pipe.load_components(dtype={"vae": torch.float32, "default": torch.bfloat16}) | |
| pipe.update_components(transformer=transformer) | |
| pipe.to("cuda") | |
| ``` | |
| Сначала загрузите остальные компоненты по имени: [load_components()](/docs/diffusers/main/ru/api/modular_diffusers/pipeline#diffusers.ModularPipeline.load_components) без `names` также загрузил бы трансформер из репозитория пайплайна. | |
| Также поддерживается загрузка контрольных точек FP8r и NVFP4 в формате одного файла. Оба варианта загружаются через один и тот же вызов с [BFLQuantizationConfig](/docs/diffusers/main/ru/api/quantization#diffusers.BFLQuantizationConfig). Требования к ядрам для каждой схемы описаны в [руководстве по квантованию BFL](../../quantization/bfl). | |
| ```python | |
| from diffusers import BFLQuantizationConfig | |
| transformer = Flux3Transformer2DModel.from_single_file( | |
| "https://huggingface.co/black-forest-labs/flux-3-image-klein-base/blob/main/variants/nvfp4/model.safetensors", | |
| config="black-forest-labs/flux-3-image-klein-base", | |
| subfolder="transformer", | |
| quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16), | |
| dtype=torch.bfloat16, | |
| ) | |
| ``` | |
| При загрузке чекпоинтов, полученных с помощью дистилляции по шагам, нам необходимы их конфигурации (`flow_map=True`): | |
| ```python | |
| transformer = Flux3Transformer2DModel.from_single_file( | |
| "https://huggingface.co/black-forest-labs/flux-3-image-klein/blob/main/variants/nvfp4/model.safetensors", | |
| config="black-forest-labs/flux-3-image-klein", | |
| subfolder="transformer", | |
| quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16), | |
| dtype=torch.bfloat16, | |
| ) | |
| ``` | |
| ## Flux3ModularPipeline[[diffusers.Flux3ModularPipeline]] | |
| #### diffusers.Flux3ModularPipeline[[diffusers.Flux3ModularPipeline]] | |
| ```python | |
| diffusers.Flux3ModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/flux3/modular_pipeline.py#L24) | |
| Модульный ModularPipeline для FLUX.3. | |
| ## Flux3AutoBlocks[[diffusers.Flux3AutoBlocks]] | |
| #### diffusers.Flux3AutoBlocks[[diffusers.Flux3AutoBlocks]] | |
| ```python | |
| diffusers.Flux3AutoBlocks() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/flux3/modular_blocks_flux3.py#L339) | |
| Auto-блоки, выполняющие генерацию изображений по тексту и по изображению с использованием FLUX.3. `prompt` сначала проходит через prompt upsampler; чтобы закодировать его в исходном виде, удалите шаг `prompt_upsampler`. | |
| Поддерживаемые рабочие процессы: | |
| - `text2image`: требуется `prompt` | |
| - `image_conditioned`: требуется `prompt`, `image` | |
| Компоненты: prompt_upsampler (`Qwen3_5ForConditionalGeneration`): повышатель разрешения промпта. prompt_upsampler_processor (`AutoProcessor`): его процессор. text_encoder (`Qwen3VLForConditionalGeneration`) tokenizer (`AutoProcessor`) image_processor (`Flux3ImageProcessor`) vae (`AutoencoderKLFlux2`) transformer (`Flux3Transformer2DModel`) scheduler (`FlowMatchEulerDiscreteScheduler`) guider (`ClassifierFreeGuidance`) | |
| Входные данные: prompt (`str`): инструкция по редактированию, которую нужно развернуть в полное описание (одна на вызов). image (`Image | list`, *необязательный*): эталонное изображение(я) для редактирования, не более 10; те же, что получает конвейер. boxes (`list`, *необязательный*): рамки компоновки, каждая в формате {'id', 'desc', 'from', 'src_bbox', 'tgt_bbox'}, где координаты заданы как [y_min, x_min, y_max, x_max] в диапазоне 0-1: 'from': 'target' с `tgt_bbox` добавляет элемент в указанное место, 'from': 'ref_image_0', ... с `src_bbox` и `tgt_bbox` перемещает элемент с эталонного изображения. max_new_tokens (`int`, *необязательный*, по умолчанию 3584): максимальное количество токенов, которое может сгенерировать модуль расширения описания. negative_prompt (`str`, *необязательный*): промпт, который не должен направлять генерацию max_sequence_length (`int`, *необязательный*, по умолчанию 8192): максимальное количество токенов в промпте; более длинные промпты будут усечены. text_encoder_out_layers (`tuple`, *необязательный*, по умолчанию (4, 8, 12, 16, 20, 24, 28, 32)): индексы скрытых слоев текстового кодировщика, состояния которых складываются для формирования текстовых эмбеддингов num_images_per_prompt (`int`, *необязательный*, по умолчанию 1): количество изображений для генерации на один промпт. image_cond_latents (`list`, *необязательный*): нормализованные упакованные латенты эталонных изображений, один тензор формы (B, C, height_i//16, width_i//16) на изображение height (`int`, *необязательный*, по умолчанию None или 1024, в зависимости от рабочего процесса): высота сгенерированного изображения в пикселях; по умолчанию равна высоте первого эталонного изображения width (`int`, *необязательный*, по умолчанию None или 1024, в зависимости от рабочего процесса): ширина сгенерированного изображения в пикселях; по умолчанию равна ширине первого эталонного изображения reference_crop (`list | NoneType`, *необязательный*): для каждого эталона — рамка эталона внутри его канваса с отступами или None, полученная на этапе предобработки latents (`Tensor`): предварительно сгенерированные шумовые латенты для генерации изображения. generator (`Generator`, *необязательный*): генератор Torch для детерминированной генерации. num_inference_steps (`int`): количество шагов денойзинга. timesteps (`Tensor`): временные шаги для процесса денойзинга. (перекрывает `num_inference_steps`, если заданы) sigmas (`list`, *необязательный*): пользовательские сигмы для процесса денойзинга. (перекрывает `num_inference_steps`, если заданы) **denoiser_input_fields (`None`, *необязательный*): условные входные данные для денойзера: например, prompt_embeds, negative_prompt_embeds и т.д. attention_kwargs (`dict`, *необязательный*): дополнительные аргументы для процессоров внимания. output_type (`str`, *необязательный*, по умолчанию pil): формат вывода: 'pil', 'np', 'pt'. | |
| Выводы: images (`list`): Сгенерированные изображения. latents (`Tensor`): Денойзанные латенты. | |
| ## Flux3DistilledAutoBlocks[[diffusers.Flux3DistilledAutoBlocks]] | |
| #### diffusers.Flux3DistilledAutoBlocks[[diffusers.Flux3DistilledAutoBlocks]] | |
| ```python | |
| diffusers.Flux3DistilledAutoBlocks() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/flux3/modular_blocks_flux3_distilled.py#L258) | |
| Auto-блоки, выполняющие генерацию изображений по тексту и по изображению с использованием ступенчато-дистиллированной модели FLUX.3 (16 шагов, без классификаторного свободного руководства). `prompt` сначала проходит через апсемплер промпта; чтобы закодировать его в исходном виде, удалите шаг `prompt_upsampler`. | |
| Поддерживаемые рабочие процессы: | |
| - `text2image`: требуется `prompt` | |
| - `image_conditioned`: требуется `prompt`, `image` | |
| Компоненты: prompt_upsampler (`Qwen3_5ForConditionalGeneration`): генератор расширенных промптов. prompt_upsampler_processor (`AutoProcessor`): его процессор. text_encoder (`Qwen3VLForConditionalGeneration`) tokenizer (`AutoProcessor`) image_processor (`Flux3ImageProcessor`) vae (`AutoencoderKLFlux2`) transformer (`Flux3Transformer2DModel`) scheduler (`FlowMatchEulerDiscreteScheduler`) | |
| Входные данные: prompt (`str`): инструкция по редактированию, которую нужно развернуть в полную подпись (одна на вызов). image (`Image | list`, *необязательный*): эталонное изображение(я) для редактирования, не более 10; те же, что получает конвейер. boxes (`list`, *необязательный*): рамки компоновки, каждая в формате {'id', 'desc', 'from', 'src_bbox', 'tgt_bbox'}, где координаты заданы как [y_min, x_min, y_max, x_max] в диапазоне 0–1: 'from': 'target' с `tgt_bbox` добавляет элемент в указанное место, 'from': 'ref_image_0', ... с `src_bbox` и `tgt_bbox` перемещает элемент с эталонного изображения. max_new_tokens (`int`, *необязательный*, по умолчанию 3584): максимальное количество токенов, которое может сгенерировать апсамплер для подписи. max_sequence_length (`int`, *необязательный*, по умолчанию 8192): максимальное количество токенов в подсказке; более длинные подсказки обрезаются. text_encoder_out_layers (`tuple`, *необязательный*, по умолчанию (4, 8, 12, 16, 20, 24, 28, 32)): индексы скрытых слоев текстового кодировщика, состояния которых складываются для формирования текстовых эмбеддингов num_images_per_prompt (`int`, *необязательный*, по умолчанию 1): количество изображений, генерируемых на одну подсказку. image_cond_latents (`list`, *необязательный*): нормализованные упакованные латенты эталонных изображений, один тензор формы (B, C, height_i//16, width_i//16) на каждое изображение height (`int`, *необязательный*, по умолчанию None или 1024, в зависимости от рабочего процесса): высота генерируемого изображения в пикселях; по умолчанию равна высоте первого эталонного изображения width (`int`, *необязательный*, по умолчанию None или 1024, в зависимости от рабочего процесса): ширина генерируемого изображения в пикселях; по умолчанию равна ширине первого эталонного изображения reference_crop (`list | NoneType`, *необязательный*): для каждого эталона — рамка эталона внутри его канваса с отступами или None, полученная на этапе предобработки latents (`Tensor`): предварительно сгенерированные зашумленные латенты для генерации изображения. generator (`Generator`, *необязательный*): генератор Torch для детерминированной генерации. num_inference_steps (`int`): количество шагов денойзинга. timesteps (`Tensor`): временные шаги для процесса денойзинга. (перекрывает `num_inference_steps`, если заданы) sigmas (`list`, *необязательный*): пользовательские сигмы для процесса денойзинга. (перекрывает `num_inference_steps`, если заданы) **denoiser_input_fields (`None`, *необязательный*): условные входные данные для денойзера: например, prompt_embeds, negative_prompt_embeds и т. д. output_type (`str`, *необязательный*, по умолчанию pil): формат вывода: 'pil', 'np', 'pt'. | |
| Выводы: images (`list`): Сгенерированные изображения. latents (`Tensor`): Денойзанные латенты. | |
| ## Flux3DistilledModularPipeline[[diffusers.Flux3DistilledModularPipeline]] | |
| #### diffusers.Flux3DistilledModularPipeline[[diffusers.Flux3DistilledModularPipeline]] | |
| ```python | |
| diffusers.Flux3DistilledModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/flux3/modular_pipeline.py#L52) | |
| ModularPipeline для ступенчато дистиллированной модели FLUX.3 (16 шагов, без classifier-free guidance). | |
Xet Storage Details
- Size:
- 38.6 kB
- Xet hash:
- a3ac0fed42d92840bb191034ca78f33539257a8aa662f274ab5f2ea040f232f4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.