It is the
starting point
of the mathematical-reasoning case study in that blog — the checkpoint that every run there (the standard-GRPO baseline, the full JustRL II recipe, and all ablations) is initialized from and evaluated against. It is
not
the post-RL model. We release it so that the blog's data pipeline and training recipe can be reproduced from the exact same starting weights.
What this checkpoint is
A small language model that has already been trained to produce long chain-of-thought (thinking) responses. It emits its reasoning inside
<think> ... </think>
before the final answer.
Before any RL, it scores about
61%
on AIME 2025 under the blog's evaluation protocol (average over sampled responses, 128k-token generation budget).
Starting from this checkpoint, the full JustRL II recipe reaches
81%
on AIME 2025 in ~300 RL steps, while a standard GRPO baseline on the same data plateaus around 74% (see Figures 1, 2 and 8 of the blog).
The blog's difficulty-recalibration step (Stage 3 of the data pipeline) is computed by rolling out
this
checkpoint 8 times per problem, so the released training set's difficulty tiers refer to this model's pass rates.
Files
File
Notes
pytorch_model.bin
bf16 weights, single file
config.json
Llama-style architecture (
LlamaForCausalLM
), loads with stock
transformers
chat template with thinking-mode support (
enable_thinking
)
Two end-of-sequence ids are configured (
eos_token_id = [1, 130073]
); pass both to your generation call or serving engine.
config.json
ships with
max_position_embeddings = 65536
; the RL runs in the blog use a 128k-token generation budget — refer to the blog for the long-context serving setup used there.
Usage
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "openbmb/JustRL-II-base-model"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
messages = [{"role": "user", "content": "What is the sum of all positive divisors of 360? Think step by step."}]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True, enable_thinking=True
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
inputs.pop("token_type_ids", None)
out = model.generate(
**inputs,
max_new_tokens=8192,
do_sample=True,
temperature=1.0,
eos_token_id=[tokenizer.eos_token_id, 130073],
)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=False))
For evaluation or RL rollouts, serve it with vLLM or SGLang as a standard Llama-architecture model, e.g.
Reproducing the JustRL II recipe and its ablations from the same initialization.
Research on long-CoT RL for small models: credit assignment, critic diagnostics, data difficulty calibration.
This checkpoint has not been aligned for general assistant use and has only been evaluated on mathematical reasoning. It may produce very long outputs; set a generation budget appropriate to your hardware.
The JustRL II recipe (summary)
The blog trains this checkpoint with a critic-equipped GRPO recipe:
Data
: a three-stage pipeline audits ~100k open-source math problems (DAPO-Math, DeepScaleR, DeepMath) for solvability, re-checks labels with independent strong-model solutions, and removes problems this checkpoint already solves 8/8 — leaving 32,412 problems in the training set.
Algorithm
: GRPO's group structure and dynamic sampling are retained; a learned value model (initialized from the policy, bias calibrated to the pool pass rate) provides token-level advantages through GAE with a length-adaptive λ; tail-only overlong control limits excessive rollout length.
Rollouts
: 8 samples per prompt at temperature 1.0 with a 128k-token budget, graded by a variant of math-verify.
See the blog for the full specification, ablations, and critic diagnostics.
Citation
@misc{justrl2,
title = {JustRL II: Scaling Small LLMs to 128K Reasoning with a Critic},
author = {Pan, Haoxuan and Zhou, Chuyue and Li, Xin and others},
year = {2026},
howpublished = {\url{https://panhaoxuan.notion.site/justrl-ii-scaling-small-llms-to-128k-reasoning-with-a-critic}}
}
Runs of openbmb JustRL-II-base-model on huggingface.co
180
Total runs
21
24-hour runs
78
3-day runs
120
7-day runs
180
30-day runs
More Information About JustRL-II-base-model huggingface.co Model
JustRL-II-base-model huggingface.co
JustRL-II-base-model huggingface.co is an AI model on huggingface.co that provides JustRL-II-base-model's model effect (), which can be used instantly with this openbmb JustRL-II-base-model model. huggingface.co supports a free trial of the JustRL-II-base-model model, and also provides paid use of the JustRL-II-base-model. Support call JustRL-II-base-model model through api, including Node.js, Python, http.
JustRL-II-base-model huggingface.co is an online trial and call api platform, which integrates JustRL-II-base-model's modeling effects, including api services, and provides a free online trial of JustRL-II-base-model, you can try JustRL-II-base-model online for free by clicking the link below.
openbmb JustRL-II-base-model online free url in huggingface.co:
JustRL-II-base-model is an open source model from GitHub that offers a free installation service, and any user can find JustRL-II-base-model on GitHub to install. At the same time, huggingface.co provides the effect of JustRL-II-base-model install, users can directly use JustRL-II-base-model installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
JustRL-II-base-model install url in huggingface.co: