Diffusers documentation
AutoPipeline
AutoPipeline
AutoPipeline هو خط أنابيب مهمة ونموذج يختار تلقائيًا الفئة الفرعية الصحيحة لخط الأنابيب بناءً على المهمة. يتعامل مع تعقيد تحميل فئات خطوط الأنابيب الفرعية المختلفة دون الحاجة إلى معرفة اسم الفئة الفرعية المحدد لخط الأنابيب.
وهذا يختلف عن DiffusionPipeline، وهو خط أنابيب للنموذج فقط يختار تلقائيًا الفئة الفرعية للخط الأنابيب بناءً على النموذج.
AutoPipelineForImage2Image.from_pretrained(model_id)
|
+-- read model_index.json (e.g. StableDiffusionXLPipeline)
+-- task mapping (image-to-image)
|
v
StableDiffusionXLImg2ImgPipeline // returned instanceيعيد AutoPipelineForImage2Image الفئة الفرعية الخاصة بالمهمة (على سبيل المثال، StableDiffusionXLImg2ImgPipeline)، والتي يمكن استخدامها فقط لمهام تحويل الصورة إلى صورة.
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",
# ...
# }عند تحميل النموذج نفسه باستخدام DiffusionPipeline، يُعاد الفرع الفرعي الافتراضي لتحويل النص إلى صورة، وهو StableDiffusionXLPipeline. هذا الخطّ الأنابيب مخصص لتحويل النص إلى صورة. أما لتحويل الصورة إلى صورة أو لإعادة التلوين (Inpainting)، فحمّل خطّ أنابيب تلقائيًا للمهمة مثل AutoPipelineForImage2Image أو AutoPipelineForInpainting، أو الفرع الفرعي المحدد للمهمة المطابق.
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",
# ...
# }التبديل بين المهام باستخدام from_pipe
Load a task AutoPipeline once, then switch tasks with from_pipe() without downloading the weights again. Components are reused from the source pipeline.
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)راجع إعادة استخدام النماذج في خطوط أنابيب متعددة لمزيد من التفاصيل.
تحقق من الخرائط لمعرفة ما إذا كان النموذج مدعوماً أم لا. محاولة تحميل نموذج غير مدعوم تعيد خطأً.
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"هناك أربعة أنواع من فئات AutoPipeline:
- AutoPipelineForText2Image
- AutoPipelineForImage2Image
- AutoPipelineForInpainting
- AutoPipelineForText2Audio
لكلٍّ من هذه الفئات تعيين مسبق، يربط خط الأنابيب بفئة فرعية مخصصة للمهمة الخاصة بها.
عند استدعاء from_pretrained()، يستخرج اسم الفئة من ملف model_index.json ويختار فئة خط الأنابيب الفرعية المناسبة للمهمة بناءً على الترميز.