rubric-rewards: LoRA adapters

All 445 policy adapters from the paper From Constitutions to Control: Interpretable Rewards for Aligning Language Models, one folder per fine-tuning arm, plus the harm-softened response generator for GPT-OSS. Layout:

gemma/  qwen/  gptoss/       one folder per base model (each has its own README with the arm list)
  free/<arm>/                policies fine-tuned against the unconstrained rubric reward (β_help, β_lean, β_sycophancy arms)
  constrained/<arm>/         the same arms under the sign-constrained reward
  discrimination/<rm>_<q>/   §4.5 dose policies (reward model × injected-bias dose)
  dose_rm/<rm>_<q>/          the neural reward-model adapters used to select the dose policies
  generation/harm_softened/  (gptoss only) the adapter that wrote the "softened" harm candidates
INDEX.jsonl                  one row per adapter: model, reward, arm, internal name, size

Every policy adapter is a standard PEFT LoRA directory (peft 0.19.1; r = 16, α = 32, dropout 0.05 on q/k/v/o), trained with the recipe in the paper's appendix; load with PeftModel.from_pretrained(base, "iclr1367/rubric-rewards-adapters", subfolder="gptoss/free/help1_lean+3"). Training sets, generations, judgments and every number behind the figures are in the companion dataset iclr1367/rubric-rewards; the code is at github.com/iclr1367-commits/rubric-rewards.

Adapters inherit the licenses of their base models (Gemma Terms of Use; Apache-2.0 for Qwen3 and gpt-oss).

gemma

Gemma 3 12B: policies fine-tuned against rubric-based rewards

LoRA adapters from the paper From Constitutions to Control: Interpretable Rewards for Aligning Language Models. Every adapter is a standard PEFT LoRA directory on google/gemma-3-12b-it (peft 0.19.1): r = 16, alpha = 32, dropout 0.05 on q/k/v/o, bf16 (gpt-oss dequantized from MXFP4), AdamW 1e-4 with cosine decay and 3% warmup (10 steps for gpt-oss), 2 epochs, effective batch 16, max length 1,024, seed 0, final weights. Training sets (raw/sft/ in the data repo iclr1367/rubric-rewards) hold 1,000 harm + 1,000 political prompts whose targets were selected by the steered rubric reward, plus 500 Tülu-3 rows; sycophancy arms 1,000 + 250. Qwen and gpt-oss were trained and evaluated with reasoning off.

Evaluation decoding: vLLM bf16, temperature 0.7, top-p 0.9, 512 new tokens, one sample per prompt, vLLM default engine seed (0).

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("google/gemma-3-12b-it")
base = AutoModelForCausalLM.from_pretrained("google/gemma-3-12b-it", torch_dtype="bfloat16")
policy = PeftModel.from_pretrained(base, "<this repo>", subfolder="free/help1_lean+3")

Layout

folder count what
free/<arm>/ 38 policies trained against the unconstrained rubric reward: the steering grid help<b>_lean<b> (β_help ∈ {0, 0.25, 0.5, 1, ∞} × β_lean ∈ {−3, −1, 0, 1, 3, ±∞}, no double-infinite corners) and the sycophancy ladder syc<b> (β ∈ {0, 0.5, 1, 2, ∞})
constrained/<arm>/ 38 the same grid against the sign-constrained reward
discrimination/<rm>_q<q>/ 42 job-recommendation policies trained from each reward model's picks at injected bias q ∈ {0, 0.2, …, 1}
dose_rm/<rm>_q<q>/ 30 the dose-injected neural reward models themselves (LoRA on OpenAssistant/reward-model-deberta-v3-large-v2, Skywork/Skywork-Reward-V2-Llama-3.1-8B, Skywork/Skywork-Reward-V2-Llama-3.2-3B, Skywork/Skywork-Reward-V2-Llama-3.2-1B, nicolinho/QRM-Gemma-2-27B; Bradley–Terry, 3 epochs, lr 1e-5 for all five, batch 2, max length 512)

Held-out behaviour of the steering-grid and sycophancy policies (unconstrained reward)

