# AutoPipeline

[AutoPipeline](../api/pipelines/auto_pipeline) es un pipeline de *tarea y modelo* que selecciona automáticamente el subclase de pipeline correcto en función de la tarea. Gestiona la complejidad de cargar diferentes subclases de pipeline sin necesidad de conocer el nombre específico de la subclase de pipeline.

A diferencia de [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline), un pipeline de *solo modelo* que selecciona automáticamente la subclase del pipeline en función del modelo.

```text
AutoPipelineForImage2Image.from_pretrained(model_id)
        |
        +-- read model_index.json  (e.g. StableDiffusionXLPipeline)
        +-- task mapping           (image-to-image)
        |
        v
StableDiffusionXLImg2ImgPipeline   // returned instance
```

[AutoPipelineForImage2Image](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) devuelve la subclase específica de la tarea (por ejemplo, [StableDiffusionXLImg2ImgPipeline](/docs/diffusers/main/es/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline)), que solo puede usarse para tareas de imagen a imagen.

```py
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",
#   ...
# }
```

Cargar el mismo modelo con [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline) devuelve el subclase predeterminado de texto a imagen, [StableDiffusionXLPipeline](/docs/diffusers/main/es/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline). Ese pipeline es para texto a imagen. Para imagen a imagen o inpainting, cargue un AutoPipeline de tarea como [AutoPipelineForImage2Image](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image) o [AutoPipelineForInpainting](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting), o el subclase específico de la tarea correspondiente.

```py
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",
#   ...
# }
```

## Cambiar de tareas con from_pipe

Carga un AutoPipeline de una tarea una vez y luego cambia de tareas con [from_pipe()](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image.from_pipe) sin volver a descargar los pesos. Los componentes se reutilizan desde el pipeline de origen.

```py
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)
```

Consulte [Reutilización de modelos en varios pipelines](../using-diffusers/loading#reusing-models-in-multiple-pipelines) para obtener más detalles.

Consulte los [mappings](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/auto_pipeline.py) para ver si un modelo está soportado o no. Intentar cargar un modelo no soportado devuelve un error.

```py
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"
```

Hay cuatro tipos de clases [AutoPipeline](../api/pipelines/auto_pipeline):

- [AutoPipelineForText2Image](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image)
- [AutoPipelineForImage2Image](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForImage2Image)
- [AutoPipelineForInpainting](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForInpainting)
- [AutoPipelineForText2Audio](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Audio)

Cada una de estas clases tiene un mapeo predefinido que vincula un pipeline con su subclase específica para la tarea.

Cuando se llama a [from_pretrained()](/docs/diffusers/main/es/api/pipelines/auto_pipeline#diffusers.AutoPipelineForText2Image.from_pretrained), extrae el nombre de la clase del archivo `model_index.json` y selecciona la subclase de pipeline adecuada para la tarea según el mapeo.

