Diffusers documentation

Componentes e configurações

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

Componentes e configurações

ComponentSpec

classe diffusers.ComponentSpec

< >

( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )

Parâmetros

  • name — Nome do componente
  • type_hint — Tipo do componente (por exemplo, UNet2DConditionModel)
  • description — Descrição opcional do componente
  • config — Dicionário de configuração opcional para a criação de init
  • pretrained_model_name_or_path — Caminho opcional de pretrained_model_name_or_path para a criação via from_pretrained
  • subfolder — Subpasta opcional em pretrained_model_name_or_path
  • variant — Variante opcional em pretrained_model_name_or_path
  • revision — Revisão opcional em pretrained_model_name_or_path
  • default_creation_method — Preferred creation method - “from_config” or “from_pretrained”

Especificação para um componente de pipeline.

Um componente pode ser criado de duas maneiras:

  1. Do zero usando init com um dicionário de configuração
  2. usando from_pretrained

criar

< >

( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )

Crie o componente usando from_config com config.

decode_load_id

< >

( load_id: str )

Parâmetros

  • load_id — A string load_id a ser decodificada, formato: “pretrained_model_name_or_path|subfolder|variant|revision” onde valores None são representados como “null”

Decodifique uma string de load_id de volta para um dicionário de campos e valores de carregamento.

from_component

< >

( name: strcomponent: Any )

Parâmetros

  • name — Nome do componente
  • component — Component object to create spec from

Exceções

ValueError

  • ValueError — Se o componente não for suportado (por exemplo, nn.Module sem load_id, não-ConfigMixin)

Crie um ComponentSpec a partir de um Component.

Atualmente suporta:

  • Componentes criados com o método ComponentSpec.load()
  • Componentes que são subclasses de ConfigMixin, mas não são nn.Modules (por exemplo, agendadores, guias)

carregar

< >

( **kwargs )

Carregue o componente usando from_pretrained.

loading_fields

< >

( )

Retorna os nomes de todos os campos relacionados ao carregamento (ou seja, aqueles cujo field.metadata[“loading”] é True).

ConfigSpec

classe diffusers.ConfigSpec

< >

( name: strdefault: Anydescription: str | None = None )

Especificação para um parâmetro de configuração de pipeline.

ComponentsManager

classe diffusers.ComponentsManager

< >

( )

Um sistema central de registro e gerenciamento para componentes de modelos em vários pipelines.

ComponentsManager oferece uma maneira unificada de registrar, rastrear e reutilizar componentes de modelo (como UNet, VAE, codificadores de texto, etc.) entre diferentes pipelines modulares. Ele inclui recursos para detecção de duplicatas, gerenciamento de memória e organização de componentes.

> Este é um recurso experimental e provavelmente mudará no futuro.

Exemplo:

from diffusers import ComponentsManager

# Create a components manager
cm = ComponentsManager()

# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")

# Enable auto offloading
cm.enable_auto_cpu_offload()

# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")

adicionar

< >

( name: strcomponent: Anycollection: str | None = None ) → str

Parâmetros

  • name (str) — O nome do componente
  • component (Any) — O componente a ser adicionado
  • collection (str | None) — A coleção à qual o componente será adicionado

Retorna

str

O ID único do componente, que é gerado como “{name}_{id(component)}”, onde id(component) é o identificador único embutido do Python para o objeto

Adicione um componente ao ComponentsManager.

disable_auto_cpu_offload

< >

( )

Desative o offloading automático de CPU para todos os componentes.

enable_auto_cpu_offload

< >

( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )

Parâmetros

  • device (str | int | torch.device) — O dispositivo de execução para onde os modelos são movidos para as passadas de frente
  • memory_reserve_margin (str) — A margem de reserva de memória a ser usada, padrão é 3GB. Esta é a quantidade de memória a manter livre no dispositivo para evitar a falta de memória durante a execução do modelo (por exemplo, para ativações intermediárias, gradientes, etc.)
  • offload_strategy — Qualquer função com a assinatura (hooks, model_id, model, execution_device) -> hooks, que retorna quais modelos residentes devem ser descarregados antes que o modelo a ser carregado seja carregado. O padrão é AutoOffloadStrategy, que libera a combinação mínima suficiente.

Ative o offloading automático de CPU para todos os componentes.

O algoritmo funciona da seguinte forma:

  1. Todos os modelos começam na CPU por padrão
  2. Quando o forward pass de um modelo é chamado, ele é movido para o dispositivo de execução
  3. Se a memória for insuficiente, outros modelos no dispositivo são movidos de volta para a CPU
  4. O sistema tenta descarregar a menor combinação de modelos que libere memória suficiente
  5. Os modelos permanecem no dispositivo de execução até que outro modelo precise de memória e os force a sair

Um modelo offloaded em grupo participa disso, mas se posiciona: ele ainda pode abrir espaço movendo outros modelos para o lado e nunca é movido para abrir espaço para eles. Qualquer ordem funciona — offload em grupo antes ou depois de habilitar isso. AutoOffloadStrategy dimensiona suas decisões com base nas pegadas de memória dos modelos, que não descrevem um modelo segurando um grupo de cada vez, então passe um offload_strategy que decida com base no fluxo de trabalho.

get_components_by_ids

< >

( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]

Parâmetros

  • ids (list[str]) — lista de IDs de componentes
  • return_dict_with_names (bool | None) — Se deve retornar um dicionário com os nomes dos componentes como chaves:

Retorna

dict[str, Any]

Dicionário de componentes.

  • Se return_dict_with_names=True, as chaves são os nomes dos componentes.
  • Se return_dict_with_names=False, as chaves são os IDs dos componentes.

Exceções

ValueError

  • ValueError — Se nomes de componentes duplicados forem encontrados nos resultados da busca quando return_dict_with_names=True

Obtém componentes por uma lista de IDs.

get_components_by_names

< >

( names: list[str]collection: str | None = None ) → dict[str, Any]

Parâmetros

  • names (list[str]) — lista de nomes dos componentes
  • collection (str | None) — Coleção opcional para filtrar

Retorna

dict[str, Any]

Dicionário de componentes com os nomes dos componentes como chaves

Exceções

ValueError

  • ValueError — Se nomes de componentes duplicados forem encontrados nos resultados da busca

Obtém componentes por uma lista de nomes, opcionalmente filtrados por coleção.

get_ids

< >

( names: str | list[str] = Nonecollection: str | None = None ) → list[str]

Parâmetros

  • names (str | list[str]) — lista de nomes de componentes
  • collection (str | None) — Coleção opcional para filtrar

Retorna

list[str]

lista de IDs de componentes

Obtém os IDs dos componentes por uma lista de nomes, opcionalmente filtrados por coleção.

get_model_info

< >

( component_id: strfields: str | list[str] | None = None )

Parâmetros

  • component_id (str) — Nome do componente para o qual se deseja obter informações
  • fields (str | list[str] | None) — Campo(s) a retornar. Pode ser uma string para um único campo ou uma lista de campos. Se for None, usa a configuração available_info_fields.

Obtenha informações abrangentes sobre um componente.

get_one

< >

( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )

Parâmetros

  • component_id (str | None) — ID de componente opcional para obter
  • name (str | None) — Nome do componente ou padrão
  • collection (str | None) — Coleção opcional para filtrar
  • load_id (str | None) — load_id opcional para filtrar por

Exceções

ValueError

  • ValueError — Se nenhum componente corresponder ou se múltiplos componentes corresponderem

Obtenha um único componente por meio de:

  • busca por nome (correspondência de padrão), coleção ou load_id.
  • passando um component_id Gera um erro se vários componentes corresponderem ou nenhum for encontrado.

remove

< >

( component_id: str = None )

Parâmetros

  • component_id (str) — O ID do componente a ser removido

Remove um componente do ComponentsManager.

remove_from_collection

< >

( component_id: strcollection: str )

Remove um componente de uma coleção.

search_components

< >

( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )

Parâmetros

  • names — Nome(s) ou padrão(ões) dos componentes Padrões:
    • “unet”: corresponde a qualquer componente com nome base “unet” (ex.: unet_123abc)
    • “!unet”: tudo exceto componentes com nome base “unet”
    • “unet*”: qualquer coisa cujo nome base comece com “unet”
    • “!unet*” : qualquer coisa cujo nome base NÃO começa com “unet”
    • ”unet” : qualquer coisa cujo nome base contenha “unet”
    • “!unet” : qualquer coisa cujo nome base NÃO contenha “unet”
    • “refiner|vae|unet” : qualquer coisa cujo nome base corresponda exatamente a “refiner”, “vae” ou “unet”
    • “!refiner|vae|unet” : qualquer coisa cujo nome base NÃO corresponda exatamente a “refiner”, “vae” ou “unet”
    • “unet|vae”: qualquer coisa cujo nome base comece com “unet” OU comece com “vae”
  • collection — Coleção opcional para filtrar
  • load_id — load_id opcional para filtrar por
  • return_dict_with_names — Se True, retorna um dicionário com os nomes dos componentes como chaves e lança um erro se for encontrado mais de um componente com o mesmo nome. Se False, retorna um dicionário com os IDs dos componentes como chaves

Pesquise componentes por nome com correspondência de padrões simples. Opcionalmente, filtre por collection ou load_id.

set_offload_strategy

< >

( offload_strategy )

Parâmetros

  • offload_strategy — Qualquer função chamável com a assinatura (hooks, model_id, model, execution_device) -> hooks: ela recebe os hooks dos modelos atualmente no dispositivo e retorna os que devem ser offloadados antes que o modelo entrante seja carregado. O padrão é AutoOffloadStrategy, que libera a combinação mínima suficiente.

Substitua a estratégia de offload em todos os modelos gerenciados. Válido apenas quando o offload automático para CPU está habilitado.

InsertableDict

classe diffusers.modular_pipelines.InsertableDict

< >

( )

Update on GitHub