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.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DreamLite

DreamLite est un modèle de génération d’images à partir de texte et d’édition d’images de ByteDance. Il associe un U-Net 2D sur mesure (DreamLiteUNetModel) à l’encodeur multimodal Qwen3-VL en tant qu’encodeur de prompt / d’instruction d’image, et utilise un VAE AutoencoderTiny (de type TAESD) pour un encodage/décodage latent rapide.

Deux pipelines sont exposés :

PipelineModesCFGCas d'usage
DreamLitePipelinetext-to-image et édition d'image (sélection automatique selon que image est None)CFG double à 3 branches (guidance_scale sur la branche texte, image_guidance_scale sur la branche image, à la InstructPix2Pix)Qualité maximale
DreamLiteMobilePipelinetext-to-image et édition d'image (sélection automatique selon que image est None)Aucun — distillé, un seul passage avant UNet par étapeSur l'appareil / faible latence

Points de contrôle officiels :

Les deux pipelines détectent automatiquement le mode texte-vers-image ou édition d'image en fonction de la présence de l'argument image. Il n'existe pas de classe Img2Img distincte.

Lors du chargement d'une image d'entrée pour l'édition, privilégiez diffusers.utils.load_image(...) par rapport à PIL.Image.open(...) brut. load_image impose une conversion en RGB et applique l'orientation EXIF, deux éléments que le pipeline suppose. Un simple Image.open d'une source RGBA / palette / avec rotation EXIF produira silencieusement un conditionnement latent différent et dégradera la qualité de la sortie.

Texte vers image (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")

Édition d'images (Base)

Passez une image pour entrer en mode édition. Les deux paramètres guidance_scale (branche texte) et image_guidance_scale (branche image) sont actifs ici.

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")

Texte vers image (Mobile)

Le pipeline mobile est distillé et ignore entièrement le CFG — un seul passage avant de UNet par étape. Il accepte les mêmes arguments prompt / height / width / num_inference_steps, mais ignore guidance_scale et image_guidance_scale s'ils sont passés (un avertissement est journalisé).

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")

Édition d'images (Mobile)

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")

Notes et limitations

  • Les deux pipelines imposent batch_size = 1 en interne ; num_images_per_prompt contrôle le nombre d'échantillons tirés d'un même prompt, plutôt que le lot parallèle.
  • L’encodeur de prompt est Qwen3-VL, un modèle multimodal. Le chargement du pipeline complet nécessite donc une mémoire GPU suffisante pour le U-Net et l’encodeur de texte Qwen3-VL (~4 Go + ~0,7 Go en bf16 pour la version de base).
  • Le VAE est AutoencoderTiny et expose encoder_block_out_channels ; vae_scale_factor est dérivé de celui-ci lors de l’initialisation du pipeline.

DreamLitePipeline

classe diffusers.DreamLitePipeline

< >

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

Pipeline DreamLite pour la génération d'images à partir de texte et l'édition d'images basée sur des instructions.

Le même pipeline prend en charge les deux modes ; le mode de fonctionnement est détecté automatiquement à partir des entrées :

  • image is None -> texte-vers-image (CFG unique sur le texte).
  • image is not None -> image-versus-image / édition par instruction (CFG double : texte + image).

Composants : text_encoder ([~transformers.Qwen3VLForConditionalGeneration]) : Encodeur texte/vision multimodal utilisé pour produire les embeddings de conditionnement. tokenizer ([~transformers.AutoTokenizer]) : Tokeniseur pour le mode texte uniquement (generate). processor ([~transformers.Qwen3VLProcessor]) : Processeur multimodal pour le mode édition (modèle texte + image). vae ([~diffusers.AutoencoderTiny]) : Petit VAE adapté aux mobiles pour l'encodage/décodage latent. unet ([~diffusers.DreamLiteUNetModel]) : UNet DreamLite (GQA + qk_norm + convolutions séparables en profondeur). scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]) : Planificateur Euler de flow-matching avec décalage dynamique.

Note : batch_size est actuellement forcé à 1 ; num_images_per_prompt est pris en charge.

__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 )

Paramètres

  • prompt — Invite textuelle.
  • negative_prompt — Prompt de texte négatif (valeur par défaut : chaîne vide).
  • image — Image d’entrée facultative. Si elle est fournie, le pipeline s’exécute en mode édition / image-vers-image avec un double guidage sans classifieur ; sinon, il s’exécute en mode texte-vers-image.
  • height — Résolution de sortie (hauteur). Par défaut, default_sample_size * vae_scale_factor (1024). La même valeur par défaut s’applique à la fois pour T2I et I2I ; passez une valeur explicite pour l’écraser.
  • width — Résolution de sortie (largeur). Par défaut, default_sample_size * vae_scale_factor (1024). La même valeur par défaut s’applique à la fois pour T2I et I2I ; passez une valeur explicite pour l’écraser.
  • guidance_scale — échelle CFG sur la branche texte (les deux modes).
  • image_guidance_scale — Échelle CFG supplémentaire sur la branche image (mode édition uniquement).
  • num_inference_steps — Nombre d'étapes de débruitage.
  • sigmas — Sigmas FlowMatch explicites facultatifs ; par défaut, un linspace uniforme est utilisé.
  • num_images_per_prompt — Images de sortie par invite (remarque : batch_size est forcé à 1).
  • generator — Générateur(s) aléatoire(s).
  • output_type — "pil", "np", "pt" ou "latent".
  • return_dict — Si True, renvoie un DreamLitePipelineOutput ; sinon, un tuple (images,).
  • max_sequence_length — Nombre maximal de jetons du prompt utilisateur conservés après suppression du préfixe du modèle de conversation. S’applique uniquement au mode generate (le mode edit utilise le rembourrage natif du processeur multimodal).
  • text_pad_embedding — Embedding appris optionnel pour les positions masquées.

Exécutez le pipeline DreamLite.

DreamLiteMobilePipeline

classe diffusers.DreamLiteMobilePipeline

< >

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

Pipeline Mobile de DreamLite : une variante distillée, sans guidance sans classifieur, de DreamLitePipeline pour une inférence rapide en peu d'étapes (4 étapes par défaut).

Le mode de fonctionnement est détecté automatiquement à partir des entrées (comme pour le pipeline de base) :

  • image is None -> texte-vers-image.
  • image is not None -> image-to-image / édition par instruction.

Étant donné que le guidage sans classifieur est distillé, guidance_scale et image_guidance_scale sont acceptés pour la parité de l'API avec DreamLitePipeline mais sont ignorés dans la boucle de débruitage. negative_prompt est intentionnellement absent.

Composants (identiques au pipeline de base) : text_encoder ([~transformers.Qwen3VLForConditionalGeneration]) : Encodeur texte/vision multimodal. tokenizer ([~transformers.AutoTokenizer]) : Tokeniseur pour le mode texte uniquement (generate). processor ([~transformers.Qwen3VLProcessor]) : Processeur multimodal pour le mode édition. vae ([~diffusers.AutoencoderTiny]) : VAE miniature compatible mobile. unet ([~diffusers.DreamLiteUNetModel]) : UNet DreamLite. scheduler ([~diffusers.FlowMatchEulerDiscreteScheduler]) : Planificateur Euler de flow-matching avec décalage dynamique.

Note : batch_size est actuellement forcé à 1 ; num_images_per_prompt est pris en charge.

__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 )

Paramètres

  • prompt — Invite textuelle.
  • image — Image d’entrée facultative. Si fournie, exécute en mode édition / image-vers-image ; sinon, exécute en mode texte-vers-image.
  • height — Résolution de sortie (hauteur). Par défaut, default_sample_size * vae_scale_factor (1024).
  • width — Résolution de sortie (largeur). Par défaut, default_sample_size * vae_scale_factor (1024).
  • num_inference_steps — Nombre d'étapes de débruitage. Valeur par défaut : 4 (distillé).
  • guidance_scale — Accepté pour la parité de l’API avec DreamLitePipeline ; ignoré car le CFG a été distillé.
  • image_guidance_scale — Accepté pour la parité de l’API avec DreamLitePipeline ; ignoré car le CFG a été distillé.
  • sigmas — Sigmas FlowMatch explicites facultatifs ; par défaut, un linspace uniforme est utilisé.
  • num_images_per_prompt — Images de sortie par invite (remarque : batch_size est forcé à 1).
  • generator — Générateur(s) aléatoire(s).
  • output_type — "pil", "np", "pt" ou "latent".
  • return_dict — Si True, renvoie un DreamLitePipelineOutput ; sinon (images,).
  • max_sequence_length — Nombre maximal de jetons du prompt utilisateur conservés après suppression du préfixe du modèle de conversation. S’applique uniquement au mode generate (le mode edit utilise le rembourrage natif du processeur multimodal).
  • text_pad_embedding — Embedding appris optionnel pour les positions masquées.

Exécutez le pipeline DreamLite Mobile distillé.

DreamLitePipelineOutput

classe diffusers.DreamLitePipelineOutput

< >

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

Paramètres

  • images (List[PIL.Image.Image] ou np.ndarray) — Liste d’images PIL débruitées de longueur batch_size ou tableau NumPy de forme (batch_size, height, width, num_channels). Les images PIL ou le tableau NumPy présentent les images débruitées du pipeline de diffusion.

Classe de sortie pour les pipelines DreamLite.

Update on GitHub