Diffusers documentation

UNet

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet

Alguns métodos de treinamento - como LoRA e Custom Diffusion - geralmente visam as camadas de atenção do UNet, mas esses métodos de treinamento também podem visar outras camadas que não são de atenção. Em vez de treinar todos os parâmetros de um modelo, apenas um subconjunto dos parâmetros é treinado, o que é mais rápido e eficiente. Esta classe é útil se você estiver apenas carregando pesos em um UNet. Se você precisar carregar pesos no text encoder ou em um text encoder e um UNet, tente usar a função load_lora_weights() em vez disso.

A classe UNet2DConditionLoadersMixin fornece funções para carregar e salvar pesos, fundir e desfazer a fusão de LoRAs, desativar e ativar LoRAs, e definir e excluir adaptadores.

Para saber mais sobre como carregar pesos LoRA, consulte o guia LoRA.

UNet2DConditionLoadersMixin

classe diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

Carregue as camadas LoRA em um UNet2DCondtionModel.

load_attn_procs

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )

Parâmetros

  • pretrained_model_name_or_path_or_dict (str ou os.PathLike ou dict) — Pode ser:
    • Uma string, o id do modelo (por exemplo, google/ddpm-celebahq-256) de um modelo pré-treinado hospedado no Hub.
    • Um caminho para um diretório (por exemplo, ./my_model_directory) contendo os pesos do modelo salvos com ModelMixin.save_pretrained().
    • Um torch state dict.
  • cache_dir (str | os.PathLike, opcional) — Caminho para um diretório onde a configuração de um modelo pré-treinado baixado é armazenada em cache, caso o cache padrão não seja utilizado.
  • force_download (bool, opcional, padrão False) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração, sobrescrevendo as versões em cache, caso existam.
  • proxies (dict[str, str], opcional) — Um dicionário de servidores proxy a serem usados por protocolo ou endpoint, por exemplo, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Os proxies são usados em cada solicitação.
  • local_files_only (bool, opcional, padrão False) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido como True, o modelo não será baixado do Hub.
  • token (str ou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. Se True, o token gerado por diffusers-cli login (armazenado em ~/.huggingface) é utilizado.
  • revision (str, opcional, padrão "main") — A versão específica do modelo a ser usada. Pode ser o nome de um branch, o nome de uma tag, um id de commit ou qualquer identificador permitido pelo Git.
  • subfolder (str, opcional, padrão "") — A localização da subpasta de um arquivo de modelo dentro de um repositório de modelo maior no Hub ou localmente.
  • weight_name (str, opcional, padrão None) — Nome do arquivo de state dict serializado.

Carrega as camadas de processador de atenção do Custom Diffusion pré-treinadas em UNet2DConditionModel. As camadas de processador de atenção devem ser definidas em attention_processor.py e ser uma classe torch.nn.Module. Para carregar camadas LoRA, use load_lora_adapter() em vez disso.

Exemplo:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")

save_attn_procs

< >

( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )

Parâmetros

  • save_directory (str ou os.PathLike) — Diretório para salvar um processador de atenção (será criado se não existir).
  • is_main_process (bool, opcional, padrão True) — Indica se o processo que está chamando esta função é o processo principal ou não. Útil durante o treinamento distribuído quando você precisa chamar esta função em todos os processos. Nesse caso, defina is_main_process=True apenas no processo principal para evitar condições de corrida.
  • save_function (Callable) — A função a ser usada para salvar o dicionário de estado. Útil durante o treinamento distribuído quando você precisa substituir torch.save por outro método. Pode ser configurado com a variável de ambiente DIFFUSERS_SAVE_MODE.
  • safe_serialization (bool, opcional, padrão True) — Se o modelo deve ser salvo usando safetensors ou com pickle.

Salve as camadas do processador de atenção do Custom Diffusion em um diretório para que possam ser recarregadas com o método load_attn_procs(). Para salvar camadas LoRA, use save_lora_adapter() em vez disso.

Exemplo:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
Update on GitHub