Diffusers documentation
Componentes e configurações
Componentes e configurações
ComponentSpec
classe diffusers.ComponentSpec
< source >( 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:
- Do zero usando init com um dicionário de configuração
- usando
from_pretrained
criar
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
Crie o componente usando from_config com config.
decode_load_id
< source >( load_id: str )
Decodifique uma string de load_id de volta para um dicionário de campos e valores de carregamento.
from_component
< source >( name: strcomponent: Any )
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)
Carregue o componente usando from_pretrained.
Retorna os nomes de todos os campos relacionados ao carregamento (ou seja, aqueles cujo field.metadata[“loading”] é True).
ConfigSpec
Especificação para um parâmetro de configuração de pipeline.
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
< source >( 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.
Desative o offloading automático de CPU para todos os componentes.
enable_auto_cpu_offload
< source >( 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:
- Todos os modelos começam na CPU por padrão
- Quando o forward pass de um modelo é chamado, ele é movido para o dispositivo de execução
- Se a memória for insuficiente, outros modelos no dispositivo são movidos de volta para a CPU
- O sistema tenta descarregar a menor combinação de modelos que libere memória suficiente
- 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
< source >( 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
< source >( 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
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
Obtém os IDs dos componentes por uma lista de nomes, opcionalmente filtrados por coleção.
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
Obtenha informações abrangentes sobre um componente.
get_one
< source >( 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
< source >( component_id: str = None )
Remove um componente do ComponentsManager.
Remove um componente de uma coleção.
search_components
< source >( 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
< source >( 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.