CharacterPlex FullFT v4 (step 2,765)

Private, research use only. A full-duplex speech-to-speech character model: a full-parameter fine-tune of NVIDIA PersonaPlex 7B (Moshi architecture, 8 agent codebooks, Mimi codec frozen). It plays a character from the front-end character sheet (fabric-character-library-v1, rendered as a v2 card) and follows narrative beats and live director notes.

This is the PRIMARY CharacterPlex checkpoint. The fallback is utkarshUY/CharacterPlex-LoRA-v1 (LoRA step 2,500). Code, serving and deployment: the private GitHub repo utkarshyadav009/CharacterPlex (docs/DEPLOY.md).

Files

File What
model.safetensors merged bf16 weights, 475 tensors, 8,371,408,896 params (same names/shapes as the base)
memory.json pinned-memory layout the model was trained with (NOTES 64 frames, card ≀ 1000 tokens, memory_trained: true); the server reads it from the weights' folder
codebooks.json 8 agent / 8 user codebooks, delays
tokenizer_spm_32k_3.model text tokenizer (from the base repo, unchanged)
tokenizer-e351c8d8-checkpoint125.safetensors Mimi audio codec (from the base repo, unchanged, frozen in training)
base_config.json the base repo's config.json
export_check.json, consolidate.json export verification: merged file vs training model, max abs logit diff 0.0, argmax agreement 1.0
SHA256SUMS SHA-256 of every file

Provenance

  • Base: nvidia/personaplex-7b-v1 @ fdaf4090a61cb315c138a1faee287ffd6c716309.
  • Training: Slurm job 47358 (8 Γ— H200), 4,609 steps, full-parameter SFT with ZeRO-2; LR temporal 2e-6, depformer 4e-6, embeddings/head 2e-6; global batch 64; cosine, warm-up 150. 7.889 B of 8.371 B params updated (depformer steps 8–15, the user-audio path, inactive). Code experimental/charplex-run @ 120dc17 (+ stop-rule fix bdd1ddb).
  • Data: v4 manifest sha256 262e0c97bdf3d6aba985eb636d047319cfceda064977525c073f3f68a114bf8a (see the dataset repo utkarshUY/CharacterPlex-Synthetic-Data-v4); gradient share ~63 % natural human dialogue, ~34 % synthetic, ~3 % acted.
  • Selection: step 2,765 chosen by the predeclared rule (weights obedience 0.30, persona 0.20, recall 0.15, talk-over 0.15, latency 0.10, UTMOS 0.10, identity floor), not the final step.

Conditioning: v2 card (required)

Use card format v2 (trainer/card_v2.py, 700-token budget) compiled from the real front-end JSON via orchestrator/fabric_adapter.py. Trait polarity is converted (front-end value β†’ 100 βˆ’ v). The model expects pinned memory segments CARD / SCENE / ROSTER / NOTES; live director notes, user facts and beat lines go into NOTES (set_notes, ~16 ms, no reconnect). v1 cards work but lose most of the director-control gain.

Results (frozen CharacterBench v2.1, matched protocol)

base LoRA 2,500 this
Persona (P+L) 5.10 5.36 5.50
Identity under a conflicting note 8.12 7.75 7.42
Director-note lift over control (pts) 0 38.9 65.9
Arc / memory reveal on cue 1.9 % 28.8 % 92.3 %
User's name recalled (no runtime memory) 69 % 38 % 19 %
Still talking at user's turn end (no floor gate) 6.5 % 21.3 % 17.1 %
Reply latency 1.20 s 1.24 s 1.29 s
UTMOS 3.06 2.94 2.91
On-cue vocal events 1 % 8 % 19 %
10-min persona, first β†’ last 3 min 5.25 β†’ 3.50 5.33 β†’ 3.83 5.92 β†’ 6.08

With the CharacterPlex runtime (not part of the weights):

  • User-fact memory (userMemory): name recall 17 β†’ 60 %, pet 6 β†’ 67 %, job 50 β†’ 65 % (CB M suite, 52 paired).
  • Floor gate (floor: {"mode": "staged", "hold": true}): talk-over at user turn end 18.8 β†’ 7.3 %, latency +0.08 s.

Limitations

  • Recall without the runtime memory is poor: the model hears and holds facts but often deflects instead of saying them.
  • Talks over the user far more than base unless the runtime floor gate is on.
  • Identity under conflicting director notes is lower than base (7.42 vs 8.12).
  • Individual traits move behaviour little; the card as a whole does.
  • Vocal events (laugh, whisper, sigh) appear on cue only ~19 % of the time; crying and screaming are unconfirmed; it does not react to the user's own laughs/sighs; gasps/long pauses sometimes fire in neutral talk.
  • Context window ~194 s; long-range facts need the runtime memory.
  • English only.

Licences

  • Weights: derivative of NVIDIA PersonaPlex 7B β€” NVIDIA Open Model License; Mimi codec and Moshi architecture from Kyutai (CC BY 4.0). Research use; keep this repo private.
  • Training data include third-party conversational corpora with their own (some non-commercial) licences; see the dataset card. Do not use commercially.
Downloads last month
-
Safetensors
Model size
8B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for utkarshUY/CharacterPlex-FullFT-v4

Finetuned
(49)
this model