Hinweis: Dieses Projekt war früher als
hordelib
bekannt. Der Projektnamensraum wird in naher Zukunft geändert, um dieser Änderung Rechnung zu tragen.
horde-engine
ist ein Wrapper für ComfyUI, der es der KI-Horde in erster Linie ermöglicht, Inferenzpipelines auszuführen, die visuell in der ComfyUI-GUI entworfen wurden.
Die Entwickler der horde-engine
finden Sie auf dem AI Horde Discord-Server: https://discord.gg/3DxrhksKzn
Beachten Sie, dass horde-engine
(früher bekannt als hordelib
) seit hordelib
v1.0.0 die Standard-Inferenz-Backend-Bibliothek der AI Horde ist.
Das Ziel hier besteht darin, Inferenzpipelines in der hervorragenden ComfyUI entwerfen und diese Inferenzpipelines dann programmgesteuert aufrufen zu können. Gleichzeitig werden Funktionen bereitgestellt, die die Kompatibilität mit der vorhandenen Horde-Implementierung gewährleisten.
Wenn Sie von Pypi aus installieren, verwenden Sie eine Anforderungsdatei der Form:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
Unter Linux müssen Sie das Nvidia CUDA Toolkit installieren. Linux-Installationsprogramme werden von Nvidia unter https://developer.nvidia.com/cuda-downloads bereitgestellt
Beachten Sie, dass Sie wahrscheinlich Ihren temporären Speicherplatz vergrößern müssen, um das CUDA Toolkit zu installieren, wenn Sie nur über 16 GB RAM und ein standardmäßiges /tmp auf tmpfs verfügen, da sonst das Archiv möglicherweise nicht extrahiert werden kann. Eine Möglichkeit, dies zu tun, besteht direkt vor der Installation des CUDA Toolkits:
sudo mount -o remount,size=16G /tmp
Wenn Sie nur über 16 GB RAM verfügen, benötigen Sie auch Swap-Speicherplatz. Wenn Sie also normalerweise ohne Swap arbeiten, fügen Sie etwas hinzu. Ohne sie können Sie diese Bibliothek nicht ausführen.
Horde-Payloads können einfach verarbeitet werden mit (zum Beispiel):
# import os# Wo immer sich Ihre Modelle befinden# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # Standardmäßig ist „models/“ im aktuellen Arbeitsverzeichnisimport hordelibhordelib.initialise() # Dies muss vor allen aufgerufen werden andere Hordelib-Funktionen aus hordelib.horde import HordeLib aus hordelib.shared_model_manager import SharedModelManagergenerate = HordeLib()wenn SharedModelManager.manager.compvis None ist:Raise Exception("Compvis Model Manager konnte nicht geladen werden")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“: Keine, „image_is_control“: False, „return_control_map“: False, „prompt“: „ein uraltes Lamia-Monster“, „ddim_steps“: 25, „n_iter“: 1, „model“: „Deliberate“, }pil_image = generic.basic_inference_single_image(data).imageif pil_image ist None:raise Exception("Fehler beim Generieren des Bildes")pil_image.save("test.png")
Beachten Sie, dass hordelib.initialise()
alle Befehlszeilenargumente aus argv löscht. Stellen Sie also sicher, dass Sie sie analysieren, bevor Sie das aufrufen.
Weitere eigenständige Beispiele finden Sie tests/run_*.py
.
Wenn Sie nicht möchten, dass hordelib
die Protokollierungskonfiguration einrichtet und steuert (wir verwenden Loguru), initialisieren Sie mit:
import hordelibhordelib.initialise(setup_logging=False)
hordelib
hängt von einer großen Anzahl von Open-Source-Projekten ab, und die meisten dieser Abhängigkeiten werden automatisch heruntergeladen und installiert, wenn Sie hordelib
installieren. Aufgrund der Art und des Zwecks von hordelib
sind einige Abhängigkeiten direkt in hordelib
selbst gebündelt.
Eine leistungsstarke und modulare stabile Diffusions-GUI mit einer Graph/Knoten-Schnittstelle. Lizenziert unter den Bedingungen der GNU General Public License v3.0.
Der gesamte Zweck von hordelib
besteht darin, auf die Leistungsfähigkeit von ComfyUI zuzugreifen.
Benutzerdefinierte Knoten für ComfyUI, die Controlnet-Vorverarbeitungsfunktionen bereitstellen. Lizenziert unter den Bedingungen der Apache-Lizenz 2.0.
Benutzerdefinierte Knoten für ComfyUI zur Gesichtswiederherstellung.
Knoten zum Generieren von QR-Codes
Anforderungen:
git
(Git installieren)
tox
( pip install tox
)
Legen Sie die Umgebungsvariable AIWORKER_CACHE_HOME
so fest, dass sie auf ein Modellverzeichnis verweist.
Beachten Sie, dass sich das Modellverzeichnis derzeit in der ursprünglichen AI Horde-Verzeichnisstruktur befinden muss:
clip codeformer compvis Deliberate.ckpt ...etc... controlnet embeds esrgan gfpgan safety_checker
Führen Sie einfach Folgendes aus: tox
(oder tox -q
für weniger verrauschte Ausgabe)
Dies wird beim ersten Mal eine Weile dauern, da alle Abhängigkeiten installiert werden.
Wenn die Tests erfolgreich verlaufen, werden Bilder im Ordner images/
erstellt.
tox -- -k
zum Beispiel tox -- -k test_initialisation
tox list
Dadurch werden alle Testgruppen aufgelistet, die entweder am Entwicklungs-, Build- oder CI-Prozess beteiligt sind. Tests, die das Wort „fix“ enthalten, wenden bei der Ausführung automatisch Änderungen an, z. B. Flusen oder Formatierungen. Sie können dies tun, indem Sie Folgendes ausführen:
tox -e [test_suite_name_here]
hordelib/pipeline_designs/
Enthält ComfyUI-Pipelines in einem Format, das von der ComfyUI-Web-App geöffnet werden kann. Diese werden direkt aus der Web-App gespeichert.
hordelib/pipelines/
Enthält die oben genannten Pipeline-JSON-Dateien, konvertiert in das vom Backend-Pipeline-Prozessor benötigte Format. Diese werden von der Web-App konvertiert, siehe Konvertieren von ComfyUI-Pipelines weiter unten.
hordelib/nodes/
Dies sind die benutzerdefinierten ComfyUI-Knoten, die wir für hordelib
spezifische Verarbeitung verwenden.
In diesem Beispiel installieren wir die Abhängigkeiten in der Standardumgebung des Betriebssystems. Bei Verwendung der Git-Version von hordelib
aus dem Projektstammverzeichnis:
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --upgrade
Stellen Sie sicher, dass ComfyUI installiert ist. Eine Möglichkeit besteht darin, die Tests auszuführen:
tox -- -k test_comfy_install
Von da an führen Sie ComfyUI aus:
cd ComfyUI
python main.py
Öffnen Sie dann einen Browser unter: http://127.0.0.1:8188/
Verwenden Sie die Standard-ComfyUI-Web-App. Verwenden Sie das Attribut „title“, um die Knoten zu benennen. Diese Namen werden zu Parameternamen in der hordelib
. Beispielsweise würde ein KSampler mit dem „Titel“ „sampler2“ zu einem Parameter werden, sampler2.seed
, sampler2.cfg
usw. Laden Sie die Pipeline hordelib/pipeline_designs/pipeline_stable_diffusion.json
in der ComfyUI-Web-App als Beispiel.
Speichern Sie jede neue Pipeline in hordelib/pipeline_designs
unter Verwendung der Namenskonvention „pipeline_
Konvertieren Sie den JSON für das Modell (siehe Konvertieren von ComfyUI-Pipelines unten) und speichern Sie den resultierenden JSON in hordelib/pipelines
unter demselben Dateinamen wie die vorherige JSON-Datei.
Das ist alles. Dies kann dann von hordelib
aus mit der Methode run_image_pipeline()
in hordelib.comfy.Comfy()
aufgerufen werden.
Zusätzlich zu der über die Benutzeroberfläche gespeicherten Designdatei müssen wir die Pipeline-Datei im Backend-Format speichern. Diese Datei wird im Stammverzeichnis des hordelib
Projekts mit dem Namen comfy-prompt.json
automatisch erstellt, wenn Sie eine Pipeline über die in hordelib
eingebettete ComfyUI-Version ausführen. Wenn Sie ComfyUI mit tox -e comfyui
ausführen, wird ComfyUI automatisch gepatcht, sodass diese JSON-Datei gespeichert wird.
Die Hauptkonfigurationsdateien für das Projekt sind: pyproject.toml
, tox.ini
und requirements.txt
Die Pypi-Veröffentlichung erfolgt automatisch über die GitHub-Website.
Erstellen Sie eine PR von main
bis zu releases
Beschriften Sie die PR mit „release:patch“ (0.0.1) oder „release:minor“ (0.1.0)
Führen Sie die PR mit einem Standard-Merge-Commit (nicht Squash) zusammen.
Hier ist ein Beispiel:
Beginnen Sie in einem neuen leeren Verzeichnis. Anforderungen.txt erstellen:
--extra-index-url https://download.pytorch.org/whl/cu118 hordelib
Erstellen Sie das Verzeichnis images/
und kopieren Sie die test_db0.jpg
hinein.
Kopieren Sie run_controlnet.py
aus dem Verzeichnis hordelib/tests/
.
Baue ein Venv:
python -m venv venv .venvScriptsactivate pip install -r requirements.txt
Führen Sie den von uns kopierten Test aus:
python run_controlnet.py The `images/` directory should have our test images.
Dies ist nützlich, wenn Sie neue Knoten über den Horde-reGen-Worker usw. testen
Python build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
Auf dem Venv, auf dem Sie die neue Version installieren möchten
python -m pip install /path/to/hordelib/dist/horde_engine-*.whl
Ändern Sie den Wert in consts.py
auf die gewünschte ComfyUI-Version.
Führen Sie die Testsuite über tox
aus