Diffusers documentation

Pipeline

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

Pipeline

ModularPipeline

clase diffusers.ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Parámetros

  • blocks — ModularPipelineBlocks, los bloques que se usarán en el pipeline

Clase base para todos los pipelines modulares.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )

Parámetros

  • pretrained_model_name_or_path (str o os.PathLike, opcional) — Ruta a una configuración de pipeline preentrenada. Primero intentará cargar la configuración desde modular_model_index.json y, si no es posible, usará model_index.json para mantener la compatibilidad con los repositorios estándar no modulares. Si pretrained_model_name_or_path no contiene ninguna configuración de pipeline, se establecerá en None durante la inicialización.
  • trust_remote_code (bool, opcional) — Si se debe confiar en el código remoto al cargar el pipeline. Debe establecerse en True si se desea crear bloques de pipeline basados en el código personalizado de pretrained_model_name_or_path
  • components_manager (ComponentsManager, opcional) — Instancia de ComponentsManager para gestionar múltiples componentes entre diferentes pipelines y aplicar estrategias de offloading.
  • collection (str, opcional) —` Nombre de la colección para organizar los componentes en el ComponentsManager.
  • workflow (str, opcional) — Nombre de un workflow declarado por los bloques de la pipeline. Si se proporciona, los bloques se recortan a los bloques de ejecución de ese workflow, de modo que la pipeline solo espera — y load_components() solo carga — los componentes que utiliza ese workflow.

Carga un ModularPipeline desde un repositorio de Hugging Face Hub.

get_component_spec

< >

( name: str )

load_components

< >

( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )

Parámetros

  • names — lista de nombres de componentes a cargar. Si es None, se cargarán todos los componentes con default_creation_method == “from_pretrained”. Si se proporciona como una lista o una cadena, se cargarán solo los componentes especificados.
  • workflow — nombre de un workflow declarado por los bloques de pipeline. Si se proporciona, solo se cargan los componentes que usan los bloques de ejecución del workflow. No se puede combinar con names.
  • **kwargs — kwargs adicionales que se pasarán a from_pretrained().Puede ser:
    • un único valor que se aplicará a todos los componentes que se carguen, p. ej. dtype=torch.bfloat16
    • un diccionario, p. ej. dtype={“unet”: torch.bfloat16, “default”: torch.float32}
    • si potencialmente sobrescribe ComponentSpec si se le pasa un campo de carga diferente en kwargs, p. ej. pretrained_model_name_or_path, variant, revision, etc.
    • si potencialmente sobrescribe ComponentSpec si se le pasa un campo de carga diferente en kwargs, p. ej. pretrained_model_name_or_path, variant, revision, etc.

Cargar los componentes seleccionados desde las especificaciones.

register_components

< >

( **kwargs )

Parámetros

  • **kwargs — Argumentos de palabras clave donde las claves son nombres de componentes y los valores son objetos de componentes. Por ejemplo, register_components(unet=unet_model, text_encoder=encoder_model)

Registre los componentes con sus especificaciones correspondientes.

Este método se encarga de:

  1. Establece los objetos de los componentes como atributos del cargador (p. ej., self.unet = unet)
  2. Actualiza el diccionario de configuración, que se guardará como modular_model_index.json durante save_pretrained (solo para los componentes de from_pretrained)
  3. Añade componentes al gestor de componentes si está adjunto (solo para componentes de from_pretrained)

Este método se llama cuando:

  • Los componentes se inicializan primero en init:
    • los componentes de from_pretrained no se cargan durante init, por lo que se registran como None;
    • los componentes no from_pretrained se crean durante init y se registran como el propio objeto
  • Los componentes se actualizan con el método update_components(): por ejemplo, loader.update_components(unet=unet) o loader.update_components(guider=guider_spec)
  • (from_pretrained) Los componentes se cargan con el método load_components(): por ejemplo, loader.load_components(names=[“unet”]) o loader.load_components() para cargar todos los componentes predeterminados

Notas:

  • Al registrar None para un componente, se establece el atributo en None, pero aún así se sincronizan las especificaciones con el diccionario de configuración, que se guardará como modular_model_index.json durante save_pretrained
  • component_specs are updated to match the new component outside of this method, e.g. in update_components() method

save_pretrained

< >

( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )

Parámetros

  • save_directory (str o os.PathLike) — Directorio donde se guardará el pipeline. Se creará si no existe.
  • safe_serialization (bool, opcional, valor predeterminado True) — Si se guarda el modelo usando safetensors o de la forma tradicional de PyTorch con pickle.
  • variant (str, opcional) — Si se especifica, los pesos se guardan en el formato pytorch_model.<variant>.bin.
  • max_shard_size (int o str, por defecto None) — El tamaño máximo de un checkpoint antes de ser fragmentado. Los fragmentos del checkpoint tendrán cada uno un tamaño inferior a este valor. Si se expresa como una cadena, debe consistir en dígitos seguidos de una unidad (como "5GB"). Si se expresa como un entero, la unidad es bytes.
  • push_to_hub (bool, opcional, valor predeterminado False) — Si se debe subir el pipeline al hub de modelos de Hugging Face después de guardarlo.
  • **kwargs — Argumentos de palabra clave adicionales:
    • overwrite_modular_index (bool, opcional, valor predeterminado True): Si se debe actualizar modular_model_index.json para que la especificación de carga de cada componente guardado apunte al destino: repo_id al publicar en el Hub, o de lo contrario save_directory. Los componentes que no se cargan no se guardan y siempre conservan sus especificaciones de carga registradas. Pasa False para conservar también las especificaciones registradas de los componentes que se están guardando (p. ej., para un índice que hace referencia intencionalmente a otros repositorios); los componentes sin un identificador de carga (como los modelos personalizados añadidos con update_components) se reescriben de todos modos, ya que no tienen una fuente registrada.
    • repo_id (str, opcional): El ID del repositorio al que se enviará el pipeline. Por defecto, es el último componente de save_directory.
    • commit_message (str, opcional): Mensaje de commit para la operación de push al hub.
    • private (bool, opcional): Si el repositorio debe ser privado.
    • create_pr (bool, opcional, valor predeterminado False): Si se debe crear una pull request en lugar de hacer push directamente.
    • token (str, opcional): El token de Hugging Face que se usará para la autenticación.

Guarde el pipeline y todos sus componentes en un directorio para que pueda recargarse mediante el método de clase from_pretrained().

hasta

< >

( *args**kwargs ) → DiffusionPipeline

Parámetros

  • dtype (torch.dtype, opcional) — Devuelve un pipeline con el dtype especificado
  • device (torch.Device, opcional) — Devuelve un pipeline con el device especificado
  • silence_dtype_warnings (str, opcional, valor predeterminado False) — Si se omiten las advertencias cuando el dtype de destino no es compatible con el device de destino.

El pipeline se convirtió al dtype y/o dtype especificado.

Realiza la conversión de dtype y/o device de Pipeline. Se infieren un torch.dtype y un torch.device a partir de los argumentos de self.to(*args, **kwargs).

> Si el pipeline ya tiene el torch.dtype y el torch.device correctos, se devuelve tal cual. En caso contrario, > el pipeline devuelto es una copia de self con el torch.dtype y el torch.device deseados.

Estas son las formas de llamar a to:

  • to(dtype, silence_dtype_warnings=False) → DiffusionPipeline para devolver un pipeline con el dtype especificado
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline para devolver un pipeline con el device especificado
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline para devolver un pipeline con el device y el dtype especificados

unload_components

< >

( names: list[str] | str )

Parámetros

  • names — nombre del componente o lista de nombres de componentes para descargar.

Descargue los componentes seleccionados, liberando su memoria.

El atributo component se restablece a None y, si hay un ComponentsManager adjunto, el componente se elimina de él. La especificación del componente no se modifica, por lo que el componente puede volver a cargarse más adelante con load_components().

update_components

< >

( **kwargs )

Parámetros

  • **kwargs — Objetos de componente o valores de configuración para actualizar: Objetos de componente: los modelos cargados con AutoModel.from_pretrained() o ComponentSpec.load() se etiquetan automáticamente con información de carga. Los objetos ConfigMixin sin pesos (p. ej., programadores, guías) se pueden pasar directamente. Valores de configuración: valores simples para actualizar la configuración (p. ej., requires_safety_checker=False)
    • Objetos de componente: los modelos cargados con AutoModel.from_pretrained() o ComponentSpec.load() se etiquetan automáticamente con información de carga. Los objetos ConfigMixin sin pesos (p. ej., schedulers, guiders) se pueden pasar directamente.
    • Valores de configuración: valores simples para actualizar la configuración (p. ej., requires_safety_checker=False)

Actualice los componentes y los valores y especificaciones de la configuración después de que se haya instanciado el pipeline.

Este método le permite:

  1. Reemplace los componentes existentes por nuevos (por ejemplo, actualizando self.unet o self.text_encoder)
  2. Actualizar los valores de configuración (p. ej., cambiar la bandera self.requires_safety_checker)

Además de actualizar los componentes y los valores de configuración como atributos de la pipeline, el método también actualiza:

  • las especificaciones correspondientes en _component_specs y _config_specs
  • el diccionario config, que se guardará como modular_model_index.json durante save_pretrained

Ejemplos:

# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)

# Update configuration values
pipeline.update_components(requires_safety_checker=False)

Notas:

  • Los componentes cargados con AutoModel.from_pretrained() o ComponentSpec.load() conservarán las especificaciones de carga para la serialización. Los componentes personalizados o cargados localmente sin referencias al Hub tendrán sus entradas en modular_model_index.json actualizadas automáticamente durante save_pretrained().
  • Los objetos ConfigMixin sin pesos (p. ej., programadores, guías) se pueden pasar directamente.
Update on GitHub