Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
ca7027d
fix(dataset): compare on-the-wire bytes so gzip responses aren't flag…
Mea1Ma Jun 8, 2026
ccc420d
feat(datasets): add local: downloader for package-bundled dataset files
Mea1Ma Jun 10, 2026
c908d8d
feat(datasets): subpackage auto-discovery + vendored RULER assets
Mea1Ma Jun 10, 2026
0e3b4b2
feat(datasets): RULER synthetic datasets (niah/qa/vt/cwe/fwe)
Mea1Ma Jun 10, 2026
509da7f
feat(tasks): RULER tasks (chat + base-gen) and effective-length report
Mea1Ma Jun 10, 2026
3ad021d
docs(examples): RULER eval configs and multi-length sweep generator
Mea1Ma Jun 10, 2026
a91c3ff
feat(examples): inject tokenizer_model into generated RULER sweep
Mea1Ma Jun 10, 2026
94c02b9
fix(datasets): load hotpotqa from HF instead of the defunct CMU URL
Mea1Ma Jun 11, 2026
76debac
fix(examples): correct hotpotqa dataset path in RULER sweep generator
claude Jun 13, 2026
df5c8b0
feat(ruler): remove base_gen endpoint support
claude Jun 13, 2026
79eb0ce
refactor(ruler): simplify to chat-only endpoint
claude Jun 13, 2026
a228437
fix(ruler-qa): handle hotpotqa config fallback and path correction
claude Jun 13, 2026
17bf8f9
fix(ruler-qa): correct hotpotqa loading strategy
claude Jun 13, 2026
ab4be28
refactor(ruler): align scoring with community.ruler metrics
claude Jun 13, 2026
f5399ce
feat(ruler): support task ordering from config file
claude Jun 13, 2026
5bae646
feat(ruler): include detailed per-task results in output
claude Jun 13, 2026
ed9dd53
feat(output): display per-task scores in ruler-effective text renderer
claude Jun 13, 2026
8a6820b
fix(ruler-gen): add SGLang deterministic inference to server overrides
claude Jun 13, 2026
9d082b5
fix(output): match task_order names with task_base names in per-task …
claude Jun 13, 2026
eaecfd7
feat(ruler): auto-detect effective_config.yaml for task ordering
claude Jun 13, 2026
a8982e6
fix(ruler): strip suffix from task_order before matching with task ba…
claude Jun 13, 2026
34c7d6a
feat(ruler): add Qwen3 8B SGLang configurations
claude Jun 14, 2026
8a8ccc0
refactor(ruler): rework RULER datasets and tasks to reproduce model c…
Mea1Ma Jun 17, 2026
aa84b48
feat(ruler): adapt dataset generation for Qwen3 with model-aware toke…
Jun 18, 2026
79fba81
chore(examples): restore infer-recipe-override.yaml
Mea1Ma Jun 21, 2026
2bb76ac
build(deps): restore project metadata and add ruler dependency group
Mea1Ma Jun 21, 2026
70667b0
refactor(ruler): centralize thinking-tag prefill into a config-driven…
Mea1Ma Jun 21, 2026
346db91
fix(ruler): correct VT/CWE shot count to n_shot=1 (kshot, not 0-shot)
Mea1Ma Jun 21, 2026
da1cef2
docs(ruler): restore NVIDIA license headers and upstream attribution
Mea1Ma Jun 21, 2026
d87cd83
style(ruler): satisfy ruff — drop dead code and fix lint
Mea1Ma Jun 22, 2026
5e8ce8b
fix(ruler): satisfy ty — type the vendored TASKS table at the call sites
Mea1Ma Jun 22, 2026
4180388
refactor(leaderboard): remove the ruler-effective command
Mea1Ma Jun 22, 2026
218019e
feat(ruler): pin the HotpotQA HF revision for reproducibility
Mea1Ma Jun 22, 2026
4418da1
chore(examples): drop the stray run.sh dev script
Mea1Ma Jun 22, 2026
e852c92
chore(ruler): drop the qwen3-8b sweep generator from the PR
Mea1Ma Jun 22, 2026
0ce391f
docs(ruler): correct attribution to NVIDIA RULER and pin reference SHAs
Mea1Ma Jun 22, 2026
604f45c
feat(ruler): add leaderboard ruler-avg for the 13-subtask headline mean
Mea1Ma Jun 22, 2026
5d14267
feat(ruler): round ruler-avg means to one decimal
Mea1Ma Jun 22, 2026
464a403
style(ruler): drop fixed-width padding on ruler-avg per-length value
Mea1Ma Jun 22, 2026
4d283ae
test(downloaders): add AI-Generated marker to test_local
Mea1Ma Jun 22, 2026
f4eead9
style(ruler): ruff-format _ruler_avg
Mea1Ma Jun 22, 2026
39408f7
docs(ruler): fix last opencompass reference in niah task docstring
Mea1Ma Jun 22, 2026
ce6054d
fix(datasets): make local: copy atomic and extend basename guard to l…
Mea1Ma Jun 25, 2026
42f2454
refactor(ruler): unify 5+5 dataset/task classes into one RulerDataset…
Mea1Ma Jun 25, 2026
e364b97
refactor(ruler): support subpackage dataset discovery and fix thinkin…
claude Jun 26, 2026
00969b5
fix: pre-commit formatting and code quality checks
claude Jun 28, 2026
5a2a215
fix(ruler): pre-commit formatting and docs for long-context eval config
claude Jun 29, 2026
978ffb5
refactor(ruler): drop assistant prefill, move answer_prefix to user t…
claude Jun 29, 2026
b289485
refactor(ruler): add Qwen3 thinking tag overhead and multi-subtask lo…
Jun 30, 2026
28a5d08
refactor(ruler): add dual message pattern support for assistant vs us…
Mea1Ma Jul 1, 2026
d9cae7f
docs: clarify extra_body config detection logic for assistant prefill…
Mea1Ma Jul 1, 2026
84e30de
docs(examples): add comprehensive comments to all ruler YAML configs
Jul 2, 2026
d8554f3
fix(dataset): reword url size-mismatch error; pin gzip test to RULER'…
Jul 2, 2026
536cd4d
refactor(tasks): shorten comment lines to satisfy ruff line-length check
Jul 2, 2026
5d0c658
feat(tasks): add HMMT Feb 2025 and IMO-AnswerBench benchmarks (#22)
peter-scitix Jul 2, 2026
9511005
fix(ruler): make feat/ruler pass CI (lint, types, preflight, tests)
Mea1Ma Jul 2, 2026
8e262be
docs(downloaders): correct local scheme docstring to match generate-n…
Mea1Ma Jul 2, 2026
4f02b65
refactor(ruler): true bring-your-own local: corpus (+ nltk dep, examp…
Mea1Ma Jul 2, 2026
4b3f8db
fix(ruler): consistency and robustness improvements per maintainer re…
Mea1Ma Jul 6, 2026
ef8b5ca
refactor(ruler): onboarding + encapsulation nits
Mea1Ma Jul 6, 2026
1a568ff
fix(ruler): resolve script and type-checker issues in final nits
Mea1Ma Jul 6, 2026
b962195
feat(mbpp): add dataset and few-shot base-model task (#12)
jack-scitix-ai Jul 3, 2026
ee22bce
feat(openbookqa): add dataset and k-shot generative task (#19)
jack-scitix-ai Jul 3, 2026
92d3e65
feat(models): add SglangGenModel for echoed-input logprobs via sglang…
jack-scitix-ai Jul 3, 2026
dcdd4d3
feat(gsm8k): add DeepSeek-Math-aligned 0-shot chat-model task (#29)
jack-scitix-ai Jul 3, 2026
91ee266
feat(ifbench): add dataset and few-shot base-model task (#13)
jack-scitix-ai Jul 3, 2026
b456b02
feat(tasks): add clp eval mode + naming category (#23)
jack-scitix-ai Jul 3, 2026
8f7a19c
fix(imo-answerbench): normalize in extraction + verbatim grader, prom…
peter-scitix Jul 6, 2026
2d78987
chore: release 0.6.0
ethan-scitix Jul 6, 2026
bb960a0
style(pyproject.toml): format with taplo
Mea1Ma Jul 6, 2026
70409a7
chore: regenerate stubs and meta index with ruler
Mea1Ma Jul 6, 2026
8e22959
chore(pdm): update lock file
Mea1Ma Jul 6, 2026
8ebfa3e
Merge branch 'main' into feat/ruler
Mea1Ma Jul 6, 2026
6bfad3d
fix(ruler): add transformers dep, restore scripts T201 exemption, ann…
Mea1Ma Jul 7, 2026
c5500da
style(pyproject.toml): format T201 exemption array with taplo
Mea1Ma Jul 7, 2026
c06a7d4
fix(ruler): resolve reviewed port issues (else-break, divergence note…
Mea1Ma Jul 7, 2026
60b572d
Merge branch 'main' into feat/ruler
Mea1Ma Jul 8, 2026
10bc8ce
fix(ruler): fix single-subtask path crash + QA guard, enumerate diver…
Mea1Ma Jul 8, 2026
a1972f2
fix(ruler): scrub personal paths from example configs, fix presence_p…
Mea1Ma Jul 8, 2026
cc98dbf
feat(ruler): align HotpotQA doc order to upstream (alphabetical)
Mea1Ma Jul 8, 2026
372c720
fix(ruler): read staged HotpotQA copy instead of always fetching online
Mea1Ma Jul 10, 2026
3a116eb
Merge branch 'main' into feat/ruler
Mea1Ma Jul 10, 2026
b255f09
refactor(ruler): tidy model-name resolution loop and doc-set comprehe…
Mea1Ma Jul 10, 2026
d5a05ed
feat(ruler): align HotpotQA doc order + cap generation per subtask
Mea1Ma Jul 8, 2026
9a1a522
fix(ruler): account for message-template overhead in prompt sizing
claude Jul 13, 2026
55d62b2
fix(ruler): resolve qwen3 template key case-insensitively (fixes over…
claude Jul 13, 2026
98a3c7a
fix(ruler): align prompt-token reserve with upstream model_template_t…
claude Jul 13, 2026
862078e
fix(ruler): drop /think marker from Qwen3-thinking template
claude Jul 13, 2026
9f3676b
refactor(ruler): own Qwen3 templates locally + reserve template token…
claude Jul 13, 2026
05b56ad
feat(ruler): split think_budget allocation for Qwen3 extended thinking
claude Jul 16, 2026
e85dc99
Merge upstream/main (scitix/sieval #40) into feat/ruler_exp
claude Jul 16, 2026
a18718a
fix(ruler): resolve line-length violations from ruff E501
claude Jul 16, 2026
7886c78
fix(ci): restore ty 0.0.20 and gate ruler token-budget tests on deps
Mea1Ma Jul 17, 2026
6185aa0
fix(ci): ignore unresolved tiktoken import in test_ruler_shared
Mea1Ma Jul 17, 2026
dea9270
fix(ruler): simplify think_budget context_length checks to 128k only
Jul 22, 2026
59ec90d
style(ruler): apply ruff formatting
Mea1Ma Jul 22, 2026
8b6ca8b
style: apply ruff-format and taplo-format
Mea1Ma Jul 23, 2026
0c90f0f
fix(build): restore pyproject metadata clobbered by bad pdm init
Mea1Ma Jul 23, 2026
06d68a0
fix(build): restore pdm.lock clobbered by bad pdm init
Mea1Ma Jul 23, 2026
adc8dc2
fix(ruler): declare BYO generator deps in ruler-gen optional group
Mea1Ma Jul 23, 2026
61fbdff
refactor(ruler): unify subtask dispatch, drop dead NIAH params
Mea1Ma Jul 23, 2026
ff4bc92
test(ruler): align token-budget tests with 128k-only think rule
Mea1Ma Jul 23, 2026
5cffad1
docs(ruler): drop unused vendored synthetic.yaml, fix provenance refs
Mea1Ma Jul 23, 2026
72e10ba
docs(ruler): rewrite example headers, add YaRN sweep configs
Mea1Ma Jul 23, 2026
46cb892
fix(ruler): correct html2text attrs in essay generator, cap version
Mea1Ma Jul 23, 2026
88a63d3
Merge branch 'main' into feat/ruler
Mea1Ma Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ repos:
rev: v6.0.0
hooks:
- id: check-added-large-files
# No longer bundling RULER corpus (moved to local: bring-your-own model).
- id: check-toml
- id: check-yaml
args:
Expand Down
1 change: 1 addition & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ matches what you're trying to do, copy it, edit the marked fields, and run
| [quickstart.yaml](quickstart.yaml) | Single task + single model + 5 samples — smoke test your install |
| [leaderboard-math-sft.yaml](leaderboard-math-sft.yaml) | Math SFT leaderboard — multiple math tasks against one or more models |
| [infer-recipe-override.yaml](infer-recipe-override.yaml) | Pin a specific inference recipe or override engine args |
| [ruler-qwen3-8b-nonthinking.yaml](ruler-qwen3-8b-nonthinking.yaml) | RULER long-context sweep — 13 subtasks × multiple lengths (4k/8k/16k/32k); see the `-withyarn-64k`/`-128k` and `-thinking` variants alongside it |

## Hardware-indexed (reference configs)

Expand Down
192 changes: 192 additions & 0 deletions examples/ruler-qwen3-8b-nonthinking.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# ==============================================================================
# RULER Long-Context Evaluation — Qwen3-8B, Non-Thinking Baseline
# ==============================================================================
# Scenario: RULER across a 4K–128K context sweep with thinking disabled. Six
# tasks (one per length) served by two configs (native / YaRN).
# Task: RULER (0-shot, generative).
#
# Configuration highlights:
# - enable_thinking: false (no reasoning chain)
# - Assistant-prefill mode: continue_final_message=true + add_generation_prompt=false
# - Datasets: ruler_4k / 8k / 16k / 32k / 64k / 128k (subtask: all, 500 samples each)
# - Models:
# qwen3-8b — native 32768 context, serves 4K / 8K / 16K / 32K
# qwen3-8b-yarn — YaRN-scaled to 131072, serves 64K / 128K
# (YaRN is enabled only for 64K/128K, which exceed the native 32768 window)
# - Temperature / top_p / top_k: 0.7 / 0.8 / 20 ; presence_penalty: 1.5
# - concurrency_limit: 64 (native) / 32 (YaRN)
# - GPU: H200-141G (native) / L40 (YaRN)
#
# Setup steps:
# 1. Prepare data: sieval dataset download ruler
# (or point $SIEVAL_DATA_DIR at an existing RULER staging dir)
# 2. Point checkpoints / tokenizers at your local model (fields marked # EDIT ME)
# 3. Run evaluation:
# sieval run ruler-qwen3-8b-nonthinking.yaml (launch + eval)
# sieval eval ruler-qwen3-8b-nonthinking.yaml (model already served)
#
# Editable fields (marked # EDIT ME inline):
# models.*.infer.checkpoint — local model path
# datasets.ruler_*.args.tokenizer_path — tokenizer path (same as model)
#
# Output:
# result_dir: ./outputs/ruler_qwen3_8b_nonthinking
# Per-cell scores plus per-length and overall RULER means (see report()).
#
# Context fit: thinking is disabled, so there is no think budget — each prompt
# packs to max_seq_length reserving only the answer, and every length fits its
# serving context_length (≤32K on native 32768, 64K/128K on YaRN 131072). If you
# change a dataset's max_seq_length or a model's context_length, keep
# max_seq_length + answer ≤ context_length.
# ==============================================================================

result_dir: ./outputs/ruler_qwen3_8b_nonthinking
models:
qwen3-8b:
args:
concurrency_limit: 64
temperature: 0.7
top_p: 0.8
presence_penalty: 1.5
extra_body:
enable_thinking: false
top_k: 20
continue_final_message: true
add_generation_prompt: false
infer:
backend: sglang
recipe: qwen3-8b
checkpoint: /path/to/qwen3-8b # EDIT ME
overrides:
context_length: 32768
infer_meta:
gpu: H200-141G
image: lmsysorg/sglang:latest

qwen3-8b-yarn:
args:
concurrency_limit: 32
temperature: 0.7
top_p: 0.8
presence_penalty: 1.5
extra_body:
enable_thinking: false
top_k: 20
continue_final_message: true
add_generation_prompt: false
infer:
backend: sglang
recipe: qwen3-8b
checkpoint: /path/to/qwen3-8b # EDIT ME
overrides:
context_length: 131072
disable_cuda_graph: true
json_model_override_args: '{"rope_scaling": {"rope_type": "yarn", "factor":
4, "original_max_position_embeddings": 32768}}'
infer_meta:
gpu: L40
image: lmsysorg/sglang:latest

datasets:
ruler_4k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 4096
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

ruler_8k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 8192
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

ruler_16k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 16384
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

ruler_32k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 32768
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

ruler_64k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 65536
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

ruler_128k:
class: RulerDataset
path: ${SIEVAL_DATA_DIR}
args:
subtask: all
max_seq_length: 131072
num_samples: 500
tokenizer_type: hf
tokenizer_path: /path/to/qwen3-8b # EDIT ME
enable_thinking: false
model_name: qwen3

tasks:
ruler_4k:
class: RulerZeroShotGenTask
dataset: ruler_4k
model: qwen3-8b

ruler_8k:
class: RulerZeroShotGenTask
dataset: ruler_8k
model: qwen3-8b

ruler_16k:
class: RulerZeroShotGenTask
dataset: ruler_16k
model: qwen3-8b

ruler_32k:
class: RulerZeroShotGenTask
dataset: ruler_32k
model: qwen3-8b

ruler_64k:
class: RulerZeroShotGenTask
dataset: ruler_64k
model: qwen3-8b-yarn

ruler_128k:
class: RulerZeroShotGenTask
dataset: ruler_128k
model: qwen3-8b-yarn
Loading
Loading