Navegue por el verso de los modelos de difusión con flujo de trabajo Uni Fied.

Unidifusion es una caja de herramientas que proporciona algoritmos de capacitación e inferencia de última generación, basados en difusores. Unidifusion está dirigido a investigadores y usuarios que desean personalizar profundamente la capacitación de la difusión estable. Esperamos que este repositorio de código pueda proporcionar un excelente soporte para futuras investigaciones y extensiones de aplicaciones.
Si también desea implementar las siguientes cosas, diviértase con Unidifusion
cross attention (o convolution / feedforward / ...).lr / weight decay / ... para diferentes capas.Nota: Unidifusion todavía está en desarrollo. Algunos módulos se toman prestados de otros repositorios de código y aún no se han probado, especialmente los componentes que no están habilitados de forma predeterminada en el sistema de configuración. Estamos trabajando duro para mejorar este proyecto.
En unidifusión, todos los métodos de entrenamiento se descomponen en tres dimensiones
Le permite llevar a cabo una tubería de entrenamiento unificada con un sistema de configuración fuerte.
Aquí hay un ejemplo simple. En difusores, entrenamiento text-to-image finetune y dreambooth como:
python train_dreambooth.py --arg ......
python train_finetune.py --arg ......y combinar o ajustar algunos de los métodos son difíciles (por ejemplo, solo el entrenamiento cruzó la atención durante Dreambooth).
En Unidifusion, podemos diseñar fácilmente nuestros propios argumentos de capacitación en el archivo de configuración:
# 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 }}}y luego corre
accelerate launch scripts/train.py --config-file /path/to/your/configEsto facilita la personalización, la combinación y la mejora más fácil de los métodos, y también permite la comparación de similitudes y diferencias entre los métodos a través de archivos de configuración.
En Unidifusion, proporcionamos un sistema de coincidencia regular para la selección de módulos. Nos permite seleccionar módulos mediante una coincidencia regular. Vea la coincidencia regular para la selección del módulo para más detalles.
Brindamos un poderoso apoyo para los métodos PEFT/PETL. Consulte los métodos PEFT/PETL para obtener más detalles.
pip install -e requirements.txtaccelerate config
wandb loginConsulte la inversión textual del tren / Dreambooth / Lora / Text-to-Image Finetune para más detalles.
accelerate launch scrits/common.py --config-file configs/train/text_to_image_finetune.pyNota: Los métodos de personalización se descomponen en parámetros capacitables, métodos PEFT/PETL y proceso de capacitación en unidifusión. Consulte el archivo de configuración para obtener más detalles.
Vamos a agregar las siguientes funciones en el futuro. También damos la bienvenida a las contribuciones de la comunidad. Siéntase libre de extraer solicitudes o abrir un tema para discutir ideas para nuevas características.
¡Agradecemos las contribuciones de la comunidad de código abierto!
Si usa esta caja de herramientas en su investigación o desea consultar los resultados de línea de base publicados aquí, utilice las siguientes entradas de Bibtex:
@misc { pu2022diffusion ,
author = { Pu Cao, Tianrui Huang, Lu Yang, Qing Song } ,
title = { UniDiffusion } ,
howpublished = { url{https://github.com/PRIV-Creation/UniDiffusion} } ,
year = { 2023 }
}