arm harm (1–5) help (0–3) political lean (−, liberal … +, conservative) sycophancy framing gap
help0.25_lean+1 1.31 0.43 -0.90
help0.25_lean+3 1.39 0.43 1.01
help0.25_lean+inf 1.33 0.40 1.82
help0.25_lean-1 1.25 0.38 -1.67
help0.25_lean-3 1.32 0.41 -2.06
help0.25_lean-inf 1.32 0.39 -1.97
help0.25_lean0 1.25 0.39 -1.25
help0.5_lean+1 2.48 1.30 -1.15
help0.5_lean+3 2.73 1.54 0.87
help0.5_lean+inf 2.37 1.28 1.99
help0.5_lean-1 2.19 1.05 -1.79
help0.5_lean-3 2.27 1.19 -2.02
help0.5_lean-inf 2.23 1.14 -2.14
help0.5_lean0 2.37 1.22 -1.37
help0_lean+1 1.00 0.07 -0.64
help0_lean+3 1.02 0.07 1.05
help0_lean+inf 1.01 0.05 1.75
help0_lean-1 1.00 0.06 -1.60
help0_lean-3 1.05 0.12 -2.10
help0_lean-inf 1.00 0.06 -2.00
help0_lean0 1.00 0.04 -1.00
help1_lean+1 3.43 1.99 -1.03
help1_lean+3 3.37 1.94 -0.12
help1_lean+inf 3.69 2.17 1.98
help1_lean-1 3.20 1.90 -1.75
help1_lean-3 3.06 1.75 -1.93
help1_lean-inf 3.42 2.02 -2.04
help1_lean0 3.40 2.00 -1.42
helpinf_lean+1 3.76 2.26 -1.25
helpinf_lean+3 3.69 2.25 -0.86
helpinf_lean-1 3.79 2.29 -1.58
helpinf_lean-3 3.81 2.27 -1.99
helpinf_lean0 3.67 2.12 -1.33
syc0 1.24 0.35 -0.57 1.16
syc0.5 1.29 0.49 -0.57 0.64
syc1 1.29 0.47 -0.66 0.38
syc2 1.28 0.51 -0.60 0.39
sycinf 1.23 0.42 -0.60 0.28

All numbers are means over the held-out prompts (tables/policy_judge_obs, tables/policy_syc_obs in iclr1367/rubric-rewards); judge = gpt-5.6-luna.

License

Adapters inherit the base model's license; our weights and data are released under CC-BY-4.0. See the data repo for upstream sources and known issues.

qwen

Qwen3 14B: policies fine-tuned against rubric-based rewards

LoRA adapters from the paper From Constitutions to Control: Interpretable Rewards for Aligning Language Models. Every adapter is a standard PEFT LoRA directory on Qwen/Qwen3-14B (peft 0.19.1): r = 16, alpha = 32, dropout 0.05 on q/k/v/o, bf16 (gpt-oss dequantized from MXFP4), AdamW 1e-4 with cosine decay and 3% warmup (10 steps for gpt-oss), 2 epochs, effective batch 16, max length 1,024, seed 0, final weights. Training sets (raw/sft/ in the data repo iclr1367/rubric-rewards) hold 1,000 harm + 1,000 political prompts whose targets were selected by the steered rubric reward, plus 500 Tülu-3 rows; sycophancy arms 1,000 + 250. Qwen and gpt-oss were trained and evaluated with reasoning off.

Evaluation decoding: vLLM bf16, temperature 0.7, top-p 0.9, 512 new tokens, one sample per prompt, vLLM default engine seed (0).

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Qwen/Qwen3-14B")
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-14B", torch_dtype="bfloat16")
policy = PeftModel.from_pretrained(base, "<this repo>", subfolder="free/help1_lean+3")

Layout

folder count what
free/<arm>/ 38 policies trained against the unconstrained rubric reward: the steering grid help<b>_lean<b> (β_help ∈ {0, 0.25, 0.5, 1, ∞} × β_lean ∈ {−3, −1, 0, 1, 3, ±∞}, no double-infinite corners) and the sycophancy ladder syc<b> (β ∈ {0, 0.5, 1, 2, ∞})
constrained/<arm>/ 38 the same grid against the sign-constrained reward
discrimination/<rm>_q<q>/ 42 job-recommendation policies trained from each reward model's picks at injected bias q ∈ {0, 0.2, …, 1}
dose_rm/<rm>_q<q>/ 30 the dose-injected neural reward models themselves (LoRA on OpenAssistant/reward-model-deberta-v3-large-v2, Skywork/Skywork-Reward-V2-Llama-3.1-8B, Skywork/Skywork-Reward-V2-Llama-3.2-3B, Skywork/Skywork-Reward-V2-Llama-3.2-1B, nicolinho/QRM-Gemma-2-27B; Bradley–Terry, 3 epochs, lr 1e-5 for all five, batch 2, max length 512)

Held-out behaviour of the steering-grid and sycophancy policies (unconstrained reward)

arm harm (1–5) help (0–3) political lean (−, liberal … +, conservative) sycophancy framing gap
help0.25_lean+1 1.43 0.54 -0.46
help0.25_lean+3 1.35 0.51 1.28
help0.25_lean+inf 1.41 0.52 1.63
help0.25_lean-1 1.41 0.50 -2.30
help0.25_lean-3 1.40 0.57 -2.40
help0.25_lean-inf 1.45 0.56 -2.40
help0.25_lean0 1.31 0.49 -1.99
help0.5_lean+1 2.77 1.53 -0.79
help0.5_lean+3 2.85 1.53 1.28
help0.5_lean+inf 2.89 1.56 1.72
help0.5_lean-1 2.58 1.45 -2.28
help0.5_lean-3 2.75 1.50 -2.45
help0.5_lean-inf 2.56 1.42 -2.44
help0.5_lean0 2.45 1.29 -2.00
help0_lean+1 1.01 0.09 0.20
help0_lean+3 1.03 0.09 1.23
help0_lean+inf 1.05 0.12 1.64
help0_lean-1 1.02 0.08 -2.37
help0_lean-3 1.01 0.12 -2.36
help0_lean-inf 1.00 0.09 -2.42
help0_lean0 1.03 0.11 -1.87
help1_lean+1 3.62 2.17 -0.74
help1_lean+3 3.55 2.10 0.94
help1_lean+inf 3.67 2.10 1.77
help1_lean-1 3.42 2.03 -2.35
help1_lean-3 3.61 2.08 -2.35
help1_lean-inf 3.44 2.04 -2.37
help1_lean0 3.65 2.14 -2.02
helpinf_lean+1 3.76 2.17 -0.70
helpinf_lean+3 3.64 2.12 0.54
helpinf_lean-1 3.70 2.12 -2.31
helpinf_lean-3 3.73 2.20 -2.33
helpinf_lean0 3.56 2.15 -2.10
syc0 1.12 0.35 -0.82 0.93
syc0.5 1.21 0.41 -0.68 0.32
syc1 1.21 0.43 -0.77 0.29
syc2 1.19 0.39 -0.76 0.12
sycinf 1.16 0.38 -0.73 0.21

All numbers are means over the held-out prompts (tables/policy_judge_obs, tables/policy_syc_obs in iclr1367/rubric-rewards); judge = gpt-5.6-luna.

License

Adapters inherit the base model's license; our weights and data are released under CC-BY-4.0. See the data repo for upstream sources and known issues.

gptoss

GPT-OSS 20B: policies fine-tuned against rubric-based rewards

LoRA adapters from the paper From Constitutions to Control: Interpretable Rewards for Aligning Language Models. Every adapter is a standard PEFT LoRA directory on openai/gpt-oss-20b (peft 0.19.1): r = 16, alpha = 32, dropout 0.05 on q/k/v/o, bf16 (gpt-oss dequantized from MXFP4), AdamW 1e-4 with cosine decay and 3% warmup (10 steps for gpt-oss), 2 epochs, effective batch 16, max length 1,024, seed 0, final weights. Training sets (raw/sft/ in the data repo iclr1367/rubric-rewards) hold 1,000 harm + 1,000 political prompts whose targets were selected by the steered rubric reward, plus 500 Tülu-3 rows; sycophancy arms 1,000 + 250. Qwen and gpt-oss were trained and evaluated with reasoning off.

Evaluation decoding: vLLM bf16, temperature 0.7, top-p 0.9, 512 new tokens, one sample per prompt, vLLM default engine seed (0).

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("openai/gpt-oss-20b")
base = AutoModelForCausalLM.from_pretrained("openai/gpt-oss-20b", torch_dtype="bfloat16")
policy = PeftModel.from_pretrained(base, "<this repo>", subfolder="free/help1_lean+3")

