Naviguez dans le verset uni des modèles de diffusion avec un flux de travail uni .

Unidiffusion est une boîte à outils qui fournit des algorithmes de formation et d'inférence de pointe, basés sur des diffuseurs. Unidiffusion s'adresse aux chercheurs et aux utilisateurs qui souhaitent personnaliser profondément la formation de la diffusion stable. Nous espérons que ce référentiel de code pourra fournir un excellent support pour les recherches futures et les extensions d'application.
Si vous souhaitez également implémenter les choses suivantes, amusez-vous avec Unidiffusion
cross attention (ou convolution / feedforward / ...).lr / weight decay / ... pour différentes couches.Remarque: Unidiffusion est toujours en cours de développement. Certains modules sont empruntés à d'autres référentiels de code et n'ont pas encore été testés, en particulier les composants qui ne sont pas activés par défaut dans le système de configuration. Nous travaillons dur pour améliorer ce projet.
En unidiffusion, toutes les méthodes de formation sont décomposées en trois dimensions
Il permet de mener un pipeline de formation unifié avec un système de configuration solide.
Voici un exemple simple. Dans les diffuseurs, entraîner text-to-image finetune et dreambooth comme:
python train_dreambooth.py --arg ......
python train_finetune.py --arg ......et la combinaison ou l'ajustement de certaines méthodes est difficile (par exemple, l'attention de l'entraînement pendant Dreambooth).
Dans Unidiffusion, nous pouvons facilement concevoir nos propres arguments de formation dans le fichier de configuration:
# text-to-image finetune
unet . training_args = { '' : { 'mode' : 'finetune' }}
# text-to-image finetune with lora
unet . training_args = { '' : { 'mode' : 'lora' }}
# update cross attention with lora
unet . training_args = { 'attn2' : { 'mode' : 'lora' }}
# dreambooth
unet . training_args = { '' : { 'mode' : 'finetune' }}
text_encoder . training_args = { 'text_embedding' : { 'initial' : True }}
# dreambooth with small lr for text-encoder
unet . training_args = { '' : { 'mode' : 'finetune' }}
text_encoder . training_args = { 'text_embedding' : { 'initial' : True , 'optim_kwargs' : { 'lr' : 1e-6 }}}puis courir
accelerate launch scripts/train.py --config-file /path/to/your/configCela facilite la personnalisation, la combinaison et l'amélioration plus faciles des méthodes, et permet également la comparaison des similitudes et des différences entre les méthodes via des fichiers de configuration.
Dans Unidiffusion, nous fournissons un système de correspondance régulier pour la sélection des modules. Il nous permet de sélectionner des modules par correspondance régulière. Voir l'appariement régulier pour la sélection des modules pour plus de détails.
Nous fournissons un soutien puissant pour les méthodes PEFT / PETL. Voir les méthodes PEFT / PETL pour plus de détails.
pip install -e requirements.txtaccelerate config
wandb loginVoir le train inversion textuelle / Dreambooth / Lora / Finetune de texte à image pour plus de détails.
accelerate launch scrits/common.py --config-file configs/train/text_to_image_finetune.pyRemarque: Les méthodes de personnalisation sont des décomposables dans les paramètres d'entraînement, les méthodes PEFT / PETL et le processus de formation en unidiffusion. Voir le fichier de configuration pour plus de détails.
Nous allons ajouter les fonctionnalités suivantes à l'avenir. Nous accueillons également les contributions de la communauté. N'hésitez pas à extraire les demandes ou à ouvrir un problème pour discuter des idées de nouvelles fonctionnalités.
Nous accueillons les contributions de la communauté open source!
Si vous utilisez cette boîte à outils dans votre recherche ou si vous souhaitez vous référer aux résultats de référence publiés ici, veuillez utiliser les entrées Bibtex suivantes:
@misc { pu2022diffusion ,
author = { Pu Cao, Tianrui Huang, Lu Yang, Qing Song } ,
title = { UniDiffusion } ,
howpublished = { url{https://github.com/PRIV-Creation/UniDiffusion} } ,
year = { 2023 }
}