modrill's picture
Publish frozen BASE-MATH-R025-12M dynamic LoRA adapter
ec18ed9 verified
|
Raw
History Blame Contribute Delete
4.52 kB
---
base_model: allenai/Olmo-3-1025-7B
library_name: peft
pipeline_tag: text-generation
datasets:
- nvidia/OpenMathReasoning
tags:
- peft
- lora
- olmo3
- think
- math
- mt11
- openmathreasoning
- dynamic-lora
---
# MT11-OLMO3-THINK-OMR-R025-v1
Dynamic PEFT/LoRA adapter for `allenai/Olmo-3-1025-7B`, trained as the
`BASE-MATH-R025-12M` OLMo B candidate. This repository contains adapter weights
only. It does **not** contain merged, baked, or base-model weights.
## Formal result
The locked EvalScope 1.9.1 exact240 contract produced **46/240** for this adapter
and **41/240** for the independently recomputed fresh base. Paired outcomes were
**19 wins / 14 losses / 207 ties** on identical `(seed, dataset, index)`
identities. This is a positive formal evaluation signal, not a claim of broad
benchmark superiority.
## Required disclosure: legacy training runner
These weights were trained by the old context-truncating legacy runner. During
training, the model forward pass was invoked separately for each 1,024-token
slice, resetting sequence context at every slice boundary. The legacy scheduler
also had a historical first-update warmup problem. Both issues were fixed and
tested in the later runner, but **this adapter was not trained with the fixed
runner** and must never be described that way.
The formal exact240 result remains valid as an evaluation of these frozen
weights: checkpoint identity, dynamic LoRA loading, template, stop IDs, prompt
budget, and paired review identities were independently checked. The training
defects limit causal and recipe-transfer claims; they do not rewrite the
observed 46/240 versus 41/240 result.
## Runtime contract
- Base: `allenai/Olmo-3-1025-7B` at
`996971efdc504b81f0a6caf73a6c92f976254b9c`
- Template/tokenizer: official `allenai/Olmo-3-7B-Think`
`chat_template.jinja` at
`d97e442d7cc678210054dbcc9b440894d62c89a4`
- Template SHA-256:
`6d549883b5ed12879e191845c256a30c7dfd4eced0a4f160060a3ea0199d9e3a`
- Context: dynamic 32K; generation budget is
`32768 - exact_prompt_tokens - 64`
- Stop token IDs: `[100265, 100257]`
- LoRA: rank 64, alpha 128, dropout 0; targets `q_proj`, `k_proj`,
`v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`
## Loading example
```python
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_id = "allenai/Olmo-3-1025-7B"
base_revision = "996971efdc504b81f0a6caf73a6c92f976254b9c"
template_id = "allenai/Olmo-3-7B-Think"
template_revision = "d97e442d7cc678210054dbcc9b440894d62c89a4"
adapter_id = "modrill/MT11-OLMO3-THINK-OMR-R025-v1"
tokenizer = AutoTokenizer.from_pretrained(
template_id, revision=template_revision
)
base = AutoModelForCausalLM.from_pretrained(
base_id,
revision=base_revision,
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base, adapter_id) # dynamic; do not merge
messages = [{"role": "user", "content": "Solve the problem step by step."}]
rendered = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(rendered, return_tensors="pt").to(model.device)
max_new_tokens = 32768 - inputs.input_ids.shape[-1] - 64
outputs = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.6,
top_p=0.95,
top_k=20,
eos_token_id=[100265, 100257],
)
```
Verify that the resolved tokenizer actually uses the pinned official
`chat_template.jinja`; do not substitute the base tokenizer's default template.
## Data and evaluation notes
Training used a 4,096-row public-source-derived manifest from
`nvidia/OpenMathReasoning` at the pinned revision documented in
`DATA_PROVENANCE.json`. Raw rows and the full training set are intentionally not
included. Only public summaries, manifests, revisions, and hashes are released.
For termination diagnostics, the corrected cap definition counts runtime
`stop_reason`/`finish_reason` values of either `max_tokens` or `length`. Under
that definition the adapter had 162/240 cap terminations and 78/240 natural
`stop` terminations; 43 natural stops were formally correct. The historical
matched120 helper checked only `length`, while this runtime emitted
`max_tokens`, so its reported zero-cap diagnostic must not be reused. Literal
`\boxed` presence is diagnostic only and never changes the authoritative
EvalScope score.
See the JSON contracts in this repository for exact provenance, scoring scope,
hashes, and limitations.