Skip to content

train: refuse only a node NO scheduler backend can run (fix the Metal regression from #35) - #38

Merged
joelteply merged 1 commit into
feat/props-weight-residencyfrom
fix/refuse-only-when-no-backend-can-run
Oct 6, 2026
Merged

joelteply merged 1 commit into
feat/props-weight-residencyfrom
fix/refuse-only-when-no-backend-can-run

Conversation

@joelteply

Copy link
Copy Markdown

The regression: #35 refused a training graph whenever the device backend said no. Metal has no GET_ROWS_BACK kernel and has always run it on the CPU, so on the M5 every /train was refused ("the training graph has a node MTL0 cannot run: GET_ROWS_BACK …", Fable, 2026-10-06). I verified #35 only on CUDA. My miss.

The fix:

Measured on the 5090, 0.8B qwen35, with the L2_NORM rule fix temporarily reverted so the viewed SQR is really in the graph: the job trains through the CPU fallback (loss 0.5909), and /health stays ok. No abort, no refusal.

Needs a Metal run before pin (Fable): GET_ROWS_BACK must fall back to the CPU and train.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q4NU4VNiELPQfBpCacDZGc

… regression from #35)

#35 refused a training graph whenever the DEVICE backend said no. Metal has no
GET_ROWS_BACK kernel and has always run it on the CPU, so on the M5 every /train
was refused ("the training graph has a node MTL0 cannot run: GET_ROWS_BACK ...",
Fable, 2026-10-06). I verified #35 only on CUDA.

The refusal now applies only when no backend of the scheduler supports the node.
A device "no" with another backend's "yes" falls back as before. supports_op is
truthful since #35, so a "yes" is a kernel that will not abort: the original crash
(CUDA claiming a viewed SQR it would assert on) now falls back instead.

Measured on the 5090, 0.8B qwen35, with the L2_NORM rule fix TEMPORARILY reverted
so the viewed SQR is really in the graph: the job TRAINS through the CPU fallback
(loss 0.5909) and /health stays ok. No abort, no refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4NU4VNiELPQfBpCacDZGc
@joelteply
joelteply merged commit 68c2ec7 into feat/props-weight-residency Oct 6, 2026
3 of 24 checks passed
@github-actions github-actions Bot added the ggml label Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant