Nota: Este proyecto se conocía anteriormente como
hordelib
. El espacio de nombres del proyecto se cambiará en un futuro próximo para reflejar este cambio.
horde-engine
es un contenedor de ComfyUI principalmente para permitir que AI Horde ejecute canales de inferencia diseñados visualmente en la GUI de ComfyUI.
Los desarrolladores de horde-engine
se pueden encontrar en el servidor AI Horde Discord: https://discord.gg/3DxrhksKzn
Tenga en cuenta que horde-engine
(anteriormente conocido como hordelib
) ha sido la biblioteca de backend de inferencia predeterminada de AI Horde desde hordelib
v1.0.0.
El objetivo aquí es poder diseñar canales de inferencia en el excelente ComfyUI y luego llamarlos mediante programación. Al mismo tiempo que proporciona características que mantienen la compatibilidad con la implementación de horda existente.
Si se instala desde pypi, use un archivo de requisitos del formulario:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
En Linux necesitarás instalar el kit de herramientas Nvidia CUDA. Nvidia proporciona los instaladores de Linux en https://developer.nvidia.com/cuda-downloads
Tenga en cuenta que si solo tiene 16 GB de RAM y un /tmp predeterminado en tmpfs, probablemente necesitará aumentar el tamaño de su espacio temporal para instalar CUDA Toolkit o es posible que no pueda extraer el archivo. Una forma de hacerlo es justo antes de instalar CUDA Toolkit:
sudo mount -o remontar, tamaño = 16G /tmp
Si sólo tienes 16 GB de RAM, también necesitarás espacio de intercambio. Entonces, si normalmente ejecuta sin intercambio, agregue algo. No podrá ejecutar esta biblioteca sin ella.
Las cargas útiles de la Horda se pueden procesar simplemente con (por ejemplo):
# import os# Dondequiera que estén tus modelos# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # El valor predeterminado es `models/` en el directorio de trabajo actualimport hordelibhordelib.initialise() # Esto debe llamarse antes de cualquier otras funciones de hordelib de hordelib.horde import HordeLib de hordelib.shared_model_manager import SharedModelManagergenerate = HordeLib()if SharedModelManager.manager.compvis es Ninguno:raise Exception("Error al cargar el administrador de modelos compvis")SharedModelManager.manager.compvis.download_model("Deliberate")SharedModelManager.manager.compvis.validate_model("Deliberate")data = {"sampler_name" : "k_dpmpp_2m","cfg_scale": 7.5,"denoising_strength": 1.0,"seed": 123456789,"height": 512,"width": 512,"karras": False,"tiling": False,"hires_fix": False,"clip_skip": 1,"control_type": Ninguno, "image_is_control": False,"return_control_map": False,"prompt": "un antiguo monstruo llamia","ddim_steps": 25,"n_iter": 1,"modelo": "Deliberado", }pil_image = generate.basic_inference_single_image(data).imageif pil_image es Ninguno:raise Exception("Error al generar la imagen")pil_image.save("test.png")
Tenga en cuenta que hordelib.initialise()
borrará todos los argumentos de la línea de comando de argv. Así que asegúrese de analizarlos antes de llamar a eso.
Consulte tests/run_*.py
para ver más ejemplos independientes.
Si no desea que hordelib
configure y controle la configuración de registro (usamos loguru), inicialice con:
importar hordelibhordelib.initialise(setup_logging=False)
hordelib
depende de una gran cantidad de proyectos de código abierto, y la mayoría de estas dependencias se descargan e instalan automáticamente cuando instala hordelib
. Debido a la naturaleza y el propósito de hordelib
algunas dependencias se incluyen directamente dentro de hordelib
.
Una GUI de difusión estable, potente y modular con una interfaz de gráfico/nodos. Licenciado bajo los términos de la Licencia Pública General GNU v3.0.
El único propósito de hordelib
es acceder al poder de ComfyUI.
Nodos personalizados para ComfyUI que proporcionan capacidad de preprocesamiento de Controlnet. Licenciado bajo los términos de la Licencia Apache 2.0.
Nodos personalizados para ComfyUI que proporcionan restauración facial.
Nodos para generar códigos QR
Requisitos:
git
(instalar git)
tox
( pip install tox
)
Configure la variable ambiental AIWORKER_CACHE_HOME
para que apunte a un directorio de modelo.
Tenga en cuenta que el directorio del modelo debe estar actualmente en la estructura de directorio original de AI Horde:
clip codeformer compvis Deliberate.ckpt ...etc... controlnet embeds esrgan gfpgan safety_checker
Simplemente ejecute: tox
(o tox -q
para una salida menos ruidosa)
Esto llevará un tiempo la primera vez, ya que instala todas las dependencias.
Si las pruebas se ejecutan correctamente, las imágenes se producirán en la carpeta images/
.
tox -- -k
por ejemplo tox -- -k test_initialisation
tox list
Esto enumerará todos los grupos de pruebas que están involucrados en el proceso de desarrollo, construcción o CI. Las pruebas que tienen la palabra "arreglar" aplicarán automáticamente cambios cuando se ejecuten, como el linting o el formato. Puedes hacer esto ejecutando:
tox -e [test_suite_name_here]
hordelib/pipeline_designs/
Contiene canalizaciones de ComfyUI en un formato que la aplicación web ComfyUI puede abrir. Estos se guardan directamente desde la aplicación web.
hordelib/pipelines/
Contiene los archivos JSON de canalización anteriores convertidos al formato requerido por el procesador de canalización backend. Estos se convierten desde la aplicación web; consulte Conversión de canalizaciones de ComfyUI a continuación.
hordelib/nodes/
Estos son los nodos ComfyUI personalizados que utilizamos para el procesamiento específico hordelib
.
En este ejemplo instalamos las dependencias en el entorno predeterminado del sistema operativo. Cuando se utiliza la versión git de hordelib
, desde la raíz del proyecto:
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --upgrade
Asegúrese de que ComfyUI esté instalado; una forma es ejecutar las pruebas:
tox -- -k test_comfy_install
De ahí en adelante para ejecutar ComfyUI:
cd ComfyUI
python main.py
Luego abra un navegador en: http://127.0.0.1:8188/
Utilice la aplicación web estándar ComfyUI. Utilice el atributo "título" para nombrar los nodos; estos nombres se convierten en nombres de parámetros en hordelib
. Por ejemplo, un KSampler con el "título" de "sampler2" se convertiría en un parámetro sampler2.seed
, sampler2.cfg
, etc. Cargue la canalización hordelib/pipeline_designs/pipeline_stable_diffusion.json
en la aplicación web ComfyUI para ver un ejemplo.
Guarde cualquier canalización nueva en hordelib/pipeline_designs
usando la convención de nomenclatura "pipeline_
Convierta el JSON para el modelo (consulte Conversión de canalizaciones de ComfyUI a continuación) y guarde el JSON resultante en hordelib/pipelines
usando el mismo nombre de archivo que el archivo JSON anterior.
Eso es todo. Luego se puede llamar desde hordelib
usando el método run_image_pipeline()
en hordelib.comfy.Comfy()
Además del archivo de diseño guardado desde la interfaz de usuario, debemos guardar el archivo de canalización en el formato backend. Este archivo se crea automáticamente en la raíz del proyecto hordelib
llamado comfy-prompt.json
si ejecuta una canalización a través de la versión ComfyUI integrada en hordelib
. Al ejecutar ComfyUI con tox -e comfyui
se parchea automáticamente ComfyUI para que se guarde este archivo JSON.
Los principales archivos de configuración del proyecto son: pyproject.toml
, tox.ini
y requirements.txt
La publicación de Pypi es automática desde el sitio web de GitHub.
Crear un PR desde main
hasta releases
Etiquete el PR con "versión: parche" (0.0.1) o "versión: menor" (0.1.0)
Fusionar el PR con una confirmación de fusión estándar (no aplastar)
He aquí un ejemplo:
Comience en un nuevo directorio vacío. Crear requisitos.txt:
--extra-index-url https://download.pytorch.org/whl/cu118 hordelib
Cree el directorio images/
y copie test_db0.jpg
en él.
Copie run_controlnet.py
del directorio hordelib/tests/
.
Construye un venv:
python -m venv venv .venvScriptsactivate pip install -r requirements.txt
Ejecute la prueba que copiamos:
python run_controlnet.py The `images/` directory should have our test images.
Esto es útil cuando se prueban nuevos nodos a través de horde-reGen-worker, etc.
Python build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
En el venv donde desea instalar la nueva versión
python -m pip install /ruta/a/hordelib/dist/horde_engine-*.whl
Cambie el valor en consts.py
a la versión de ComfyUI deseada.
Ejecute el conjunto de pruebas a través de tox