หมายเหตุ: โปรเจ็กต์นี้เดิมชื่อ
hordelib
เนมสเปซของโปรเจ็กต์จะมีการเปลี่ยนแปลงในอนาคตอันใกล้นี้เพื่อสะท้อนถึงการเปลี่ยนแปลงนี้
horde-engine
เป็น wrapper รอบๆ ComfyUI เป็นหลักเพื่อให้ AI Horde สามารถรันไปป์ไลน์อนุมานที่ออกแบบด้วยสายตาใน ComfyUI GUI
นักพัฒนา 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 Toolkit ตัวติดตั้ง Linux จัดทำโดย Nvidia ที่ https://developer.nvidia.com/cuda-downloads
โปรดทราบว่าหากคุณมี RAM เพียง 16GB และมีค่าเริ่มต้น /tmp บน tmpfs คุณอาจต้องเพิ่มขนาดพื้นที่ชั่วคราวเพื่อติดตั้ง CUDA Toolkit ไม่เช่นนั้นอาจไม่สามารถแยกไฟล์เก็บถาวรได้ วิธีหนึ่งในการทำเช่นนั้นคือก่อนที่จะติดตั้ง CUDA Toolkit:
sudo mount -o ติดตั้งใหม่ ขนาด=16G /tmp
หากคุณมี RAM เพียง 16GB คุณจะต้องมีพื้นที่สว็อปด้วย ดังนั้นหากปกติแล้วคุณทำงานโดยไม่มีการสลับ ให้เพิ่มบางส่วน คุณจะไม่สามารถเรียกใช้ไลบรารีนี้ได้หากไม่มี
เพย์โหลด 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() ถ้า SharedModelManager.manager.compvis เป็น None:raise Exception("ไม่สามารถโหลดตัวจัดการโมเดล compvis")SharedModelManager.manager.compvis.download_model("Deliberate")SharedModelManager.manager.compvis.validate_model("Deliberate") ข้อมูล = {"sampler_name": "k_dpmpp_2m", "cfg_scale": 7.5, "denoising_strength": 1.0, "seed": 123456789, "ความสูง": 512, "ความกว้าง": 512, "karras": เท็จ, "การปูกระเบื้อง": เท็จ, "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 = Generate.basic_inference_single_image(data).imageif pil_image is None:raise Exception("Failed to create image")pil_image.save("test.png")
โปรดทราบว่า hordelib.initialise()
จะลบอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดออกจาก argv ดังนั้นให้แน่ใจว่าคุณแยกวิเคราะห์ก่อนที่จะเรียกสิ่งนั้น
ดู tests/run_*.py
สำหรับตัวอย่างแบบสแตนด์อโลนเพิ่มเติม
หากคุณไม่ต้องการให้ hordelib
ตั้งค่าและควบคุมการกำหนดค่าการบันทึก (เราใช้ loguru) ให้เริ่มต้นด้วย:
นำเข้า hordelibhordelib.initialise (setup_logging=False)
hordelib
ขึ้นอยู่กับโปรเจ็กต์โอเพ่นซอร์สจำนวนมาก และการขึ้นต่อกันเหล่านี้ส่วนใหญ่จะถูกดาวน์โหลดและติดตั้งโดยอัตโนมัติเมื่อคุณติดตั้ง hordelib
เนื่องจากลักษณะและวัตถุประสงค์ของ hordelib
การพึ่งพาบางส่วนจึงถูกรวมไว้ ภายใน hordelib
โดยตรง
GUI การแพร่กระจายที่เสถียรและทรงพลังแบบโมดูลาร์พร้อมอินเทอร์เฟซกราฟ/โหนด ได้รับอนุญาตภายใต้เงื่อนไขของ GNU General Public License v3.0
วัตถุประสงค์ทั้งหมดของ hordelib
คือการเข้าถึงพลังของ ComfyUI
โหนดที่กำหนดเองสำหรับ ComfyUI ที่ให้ความสามารถในการประมวลผลล่วงหน้าของ Controlnet ได้รับอนุญาตภายใต้เงื่อนไขของ Apache License 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
ในตัวอย่างนี้ เราติดตั้งการขึ้นต่อกันในสภาพแวดล้อมเริ่มต้นของระบบปฏิบัติการ เมื่อใช้ hordelib
เวอร์ชัน git จากรูทโปรเจ็กต์:
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 สำหรับโมเดล (ดู การแปลงไปป์ไลน์ ComfyUI ด้านล่าง) และบันทึก JSON ที่เป็นผลลัพธ์ใน hordelib/pipelines
โดยใช้ชื่อไฟล์เดียวกันกับไฟล์ JSON ก่อนหน้า
นั่นคือทั้งหมดที่ จากนั้นสามารถเรียกจาก hordelib
โดยใช้เมธอด run_image_pipeline()
ใน hordelib.comfy.Comfy()
นอกจากไฟล์การออกแบบที่บันทึกจาก UI แล้ว เรายังต้องบันทึกไฟล์ไปป์ไลน์ในรูปแบบแบ็กเอนด์ด้วย ไฟล์นี้ถูกสร้างขึ้นในรูทโปรเจ็กต์ hordelib
ที่ชื่อ comfy-prompt.json
โดยอัตโนมัติ หากคุณเรียกใช้ไปป์ไลน์ผ่านเวอร์ชัน ComfyUI ที่ฝังอยู่ใน hordelib
การเรียกใช้ ComfyUI ด้วย tox -e comfyui
จะแพทช์ ComfyUI โดยอัตโนมัติ ดังนั้นไฟล์ JSON นี้จึงถูกบันทึก
ไฟล์กำหนดค่าหลักสำหรับโปรเจ็กต์คือ: pyproject.toml
, tox.ini
และ requirements.txt
การเผยแพร่ Pypi เป็นไปโดยอัตโนมัติทั้งหมดจากเว็บไซต์ GitHub
สร้างการประชาสัมพันธ์ตั้งแต่ 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 เป็นต้น
หลาม build_helper.py หลาม -m build --sdist --wheel --outdir dist/ .python build_helper.py --fix
บน venv ที่คุณต้องการติดตั้งเวอร์ชันใหม่
python -m pip ติดตั้ง /path/to/hordelib/dist/horde_engine-*.whl
เปลี่ยนค่าใน consts.py
เป็นเวอร์ชัน ComfyUI ที่ต้องการ
เรียกใช้ชุดทดสอบผ่านทาง tox