Skip to content

fix(lemonade): pin Lemonade 2026.44.1 so a ROCm 10.1 SDK gets a ROCm backend - #855

Draft
rominf wants to merge 2 commits into
mainfrom
fix/lemonade-2026.44
Draft

rominf wants to merge 2 commits into
mainfrom
fix/lemonade-2026.44

Conversation

@rominf

@rominf rominf commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

On a ROCm 10.1 SDK, rocm engines install lemonade could not give Lemonade a llama.cpp ROCm backend paired with that SDK. Lemonade 11.5.1 pins TheRock 7.13.0 and llama.cpp b9752, and downloads TheRock from a location that does not serve ROCm 10.x. This pins Lemonade 2026.44.1, which pins TheRock 10.1.0 and llama.cpp b11580; that build ships ROCm 10.1 archives for Linux and Windows.

#820 (ROCm 10.1 as the default SDK) depends on this: its MI300X Lemonade scenarios fail on 11.5.1.

User-visible changes (Linux and Windows):

  • rocm engines install lemonade installs Lemonade 2026.44.1 (runtime_id: lemonade-embeddable-2026.44.1). The new archive digests are recorded and checked as before.
  • Backend selection reads lemonade backends by row layout. Before, a recipe rocm-cli did not know (2026.44.1 adds llamacpp-hrx, ds4, thenoise) and the indented rows after it were read as llama.cpp backends. An update_required backend is now reinstalled and an update_available one is reused; both used to be dropped.
  • When alignment's first attempt fails, the second now uses the newest lemonade-sdk/llama.cpp release that ships the archive for the active ROCm version on this platform, not simply the newest release: releases b12013 onward publish qualification records but no ROCm archives. This is one unauthenticated GitHub listing of 30 releases.

Tests: unit tests cover the 2026.44.1 lemonade backends table, the update states, the release-listing choice, and the digest format; each was seen to fail with its target broken. Gated scenarios:

  • @id:runtime-lemonade-backend-alignment-reported (runtime-16, Windows Strix Halo nightly GPU lane) now accepts both routes: aligned on an SDK older than the pin, untouched on ROCm 10.1.
  • @id:runtime-lemonade-backend-alignment-opt-out (runtime-17, nightly GPU lanes) compares the pin with the one in the verified archive.

Neither can run in default CI, and on a ROCm 10.1 lane neither can tell an untouched pin from one rewritten to the same value; the 7.14.x legs are what exercise alignment. serve-18 and serve-29 pass locally. The GPU lanes, and anything on Windows, have not run yet.

…backend

Lemonade 11.5.1 pins TheRock 7.13.0 and llama.cpp b9752, and downloads
TheRock from a location that does not serve ROCm 10.x, so on a ROCm 10.1
SDK its llamacpp:rocm backend could not be paired with the SDK in use.
Lemonade 2026.44.1 pins TheRock 10.1.0 and llama.cpp b11580, whose release
ships ROCm 10.1 archives for Linux and Windows. The embeddable layout,
binary names and the lemond/lemonade flags rocm-cli uses are unchanged;
the new archive digests are recorded.

Two adaptations the new release needs:

- `lemonade backends` lists recipes rocm-cli did not know (llamacpp-hrx,
  ds4, thenoise) and adds Tier and Format columns. The parser matched
  recipe rows against a fixed list, so an unknown recipe's rows, and every
  indented row after them, were read as llamacpp backends. It now reads
  the recipe from the row layout, and reads Lemonade's update_required and
  update_available states as installable and installed instead of
  dropping the row.
- The second alignment attempt took lemonade-sdk/llama.cpp's newest
  release, but recent releases are published with only qualification
  reports and no ROCm archives. It now lists the 30 newest releases and
  picks the most recently published one that ships the exact archive for
  the active ROCm version on this platform.

The runtime-16 and runtime-17 scenarios assumed the active SDK never equals
the packaged pin, which is no longer true on a ROCm 10.1 lane: runtime-16
now checks that the installed pin equals the active SDK by whichever route
the host takes, and runtime-17 compares the pin with the one inside the
verified archive.

Signed-off-by: Roman Inflianskas <Roman.Inflianskas@amd.com>
The runtime-17 step that finds the cached Lemonade archive compared the
`.zip` extension with `ends_with`, which clippy's pedantic
`case_sensitive_file_extension_comparisons` rejects. The e2e target is
excluded from `--all-targets`, so only the Windows job's
`cargo clippy -p e2e-cucumber --test e2e` compiles it and caught it.
Derive the archive's stem once, comparing either extension ignoring ASCII
case, and reuse it for the member path.

Signed-off-by: Roman Inflianskas <Roman.Inflianskas@amd.com>
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