modelbeast/server/operators/qwen_layered_local/manifest.json
m3ultra 58a2a8177d operator: qwen_layered_local — image -> N editable RGBA layers (Qwen-Image-Layered 20B, MLX)
Vendored mflux PR#302 fork (monster/Qwen-Image-Layered-MRP-MLX), tuned
defaults 20 steps/640/baked-q8 (243s m3ultra, 366s m1ultra). Baked-model
resolution via QWEN_LAYERED_MODEL env or per-box paths, HF+q8 fallback.
nodes.json (gitignored, machine-local) updated on m3 to route to m1 too.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 22:06:05 +10:00

22 lines
1.3 KiB
JSON

{
"id": "qwen_layered_local",
"name": "Qwen-Image-Layered (local)",
"category": "image-edit",
"description": "Image → N editable RGBA layers (bg / subject / detail separation), fully local via the Qwen-Image-Layered 20B MLX port (mflux PR#302 fork). ~4 min on m3ultra, ~6 min on m1ultra at the tuned defaults (20 steps, 640, baked q8). The subject layer doubles as matting-grade background removal. Bake a local q8 model once per box (see scripts/install_qwen_layered.sh) or first run falls back to a 54GB HF download + on-the-fly quantization.",
"accepts": ["image"],
"produces": ["image"],
"resources": "gpu",
"entry": "run.py",
"python": "vendor/mflux-qwen-layered/.venv/bin/python",
"params_schema": {
"type": "object",
"properties": {
"layers": {"type": "integer", "default": 4, "description": "Number of RGBA layers to decompose into"},
"steps": {"type": "integer", "default": 20, "description": "Denoising steps (20 = tuned default; 50 = upstream default, ~2.9x slower, no visible gain on tested inputs)"},
"resolution": {"type": "integer", "enum": [640, 1024], "default": 640, "description": "Working resolution"},
"seed": {"type": "integer", "default": 0, "description": "Random seed"},
"prompt": {"type": "string", "default": "", "description": "Optional prompt to guide the decomposition"}
}
}
}