Skip to content

[Other] setup: reject invalid explicit RoPE scale factors - #3393

Closed
j-luwierski wants to merge 1 commit into
Niko1221:mainfrom
j-luwierski:codex/reject-invalid-rope-scale
Closed

j-luwierski wants to merge 1 commit into
Niko1221:mainfrom
j-luwierski:codex/reject-invalid-rope-scale

Conversation

@j-luwierski

Copy link
Copy Markdown
Contributor

Problem and result

On current main, setup accepts an explicit --rope-scale of nan, inf, -inf, zero, or a value below 1. For example, resolve_rope(1048576, "yarn", float("nan")) returns ("yarn", nan); setup can then pass the invalid value into the generated engine arguments. The engine requires a finite factor >= 1.

After this change, setup rejects every explicit non-finite factor and every factor below 1 before it writes configuration, and the error names --rope-scale and the valid range. Valid factors remain unchanged.

Related discussion

This is the rebased follow-up to #2950, which was closed during the 0.2.0-beta tracker reset rather than declined. Its fix was not present on current main.

Approach

Validate the explicit factor at the start of resolve_rope() with math.isfinite() and the engine's >= 1 lower bound. Update --help to state the accepted range. Add regression coverage across contexts below, at and above 262144, with omitted, none, linear and yarn scaling methods.

Automatic scaling, valid explicit overrides, model inference and backend code are unchanged. This does not change YaRN quality or require the factor to cover the requested context.

Validation

Revision: b7c8ede5, based on main 5bda973a. Linux, Python 3; no GPU or model downloads.

Passed:

  • Reproduced on unmodified 5bda973a: the resolver accepted NaN, both infinities, -1, 0 and 0.5 for contexts 131072, 262144 and 1048576 with linear and yarn.
  • python3 -m unittest tools.test_setup_rope tools.test_setup_choices tools.test_setup_configs tools.test_setup_config -q: 93 tests pass.
  • python3 setup.py --help: help shows the finite and >= 1 constraint.
  • git diff --check.

Failed: none.

Not run: GPU builds and model inference; no engine/backend source or build files changed. The test run emitted existing /proc/cpuinfo ResourceWarnings and a read-only fixture note; all 93 tests passed.

Limits

Validation covers setup's resolver and its configuration tests. It does not measure model behavior or the quality of RoPE scaling.

Niko1221 pushed a commit that referenced this pull request Oct 27, 2026
resolve_rope accepted nan, inf, zero and values below 1 and handed them to the engine. It now stops with a message that names --rope-scale and the
valid range, before any configuration is written; valid factors and the automatic scaling are unchanged. Ported from PR #3393 by j-luwierski
(follow-up to #2950) with its tests; the --help text gets the range.
@Niko1221

Copy link
Copy Markdown
Owner

Thanks. Confirmed: nan, inf and values below 1 were accepted. Ported to 0.2.7.

Release: https://github.com/Niko1221/Strata/releases/tag/v0.2.7

MistVVK added a commit to MistVVK/XeStrata that referenced this pull request Oct 30, 2026
resolve_rope は nan・inf・0・1 未満の値を受けてエンジンに渡していた。設定を書く前に、--rope-scale と
正しい範囲を名指して止める。正しい値と自動の倍率は変わらない。--help にも範囲を書く。upstream Niko1221#3393。
ruc1j added a commit to ruc1j/XeStrata-890M that referenced this pull request Oct 31, 2026
…の 1)

serve の変更
- 宣言していない名前の tool call を文のまま返すとき、その名前を strata_rejected_tool_calls で答えに添え、/metrics/prometheus で数える(upstream 805ebe1、Niko1221#3796)
- 名前空間つきの tool は namespace=member、namespace_member、member だけの綴りでも受け、`__` を `_` に潰した綴りも宣言した tool として読む(upstream fd8d37e、805ebe17b、Niko1221#3972)
- Chat Completions の tool の結果を、答えた call の順に並べ直す(upstream 11237f8、Niko1221#3395)
- message のない chat の要求は 400 にする(upstream 8a3ca07)
- --host :: で IPv6 で待ち受ける(upstream eba3106、Niko1221#3212)
- /v1/responses の max_output_tokens は 0 と -1 を上限なしとして受け、答えに timings を付ける(upstream 9c2d35d、a0fc88abd、Niko1221#4036、Niko1221#3291)
- response_format の repair_latex_escapes で、LaTeX のエスケープで壊れた JSON を直してから検査する(upstream 2cc6ea1、Niko1221#2893)
- 1 トークンの答えには decode の速さを出さない(upstream 5d5c26d)
- elastic な画像エンコーダーが起動できなければ 503 を返す(upstream 092c7d1、Niko1221#2435)
- lifeline の識別は子プロセスの開始時刻にし、sampler は壊れた source に耐える(upstream b3db5a1、Niko1221#3590、Niko1221#3407)
- web ページ: 答えを追うのは読み手が離れていないあいだだけ(upstream 89a68d8)、広い窓を使い狭い画面に収める(upstream ad1a310、Niko1221#3176)

setup の変更
- cmake と ninja は venv のものを先に取り、CMakeLists.txt が求める 3.24 より古い cmake は使わない(upstream 5bfce4b、Niko1221#3822)
- 別の generator で configure された build フォルダーは作り直す(upstream bf994ca、Niko1221#4038)
- ダウンロードの長さが取れなければ公開されている大きさを使う(upstream a1d2fd7、Niko1221#2287)
- 2 分データが来ないダウンロードは止まっていると言う(upstream ed0c893、Niko1221#3567)
- --rope-scale は有限で 1 以上の値だけ受ける(upstream a332cc9、Niko1221#3393)
- pip の記録はどの OS が書いたかを覚え、別の OS の記録は信じない(upstream fb3bae2、Niko1221#3634)

tools の変更
- gguf_reader.py はヘッダーの読みに上限を置き、壊れた metadata を ValueError にする(upstream 409f246、Niko1221#2288、Niko1221#1919)
- strata_bench.py は amd-smi しかない ROCm 7 以降でも AMD のカードの名前を書く(upstream c471588、Niko1221#3630)
- calibrate.py は計測の途中でエンジンが落ちても、その候補だけを落として続ける(upstream 41188ec、Niko1221#3317)
- chat.py は端末で fenced code block に色を付ける(upstream 3e81173、PR Niko1221#1895)
- 試験: llama.cpp の gguf-py がなければ test_iq_pack は skip、ほか試験の穴 3 つ(upstream 5b14fe2、Niko1221#3236)

fork に合わせて変えたこと: upstream の docs/DETAILS.md の差分は取らず、文書は別に書く。logprobs(upstream 9ea0449)は fork にすでにあり、allowed_token_ids は見送り。Control(strata_control)に依る setup の変更と、fork にない機能(presets の警告、Delete a model、queue timeout の badge)は取らない。
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.

2 participants