Cerveza casera DALL-E En esta publicación, veremos cómo configurarlo para ejecutar su propio generador de imágenes de IA. Necesita un sistema Linux con una tarjeta habilitada para CUDA para que esto funcione hasta el final. Obtuve el script básico txt-2img funcionando en Windows. Desafortunadamente, para los lanzados en julio, necesita para indexar el conjunto de datos de imágenes abiertas, que solo está disponible en Linux. funcionó bien para mí. modelos de difusión de recuperación aumentada scann WSL Esto es más o menos lo que deduzco que necesitarás: Linux (WSL bien) 11.3 Gráficos CUDA = 32GB RAM 50 GB de espacio en disco (~30 GB sin imágenes abiertas) Tarjeta de la serie 3xxx (Solo estoy adivinando aquí. Todo esto se está haciendo con un 3090 FE) Difusión latente Me topé por casualidad con el mientras navegaba por los subreddits de IA. Algunas publicaciones lo mencionaron y no sabía qué era, así que busqué en Google. repositorio de difusión latente No soy un científico informático, matemático o cualquiera de las cosas que se requieren para entender realmente lo que está pasando aquí. El documento sobre los nuevos modelos RAD es comprensible e interesante, pero aún no he investigado mucho más allá de eso. Texto a imagen frente a RAD Hay 2 técnicas de generación de imágenes posibles con Latent Diffusion. Instalaremos y echaremos un vistazo a ambos. Creo que el modelo txt2-img que configuraremos primero es a lo que estamos acostumbrados con otras herramientas de generación de imágenes en línea: crea un clip de imagen de muy baja resolución que se considera una buena combinación rápida y elimina el ruido y lo mejora. El modelo RAD utiliza una base de datos configurable de imágenes como referencia Y hace la difusión como estamos acostumbrados. Esto parece significar que es menos bueno como generador de propósito general, pero podría usarse con un conjunto de entrenamiento específico que podría crear de manera factible. Intentaré esto en el futuro. RAD también genera imágenes de 768X768, lo cual es bastante impresionante. Instrucciones de instalación Texto a imagen Asegúrese de tener instalado y funcione en su shell. Puedes conseguir CUDA 11.3 conda Conda aquí , para que no termine en un infierno de dependencia más tarde. Hice esto a través de pero conda también puede funcionar. (Re)instale Pytorch ahora pip Clone el repositorio en una unidad con mucho espacio libre en el repositorio y ejecuta: cd conda env create -f environment.yaml conda activate ldm Esto configurará el entorno inicial. Si obtiene errores con Pytorch más adelante y necesita volver a instalarlo, vuelva a environment.yaml y vuelva a instalarlo con las versiones de paquete correctas. Descargue el modelo y estará listo para comenzar, siempre que las dependencias de su antorcha estén configuradas correctamente. mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt Debería poder muestrear imágenes ahora usando: python scripts/txt2img.py --prompt "my cool image" Asegúrese de ver las opciones que puede configurar en el LÉAME. Puede usar este script bash para facilitar la ejecución de todo desde un shell. Puede incluir esto en su archivo y volver a abrir su shell. Asegúrese de cambiar las 3 rutas para que se ajusten a sus necesidades. Veremos PLMS más tarde. ~/.bashrc function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi } Las imágenes son 512X512 por defecto. Puede usar para mejorar las imágenes con resultados bastante buenos. This Jupiter Notebook Solución de problemas Si obtiene errores de memoria CUDA al ejecutar comandos, intente disminuir el tamaño del lote. Use para solucionar problemas/ver el uso de la memoria. htop Si usa WSL, asegúrese de que toda su RAM esté disponible para Linux. Si obtiene errores relacionados con la antorcha, probablemente necesite reinstalar Pytorch. Es probable que esto cause otros problemas con los paquetes. Verifique environment.yaml e instale manualmente las versiones correctas del paquete con y/o (hice ambas cosas y no estoy seguro de cuál hizo que todo funcionara) pip conda RDM Puede leer más sobre RDM . Como se dijo antes, esencialmente combina una base de datos de imágenes con descripciones de Clip con el proceso de difusión existente, por lo que entiendo. Esta parte tarda mucho más en ponerse en marcha. aquí Tenga en cuenta que este modelo, especialmente cuando se usa el entrenamiento de imágenes abiertas, es mejor para recrear cosas reales y no parece muy bueno (todavía) y para crear las imágenes extrañas a las que estamos acostumbrados a partir de los modelos de difusión. Haz que el modelo de texto a imagen funcione primero Instale nuevos paquetes y descargue el modelo de entrenamiento. pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt Prueba que todo funciona hasta ahora con python scripts/knn2img.py --prompt "I'm a computer" Si todo salió bien, debería ver un texto de éxito en su shell. Ahora necesitamos descargar todos los índices/modelos de imágenes. El zip de imágenes abiertas es de 11 GB. Los datos de ArtBench son bastante pequeños. mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers Estamos listos para usar los modelos Artbench ahora (que funcionan bastante bien en mis pruebas limitadas), pero lo que realmente queremos es usar el modelo masivo de imágenes abiertas como referencia. Descargamos los datos, pero necesitamos crear el índice. Si desea probar la base de datos de Artbench, ejecute python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 Índice de imágenes abiertas A menos que tenga una supercomputadora, la terrible gestión de la memoria en el multiprocesamiento de Python (por lo que puedo decir) nos impedirá usar los 4 archivos que descomprimimos con el script del repositorio para indexarlos. Todo lo demás que probé, los procesos se quedarían sin memoria. Afortunadamente, solo necesitamos concatenar los archivos. Puede eliminar los archivos de piezas anteriores si lo desea. También necesitamos sacar los archivos de las piezas de la carpeta openimages. cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../ Ahora, cuando ejecutamos el script de entrenamiento, no deberíamos quedarnos sin memoria. Creo que esto es un problema en su función de archivos múltiples en el script de entrenamiento. python scripts/train_searcher.py Necesitamos cambiar el tamaño del lote en para no quedarnos sin memoria GPU. Es posible que deba bajar a 1, pero pude configurarlo en 2 en un 3090. scripts/knn2img.py Abra en un editor scripts/knn2img.py Vaya a la línea 243 o busque "n_samples" Cambie el valor predeterminado a 1 o 2 y guarde También puede hacer esto usando el parámetro de línea de comando, pero como nunca funcionará para mí, quería cambiar el valor predeterminado. Tenga en cuenta que si actualiza el repositorio en el futuro, es probable que se sobrescriba. Ahora podemos generar imágenes RDM usando la base de datos openimages: python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20 Aquí hay un script para ejecutarlo convenientemente. Nuevamente, asegúrese de cambiar las 3 rutas para que se ajusten a sus necesidades: ~/.bashrc function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi } Acelerando las cosas También puede ejecutar solicitudes en lotes creando un archivo (en este caso, ) y señalando el script con el parámetro como este prompts.txt –from-file python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 ejemplo prompts.txt prompt 1 prompt 2 prompt 3 Esto debería ahorrar mucho tiempo si está ejecutando muchas consultas, ya que el modelo solo se carga una vez. El modelo de texto a imagen no tiene esta opción. Pruebas iniciales y PLMS A continuación se muestran algunos resultados iniciales de ambos modelos con PLMS activado y desactivado. PLMS debería hacer que las cosas funcionen más rápido. Por ahora, no mediremos el aumento de velocidad, pero veremos subjetivamente la calidad/los resultados de la imagen. Dado que el modelo RDM solo hará 2 fotos a la vez para mi sistema, incluí ambas fotos en lugar de una cuadrícula para ese modelo. Es casi seguro que haré pruebas más específicas en el futuro y estos modelos se incluirán en futuras publicaciones de comparación. Una casa de madera en una colina, fotografía de paisaje. Texto a imagen sin plms con plms RDM sin plms con plms Una señal de alto violeta Texto a imagen sin plms con plms RDM sin plms con plms guarida de zorros, arte digital Texto a imagen sin plms con plms RDM sin plms con plms ganar el gran juego, fotografía premiada Texto a imagen sin plms con plms RDM sin plms con plms un auto deportivo conduciendo en dunas de arena Texto a imagen sin plms con plms RDM sin plms con plms Un generador de imágenes para llamarlo propio Y ahí lo tiene: no más créditos ni límites mensuales, solo generación de imágenes de IA pura por su cuenta. Una vez que descubra algunas configuraciones de ajuste y cree mi propia base de datos de entrenamiento de imágenes, probablemente hablaremos de esto nuevamente. Con suerte, con algunos ajustes y nuevos lanzamientos/modelos, esto se acercará al factor WOW que tiene DALL-E. También publicado . aquí