Result, from the recipe README
Table with columns: metric, base (3 passes), as_exported, mask_honored, paired A-B [95%]| metric | base (3 passes) | as_exported | mask_honored | paired A-B [95%] |
|---|
| mean reply chars | 173 / 168 / 154 | 125.7 | 84.1 | +41.6 [+21.0, +63.7] |
| replies under 60 chars | 0.000 / 0.018 / 0.018 | 0.158 | 0.421 | -0.263 [-0.404, -0.123] |
| non-assistant leak (pre-registered primary) | 0 / 0 / 0 | 0.000 | 0.000 | +0.000 |
The pre-registered primary did not move: neither arm leaked non-assistant text. What moved is reply length, in the direction the mask predicts. results.json is the full comparison.
Arms in this repo
The root holds the arm the recipe README's headline number reports. Every other arm is a subfolder named after it. checkpoints/ never ships.
Table with columns: folder, arm| folder | arm |
|---|
. | mask_honored: the export's own loss_mask applied |
as_exported | as_exported: every token supervised, TRL's default |
Load
from peft import PeftModelfrom transformers import AutoModelForCausalLM base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")model = PeftModel.from_pretrained(base, "while-ai/community-loss-mask-1.5b") # the headline armmodel = PeftModel.from_pretrained(base, "while-ai/community-loss-mask-1.5b", subfolder="as_exported") # another arm
Reproduce
git clone https://github.com/whilehq/whileai-sdk && cd whileai-sdk/recipes/community/what-trl-does-with-the-loss-maskpython run.py && modal run train_modal.py
The recipe README pins the seed, the library versions and the GPU, and its Checks table says what the eval verified. Read the Learned section before quoting a number from this card.