O repositório contém uma demonstração simples baseada em PyTorch de modelos de difusão com eliminação de ruído. Visa apenas fornecer uma primeira compreensão desta abordagem de modelagem generativa.
Uma breve introdução teórica aos DDPMs padrão pode ser encontrada aqui. DDIMs para amostragem acelerada são discutidos no caderno complementar. Dois exemplos de aplicativos estabelecem um pequeno playground de experimentação. Eles são preparados de forma que possam ser facilmente modificados e ampliados.
Introdução aos DDPMs
Introdução aos DDIMs
Exemplo de rocambole suíço
Modelo incondicional no MNIST
Modelo condicional no MNIST
Como primeiro exemplo, um DDPM generativo é treinado em uma distribuição 2D de rolos suíços. O script de treinamento principal pode ser chamado para esse fim com um arquivo de configuração que permite ajustar a configuração do problema e a definição do modelo:
python scripts/main.py fit --config config/swissroll.yaml
Após o término do treinamento, o modelo final poderá ser testado e analisado neste caderno.
Para monitorar o experimento, pode-se executar localmente um servidor TensorBoard por tensorboard --logdir run/swissroll/
. Ele pode ser acessado em localhost:6006 por padrão em seu navegador. Como alternativa, pode-se usar o MLfLow para gerenciar experimentos. Nesse caso, pode-se iniciar o treinamento com as configurações apropriadas e configurar um servidor de rastreamento por mlflow server --backend-store-uri file:./run/mlruns/
. Ele pode então ser acessado em localhost:5000.