Diffusers documentation
AutoPipeline
AutoPipeline
AutoPipeline est un pipeline tâche-modèle qui sélectionne automatiquement le sous-classe de pipeline correct en fonction de la tâche. Il gère la complexité du chargement de différents sous-classes de pipeline sans avoir besoin de connaître le nom spécifique du sous-classe de pipeline.
Cela diffère de DiffusionPipeline, un pipeline model-only qui sélectionne automatiquement la sous-classe de pipeline en fonction du modèle.
AutoPipelineForImage2Image.from_pretrained(model_id)
|
+-- read model_index.json (e.g. StableDiffusionXLPipeline)
+-- task mapping (image-to-image)
|
v
StableDiffusionXLImg2ImgPipeline // returned instanceAutoPipelineForImage2Image renvoie la sous-classe spécifique à la tâche (par exemple, StableDiffusionXLImg2ImgPipeline), qui ne peut être utilisée que pour les tâches d’image vers image.
import torch
from diffusers import AutoPipelineForImage2Image
pipeline = AutoPipelineForImage2Image.from_pretrained(
"RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda", # or "mps", "xpu", "cpu"
)
print(pipeline)
# StableDiffusionXLImg2ImgPipeline {
# "_class_name": "StableDiffusionXLImg2ImgPipeline",
# ...
# }Charger le même modèle avec DiffusionPipeline renvoie la sous-classe texte-vers-image par défaut, StableDiffusionXLPipeline. Ce pipeline est destiné au texte-vers-image. Pour l’image-vers-image ou l’inpainting, chargez un AutoPipeline de tâche tel que AutoPipelineForImage2Image ou AutoPipelineForInpainting, ou la sous-classe spécifique à la tâche correspondante.
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda", # or "mps", "xpu", "cpu"
)
print(pipeline)
# StableDiffusionXLPipeline {
# "_class_name": "StableDiffusionXLPipeline",
# ...
# }Changer de tâche avec from_pipe
Chargez un AutoPipeline de tâche une seule fois, puis changez de tâche avec from_pipe() sans télécharger à nouveau les poids. Les composants sont réutilisés depuis le pipeline source.
import torch
from diffusers import AutoPipelineForText2Image, AutoPipelineForImage2Image
pipeline_t2i = AutoPipelineForText2Image.from_pretrained(
"RunDiffusion/Juggernaut-XL-v9", dtype=torch.bfloat16, device_map="cuda", # or "mps", "xpu", "cpu"
)
pipeline_i2i = AutoPipelineForImage2Image.from_pipe(pipeline_t2i)Voir Réutilisation de modèles dans plusieurs pipelines pour plus de détails.
Consultez les mappings pour vérifier si un modèle est pris en charge. La tentative de chargement d'un modèle non pris en charge renvoie une erreur.
import torch
from diffusers import AutoPipelineForImage2Image
pipeline = AutoPipelineForImage2Image.from_pretrained(
"openai/shap-e-img2img", dtype=torch.float16,
)
"ValueError: AutoPipeline can't find a pipeline linked to ShapEImg2ImgPipeline for None"Il existe quatre types de classes AutoPipeline :
- AutoPipelineForText2Image
- AutoPipelineForImage2Image
- AutoPipelineForInpainting
- AutoPipelineForText2Audio
Chacune de ces classes possède une correspondance prédéfinie, associant un pipeline à sa sous-classe spécifique à la tâche.
Lors de l’appel de from_pretrained(), le nom de la classe est extrait du fichier model_index.json et le sous-ensemble de pipeline approprié pour la tâche est sélectionné en fonction de la correspondance.