Skip to content

Runners: Blacksmith to Namespace (namespace-profile-execupack), sized to what it measured - #14

Merged
alpharomercoma merged 2 commits into
mainfrom
namespace-runners
Oct 7, 2026
Merged

alpharomercoma merged 2 commits into
mainfrom
namespace-runners

Conversation

@alpharomercoma

@alpharomercoma alpharomercoma commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Moves every job to the Namespace profile namespace-profile-execupack, and sizes the export matrix to what that runner measured on its own CI run:

  • 4 x86_64 CPUs
  • MemTotal 16,438,740 kB (15.7 GiB)
  • 101 GB overlay disk
  • no swap: the container refuses swapon.

What changes

  • config/pipeline.yaml: one tier per recipe, with those figures and swap_gib: 0. A window that doesn't fit the RAM is skipped, not attempted.
  • prepare-host.sh: carries on without swap where it's refused. It previously failed under set -e, which would have stopped every export at setup.
  • Empty matrix: the solve, export and verify jobs now skip a model with no fitting window, since GitHub fails an empty matrix outright.
  • Runner probe: defaults to windows that fit, and records a refused window as skipped rather than failed.
  • Tests: the runner-choice logic is now tested on a fixed three-size fleet, so it stays covered when a second tier is added. test_namespace_runner.py pins the profile and checks no workflow runs anywhere else.
  • Unrelated fix: export-mtk.yml was unparseable on main since PR PLAN: findings 38 and 39 say no more than their runs show #10 (an unquoted colon), so GitHub couldn't dispatch it. Fixed in its own commit.

What it costs (finding 40, from the sizing model, not from runs on the profile)

Backend Still fits No longer fits
Vulkan up to 8k for the sub-1B models and Llama-3.2-1B; up to 16k for LFM2.5-1.2B; 2k–4k for Qwen2.5-1.5B, Qwen3-1.7B and LFM2.5-2.6B everything at 3B and above
XNNPACK up to 8k for the sub-1B models; 2k–4k for Llama-3.2-1B and LFM2.5-1.2B everything from 1.5B up
MediaTek Qwen3-0.6B at 512; Llama-3.2-1B to 2k; SmolLM2-135M to 4k LFM2.5 at any window, by the current estimate (the measured 8-chunk 16k peak was lower; see the finding)

Adding a larger Namespace profile to the tier lists brings the wider windows back.

Reviewed by Codex; its three findings are fixed. CI ran on the profile: 225 passed.

🤖 Generated with Claude Code

alpharomercoma and others added 2 commits October 7, 2026 18:31
…the workflow unparseable

PR #10 reworded it to "...per chunk: 8 for the 1.2B...", which YAML reads as a mapping, so
GitHub listed the MediaTek workflow by its path and could not dispatch it. The text is
quoted and the colon is gone. (This commit also carries the job's runner change below.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to what it measured

Every workflow runs on one Namespace profile instead of Blacksmith's ARM and x86 sizes. CI on
the profile measured 4 x86_64 CPUs, MemTotal 16,438,740 kB, a 101 GB overlay disk and no swap,
which the container refuses, so:

- config/pipeline.yaml: one tier per recipe with those figures and swap_gib 0; a window that
  does not fit the RAM is left out of the matrix and recorded as skipped (finding 40 lists what
  that leaves: up to 8k for the sub-1B models, little from 1.5B up, no LFM2.5 on MediaTek by the
  current estimate). A larger profile added as a second tier brings the wider windows back.
- prepare-host.sh carries on without swap where swapon is refused, and asks for none at 0; the
  job's own gate already reads the swap that is really there.
- solve, export and verify skip a model no window fits, since GitHub fails an empty matrix; the
  runner probe records a refused window as skipped, and defaults to windows that fit.
- The runner-choice tests run on a fixed three-size fleet (the measured Blacksmith sizes) so the
  logic stays tested for when a second tier is added; test_namespace_runner.py pins the profile,
  that no workflow runs anywhere else, and what it can and cannot build.
- CI prints the runner's CPUs, memory, disk and whether swap works; actionlint knows the label.
- CLAUDE.md, README.md, PLAN.md and finding 40 describe the change; the README's Vulkan and
  MediaTek rows were stale and say what is published now.

Reviewed by Codex; its three findings (the probe failing its default 16k window, two stale
claims) are fixed here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@alpharomercoma alpharomercoma changed the title Runners: Blacksmith to Namespace (namespace-profile-execupack) Runners: Blacksmith to Namespace (namespace-profile-execupack), sized to what it measured Oct 7, 2026
@alpharomercoma
alpharomercoma marked this pull request as ready for review October 7, 2026 10:31
@alpharomercoma
alpharomercoma merged commit c692c49 into main Oct 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant