Примечание. Этот проект ранее назывался
hordelib
. Пространство имен проекта будет изменено в ближайшем будущем, чтобы отразить это изменение.
horde-engine
— это оболочка ComfyUI, в первую очередь позволяющая AI Horde запускать конвейеры вывода, визуально спроектированные в графическом интерфейсе ComfyUI.
Разработчиков horde-engine
можно найти на сервере AI Horde Discord: https://discord.gg/3DxrhksKzn
Обратите внимание, что horde-engine
(ранее известный как hordelib
) является базовой библиотекой вывода AI Horde по умолчанию, начиная с hordelib
v1.0.0.
Цель здесь — иметь возможность проектировать конвейеры вывода в превосходном ComfyUI, а затем вызывать эти конвейеры вывода программно. Предоставляя функции, поддерживающие совместимость с существующей реализацией Horde.
При установке из pypi используйте файл требований вида:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
В Linux вам потребуется установить Nvidia CUDA Toolkit. Установщики Linux предоставляются Nvidia по адресу https://developer.nvidia.com/cuda-downloads.
Обратите внимание, что если у вас всего 16 ГБ ОЗУ и параметр /tmp по умолчанию в tmpfs, вам, скорее всего, потребуется увеличить размер временного пространства для установки CUDA Toolkit, иначе архив может не извлечься. Один из способов сделать это — непосредственно перед установкой CUDA Toolkit:
sudo mount -o remount, размер = 16G /tmp
Если у вас всего 16 ГБ оперативной памяти, вам также понадобится место подкачки. Поэтому, если вы обычно работаете без подкачки, добавьте ее. Без него вы не сможете запустить эту библиотеку.
Полезную нагрузку Horde можно обрабатывать просто с помощью (например):
# import os# Где бы ни находились ваши модели# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # По умолчанию в текущем рабочем каталоге используется `models/`import hordelibhordelib.initialise() # Это должно быть вызвано перед любым другие функции hordelib из hordelib.horde import HordeLib из hordelib.shared_model_manager import SharedModelManagergenerate = HordeLib(), если SharedModelManager.manager.compvis имеет значение None: поднять исключение («Не удалось загрузить диспетчер моделей Compvis») SharedModelManager.manager.compvis.download_model («Намеренно») SharedModelManager.manager.compvis.validate_model («Намеренно») данные = {"имя_образца": "k_dpmpp_2m", "cfg_scale": 7,5, "denoising_strength": 1,0, "seed": 123456789, "height": 512, "width": 512, "karras": False, "tiling": False, "hires_fix": Ложь, «clip_skip»: 1, «control_type»: нет, «image_is_control»: ложь, «return_control_map»: ложь, «prompt»: «древний монстр-ламия», «ddim_steps»: 25, «n_iter»: 1, «model»: «Умышленно» , }pil_image = генерировать.basic_inference_single_image(data).imageif pil_image имеет значение None: поднять исключение («Не удалось создать изображение») pil_image.save («test.png»)
Обратите внимание, что hordelib.initialise()
удалит все аргументы командной строки из argv. Поэтому убедитесь, что вы проанализировали их, прежде чем вызывать это.
Дополнительные примеры можно найти tests/run_*.py
.
Если вы не хотите, чтобы hordelib
настраивал и контролировал конфигурацию журналирования (мы используем loguru), инициализируйте его с помощью:
импортировать hordelibhordelib.initialise(setup_logging=False)
hordelib
зависит от большого количества проектов с открытым исходным кодом, и большинство этих зависимостей автоматически загружаются и устанавливаются при установке hordelib
. Из-за характера и назначения hordelib
некоторые зависимости включены непосредственно внутри самого hordelib
.
Мощный и модульный стабильный графический интерфейс диффузии с интерфейсом графов/узлов. Лицензировано на условиях GNU General Public License v3.0.
Вся цель hordelib
— получить доступ к возможностям ComfyUI.
Пользовательские узлы для ComfyUI, обеспечивающие возможность предварительной обработки Controlnet. Лицензировано на условиях Apache License 2.0.
Пользовательские узлы для ComfyUI, обеспечивающие восстановление лица.
Узлы для генерации QR-кодов
Требования:
git
(установить git)
tox
( pip install tox
)
Установите переменную среды AIWORKER_CACHE_HOME
, чтобы она указывала на каталог модели.
Обратите внимание, что каталог модели в настоящее время должен находиться в исходной структуре каталогов AI Horde:
clip codeformer compvis Deliberate.ckpt ...etc... controlnet embeds esrgan gfpgan safety_checker
Просто выполните: tox
(или tox -q
для менее шумного вывода)
В первый раз это займет некоторое время, поскольку будут установлены все зависимости.
Если тесты пройдут успешно, изображения будут созданы в папке images/
.
tox -- -k
например tox -- -k test_initialisation
tox list
Здесь будут перечислены все группы тестов, которые участвуют в процессе разработки, сборки или CI. Тесты, в которых есть слово «исправить», при запуске будут автоматически применять изменения, например, при проверке или форматировании. Вы можете сделать это, запустив:
tox -e [test_suite_name_here]
hordelib/pipeline_designs/
Содержит конвейеры ComfyUI в формате, который можно открыть веб-приложением ComfyUI. Они сохраняются непосредственно из веб-приложения.
hordelib/pipelines/
Содержит указанные выше файлы JSON конвейера, преобразованные в формат, требуемый внутренним процессором конвейера. Они преобразуются из веб-приложения, см. раздел «Преобразование конвейеров ComfyUI» ниже.
hordelib/nodes/
Это пользовательские узлы ComfyUI, которые мы используем для обработки, специфичной для hordelib
.
В этом примере мы устанавливаем зависимости в среде ОС по умолчанию. При использовании git-версии hordelib
из корня проекта:
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --upgrade
Убедитесь, что ComfyUI установлен. Один из способов — запустить тесты:
tox -- -k test_comfy_install
С этого момента для запуска ComfyUI:
cd ComfyUI
python main.py
Затем откройте браузер по адресу: http://127.0.0.1:8188/.
Используйте стандартное веб-приложение ComfyUI. Используйте атрибут «title» для именования узлов, эти имена станут именами параметров в hordelib
. Например, KSampler с «заголовком» «sampler2» станет параметром sampler2.seed
, sampler2.cfg
и т. д. Для примера загрузите конвейер hordelib/pipeline_designs/pipeline_stable_diffusion.json
в веб-приложение ComfyUI.
Сохраните любой новый конвейер в hordelib/pipeline_designs
используя соглашение об именах «pipeline_<имя>.json».
Преобразуйте JSON для модели (см. раздел «Преобразование конвейеров ComfyUI» ниже) и сохраните полученный JSON в hordelib/pipelines
используя то же имя файла, что и предыдущий файл JSON.
Вот и все. Затем его можно вызвать из hordelib
используя метод run_image_pipeline()
в hordelib.comfy.Comfy()
В дополнение к файлу дизайна, сохраненному из пользовательского интерфейса, нам необходимо сохранить файл конвейера в формате серверной части. Этот файл создается в корне проекта hordelib
с именем comfy-prompt.json
автоматически, если вы запускаете конвейер через версию ComfyUI, встроенную в hordelib
. Запуск ComfyUI с tox -e comfyui
автоматически исправляет ComfyUI, поэтому этот файл JSON сохраняется.
Основными файлами конфигурации проекта являются: pyproject.toml
, tox.ini
и requirements.txt
Публикация Pypi происходит автоматически с веб-сайта GitHub.
Создайте PR от main
до releases
Пометьте PR как «release:patch» (0.0.1) или «release:minor» (0.1.0).
Объедините PR со стандартным коммитом слияния (не сплющиванием)
Вот пример:
Начните с нового пустого каталога. Создайте файл требований.txt:
--extra-index-url https://download.pytorch.org/whl/cu118 hordelib
Создайте каталог images/
и скопируйте в него test_db0.jpg
.
Скопируйте run_controlnet.py
из каталога hordelib/tests/
.
Постройте венв:
python -m venv venv .venvScriptsactivate pip install -r requirements.txt
Запустите тест, который мы скопировали:
python run_controlnet.py The `images/` directory should have our test images.
Это полезно при тестировании новых узлов через horde-reGen-worker и т. д.
python build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
На венв, на который вы хотите установить новую версию
python -m pip install /path/to/hordelib/dist/horde_engine-*.whl
Измените значение в consts.py
на желаемую версию ComfyUI.
Запустите набор тестов через tox