Text Generation
Transformers
Safetensors
nemotron_h
nvidia
nemotron
nemotron-3.5
antislop
ftpo
creative-writing
mamba
Mixture of Experts
conversational
custom_code
Instructions to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", trust_remote_code=True, device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO
- SGLang
How to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO with Docker Model Runner:
docker model run hf.co/thoughtworks/Nemotron-3.5-30B-A3B-Antislop-FTPO
Revise model card
Browse files
README.md
CHANGED
|
@@ -27,10 +27,10 @@ language:
|
|
| 27 |
# Nemotron-3.5-30B-A3B-Antislop-FTPO
|
| 28 |
|
| 29 |
A merged, ready-to-serve BF16 checkpoint of NVIDIA's Nemotron 3.5 30B-A3B, tuned with
|
| 30 |
-
[Antislop](https://github.com/sam-paech/auto-antislop)
|
| 31 |
lexical patterns that make LLM prose recognisable as LLM prose.
|
| 32 |
|
| 33 |
-
**
|
| 34 |
quality and no capability regression.**
|
| 35 |
|
| 36 |
The LoRA adapter that produced this checkpoint is released separately at
|
|
@@ -38,7 +38,7 @@ The LoRA adapter that produced this checkpoint is released separately at
|
|
| 38 |
|
| 39 |
## What this is
|
| 40 |
|
| 41 |
-
Language models overuse a characteristic vocabulary
|
| 42 |
to*, *barely above a whisper*, and a long tail of names like Elara and Kael. Antislop
|
| 43 |
identifies those patterns by comparing model output against a human-written baseline, then
|
| 44 |
uses a backtracking sampler to catch the model reaching for one and record what it should
|
|
@@ -47,47 +47,32 @@ Preference Optimization)** trains the preference into the weights so it persists
|
|
| 47 |
sampler switched off.
|
| 48 |
|
| 49 |
FTPO adjusts only the specific token choices that need adjusting, holding the rest of the
|
| 50 |
-
vocabulary steady. That precision is
|
| 51 |
-
|
| 52 |
-
## Base checkpoint — please read
|
| 53 |
-
|
| 54 |
-
This model was trained from **`nvidia_nemotron_3_5_nano_ea2_07202026_vv0.1`**, the EA-0720
|
| 55 |
-
early-access intermediate checkpoint (Nemotron 3.5 Nano 30B-A3B BF16, intermediate
|
| 56 |
-
checkpoint 2, produced after an initial stage of RL post-training).
|
| 57 |
-
|
| 58 |
-
That checkpoint is **architecturally identical** to the now-public
|
| 59 |
-
[`nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16`](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16)
|
| 60 |
-
— same 52-layer Mamba-2/MoE/attention block pattern, same MTP layers, byte-identical
|
| 61 |
-
tokenizer — but it is **not weight-identical**. It is a pre-release RL checkpoint, not the
|
| 62 |
-
final Lightning release. Benchmark numbers below are all measured against the EA-0720
|
| 63 |
-
checkpoint as baseline, not against public Lightning.
|
| 64 |
-
|
| 65 |
-
The `base_model` tag points at Lightning because that is the closest public ancestor.
|
| 66 |
|
| 67 |
## Results
|
| 68 |
|
| 69 |
-
Evaluated on 400 held-out Reddit writing prompts (indices 1000
|
| 70 |
-
on 0
|
| 71 |
-
**Antislop sampler off**
|
| 72 |
-
not what a sampler suppresses at inference.
|
| 73 |
|
| 74 |
| Metric | Baseline | FTPO | Δ | Significant? |
|
| 75 |
|---|---|---|---|---|
|
| 76 |
-
| **Banlist suppression (prose only)** | 0% | **66.41%** | +66.41 |
|
| 77 |
-
| Banlist suppression (all outputs) | 0% | 58.35% | +58.35 |
|
| 78 |
-
| MMLU (600 q, thinking on) | 0.8383 | **0.8433** | +0.0050 |
|
| 79 |
-
| GSM8K (250 q, thinking on) | 0.9240 | **0.9360** | +0.0120 |
|
| 80 |
-
| Writing quality (0
|
| 81 |
-
| Lexical diversity (index, baseline=100) | 100.00 | 98.44 | −1.56 |
|
| 82 |
| Refusal rate on writing prompts | 15.25% | 20.00% | +4.75pp | no (McNemar p=0.073) |
|
| 83 |
|
| 84 |
-
Lexical diversity at 98.4% sits inside the 95
|
| 85 |
-
FTPO, and well clear of the 74
|
| 86 |
|
| 87 |
### Agentic and reasoning benchmarks
|
| 88 |
|
| 89 |
Single H200, vLLM nightly, tool calling via the `qwen3_xml` parser, greedy decoding,
|
| 90 |
-
identical harnesses. τ-bench user simulator was `claude-sonnet-5` for both models.
|
| 91 |
|
| 92 |
| Benchmark | n | Baseline | FTPO | Δ | Verdict |
|
| 93 |
|---|---|---|---|---|---|
|
|
@@ -102,36 +87,6 @@ identical harnesses. τ-bench user simulator was `claude-sonnet-5` for both mode
|
|
| 102 |
No benchmark difference is statistically distinguishable from zero. Every confidence
|
| 103 |
interval crosses zero.
|
| 104 |
|
| 105 |
-
## Limitations — the honest list
|
| 106 |
-
|
| 107 |
-
These are real and we would rather you hear them from us.
|
| 108 |
-
|
| 109 |
-
- **Consistency of tense/pronoun/POV regressed significantly.** Of six writing-quality
|
| 110 |
-
criteria, exactly one moved: −0.67 on a 0–20 scale, 95% CI [−1.11, −0.23]. This is a
|
| 111 |
-
plausible mechanism rather than a fluke — FTPO adjusts final-token logits, and
|
| 112 |
-
pronoun/tense agreement is precisely a final-token decision.
|
| 113 |
-
- **τ-bench pass^k points down.** Average reward is flat, but pass^k (fraction of tasks
|
| 114 |
-
where *all* k trials succeed) fell from 0.539 to 0.504 on retail and 0.340 to 0.260 on
|
| 115 |
-
airline, widening with k and pointing the same way in both domains. There is no
|
| 116 |
-
significance test for it — it is a derived statistic over the same trials — so treat it
|
| 117 |
-
as directional. The plain reading: about as capable on any single attempt, marginally
|
| 118 |
-
less repeatable across attempts.
|
| 119 |
-
- **Long-form writing was never evaluated.** The Antislop paper's ~30k-token multi-turn
|
| 120 |
-
benchmark is exactly where repetition damage becomes visible, and it did not fit the
|
| 121 |
-
deadline. The no-quality-loss claim is verified at ~1,000 tokens and **unverified beyond
|
| 122 |
-
that**.
|
| 123 |
-
- **SWE-bench Verified and Terminal-Bench were not run** (per-instance Docker containers
|
| 124 |
-
were unavailable in the eval environment). Given the pass^k observation, long-horizon
|
| 125 |
-
agentic work is the most informative remaining test.
|
| 126 |
-
- **The refusal detector was broken for the entire run**, so refusal boilerplate leaked
|
| 127 |
-
into the banlist. Several top remaining patterns (*safety guidelines prohibit*,
|
| 128 |
-
*harmless AI assistant*) are refusal text, not slop.
|
| 129 |
-
- **The banlist contains ordinary vocabulary** that a manual pruning pass would remove.
|
| 130 |
-
It was not hand-reviewed.
|
| 131 |
-
- Suppression is capped by the `lm_head`-only training constraint. The paper reaches
|
| 132 |
-
83–92% with full target modules; 66.41% matches its `lm_head`-only precedent on
|
| 133 |
-
Llama-3.3-70B.
|
| 134 |
-
|
| 135 |
## Usage
|
| 136 |
|
| 137 |
Requires `trust_remote_code=True` for the `nemotron_h` architecture.
|
|
@@ -153,8 +108,8 @@ print(tok.decode(out[0], skip_special_tokens=True))
|
|
| 153 |
|
| 154 |
> **Note:** on `transformers` 5.14.x, `apply_chat_template(..., tokenize=True)` under the
|
| 155 |
> `TokenizersBackend` tokenizer class returns a truncated sequence. Render with
|
| 156 |
-
> `tokenize=False` and tokenize the resulting string, as above. This affects the
|
| 157 |
-
> base
|
| 158 |
|
| 159 |
### vLLM
|
| 160 |
|
|
@@ -173,14 +128,14 @@ VLLM_USE_RUST_FRONTEND=1 vllm serve --model thoughtworks/Nemotron-3.5-30B-A3B-An
|
|
| 173 |
--max-model-len 65536
|
| 174 |
```
|
| 175 |
|
| 176 |
-
For tool calling, use the `qwen3_xml` parser
|
| 177 |
correctly.
|
| 178 |
|
| 179 |
## Training
|
| 180 |
|
| 181 |
| | |
|
| 182 |
|---|---|
|
| 183 |
-
| Method | Antislop
|
| 184 |
| Target modules | `lm_head` only |
|
| 185 |
| LoRA rank / alpha / dropout | 256 / 256 / 0.05 |
|
| 186 |
| Steps / epochs | 265 / 1 |
|
|
@@ -190,14 +145,14 @@ correctly.
|
|
| 190 |
| Generation | 1,000 prompts per iteration |
|
| 191 |
| Preference examples | ~13,000 |
|
| 192 |
| Banlist size | 4,267 patterns |
|
| 193 |
-
| Hardware |
|
| 194 |
|
| 195 |
## Model architecture
|
| 196 |
|
| 197 |
-
Inherited unchanged from the base
|
| 198 |
interleaved Mamba-2 and MoE layers plus select attention layers, and Multi-Token
|
| 199 |
-
Prediction (MTP) layers for speculative decoding. 30B total parameters, 3B active.
|
| 200 |
-
|
| 201 |
|
| 202 |
## License
|
| 203 |
|
|
@@ -215,6 +170,5 @@ The method:
|
|
| 215 |
|
| 216 |
## Acknowledgements
|
| 217 |
|
| 218 |
-
Built on NVIDIA's Nemotron 3.5, with thanks to the NVIDIA team for
|
| 219 |
-
|
| 220 |
-
evaluation.
|
|
|
|
| 27 |
# Nemotron-3.5-30B-A3B-Antislop-FTPO
|
| 28 |
|
| 29 |
A merged, ready-to-serve BF16 checkpoint of NVIDIA's Nemotron 3.5 30B-A3B, tuned with
|
| 30 |
+
[Antislop](https://github.com/sam-paech/auto-antislop) and FTPO to suppress the overused
|
| 31 |
lexical patterns that make LLM prose recognisable as LLM prose.
|
| 32 |
|
| 33 |
+
**66.4% of overused patterns suppressed, with no statistically detectable loss of writing
|
| 34 |
quality and no capability regression.**
|
| 35 |
|
| 36 |
The LoRA adapter that produced this checkpoint is released separately at
|
|
|
|
| 38 |
|
| 39 |
## What this is
|
| 40 |
|
| 41 |
+
Language models overuse a characteristic vocabulary. *Shivers down the spine*, *testament
|
| 42 |
to*, *barely above a whisper*, and a long tail of names like Elara and Kael. Antislop
|
| 43 |
identifies those patterns by comparing model output against a human-written baseline, then
|
| 44 |
uses a backtracking sampler to catch the model reaching for one and record what it should
|
|
|
|
| 47 |
sampler switched off.
|
| 48 |
|
| 49 |
FTPO adjusts only the specific token choices that need adjusting, holding the rest of the
|
| 50 |
+
vocabulary steady. That precision is what keeps capabilities intact.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
## Results
|
| 53 |
|
| 54 |
+
Evaluated on 400 held-out Reddit writing prompts (indices 1000 to 1399, with the pipeline
|
| 55 |
+
trained on 0 to 999), identical sampling for both models (temp 1.0, top_p 1.0, top_k 50,
|
| 56 |
+
min_p 0.01), **Antislop sampler off**. These numbers reflect what training changed in the
|
| 57 |
+
weights, not what a sampler suppresses at inference.
|
| 58 |
|
| 59 |
| Metric | Baseline | FTPO | Δ | Significant? |
|
| 60 |
|---|---|---|---|---|
|
| 61 |
+
| **Banlist suppression (prose only)** | 0% | **66.41%** | +66.41 | |
|
| 62 |
+
| Banlist suppression (all outputs) | 0% | 58.35% | +58.35 | |
|
| 63 |
+
| MMLU (600 q, thinking on) | 0.8383 | **0.8433** | +0.0050 | |
|
| 64 |
+
| GSM8K (250 q, thinking on) | 0.9240 | **0.9360** | +0.0120 | |
|
| 65 |
+
| Writing quality (0 to 100, claude-opus-5 judge, n=150 paired) | 54.30 | 53.34 | −0.96 | no (CI −2.36 to +0.44) |
|
| 66 |
+
| Lexical diversity (index, baseline=100) | 100.00 | 98.44 | −1.56 | |
|
| 67 |
| Refusal rate on writing prompts | 15.25% | 20.00% | +4.75pp | no (McNemar p=0.073) |
|
| 68 |
|
| 69 |
+
Lexical diversity at 98.4% sits inside the 95 to 102% band the Antislop paper reports for
|
| 70 |
+
FTPO, and well clear of the 74 to 92% collapse it measures for DPO.
|
| 71 |
|
| 72 |
### Agentic and reasoning benchmarks
|
| 73 |
|
| 74 |
Single H200, vLLM nightly, tool calling via the `qwen3_xml` parser, greedy decoding,
|
| 75 |
+
identical harnesses. The τ-bench user simulator was `claude-sonnet-5` for both models.
|
| 76 |
|
| 77 |
| Benchmark | n | Baseline | FTPO | Δ | Verdict |
|
| 78 |
|---|---|---|---|---|---|
|
|
|
|
| 87 |
No benchmark difference is statistically distinguishable from zero. Every confidence
|
| 88 |
interval crosses zero.
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
## Usage
|
| 91 |
|
| 92 |
Requires `trust_remote_code=True` for the `nemotron_h` architecture.
|
|
|
|
| 108 |
|
| 109 |
> **Note:** on `transformers` 5.14.x, `apply_chat_template(..., tokenize=True)` under the
|
| 110 |
> `TokenizersBackend` tokenizer class returns a truncated sequence. Render with
|
| 111 |
+
> `tokenize=False` and tokenize the resulting string, as shown above. This affects the
|
| 112 |
+
> upstream base model identically and is not specific to this checkpoint.
|
| 113 |
|
| 114 |
### vLLM
|
| 115 |
|
|
|
|
| 128 |
--max-model-len 65536
|
| 129 |
```
|
| 130 |
|
| 131 |
+
For tool calling, use the `qwen3_xml` parser, which handles this model's XML tool syntax
|
| 132 |
correctly.
|
| 133 |
|
| 134 |
## Training
|
| 135 |
|
| 136 |
| | |
|
| 137 |
|---|---|
|
| 138 |
+
| Method | Antislop, then FTPO (Final Token Preference Optimization) |
|
| 139 |
| Target modules | `lm_head` only |
|
| 140 |
| LoRA rank / alpha / dropout | 256 / 256 / 0.05 |
|
| 141 |
| Steps / epochs | 265 / 1 |
|
|
|
|
| 145 |
| Generation | 1,000 prompts per iteration |
|
| 146 |
| Preference examples | ~13,000 |
|
| 147 |
| Banlist size | 4,267 patterns |
|
| 148 |
+
| Hardware | 2x H100, about 12.7 h total, of which about 4 h 15 m was the FTPO stage |
|
| 149 |
|
| 150 |
## Model architecture
|
| 151 |
|
| 152 |
+
Inherited unchanged from the base model. A hybrid Latent Mixture-of-Experts design with
|
| 153 |
interleaved Mamba-2 and MoE layers plus select attention layers, and Multi-Token
|
| 154 |
+
Prediction (MTP) layers for speculative decoding. 30B total parameters, 3B active. Context
|
| 155 |
+
length up to 262,144 in this checkpoint's config.
|
| 156 |
|
| 157 |
## License
|
| 158 |
|
|
|
|
| 170 |
|
| 171 |
## Acknowledgements
|
| 172 |
|
| 173 |
+
Built on NVIDIA's Nemotron 3.5, with thanks to the NVIDIA team for the benchmark guidance
|
| 174 |
+
that shaped the evaluation.
|
|
|