Diffusers documentation

DreamLite

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DreamLite

DreamLite — это модель генерации изображений по тексту и редактирования изображений от ByteDance. Она сочетает в себе собственный 2D U-Net (DreamLiteUNetModel) с мультимодальным энкодером Qwen3-VL, который используется как энкодер промптов и инструкций к изображению, а также применяет VAE AutoencoderTiny (в стиле TAESD) для быстрого кодирования и декодирования латентов.

Доступны два конвейера:

PipelineРежимыCFGСценарий использования
DreamLitePipelinetext-to-image и редактирование изображений (выбирается автоматически в зависимости от того, является ли image значением None)3-ветвевой двойной CFG (guidance_scale для текстовой ветви, image_guidance_scale для изображений, по образцу InstructPix2Pix)Наивысшее качество
DreamLiteMobilePipelinetext-to-image и редактирование изображений (выбирается автоматически в зависимости от того, является ли image значением None)None — дистиллированная, один прямой проход UNet на шагНа устройстве / низкая задержка

Официальные контрольные точки:

Оба конвейера автоматически определяют режим «текст в изображение» или «редактирование изображения» на основании того, передан ли аргумент image. Отдельного класса Img2Img нет.

При загрузке входного изображения для редактирования предпочитайте diffusers.utils.load_image(...) вместо «сырого» PIL.Image.open(...). load_image принудительно выполняет преобразование в RGB и применяет ориентацию EXIF, что предполагает пайплайн. Обычный Image.open для источника с RGBA / палитрой / поворотом EXIF молча приведёт к другому латентному условию и ухудшит качество результата.

Текст в изображение (Base)

import torch
from diffusers import DreamLitePipeline

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    negative_prompt="",
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_t2i.png")

Редактирование изображений (Base)

Передайте image, чтобы перейти в режим редактирования. Здесь активны и guidance_scale (текстовая ветвь), и image_guidance_scale (изображение-ветвь).

import torch
from diffusers import DreamLitePipeline
from diffusers.utils import load_image

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_edit.png")

Текст в изображение (мобильные устройства)

Мобильный конвейер является дистиллированным и полностью пропускает CFG — один прямой проход UNet на каждый шаг. Он принимает те же аргументы prompt / height / width / num_inference_steps, но игнорирует guidance_scale и image_guidance_scale, если они переданы (в журнал выводится предупреждение).

import torch
from diffusers import DreamLiteMobilePipeline

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_t2i.png")

Редактирование изображений (мобильные устройства)

import torch
from diffusers import DreamLiteMobilePipeline
from diffusers.utils import load_image

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_edit.png")

Заметки и ограничения

  • Оба конвейера внутренне принудительно устанавливают batch_size = 1; параметр num_images_per_prompt управляет количеством выборок, генерируемых из одного и того же промпта, а не параллельным батчингом.
  • Кодировщик промпта — это Qwen3-VL, мультимодальная модель. Поэтому для загрузки полного конвейера требуется достаточный объём памяти GPU как для U-Net, так и для текстового кодировщика Qwen3-VL (~4 ГБ + ~0,7 ГБ в bf16 для базовой версии).
  • VAE — это AutoencoderTiny, и он предоставляет encoder_block_out_channels; vae_scale_factor вычисляется из него при инициализации пайплайна.

DreamLitePipeline

класс diffusers.DreamLitePipeline

< >

( text_encoder: Qwen3VLForConditionalGenerationtokenizer: AutoTokenizerprocessor: Qwen3VLProcessorvae: AutoencoderTinyunet: DreamLiteUNetModelscheduler: FlowMatchEulerDiscreteScheduler )

DreamLite pipeline для генерации изображений по тексту и редактирования изображений по инструкциям.

Один и тот же конвейер поддерживает оба режима; режим работы определяется автоматически на основе входных данных:

  • image is None -> генерация изображения по тексту (один CFG по тексту).
  • image is not None -> image-to-image / редактирование по инструкции (двойной CFG: текст + изображение).

Компоненты: text_encoder ([~transformers.Qwen3VLForConditionalGeneration]): Мультимодальный текстовый/визуальный энкодер, используемый для создания эмбеддингов для условного формирования. tokenizer ([~transformers.AutoTokenizer]): Токенизатор для режима только с текстом (generate). processor ([~transformers.Qwen3VLProcessor]): Мультимодальный процессор для режима редактирования (шаблон «текст + изображение»). vae ([~diffusers.AutoencoderTiny]): Компактный VAE для мобильных устройств, предназначенный для кодирования/декодирования латентов. unet ([~diffusers.DreamLiteUNetModel]): DreamLite UNet (GQA + qk_norm + глубинно-отделимые свёртки). scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]): Дискретный эйлеровский планировщик flow-matching с динамическим сдвигом.

Примечание: batch_size в настоящее время принудительно устанавливается в 1; поддерживается num_images_per_prompt.

__call__

< >

( prompt: typing.Optional[str] = Nonenegative_prompt: typing.Optional[str] = Noneimage: typing.Optional[PIL.Image.Image] = Noneheight: typing.Optional[int] = Nonewidth: typing.Optional[int] = Noneguidance_scale: float = 3.5image_guidance_scale: float = 1.5num_inference_steps: int = 30sigmas: typing.Optional[typing.List[float]] = Nonenum_images_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Noneoutput_type: typing.Optional[str] = 'pil'return_dict: bool = Truemax_sequence_length: int = 200text_pad_embedding: typing.Optional[torch.Tensor] = None )

