Instructions to use MagicLuke/duplex-refusal with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use MagicLuke/duplex-refusal with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
You need to agree to share your contact information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
Research checkpoints of a speech model trained to refuse requests when an operator instruction tells it to. They are not a safety system. By requesting access you agree to use them for research only.
Log in or Sign Up to review the conditions and access this model content.
duplex-refusal
LoRA adapters for nvidia/personaplex-7b-v1, a full-duplex speech model, that make it refuse a request when a private operator instruction arrives mid-conversation โ and answer normally when none does. The instruction is a text span the model reads but never speaks.
Versions
One folder per version; each has its own README with data, recipe, evaluation and known issues, and a
VERSION.json with the adapter's sha256 and scaling. Load a version at a pinned commit, not from a
moving main.
| version | adapter | revision | sha256 | what it is for |
|---|---|---|---|---|
v0.1 |
v0.1/lora.safetensors (775,835,968 B) |
313d94c6a347b1493984388313e744440f0028ff |
4bfe4ce2f37289a41349fb0d0e61f8bfe8bebf0a278543f7b09930cd10f068fa |
preview; run refusal_v0.1_ins step 4,800. Always answers and always refuses when told, but over-refuses benign requests: take it where over-refusal is acceptable |
v0.2.1 |
v0.2.1/lora.safetensors (775,856,664 B) |
the commit that added v0.2.1/ (pinned by sha in Daimonion's hub/registry.py) |
8dc8b45e2e6c08fdd7f538c62c4ca00c9b38b8a8454b211baeec4c44e9c3a976 |
run refusal_v0.2.1_ins step 12,000; accept and refuse trained behind the same audio, harmful spots left out of training, the two instruction-marker rows trained. Mount it when the seat must hold an ordinary conversation |
Measured 2026-09-18 by replaying the seed-set benchmark's own 8 kHz telephony caller tapes (20 tapes, 76 caller turns, the instruction spliced 2 s after the last turn):
| version | answers the caller | refuses after the alert | benign over-refusal |
|---|---|---|---|
v0.1 |
1.00 | 1.00 | 0.25 |
v0.2.1 |
0.88 | 0.94โ1.00 | 0.00 |
The refusal_v0.2_ins/ and refusal_v0.2.1_ins/ folders hold every 1,000-step checkpoint of those
two runs with a per-checkpoint eval report; they are training artefacts, not versions. v0.2.1/ is
the named, pinned copy of refusal_v0.2.1_ins/checkpoint_012000/.
Usage
The adapters target PersonaPlex with the depth decoder sliced to 8 codebooks and two extra text
tokens (<instr_start> = 32000, <instr_end> = 32001), so fold them into the base first:
huggingface-cli download MagicLuke/duplex-refusal --include "v0.2.1/*" --local-dir adapter
python -m duplex_brain.ckpt.build_checkpoint --hf-repo nvidia/personaplex-7b-v1 \
--adapter adapter/v0.2.1/lora.safetensors --scaling 2.0 --out duplex-refusal-v0.2.1.safetensors
build_checkpoint is from duplex-brain. Code and
training recipe: duplex-online-if. For v0.2.1
the two instruction-marker embedding rows are trained as well and must be folded with the rest of the
adapter (VERSION.json says ft_instr_embed: true).
- Downloads last month
- -