Diffusers documentation
DreamLite
DreamLite
DreamLite — это модель генерации изображений по тексту и редактирования изображений от ByteDance. Она сочетает в себе собственный 2D U-Net (DreamLiteUNetModel) с мультимодальным энкодером Qwen3-VL, который используется как энкодер промптов и инструкций к изображению, а также применяет VAE AutoencoderTiny (в стиле TAESD) для быстрого кодирования и декодирования латентов.
Доступны два конвейера:
| Pipeline | Режимы | CFG | Сценарий использования |
|---|---|---|---|
| DreamLitePipeline | text-to-image и редактирование изображений (выбирается автоматически в зависимости от того, является ли image значением None) | 3-ветвевой двойной CFG (guidance_scale для текстовой ветви, image_guidance_scale для изображений, по образцу InstructPix2Pix) | Наивысшее качество |
| DreamLiteMobilePipeline | text-to-image и редактирование изображений (выбирается автоматически в зависимости от того, является ли image значением None) | None — дистиллированная, один прямой проход UNet на шаг | На устройстве / низкая задержка |
Официальные контрольные точки:
- Базовая модель: carlofkl/DreamLite-base
- Модель для мобильных устройств, полученная дистилляцией: carlofkl/DreamLite-mobile
Оба конвейера автоматически определяют режим «текст в изображение» или «редактирование изображения» на основании того, передан ли аргумент
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
< source >( 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__
< source >( 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
< source >( 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__
< source >( 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
< source >( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray] )
Класс вывода для конвейеров DreamLite.