Buckets:

mishig's picture
|
download
raw
17.5 kB

Agendadores

🤗 O Diffusers fornece muitas funções de agendador para o processo de difusão. Um agendador recebe a saída de um modelo (a amostra na qual o processo de difusão está iterando) e um timestep para retornar uma amostra sem ruído. O timestep é importante porque determina em que ponto do processo de difusão a etapa está; os dados são gerados iterando para frente n timesteps e a inferência ocorre propagando para trás pelos timesteps. Com base no timestep, um agendador pode ser discreto, no qual o timestep é um int, ou contínuo, no qual o timestep é um float.

Dependendo do contexto, um scheduler define como adicionar ruído iterativamente a uma imagem ou como atualizar uma amostra com base na saída de um modelo:

  • durante o treinamento, um agendador adiciona ruído (existem diferentes algoritmos para a forma de adicionar ruído) a uma amostra para treinar um modelo de difusão
  • durante a inferência, um agendador define como atualizar uma amostra com base na saída de um modelo pré-treinado

Muitos agendadores são implementados a partir da biblioteca k-diffusion de Katherine Crowson e também são amplamente utilizados no A1111. Para ajudá-lo a mapear os agendadores do k-diffusion e do A1111 para os agendadores no 🤗 Diffusers, veja a tabela abaixo:

A1111/k-diffusion 🤗 Diffusers Uso
DPM++ 2M DPMSolverMultistepScheduler
DPM++ 2M Karras DPMSolverMultistepScheduler inicialize com use_karras_sigmas=True
DPM++ 2M SDE DPMSolverMultistepScheduler inicialize com algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE Karras DPMSolverMultistepScheduler inicialize com use_karras_sigmas=True e algorithm_type="sde-dpmsolver++"
DPM++ 2S a N/A muito semelhante a DPMSolverSinglestepScheduler
DPM++ 2S a Karras N/A muito semelhante a DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDE DPMSolverSinglestepScheduler
DPM++ SDE Karras DPMSolverSinglestepScheduler inicialize com use_karras_sigmas=True
DPM2 KDPM2DiscreteScheduler
DPM2 Karras KDPM2DiscreteScheduler inicialize com use_karras_sigmas=True
DPM2 a KDPM2AncestralDiscreteScheduler
DPM2 a Karras KDPM2AncestralDiscreteScheduler inicialize com use_karras_sigmas=True
DPM adaptativo N/A
DPM rápido N/A
Euler EulerDiscreteScheduler
Euler a EulerAncestralDiscreteScheduler
Heun HeunDiscreteScheduler
LMS LMSDiscreteScheduler
LMS Karras LMSDiscreteScheduler inicialize com use_karras_sigmas=True
N/A DEISMultistepScheduler
N/A UniPCMultistepScheduler

Agendamentos de ruído e tipos de agendamento

A1111/k-diffusion 🤗 Diffusers
Karras inicialize com use_karras_sigmas=True
sgm_uniform inicializar com timestep_spacing="trailing"
simples inicializar com timestep_spacing="trailing"
exponencial inicialize com timestep_spacing="linspace", use_exponential_sigmas=True
beta inicializar com timestep_spacing="linspace", use_beta_sigmas=True

Todos os agendadores são construídos a partir da classe base SchedulerMixin, que implementa utilitários de baixo nível compartilhados por todos os agendadores.

SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin()

Fonte

Classe base para todos os agendadores.

SchedulerMixin contém funções comuns compartilhadas por todos os agendadores, como funcionalidades gerais de carregamento e salvamento.

ConfigMixin cuida de armazenar os atributos de configuração (como num_train_timesteps) que são passados para a função __init__ do scheduler, e os atributos podem ser acessados por scheduler.config.num_train_timesteps.

Atributos de classe:

  • _compatibles (list[str]) -- Uma lista de classes de agendadores compatíveis com a classe de agendador pai. Use from_config() para carregar uma classe de agendador compatível diferente (deve ser sobrescrita pela classe pai).

from_pretrained[[diffusers.SchedulerMixin.from_pretrained]]

from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: Any)

Fonte

Parâmetros:

