Instructions to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO-LoRA with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO-LoRA with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Configuration Parsing Warning:In adapter_config.json: "peft.task_type" must be a string
Nemotron-3.5-30B-A3B-Antislop-FTPO, LoRA adapter
The 842 MB LoRA adapter produced by running Antislop and FTPO against NVIDIA's Nemotron 3.5 30B-A3B. This repo holds the training delta on its own.
To run the model, use the merged checkpoint instead: thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO. That repo carries the full model card and benchmark tables. This one covers what is specific to the adapter.
Configuration
| PEFT type | LoRA |
| Target modules | lm_head only |
| Rank (r) | 256 |
| Alpha | 256 |
| Dropout | 0.05 |
| Trainable params | about 842 MB in BF16 |
Targeting lm_head alone is deliberate. FTPO adjusts final-token logits, so the output
projection is where the preference lives, and constraining training to it keeps the rest of
the model's capabilities intact. The same constraint caps achievable suppression. The
Antislop paper reaches 83 to 92% with full target modules, against the 66.41% measured
here, which matches its lm_head-only precedent on Llama-3.3-70B.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base_id = "nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"
model = AutoModelForCausalLM.from_pretrained(
base_id, torch_dtype="bfloat16", device_map="auto", trust_remote_code=True
)
model = PeftModel.from_pretrained(model, "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO-LoRA")
model = model.merge_and_unload()
tok = AutoTokenizer.from_pretrained("thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO-LoRA")
The tokenizer, chat template, and special-token map bundled here are byte-identical to the base model's, included so the adapter is self-sufficient.
Headline result
Measured with the merged checkpoint on 400 held-out prompts, Antislop sampler off:
| Metric | Baseline | FTPO |
|---|---|---|
| Banlist suppression (prose only) | 0% | 66.41% |
| Writing quality (0 to 100, n=150 paired) | 54.30 | 53.34 (n.s.) |
| MMLU (600 q) | 0.8383 | 0.8433 |
| GSM8K (250 q) | 0.9240 | 0.9360 |
Full tables and agentic benchmarks are in the merged model card.
What the adapter suppresses
The 4,267-pattern banlist is measured from this model's own output against a human baseline, not hand-written. Raw counts across the 400 held-out prompts, sampler off:
| Banned pattern | Baseline | FTPO |
|---|---|---|
| said, his voice dropping | 18 | 0 |
| panic, cold and sharp | 15 | 0 |
| heart hammered against my ribs | 12 | 1 |
| dust motes dancing | 11 | 2 |
| sharp, metallic tang | 5 | 0 |
| smelled of ozone and old paper | 5 | 0 |
| Elias (as protagonist name) | 244 | 44 |
| Kael | 204 | 47 |
More examples, including assistant register bleeding into fiction, are on the merged model card.
Not included
The frozen FTPO reference adapter used during training (ref/, 803 MB) is not published
here. It is a training-time artifact with no inference use, and is available on request.
License
OpenMDW-1.1, matching NVIDIA's public Nemotron 3.5 Lightning releases. The Antislop framework is MIT-licensed.
Citation
The method was published at ICLR 2026:
@inproceedings{paech2026antislop,
title = {Antislop: A Comprehensive Framework for Identifying and Eliminating
Repetitive Patterns in Language Models},
author = {Paech, Samuel and Roush, Allen and Goldfeder, Judah and Shwartz-Ziv, Ravid},
booktitle = {The Fourteenth International Conference on Learning Representations},
year = {2026},
url = {https://openreview.net/forum?id=gLcyM1khyp},
eprint = {2510.15061},
archivePrefix = {arXiv},
primaryClass = {cs.CL}
}
- Paper: ICLR 2026 poster · OpenReview · arXiv:2510.15061
- Code: github.com/sam-paech/auto-antislop (MIT)
- Downloads last month
- 24