Nota: Este projeto era anteriormente conhecido como
hordelib
. O namespace do projeto será alterado em um futuro próximo para refletir essa mudança.
horde-engine
é um wrapper em torno do ComfyUI principalmente para permitir que o AI Horde execute pipelines de inferência projetados visualmente na GUI do ComfyUI.
Os desenvolvedores do horde-engine
podem ser encontrados no servidor AI Horde Discord: https://discord.gg/3DxrhksKzn
Observe que horde-engine
(anteriormente conhecido como hordelib
) tem sido a biblioteca backend de inferência padrão do AI Horde desde hordelib
v1.0.0.
O objetivo aqui é ser capaz de projetar pipelines de inferência no excelente ComfyUI e, em seguida, chamar esses pipelines de inferência programaticamente. Ao mesmo tempo que fornece recursos que mantêm a compatibilidade com a implementação existente da horda.
Se estiver sendo instalado a partir do pypi, use um arquivo de requisitos no formato:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
No Linux você precisará instalar o Nvidia CUDA Toolkit. Os instaladores do Linux são fornecidos pela Nvidia em https://developer.nvidia.com/cuda-downloads
Observe que se você tiver apenas 16 GB de RAM e um /tmp padrão no tmpfs, provavelmente precisará aumentar o tamanho do seu espaço temporário para instalar o CUDA Toolkit ou poderá não conseguir extrair o arquivo. Uma maneira de fazer isso é antes de instalar o CUDA Toolkit:
sudo mount -o remontar,tamanho=16G /tmp
Se você tiver apenas 16 GB de RAM, também precisará de espaço de troca. Portanto, se você normalmente executa sem swap, adicione alguns. Você não poderá executar esta biblioteca sem ela.
As cargas úteis da Horda podem ser processadas simplesmente com (por exemplo):
# import os# Onde quer que seus modelos estejam# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # O padrão é `models/` no diretório de trabalho atualimport hordelibhordelib.initialise() # Isso deve ser chamado antes de qualquer outras funções hordelib de hordelib.horde import HordeLibfrom hordelib.shared_model_manager import SharedModelManagergenerate = HordeLib() se SharedModelManager.manager.compvis for Nenhum:raise Exception("Falha ao carregar o gerenciador de modelo compvis")SharedModelManager.manager.compvis.download_model("Deliberado")SharedModelManager.manager.compvis.validate_model("Deliberado")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": Nenhum,"image_is_control": Falso,"return_control_map": False,"prompt": "um antigo monstro lhamia","ddim_steps": 25,"n_iter": 1,"model": "Deliberado", }pil_image = generate.basic_inference_single_image(data).imageif pil_image is None:raise Exception("Falha ao gerar imagem")pil_image.save("test.png")
Observe que hordelib.initialise()
apagará todos os argumentos da linha de comando do argv. Portanto, certifique-se de analisá-los antes de ligar para isso.
Consulte tests/run_*.py
para obter mais exemplos independentes.
Se você não deseja que hordelib
configure e controle a configuração de log (usamos loguru), inicialize com:
importar hordelibhordelib.initialise(setup_logging=False)
hordelib
depende de um grande número de projetos de código aberto, e a maioria dessas dependências é baixada e instalada automaticamente quando você instala hordelib
. Devido à natureza e ao propósito do hordelib
algumas dependências são agrupadas diretamente dentro do próprio hordelib
.
Uma GUI de difusão estável, poderosa e modular, com uma interface de gráficos/nós. Licenciado sob os termos da Licença Pública Geral GNU v3.0.
Todo o propósito do hordelib
é acessar o poder do ComfyUI.
Nós personalizados para ComfyUI fornecendo capacidade de pré-processamento Controlnet. Licenciado sob os termos da Licença Apache 2.0.
Nós personalizados para ComfyUI que fornecem restauração facial.
Nós para geração de códigos QR
Requisitos:
git
(instalar git)
tox
( pip install tox
)
Configure a variável ambiental AIWORKER_CACHE_HOME
para apontar para um diretório modelo.
Observe que o diretório do modelo deve estar atualmente na estrutura de diretórios original do AI Horde:
clip codeformer compvis Deliberate.ckpt ...etc... controlnet embeds esrgan gfpgan safety_checker
Simplesmente execute: tox
(ou tox -q
para saída com menos ruído)
Isso demorará um pouco na primeira vez, pois instala todas as dependências.
Se os testes forem executados com sucesso, as imagens serão produzidas na pasta images/
.
tox -- -k
por exemplo tox -- -k test_initialisation
tox list
Isso listará todos os grupos de testes envolvidos no processo de desenvolvimento, construção ou CI. Os testes que contêm a palavra 'consertar' aplicarão automaticamente as alterações quando executados, como linting ou formatação. Você pode fazer isso executando:
tox -e [test_suite_name_here]
hordelib/pipeline_designs/
Contém pipelines ComfyUI em um formato que pode ser aberto pelo aplicativo web ComfyUI. Eles são salvos diretamente do aplicativo da web.
hordelib/pipelines/
Contém os arquivos JSON do pipeline acima convertidos para o formato exigido pelo processador do pipeline de back-end. Eles são convertidos do aplicativo da web, consulte Convertendo pipelines do ComfyUI abaixo.
hordelib/nodes/
Estes são os nós ComfyUI personalizados que usamos para processamento específico hordelib
.
Neste exemplo instalamos as dependências no ambiente padrão do SO. Ao usar a versão git do hordelib
, na raiz do projeto:
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --upgrade
Certifique-se de que o ComfyUI esteja instalado, uma maneira é executar os testes:
tox -- -k test_comfy_install
A partir de então, para executar o ComfyUI:
cd ComfyUI
python main.py
Em seguida, abra um navegador em: http://127.0.0.1:8188/
Use o aplicativo da web ComfyUI padrão. Use o atributo "title" para nomear os nós, esses nomes se tornam nomes de parâmetros no hordelib
. Por exemplo, um KSampler com o "título" de "sampler2" se tornaria um parâmetro sampler2.seed
, sampler2.cfg
, etc. Carregue o pipeline hordelib/pipeline_designs/pipeline_stable_diffusion.json
no aplicativo da web ComfyUI para obter um exemplo.
Salve qualquer novo pipeline em hordelib/pipeline_designs
usando a convenção de nomenclatura "pipeline_
Converta o JSON para o modelo (consulte Convertendo pipelines ComfyUI abaixo) e salve o JSON resultante em hordelib/pipelines
usando o mesmo nome de arquivo do arquivo JSON anterior.
Isso é tudo. Isso pode então ser chamado de hordelib
usando o método run_image_pipeline()
em hordelib.comfy.Comfy()
Além do arquivo de design salvo na IU, precisamos salvar o arquivo do pipeline no formato backend. Este arquivo é criado na raiz do projeto hordelib
denominado comfy-prompt.json
automaticamente se você executar um pipeline por meio da versão ComfyUI incorporada em hordelib
. Executar o ComfyUI com tox -e comfyui
corrige automaticamente o ComfyUI para que esse arquivo JSON seja salvo.
Os principais arquivos de configuração do projeto são: pyproject.toml
, tox.ini
e requirements.txt
A publicação do Pypi é automática no site GitHub.
Crie um PR do main
aos releases
Rotule o PR com "release:patch" (0.0.1) ou "release:minor" (0.1.0)
Mesclar o PR com um commit de mesclagem padrão (não squash)
Aqui está um exemplo:
Comece em um novo diretório vazio. Crie requisitos.txt:
--extra-index-url https://download.pytorch.org/whl/cu118 hordelib
Crie o diretório images/
e copie test_db0.jpg
nele.
Copie run_controlnet.py
do diretório hordelib/tests/
.
Construa um ambiente:
python -m venv venv .venvScriptsactivate pip install -r requirements.txt
Execute o teste que copiamos:
python run_controlnet.py The `images/` directory should have our test images.
Isso é útil ao testar novos nós por meio do horde-reGen-worker etc.
python build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
No local onde você deseja instalar a nova versão
python -m pip install /caminho/para/hordelib/dist/horde_engine-*.whl
Altere o valor em consts.py
para a versão desejada do ComfyUI.
Execute o conjunto de testes via tox