Параметры

  • prompt — Текстовый промпт.
  • negative_prompt — Отрицательный текстовый промпт (по умолчанию — пустая строка).
  • image — Optional input image. If provided, the pipeline runs in edit / image-to-image mode with dual classifier-free guidance; otherwise it runs in text-to-image mode.
  • height — Разрешение вывода (высота). По умолчанию default_sample_size * vae_scale_factor (1024). Один и тот же параметр по умолчанию применяется как для T2I, так и для I2I; передайте явное значение для переопределения.
  • width — Разрешение вывода (ширина). По умолчанию default_sample_size * vae_scale_factor (1024). Один и тот же параметр по умолчанию используется как для T2I, так и для I2I; передайте явное значение для переопределения.
  • guidance_scale — масштаб CFG для текстовой ветви (в обоих режимах).
  • image_guidance_scale — Дополнительный масштаб CFG для ветки изображения (только в режиме редактирования).
  • num_inference_steps — Количество шагов денойзинга.
  • sigmas — Необязательные явные сигмы FlowMatch; по умолчанию используется равномерный linspace.
  • num_images_per_prompt — Количество выходных изображений на промпт (примечание: batch_size принудительно устанавливается в 1).
  • generator — Случайный генератор(ы).
  • output_type — "pil", "np", "pt" или "latent".
  • return_dict — Если True, возвращает DreamLitePipelineOutput; иначе кортеж (images,).
  • max_sequence_length — максимальное количество токенов пользовательского запроса, сохраняемых после удаления префикса шаблона чата. Применяется только в режиме generate (режим edit использует встроенное выравнивание мультимодального процессора).
  • text_pad_embedding — Необязательное обучаемое представление (embedding) для маскированных позиций.

Запустите конвейер DreamLite.

DreamLiteMobilePipeline

класс diffusers.DreamLiteMobilePipeline

< >

( text_encoder: Qwen3VLForConditionalGenerationtokenizer: AutoTokenizerprocessor: Qwen3VLProcessorvae: AutoencoderTinyunet: DreamLiteUNetModelscheduler: FlowMatchEulerDiscreteScheduler )

Пайплайн DreamLite Mobile: дистиллированный вариант DreamLitePipeline без classifier-free guidance для быстрого инференса за малое число шагов (по умолчанию 4 шага).

Режим работы определяется автоматически на основе входных данных (как в базовом конвейере):

  • image is None -> генерация изображения по тексту.
  • image is not None -> image-to-image / редактирование по инструкции.

Поскольку classifier-free guidance удалён в процессе дистилляции, параметры guidance_scale и image_guidance_scale принимаются для совместимости API с DreamLitePipeline, но игнорируются в цикле денойзинга. Параметр negative_prompt намеренно отсутствует.

Компоненты (идентичны базовому конвейеру): text_encoder ([~transformers.Qwen3VLForConditionalGeneration]): Мультимодальный текстовый/визуальный энкодер. tokenizer ([~transformers.AutoTokenizer]): Токенизатор для режима только с текстом (generate). processor ([~transformers.Qwen3VLProcessor]): Мультимодальный процессор для режима редактирования. vae ([~diffusers.AutoencoderTiny]): Компактный VAE, оптимизированный для мобильных устройств. unet ([~diffusers.DreamLiteUNetModel]): DreamLite UNet. scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]): Дискретный эйлеровский планировщик flow-matching с динамическим сдвигом.

Примечание: batch_size в настоящее время принудительно устанавливается в 1; поддерживается num_images_per_prompt.

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Noneimage: typing.Optional[PIL.Image.Image] = Noneheight: typing.Optional[int] = Nonewidth: typing.Optional[int] = Nonenum_inference_steps: int = 4guidance_scale: typing.Optional[float] = Noneimage_guidance_scale: typing.Optional[float] = Nonesigmas: typing.Optional[typing.List[float]] = Nonenum_images_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Noneoutput_type: typing.Optional[str] = 'pil'return_dict: bool = Truemax_sequence_length: int = 200text_pad_embedding: typing.Optional[torch.Tensor] = None )

Параметры

  • prompt — Текстовый промпт.
  • image — Необязательное входное изображение. Если указано, выполняется в режиме edit / image-to-image; иначе — в режиме text-to-image.
  • height — Разрешение вывода (высота). По умолчанию default_sample_size * vae_scale_factor (1024).
  • width — Разрешение вывода (ширина). По умолчанию default_sample_size * vae_scale_factor (1024).
  • num_inference_steps — Количество шагов денойзинга. По умолчанию 4 (дистиллированная модель).
  • guidance_scale — Принимается для соответствия API DreamLitePipeline; игнорируется, так как CFG был дистиллирован.
  • image_guidance_scale — принимается для соответствия API DreamLitePipeline; игнорируется, так как CFG был дистиллирован.
  • sigmas — Необязательные явные сигмы FlowMatch; по умолчанию используется равномерный linspace.
  • num_images_per_prompt — Количество выходных изображений на промпт (примечание: batch_size принудительно устанавливается в 1).
  • generator — Случайный генератор(ы).
  • output_type — "pil", "np", "pt" или "latent".
  • return_dict — Если True, возвращает DreamLitePipelineOutput; иначе (images,).
  • max_sequence_length — максимальное количество токенов пользовательского запроса, сохраняемых после удаления префикса шаблона чата. Применяется только в режиме generate (режим edit использует встроенное выравнивание мультимодального процессора).
  • text_pad_embedding — Необязательное обучаемое представление (embedding) для маскированных позиций.

Запустите дистиллированный пайплайн DreamLite Mobile.

DreamLitePipelineOutput

класс diffusers.DreamLitePipelineOutput

< >

( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray] )

Параметры

  • images (List[PIL.Image.Image] или np.ndarray) — Список денойзированных изображений PIL длиной batch_size или массив NumPy формы (batch_size, height, width, num_channels). Изображения PIL или массив NumPy представляют денойзированные изображения диффузионного конвейера.

Класс вывода для конвейеров DreamLite.

Update on GitHub