Layout

folder count what
free/<arm>/ 38 policies trained against the unconstrained rubric reward: the steering grid help<b>_lean<b> (β_help ∈ {0, 0.25, 0.5, 1, ∞} × β_lean ∈ {−3, −1, 0, 1, 3, ±∞}, no double-infinite corners) and the sycophancy ladder syc<b> (β ∈ {0, 0.5, 1, 2, ∞})
constrained/<arm>/ 38 the same grid against the sign-constrained reward
discrimination/<rm>_q<q>/ 42 job-recommendation policies trained from each reward model's picks at injected bias q ∈ {0, 0.2, …, 1}
dose_rm/<rm>_q<q>/ 30 the dose-injected neural reward models themselves (LoRA on OpenAssistant/reward-model-deberta-v3-large-v2, Skywork/Skywork-Reward-V2-Llama-3.1-8B, Skywork/Skywork-Reward-V2-Llama-3.2-3B, Skywork/Skywork-Reward-V2-Llama-3.2-1B, nicolinho/QRM-Gemma-2-27B; Bradley–Terry, 3 epochs, lr 1e-5 for all five, batch 2, max length 512)
generation/harm_softened/ 1 the LoRA that generated gpt-oss's softened harm candidates (base gpt-oss refuses the rewrite) (trained on 1,000 gemma-written softened responses; see the data repo's raw/sft/gptoss_harm_softened_generator.jsonl and the known-issues section of its card)

Held-out behaviour of the steering-grid and sycophancy policies (unconstrained reward)

arm harm (1–5) help (0–3) political lean (−, liberal … +, conservative) sycophancy framing gap
help0.25_lean+1 1.66 0.62 -0.34
help0.25_lean+3 1.43 0.55 0.69
help0.25_lean+inf 1.74 0.68 1.02
help0.25_lean-1 1.67 0.64 -1.59
help0.25_lean-3 1.34 0.41 -1.96
help0.25_lean-inf 1.57 0.59 -1.93
help0.25_lean0 1.63 0.61 -0.81
help0.5_lean+1 2.79 1.48 -0.17
help0.5_lean+3 2.89 1.57 0.73
help0.5_lean+inf 2.86 1.55 0.81
help0.5_lean-1 2.77 1.54 -1.73
help0.5_lean-3 2.67 1.45 -1.80
help0.5_lean-inf 2.79 1.44 -1.86
help0.5_lean0 2.85 1.53 -1.16
help0_lean+1 1.17 0.27 -0.36
help0_lean+3 1.18 0.28 0.79
help0_lean+inf 1.13 0.23 0.82
help0_lean-1 1.08 0.18 -1.23
help0_lean-3 1.11 0.25 -1.81
help0_lean-inf 1.10 0.18 -1.89
help0_lean0 1.21 0.28 -0.45
help1_lean+1 3.71 2.24 -0.20
help1_lean+3 3.75 2.22 0.82
help1_lean+inf 3.84 2.20 0.93
help1_lean-1 3.42 2.00 -1.81
help1_lean-3 3.38 1.95 -1.89
help1_lean-inf 3.59 2.16 -1.89
help1_lean0 3.73 2.22 -1.27
helpinf_lean+1 3.89 2.31 -0.27
helpinf_lean+3 3.95 2.44 0.35
helpinf_lean-1 3.68 2.28 -1.76
helpinf_lean-3 3.67 2.17 -1.86
helpinf_lean0 3.88 2.33 -1.18
syc0 1.21 0.33 -0.58 0.94
syc0.5 1.19 0.30 -0.70 0.76
syc1 1.15 0.26 -0.56 0.46
syc2 1.12 0.24 -0.60 0.48
sycinf 1.10 0.21 -0.74 0.36

All numbers are means over the held-out prompts (tables/policy_judge_obs, tables/policy_syc_obs in iclr1367/rubric-rewards); judge = gpt-5.6-luna.

License

Adapters inherit the base model's license; our weights and data are released under CC-BY-4.0. See the data repo for upstream sources and known issues.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for iclr1367/rubric-rewards-adapters

Finetuned
Qwen/Qwen3-14B
Adapter
(1246)
this model