Phase 1 reference numbers, captured against commit ef2a18c on macOS 26.1
with the pinned toolchain (torch 2.0.1, coremltools 8.2, numpy 1.23.5,
python_coreml_stable_diffusion@e5d960c4).
- bench/env/baseline-ef2a18c.txt: full pip freeze + ComfyUI sha + macOS +
resolved ml-stable-diffusion git metadata.
- bench/env/pytest-unit-ef2a18c.txt: pytest tests/unit (test_chunks +
test_controlnet) 20/20 passing.
- bench/results/ef2a18c.{json,md}: SD1.5 1x512x512 SPLIT_EINSUM UNet
forward latency on the Apple Neural Engine and CPU+GPU. NE median 197 ms
/ GPU median 270 ms; a second run reproduced both within 0.3% (noise).
- bench/results/smoke/ef2a18c/: end-to-end Core ML image (E2E-1.5-CoreML
workflow, seed=42) saved by smoke_image.py. The MPS reference branch of
the original workflow is omitted because torch 2.0.1's MPS backend on
macOS 26.1 trips a BFloat16 conversion error in VAEDecode and an
mps.add element-type mismatch in KSampler — both go away with newer
torch and are tracked for the Phase 5 toolchain bump. The server was
started with --cpu-vae to route the VAE through CPU; this is a runtime
flag, not a pin change.
Phase 1 of the modernization plan: freeze the currently-working environment
so later refactors have a measured reference point.
- Pin python-coreml-stable-diffusion to commit e5d960c4 (the one already
installed in the maintainer's apple_env), plus torch==2.0.1, coremltools==8.2
and numpy<1.25 to match the only env that loads ComfyUI successfully
(Comfy's checkpoint-safe-loading branch in utils.py is gated on torch>=2.4,
so newer torch + numpy 1.23 breaks at import).
- Mirror the same pins in requirements.txt and commit uv.lock for
reproducible installs.
- Add requires-comfyui pinning ComfyUI to ab541335 (the validated commit).
- Fix tests/unit/test_chunks.py fixture: get_model_config() now takes a
ModelVersion argument; pass ModelVersion.SD15 (the previously-broken test
was the only Phase 1 production-code change required).
- Add the Phase 1 baseline harness: bench/run.py (direct Core ML UNet
latency, deterministic), bench/scripts/convert_sd15.py (one-command
conversion bypassing the node graph), bench/scripts/smoke_image.py (POSTs
the existing e2e workflow to a local ComfyUI server and saves the Core ML
image), bench/env/capture.sh (env snapshot), bench/prompts.json (fixed
prompt set).
- Ignore apple_env/, comfy_env/, and bench/scripts/*.log.
Tests: 20/20 unit pass (test_chunks + test_controlnet).