ملاحظة: كان هذا المشروع يُعرف سابقًا باسم
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 الممتازة، ثم استدعاء خطوط أنابيب الاستدلال هذه برمجيًا. مع توفير الميزات التي تحافظ على التوافق مع تنفيذ الحشد الحالي.
إذا تم تثبيته من pypi، فاستخدم ملف المتطلبات بالنموذج:
--extra-index-url https://download.pytorch.org/whl/cu121 hordelib ...your other dependencies...
على نظام التشغيل Linux، ستحتاج إلى تثبيت مجموعة أدوات Nvidia CUDA. يتم توفير مثبتات Linux بواسطة Nvidia على https://developer.nvidia.com/cuda-downloads
لاحظ أنه إذا كان لديك فقط 16 غيغابايت من ذاكرة الوصول العشوائي و/tmp افتراضي على tmpfs، فمن المحتمل أن تحتاج إلى زيادة حجم المساحة المؤقتة لتثبيت مجموعة أدوات CUDA أو قد تفشل في استخراج الأرشيف. إحدى الطرق للقيام بذلك هي قبل تثبيت مجموعة أدوات CUDA مباشرة:
Sudo mount -o remount، size=16G /tmp
إذا كان لديك 16 جيجابايت فقط من ذاكرة الوصول العشوائي (RAM)، فستحتاج أيضًا إلى مساحة مبادلة. لذا، إذا كنت تعمل عادةً بدون مبادلة، أضف بعضًا منها. لن تتمكن من تشغيل هذه المكتبة بدونها.
يمكن معالجة حمولات Horde ببساطة باستخدام (على سبيل المثال):
# import os# أينما كانت نماذجك# os.environ["AIWORKER_CACHE_HOME"] = "f:/ai/models" # الإعدادات الافتراضية هي `models/` في دليل العمل الحاليimport hordelibhordelib.initialise() # يجب استدعاء هذا قبل أي وظائف hordelib الأخرى من hordelib.horde استيراد HordeLib من hordelib.shared_model_manager استيراد SharedModelManagergenerate = HordeLib()if SharedModelManager.manager.compvis هو لا شيء:رفع الاستثناء("فشل تحميل مدير نموذج compvis")SharedModelManager.manager.compvis.download_model("متعمد")SharedModelManager.manager.compvis.validate_model("متعمد") البيانات = {"اسم العينة": "k_dpmpp_2m"،"cfg_scale": 7.5،"قوة تقليل الضوضاء": 1.0،"البذرة": 123456789،"الارتفاع": 512،"العرض": 512،"karras": False،"tiling": False،"hires_fix": خطأ،"clip_skip": 1،"control_type": لا شيء،"image_is_control": False،"return_control_map": False،"prompt": "وحش اللاميا القديم"، "ddim_steps": 25،"n_iter": 1،"model": "متعمد"، }pil_image = generator.basic_inference_single_image(data).imageif pil_image لا يوجد:raise Exception("فشل في إنشاء الصورة")pil_image.save("test.png")
لاحظ أن hordelib.initialise()
سوف يمحو جميع وسيطات سطر الأوامر من argv. لذا تأكد من تحليلهم قبل الاتصال بذلك.
راجع tests/run_*.py
لمزيد من الأمثلة المستقلة.
إذا كنت لا تريد أن يقوم hordelib
بإعداد تكوين التسجيل والتحكم فيه (نستخدم loguru)، فابدأ باستخدام:
استيراد hordelibhordelib.initialise(setup_logging=False)
يعتمد hordelib
على عدد كبير من المشاريع مفتوحة المصدر، ويتم تنزيل معظم هذه التبعيات وتثبيتها تلقائيًا عند تثبيت hordelib
. نظرًا لطبيعة hordelib
والغرض منه، يتم تجميع بعض التبعيات مباشرةً داخل hordelib
نفسه.
واجهة مستخدم رسومية قوية ومستقرة للنشر مع واجهة رسم بياني/عقد. مرخص بموجب شروط رخصة جنو العامة الإصدار 3.0.
الغرض الكامل من hordelib
هو الوصول إلى قوة ComfyUI.
توفر العقد المخصصة لـ ComfyUI إمكانية المعالجة المسبقة لـ Controlnet. مرخص بموجب شروط ترخيص Apache 2.0.
توفر العقد المخصصة لـ ComfyUI استعادة الوجه.
العقد لتوليد رموز QR
متطلبات:
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 القياسي. استخدم سمة "العنوان" لتسمية العقد، وتصبح هذه الأسماء أسماء معلمات في hordelib
. على سبيل المثال، KSampler الذي يحمل "عنوان" "sampler2" سيصبح معلمة sampler2.seed
و sampler2.cfg
وما إلى ذلك. قم بتحميل خط الأنابيب hordelib/pipeline_designs/pipeline_stable_diffusion.json
في تطبيق الويب ComfyUI على سبيل المثال.
احفظ أي خط أنابيب جديد في hordelib/pipeline_designs
باستخدام اصطلاح التسمية "pipeline_
قم بتحويل 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.
إنشاء العلاقات العامة من main
إلى releases
قم بتسمية العلاقات العامة بـ "release:patch" (0.0.1) أو "release:minor" (0.1.0)
دمج العلاقات العامة مع التزام الدمج القياسي (وليس الاسكواش)
هنا مثال:
ابدأ في دليل فارغ جديد. إنشاء متطلبات.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 وما إلى ذلك
بيثون build_helper.py python -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
على venv حيث تريد تثبيت الإصدار الجديد
python -m pip install /path/to/hordelib/dist/horde_engine-*.whl
قم بتغيير القيمة في consts.py
إلى إصدار ComfyUI المطلوب.
قم بتشغيل مجموعة الاختبار عبر tox