Files
aszc-dev-ComfyUI-CoreMLSuite/docs/limitations.md
T
aszc-dev 1008f144ad docs: sync with converter consolidation
Docs described the pre-#67 suite: a removed standalone LCM converter
node, a removed model_version input, a nonexistent
CoreMLDetailerHookProvider node, and a deleted lcm/converter.py file.

- drop LCM converter node docs; LCM checkpoints are auto-detected by
  the consolidated CoreMLConverter
- remove model_version input and invented 512-768 resolution range
- replace phantom detailer-hook fix with real workarounds
- fix Python support claim (3.12+ per requires-python)
- update LCM support-matrix row, drop stale line reference

Refs #67, #68
2026-07-09 18:33:17 +02:00

2.7 KiB
Raw Blame History

Limitations & Support Matrix

Support matrix

Feature Status Notes
SD1.5 ✅ Full ANE via SPLIT_EINSUM; the primary, fastest path
SDXL / SDXL Turbo ⚠️ Partial GPU only (no ANE), no speedup; possible quality loss vs source. Don't run Turbo at 1024²
SD2.1 ❌ Unsupported
Inpainting checkpoints (9-channel) ❌ Unsupported
ControlNet ✅ Supported Convert the checkpoint with controlnet_support = True
LoRA ⚠️ Experimental Inconsistent per-LoRA; baked at conversion, immutable afterward
LCM ⚠️ Experimental Full-distill LCM checkpoints auto-detected by the converter
SVD ❌ Not supported
AnimateDiff ❌ Not supported Motion modules need pre-conversion injection; not feasible today
IPAdapter ❌ Not supported Needs a real MODEL the Core ML wrapper can't provide
Core ML Adapter ⚠️ Experimental Works for many nodes; fails for merges/IPAdapter/etc.

Fixed input/output shapes

A Core ML model is converted for one specific resolution and batch size. To work at a different size, re-convert with the new width/height (conversion is cheap and cached by name). This is also why detailers and latent-upscale workflows that rescale mid-graph break — see troubleshooting.

There is experimental support for flexible shapes via EnumeratedShapes, but it is much slower — user benchmarks show roughly 5× the per-iteration time on every run, not just the first. Fixed-shape models per resolution are the practical choice.

SDXL on the Neural Engine

SDXL and SDXL Turbo cannot run on the ANE — the dual-text-encoder UNet exceeds the supported Neural Engine path. They run on the GPU at roughly MPS-equivalent speed, so Core ML offers no speed advantage for SDXL, and converted output may look degraded versus the safetensors original (an upstream conversion artifact). Use ORIGINAL + CPU_AND_GPU. See hardware.

Experimental Core ML Adapter

The Adapter wraps a Core ML model to look like a standard ComfyUI MODEL, which covers many standard and custom nodes. But it can't fully emulate a real model: operations that need genuine MODEL internals — model merges, IPAdapter, some LoRA flows, detailers — generally won't work, and the model's fixed input shapes aren't validated, so mismatches error at runtime. Prefer the native Core ML Sampler when you don't need the MODEL type.

Prompt length

Core ML enforces a hard 77-token prompt limit with no auto-chunking. Split long prompts across multiple CLIP Text Encode nodes and merge with Conditioning (Combine).