Catatan: Proyek ini sebelumnya dikenal sebagai
hordelib
. Namespace proyek akan diubah dalam waktu dekat untuk mencerminkan perubahan ini.
horde-engine
adalah pembungkus ComfyUI terutama untuk memungkinkan AI Horde menjalankan saluran inferensi yang dirancang secara visual di GUI ComfyUI.
Pengembang horde-engine
dapat ditemukan di server AI Horde Discord: https://discord.gg/3DxrhksKzn
Perhatikan bahwa horde-engine
(sebelumnya dikenal sebagai hordelib
) telah menjadi pustaka backend inferensi default AI Horde sejak hordelib
v1.0.0.
Tujuannya di sini adalah untuk dapat merancang saluran inferensi di ComfyUI yang sangat baik, dan kemudian memanggil saluran inferensi tersebut secara terprogram. Sekaligus menyediakan fitur yang menjaga kompatibilitas dengan implementasi horde yang ada.
Jika diinstal dari pypi, gunakan file persyaratan berupa:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
Di Linux Anda perlu menginstal Nvidia CUDA Toolkit. Pemasang Linux disediakan oleh Nvidia di https://developer.nvidia.com/cuda-downloads
Catatan, jika Anda hanya memiliki RAM 16GB dan /tmp default di tmpfs, Anda mungkin perlu menambah ukuran ruang sementara untuk menginstal CUDA Toolkit atau mungkin gagal mengekstrak arsip. Salah satu cara untuk melakukannya adalah sebelum menginstal CUDA Toolkit:
sudo mount -o pasang kembali,ukuran=16G /tmp
Jika Anda hanya memiliki RAM 16GB, Anda juga memerlukan ruang swap. Jadi jika Anda biasanya menjalankan tanpa swap, tambahkan beberapa. Anda tidak akan dapat menjalankan perpustakaan ini tanpanya.
Muatan gerombolan dapat diproses hanya dengan (misalnya):
# import os# Dimanapun model Anda berada# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # Defaultnya adalah `models/` di direktori kerja saat iniimport hordelibhordelib.initialise() # Ini harus dipanggil sebelum ada fungsi hordelib lainnyadari hordelib.horde import HordeLibfrom hordelib.shared_model_manager import SharedModelManagergenerate = HordeLib()jika SharedModelManager.manager.compvis adalah Tidak Ada: naikkan Pengecualian("Gagal memuat manajer model compvis")SharedModelManager.manager.compvis.download_model("Disengaja")SharedModelManager.manager.compvis.validate_model("Disengaja")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": Tidak ada,"image_is_control": False,"return_control_map": False,"prompt": "sebuah llamia kuno monster","ddim_steps": 25,"n_iter": 1,"model": "Disengaja", }pil_image = generate.basic_inference_single_image(data).imagejika pil_image Tidak Ada: naikkan Pengecualian("Gagal menghasilkan gambar")pil_image.save("test.png")
Perhatikan bahwa hordelib.initialise()
akan menghapus semua argumen baris perintah dari argv. Jadi, pastikan Anda menguraikannya sebelum Anda menyebutnya.
Lihat tests/run_*.py
untuk contoh mandiri lainnya.
Jika Anda tidak ingin hordelib
mengatur dan mengontrol konfigurasi logging (kami menggunakan logguru) inisialisasi dengan:
impor hordelibhordelib.initialise(setup_logging=False)
hordelib
bergantung pada sejumlah besar proyek sumber terbuka, dan sebagian besar dependensi ini diunduh dan diinstal secara otomatis saat Anda menginstal hordelib
. Karena sifat dan tujuan hordelib
beberapa dependensi digabungkan langsung di dalam hordelib
itu sendiri.
GUI difusi stabil yang kuat dan modular dengan antarmuka grafik/node. Berlisensi berdasarkan ketentuan GNU General Public License v3.0.
Seluruh tujuan hordelib
adalah untuk mengakses kekuatan ComfyUI.
Node khusus untuk ComfyUI menyediakan kemampuan prapemrosesan Controlnet. Berlisensi berdasarkan ketentuan Lisensi Apache 2.0.
Node khusus untuk ComfyUI menyediakan restorasi wajah.
Node untuk menghasilkan kode QR
Persyaratan:
git
(instal git)
tox
( pip install tox
)
Atur variabel lingkungan AIWORKER_CACHE_HOME
agar menunjuk ke direktori model.
Perhatikan bahwa direktori model saat ini harus berada dalam struktur direktori AI Horde asli:
clip codeformer compvis Deliberate.ckpt ...etc... controlnet embeds esrgan gfpgan safety_checker
Cukup jalankan: tox
(atau tox -q
untuk keluaran yang tidak terlalu berisik)
Ini akan memakan waktu cukup lama saat pertama kali menginstal semua dependensi.
Jika pengujian berhasil dijalankan, gambar akan dihasilkan di folder images/
.
tox -- -k
misalnya tox -- -k test_initialisation
tox list
Ini akan mencantumkan semua kelompok pengujian yang terlibat dalam proses pengembangan, pembangunan, atau CI. Pengujian yang memiliki kata 'fix' di dalamnya akan secara otomatis menerapkan perubahan saat dijalankan, misalnya pada linting atau pemformatan. Anda dapat melakukannya dengan menjalankan:
tox -e [test_suite_name_here]
hordelib/pipeline_designs/
Berisi pipeline ComfyUI dalam format yang dapat dibuka oleh aplikasi web ComfyUI. Ini disimpan langsung dari aplikasi web.
hordelib/pipelines/
Berisi file JSON pipeline di atas yang dikonversi ke format yang diperlukan oleh pemroses pipeline backend. Ini dikonversi dari aplikasi web, lihat Mengonversi pipeline ComfyUI di bawah.
hordelib/nodes/
Ini adalah node ComfyUI khusus yang kami gunakan untuk pemrosesan khusus hordelib
.
Dalam contoh ini kami menginstal dependensi di lingkungan default OS. Saat menggunakan hordelib
versi git, dari root proyek:
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118 --upgrade
Pastikan ComfyUI terinstal, salah satu caranya adalah menjalankan pengujian:
tox -- -k test_comfy_install
Sejak saat itu untuk menjalankan ComfyUI:
cd ComfyUI
python main.py
Kemudian buka browser di: http://127.0.0.1:8188/
Gunakan aplikasi web ComfyUI standar. Gunakan atribut "title" untuk memberi nama node, nama-nama ini menjadi nama parameter di hordelib
. Misalnya, KSampler dengan "judul" "sampler2" akan menjadi parameter sampler2.seed
, sampler2.cfg
, dll. Muat pipeline hordelib/pipeline_designs/pipeline_stable_diffusion.json
di aplikasi web ComfyUI sebagai contoh.
Simpan pipeline baru di hordelib/pipeline_designs
menggunakan konvensi penamaan "pipeline_
Konversikan JSON untuk model (lihat Mengonversi pipeline ComfyUI di bawah) dan simpan JSON yang dihasilkan di hordelib/pipelines
menggunakan nama file yang sama dengan file JSON sebelumnya.
Itu saja. Ini kemudian dapat dipanggil dari hordelib
menggunakan metode run_image_pipeline()
di hordelib.comfy.Comfy()
Selain file desain yang disimpan dari UI, kita perlu menyimpan file pipeline dalam format backend. File ini dibuat di root proyek hordelib
bernama comfy-prompt.json
secara otomatis jika Anda menjalankan pipeline melalui versi ComfyUI yang tertanam di hordelib
. Menjalankan ComfyUI dengan tox -e comfyui
secara otomatis menambal ComfyUI sehingga file JSON ini disimpan.
File konfigurasi utama untuk proyek ini adalah: pyproject.toml
, tox.ini
dan requirements.txt
Penerbitan Pypi dilakukan secara otomatis, semuanya dari situs web GitHub.
Buat PR dari main
hingga releases
Labeli PR dengan "release:patch" (0.0.1) atau "release:minor" (0.1.0)
Gabungkan PR dengan komit gabungan standar (bukan squash)
Berikut ini contohnya:
Mulai di direktori kosong baru. Buat persyaratan.txt:
--extra-index-url https://download.pytorch.org/whl/cu118 hordelib
Buat direktori images/
dan salin test_db0.jpg
ke dalamnya.
Salin run_controlnet.py
dari direktori hordelib/tests/
.
Membangun sebuah venv:
python -m venv venv .venvScriptsactivate pip install -r requirements.txt
Jalankan tes yang kami salin:
python run_controlnet.py The `images/` directory should have our test images.
Ini berguna saat menguji node baru melalui horde-reGen-worker, dll
python build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
Di venv tempat Anda ingin menginstal versi baru
python -m pip install /path/ke/hordelib/dist/horde_engine-*.whl
Ubah nilai di consts.py
ke versi ComfyUI yang diinginkan.
Jalankan rangkaian pengujian melalui tox