Skip to content

pr-set: pin server penalize_prompt (#283), drop ggml-org#30670 merged upstream - #284

Merged
danielhanchen merged 4 commits into
masterfrom
pinset-penalize-prompt
Oct 18, 2026
Merged

danielhanchen merged 4 commits into
masterfrom
pinset-penalize-prompt

Conversation

@danielhanchen

Copy link
Copy Markdown
Member

pr-set: pin server penalize_prompt (#283), drop ggml-org#30670

The unslothai/llama.cpp prebuilt is upstream ggml-org at an aged b#### tag plus the pins in scripts/unsloth/pr-set.json, merged in order (git diff3, then additive_merge.py for pure add/add conflicts only). No fork carry: a pin is deleted once upstream has the work.

Changes

  1. Pin server: add penalize_prompt to keep prompt tokens out of the penalty history #283 at 4f26c617488627c927c96b6f789a064e5d06668a: the per-request penalize_prompt field for llama-server. With false, prompt tokens stay out of the repeat, presence, frequency and DRY history, which the FLUX.3 prompt upsampler needs in order to match its reference sampling. Default true is unchanged behaviour.
  2. feature_matrix.py gets a penalize-prompt probe, and feature-checks.json a penalize-prompt feature owned by server: add penalize_prompt to keep prompt tokens out of the penalty history #283. The probe works offline: test-llama-archs -a llama -o writes a synthetic GGUF, llama-server decodes a token-id context whose greedy next token is already in it, and a presence penalty of 100 must move that token by default and must leave it alone with penalize_prompt: false. A build with no llama-server (the CPU gate) defers it, the same way GPU-only checks are deferred. test_feature_matrix.py covers that deferral.
  3. Drop ggml-org#30670 (Beam). Upstream squash-merged it as 01fc3aae8, so from b11712 on the pin is REFUSED in common/parsers/parsers.h, common/parsers/sources.cmake, src/llama-arch.cpp, src/llama-arch.h and src/llama-model.cpp. That is the cause of the 2026-10-17 nightly failure (run 39066439326). pin_contract already reported 513/513 of its lines present in the base. The beam feature check stays, now owned by the base.

Evidence per tag

llama_pinset.py sim --tags window (b11712 aged to b11716 newest), 18 pins:

tag merge pin_contract merge_checks
b11712 ok (ggml-org#25731, #70 additive) all 18 intact clean
b11713 ok (ggml-org#25731, #70 additive) all 18 intact clean
b11714 ok (ggml-org#25731, #70 additive) all 18 intact clean
b11715 ok (ggml-org#25731, #70 additive) all 18 intact clean
b11716 ok (ggml-org#25731, #70 additive) all 18 intact clean

Before dropping ggml-org#30670, every tag in the window failed on that pin alone. #283 merged cleanly everywhere.

llama_pinset.py verify --tag aged --cuda (b11712) and --tag newest --cuda (b11716), B200:

tag CPU gate full CUDA build test-chat MUL_MAT MUL_MAT_ID PAD GET_ROWS features (GPU)
b11712 ok ok all passed 2484/2484 993/993 37/37 340/340 12/12 incl. penalize-prompt
b11716 ok ok all passed 2484/2484 993/993 37/37 340/340 12/12 incl. penalize-prompt

verify reads feature-checks.json from master, so it ran the 11 existing features. I ran this branch's feature_matrix.py --gpu with this branch's manifest on the same merged CUDA trees: 12/12 features ok, including penalize-prompt. On the CPU gate trees, which have no llama-server, penalize-prompt is deferred.

The probe on its own: it passes on the pin build (prompt token kept with penalize_prompt: false, moved by the default prompt-wide penalty) and fails on plain b11696 ("penalize_prompt = false still penalized the prompt").

Not covered here

penalize_prompt = false keeps prompt tokens out of the repeat, presence,
frequency and DRY history in llama-server, which the FLUX.3 prompt upsampler
needs to match its reference sampling. feature_matrix.py gets a
penalize-prompt probe: a synthetic llama GGUF from test-llama-archs -o, a
context whose greedy next token is already in it, and a presence penalty
that must move that token by default and must not with the field false.
It is deferred when the build has no llama-server (the CPU gate).
Upstream squash-merged it as 01fc3aa, so the pin no longer merges onto any
tag from b11712 on (REFUSED in common/parsers and src/llama-arch*, the
2026-10-17 nightly failure). pin_contract already reports 513/513 of its
lines in the base. The beam feature check stays, owned by the base.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-18T15:17:59.346008Z 833a685 Manual request
🔒 Security Review ✅ Completed 2026-10-18T15:19:42.250388Z 833a685 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5c5e228999

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +159 to +160
if not server.exists():
raise NeedsServer("needs llama-server, which this build did not produce")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fail GPU verification when llama-server is absent

When the documented --gpu verification is run against a build that accidentally omitted llama-server, this raises NeedsServer, which subclasses NeedsGPU and is therefore recorded as a deferral; the command exits successfully with report["ok"] == true and can claim all features were demonstrated without testing the newly pinned server feature. Only the known CPU gate should defer this condition; an explicit GPU/full-build run should treat the missing target as unproven.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 0dfaa52: a --gpu run without llama-server now raises Unproven (a failure), and only the CPU gate defers it. Test 11 covers both cases. 833a685 repins #283 to its new head.

…erred

Only the CPU gate builds without llama-server; a full build that lacks it has not
demonstrated the penalize_prompt pin.
@danielhanchen

Copy link
Copy Markdown
Member Author

@codex review

@danielhanchen

Copy link
Copy Markdown
Member Author

@codex security review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Can't wait for the next one!

Reviewed commit: 833a6851b0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review

Security review completed. No security issues were found in this pull request.

Reviewed commit: 833a6851b0

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

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