Diffusers documentation
DreamLite
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 :
| Pipeline | Modes | CFG | Cas d'usage |
|---|---|---|---|
| DreamLitePipeline | text-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 |
| DreamLiteMobilePipeline | text-to-image et édition d'image (sélection automatique selon que image est None) | Aucun — distillé, un seul passage avant UNet par étape | Sur l'appareil / faible latence |
Points de contrôle officiels :
- Modèle de base : carlofkl/DreamLite-base
- Modèle mobile distillé : carlofkl/DreamLite-mobile
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 classeImg2Imgdistincte.
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_imageimpose une conversion en RGB et applique l'orientation EXIF, deux éléments que le pipeline suppose. Un simpleImage.opend'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 = 1en interne ;num_images_per_promptcontrô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
AutoencoderTinyet exposeencoder_block_out_channels;vae_scale_factorest dérivé de celui-ci lors de l’initialisation du pipeline.
DreamLitePipeline
classe diffusers.DreamLitePipeline
< source >( 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__
< 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 )
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_sizeest 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 modeeditutilise 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
< source >( 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__
< 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 )
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_sizeest 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 modeeditutilise 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
< source >( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray] )
Classe de sortie pour les pipelines DreamLite.