pretrained_model_name_or_path (str ou os.PathLike, opcional) : Pode ser: - Uma string, o model id (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 a configuração do scheduler salva com save_pretrained().

subfolder (str, opcional) : A localização da subpasta de um arquivo de modelo dentro de um repositório de modelo maior no Hub ou localmente.

return_unused_kwargs (bool, opcional, padrão False) : Se os kwargs que não são consumidos pela classe Python devem ser retornados ou não.

cache_dir (str ou 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.

output_loading_info (bool, opcional, padrão False) : Se deve ou não retornar também um dicionário contendo chaves ausentes, chaves inesperadas e mensagens de erro.

local_files_only (bool, opcional, padrão False) : Se deve carregar apenas os pesos e os arquivos de configuração do modelo localmente ou não. 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 HTTP bearer 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.

Retorna: SchedulerMixin ou tuple[SchedulerMixin, dict[str, Any]]

O agendador instanciado a partir da configuração. Se return_unused_kwargs for True, uma tupla é retornada, onde o segundo elemento é um dicionário de argumentos de palavra-chave não utilizados.

Instancie um agendador a partir de um arquivo de configuração JSON predefinido em um diretório local ou em um repositório do Hub.

> Para usar modelos privados ou gated models, faça login com hf > auth login. Você também pode ativar o modo especial > "offline-mode" para usar este método em um > ambiente com firewall.

save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]

save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs: Any)

Fonte

Parâmetros:

save_directory (str ou os.PathLike) : Diretório onde o arquivo JSON de configuração será salvo (será criado se não existir).

push_to_hub (bool, opcional, padrão False) : Se deve ou não enviar seu modelo para o Hugging Face Hub após salvá-lo. Você pode especificar o repositório para o qual deseja enviar com repo_id (o padrão será o nome de save_directory no seu namespace).

kwargs (dict[str, Any], opcional) : Argumentos de palavra-chave adicionais passados ao método push_to_hub().

Salve um objeto de configuração de agendador em um diretório para que ele possa ser recarregado usando o método de classe from_pretrained().

SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)

Fonte

Parâmetros:

prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) : Amostra calculada (x_{t-1}) do passo anterior. prev_sample deve ser usado como entrada do próximo modelo no loop de remoção de ruído.

Classe base para a saída da função step de um agendador.

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers são uma generalização ampla dos agendadores no 🤗 Diffusers. Os agendadores desta classe se distinguem em alto nível pela estratégia de amostragem de ruído, pelo tipo de rede e escalonamento, pela estratégia de treinamento e pela forma como a perda é ponderada.

Os diferentes agendadores desta classe, dependendo do tipo de solucionador de equações diferenciais ordinárias (ODE), se enquadram na taxonomia acima e fornecem uma boa abstração para o design dos principais agendadores implementados no 🤗 Diffusers. Os agendadores desta classe estão disponíveis aqui.

PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin()

Fonte

Um Mixin para enviar um modelo, agendador ou pipeline para o Hugging Face Hub.

push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)

Fonte

Parâmetros:

repo_id (str) : O nome do repositório para o qual você deseja enviar os arquivos do seu modelo, agendador ou pipeline. Deve conter o nome da sua organização ao enviar para uma organização. repo_id também pode ser um caminho para um diretório local.

commit_message (str, opcional) : Mensagem para commit ao fazer push. Padrão é "Upload {object}".

private (bool, opcional) : Se deve tornar o repositório privado. Se None (padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir.

token (str, opcional) : O token a ser usado como autorização de bearer HTTP para arquivos remotos. O token gerado ao executar hf auth login (armazenado em ~/.huggingface).

create_pr (bool, opcional, padrão False) : Se deve ou não criar um PR com os arquivos enviados ou fazer o commit diretamente.

safe_serialization (bool, opcional, padrão True) : Se os pesos do modelo devem ou não ser convertidos para o formato safetensors.

variant (str, opcional) : Se especificado, os pesos são salvos no formato pytorch_model.<variant>.bin.

Envie arquivos de modelo, agendador ou pipeline para o 🤗 Hugging Face Hub.

Exemplos:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")

Xet Storage Details

Size:
17.5 kB
·
Xet hash:
f99a84b2b4020a6a3d62d9044b0c77514a7f71f2f52200054386f96f9622e0ac

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.