chore: add phase 4-6 prompts, fix naming, note zoxide cd issue
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
150c974eed
commit
7315a082df
@ -31,6 +31,10 @@ MLX inference port of CorridorKey for Apple Silicon.
|
||||
- Inference only — no training code
|
||||
- Preserve PyTorch behavior before optimizing
|
||||
|
||||
## Shell
|
||||
|
||||
- Do not use `cd` — zoxide overrides it and breaks non-interactive shells. Use absolute paths instead.
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
|
||||
84
prompts/phase4-hiera-backbone.md
Normal file
84
prompts/phase4-hiera-backbone.md
Normal file
@ -0,0 +1,84 @@
|
||||
Work only on the Hiera backbone port and its stage-by-stage parity.
|
||||
|
||||
Goal:
|
||||
Implement an MLX Hiera backbone that reproduces the feature contract expected by CorridorKey’s downstream heads.
|
||||
|
||||
Context:
|
||||
|
||||
- The original PyTorch model uses a timm backbone created with features_only=True.
|
||||
- The downstream model expects a pyramid of 4 multiscale feature maps.
|
||||
- The first input projection is patched from 3 input channels to 4 input channels for RGB + alpha hint.
|
||||
- This phase is about reproducing backbone behavior and feature outputs, not full end-to-end inference.
|
||||
|
||||
Primary deliverables:
|
||||
|
||||
- src/corridorkey_mlx/model/hiera.py
|
||||
- tests/test_hiera_stage_shapes.py
|
||||
- tests/test_hiera_stage_parity.py
|
||||
- updates to converter mapping files as needed
|
||||
- README notes describing the backbone parity status and any known gaps
|
||||
|
||||
Requirements:
|
||||
|
||||
1. Inspect the original CorridorKey backbone usage and the underlying Hiera/timm feature contract before editing.
|
||||
2. Treat the PyTorch reference harness as the source of truth for:
|
||||
- number of feature stages
|
||||
- output order
|
||||
- channel counts
|
||||
- spatial reductions
|
||||
3. Implement the smallest MLX Hiera subset necessary to produce the correct 4 feature maps.
|
||||
4. Preserve the patched 4-channel patch-embed behavior exactly:
|
||||
- do not invent a new initialization rule
|
||||
- match the PyTorch conversion semantics for the extra alpha-hint channel
|
||||
5. Keep tensor layout handling explicit and centralized:
|
||||
- use one canonical boundary between PyTorch-style NCHW fixtures and MLX NHWC internals
|
||||
- do not scatter transpose logic across the backbone code
|
||||
6. Add narrow parity checks for:
|
||||
- patch embed output
|
||||
- each stage output
|
||||
- final list of multiscale features
|
||||
7. If exact numerical parity is not immediately possible, first achieve:
|
||||
- correct stage count
|
||||
- correct stage order
|
||||
- correct shapes
|
||||
- correct dtype flow
|
||||
then localize the first divergent block
|
||||
8. Keep the implementation modular:
|
||||
- patch embed
|
||||
- stage/block definition
|
||||
- downsampling / pooling transitions
|
||||
- feature collection
|
||||
9. Update the checkpoint conversion path only as needed to support the backbone weights for completed modules.
|
||||
|
||||
Diagnostics to produce:
|
||||
|
||||
- stage name
|
||||
- source tensor shape
|
||||
- destination tensor shape
|
||||
- layout assumption
|
||||
- max abs error
|
||||
- mean abs error
|
||||
- whether the mismatch begins before or after a stage transition
|
||||
|
||||
Do not:
|
||||
|
||||
- wire the full GreenFormer end-to-end yet
|
||||
- rewrite decoder/refiner code unless required by an interface mismatch
|
||||
- optimize with compile() yet
|
||||
- add training code
|
||||
- silently accept stage reordering or “close enough” feature contracts
|
||||
|
||||
Working style:
|
||||
|
||||
- Explore first.
|
||||
- Summarize the exact Hiera feature contract you believe CorridorKey expects before editing.
|
||||
- After edits, run the narrowest backbone-only tests first.
|
||||
- When parity fails, stop at the first divergent stage and explain the likely cause before changing more code.
|
||||
|
||||
Definition of done:
|
||||
|
||||
- MLX backbone returns 4 multiscale feature maps in the correct order
|
||||
- shape tests pass
|
||||
- stage-level parity tests exist and run
|
||||
- the 4-channel patch embed path is implemented and documented
|
||||
- converter mappings exist for completed backbone weights
|
||||
96
prompts/phase5-assembly-parity.md
Normal file
96
prompts/phase5-assembly-parity.md
Normal file
@ -0,0 +1,96 @@
|
||||
Work only on full model assembly and end-to-end inference parity.
|
||||
|
||||
Goal:
|
||||
Assemble the MLX GreenFormer end-to-end by wiring:
|
||||
|
||||
- Hiera backbone
|
||||
- alpha decoder head
|
||||
- foreground decoder head
|
||||
- upsampling to full resolution
|
||||
- refiner input construction
|
||||
- additive delta-logit refinement
|
||||
- final sigmoid outputs
|
||||
|
||||
Context:
|
||||
|
||||
- Decoder and refiner modules already exist in MLX.
|
||||
- Backbone work from phase 4 should now provide the expected 4 feature maps.
|
||||
- This phase is about reproducing the original forward pass structure and validating end-to-end outputs against the PyTorch oracle.
|
||||
|
||||
Primary deliverables:
|
||||
|
||||
- src/corridorkey_mlx/model/greenformer.py
|
||||
- src/corridorkey_mlx/inference/pipeline.py
|
||||
- tests/test_greenformer_forward.py
|
||||
- tests/test_end_to_end_smoke.py
|
||||
- tests/test_end_to_end_parity.py
|
||||
- README usage section for single-image inference
|
||||
|
||||
Requirements:
|
||||
|
||||
1. Recreate the PyTorch forward pass structure exactly:
|
||||
- 4-channel input
|
||||
- backbone feature extraction
|
||||
- dual decoder heads
|
||||
- coarse alpha / foreground logits
|
||||
- upsample coarse logits to input resolution
|
||||
- apply sigmoid to obtain coarse probabilities
|
||||
- concatenate RGB + coarse predictions into the 7-channel refiner input
|
||||
- predict delta logits
|
||||
- add delta logits before final sigmoid
|
||||
2. Preserve the semantic distinction between:
|
||||
- coarse logits
|
||||
- coarse probabilities
|
||||
- delta logits
|
||||
- final probabilities
|
||||
3. Do not collapse or reorder operations unless the PyTorch oracle proves equivalence.
|
||||
4. Add parity checks for:
|
||||
- coarse alpha logits
|
||||
- coarse foreground logits
|
||||
- coarse alpha probabilities
|
||||
- coarse foreground probabilities
|
||||
- refiner input tensor
|
||||
- delta logits
|
||||
- final alpha
|
||||
- final foreground
|
||||
5. Make inference code explicit about layout conversions and output formats.
|
||||
6. Support reduced-resolution testing first if needed, but document any deviation from the native target resolution.
|
||||
7. Provide a simple CLI or script entry point for:
|
||||
- loading MLX weights
|
||||
- running one image + alpha hint
|
||||
- saving or printing a concise summary of output tensors
|
||||
8. Ensure the model can load completed weights with strict checking wherever practical.
|
||||
9. Keep preprocessing and postprocessing small and auditable.
|
||||
|
||||
Diagnostics to produce:
|
||||
|
||||
- stage name
|
||||
- tensor shape
|
||||
- tensor dtype
|
||||
- layout convention
|
||||
- max abs error
|
||||
- mean abs error
|
||||
- whether mismatch appears first in coarse path or refinement path
|
||||
|
||||
Do not:
|
||||
|
||||
- start performance tuning yet
|
||||
- introduce tiling unless necessary for a basic smoke path
|
||||
- expand into video orchestration
|
||||
- add training/fine-tuning work
|
||||
- hide parity gaps behind broad tolerances
|
||||
|
||||
Working style:
|
||||
|
||||
- Before editing, summarize the exact full forward-pass contract in plain English.
|
||||
- Implement the minimal wiring required for correctness.
|
||||
- Run narrow forward tests first, then end-to-end smoke, then parity tests.
|
||||
- If parity fails, identify the earliest divergent artifact and focus there.
|
||||
|
||||
Definition of done:
|
||||
|
||||
- MLX GreenFormer forward pass is assembled
|
||||
- end-to-end smoke test passes
|
||||
- parity tests exist for coarse path, refiner path, and final outputs
|
||||
- single-image inference entry point works
|
||||
- README documents current supported inference workflow
|
||||
92
prompts/phase6-optimization.md
Normal file
92
prompts/phase6-optimization.md
Normal file
@ -0,0 +1,92 @@
|
||||
Work only on optimization, benchmarking, and Apple-silicon inference ergonomics.
|
||||
|
||||
Goal:
|
||||
Make the MLX CorridorKey port performant and measurable on Apple silicon, with a focus on reliable benchmarking, memory behavior, and practical large-image inference strategy.
|
||||
|
||||
Context:
|
||||
|
||||
- End-to-end correctness should already exist before this phase starts.
|
||||
- MLX uses lazy evaluation, so timing code must force evaluation.
|
||||
- MLX compile() behavior depends on shape stability; changing shapes can trigger recompilation unless shapeless=True is used.
|
||||
- Shape-dependent logic must be treated carefully if testing shapeless compilation.
|
||||
|
||||
Primary deliverables:
|
||||
|
||||
- scripts/bench_mlx.py
|
||||
- src/corridorkey_mlx/inference/tiling.py
|
||||
- src/corridorkey_mlx/utils/profiling.py
|
||||
- tests/test_tiling_consistency.py
|
||||
- tests/test_compiled_vs_eager_consistency.py
|
||||
- README performance section
|
||||
- benchmark output examples or artifacts
|
||||
|
||||
Requirements:
|
||||
|
||||
1. Build a benchmark harness that measures:
|
||||
- eager/uncompiled inference
|
||||
- compiled inference with fixed shapes
|
||||
- optionally shapeless compiled inference if the graph is safe for it
|
||||
2. Force evaluation in benchmark timing so measurements reflect real execution rather than queued lazy graphs.
|
||||
3. Separate:
|
||||
- first-run / compile cost
|
||||
- warm steady-state latency
|
||||
- peak practical memory observations
|
||||
4. Benchmark at several realistic resolutions, for example:
|
||||
- small sanity size
|
||||
- medium working size
|
||||
- high-resolution target or near-target size
|
||||
5. Add an optional tiled inference path for large images.
|
||||
6. Validate tiled vs non-tiled consistency where overlap/blending makes sense.
|
||||
7. Keep the output report concise and decision-oriented:
|
||||
- resolution
|
||||
- eager latency
|
||||
- compiled latency
|
||||
- compile warmup cost
|
||||
- batch size
|
||||
- output parity summary
|
||||
8. If testing shapeless compile, explicitly verify that no shape-dependent logic breaks correctness.
|
||||
9. Keep performance changes behind clean flags or config settings so parity remains easy to reproduce.
|
||||
10. Document recommended settings for an Apple silicon laptop workflow.
|
||||
|
||||
Optimization scope to consider:
|
||||
|
||||
- fixed-shape compile path
|
||||
- shapeless compile path only if safe
|
||||
- reduced intermediate materialization
|
||||
- memory-aware tiling / chunking
|
||||
- minimizing unnecessary layout conversions
|
||||
- avoiding debug prints or implicit materialization in hot paths
|
||||
|
||||
Diagnostics to produce:
|
||||
|
||||
- resolution
|
||||
- batch size
|
||||
- compile mode
|
||||
- first-run latency
|
||||
- steady-state latency
|
||||
- consistency check against eager mode
|
||||
- notes on memory behavior and failure thresholds
|
||||
|
||||
Do not:
|
||||
|
||||
- change model behavior to chase speed
|
||||
- quantize in this phase unless explicitly requested
|
||||
- add training
|
||||
- add speculative custom kernels
|
||||
- benchmark without explicit eval / synchronization semantics
|
||||
- hide compile warmup inside steady-state numbers
|
||||
|
||||
Working style:
|
||||
|
||||
- Start by auditing the current forward path for obvious avoidable conversions or materializations.
|
||||
- Implement the benchmark harness before broad optimization changes.
|
||||
- Compare eager vs compiled numerics after every meaningful optimization.
|
||||
- Keep high-resolution strategy explicit and documented.
|
||||
|
||||
Definition of done:
|
||||
|
||||
- repeatable benchmark script exists
|
||||
- eager vs compiled comparisons are implemented
|
||||
- optional tiling path exists with consistency tests
|
||||
- README includes practical Apple silicon guidance
|
||||
- the repo can answer “what settings should I use on a real Mac?” with evidence
|
||||
Loading…
Reference in New Issue
Block a user