Instructions to use utkarshUY/CharacterPlex-LoRA-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Moshi
How to use utkarshUY/CharacterPlex-LoRA-v1 with Moshi:
# pip install moshi # Run the interactive web server python -m moshi.server --hf-repo "utkarshUY/CharacterPlex-LoRA-v1" # Then open https://localhost:8998 in your browser
# pip install moshi import torch from moshi.models import loaders # Load checkpoint info from HuggingFace checkpoint = loaders.CheckpointInfo.from_hf_repo("utkarshUY/CharacterPlex-LoRA-v1") # Load the Mimi audio codec mimi = checkpoint.get_mimi(device="cuda") mimi.set_num_codebooks(8) # Encode audio (24kHz, mono) wav = torch.randn(1, 1, 24000 * 10) # [batch, channels, samples] with torch.no_grad(): codes = mimi.encode(wav.cuda()) decoded = mimi.decode(codes) - Notebooks
- Google Colab
- Kaggle
CharacterPlex LoRA v1 (step 2,500, no G)
Private, research use only. The FALLBACK CharacterPlex checkpoint: a LoRA fine-tune of NVIDIA PersonaPlex 7B
for full-duplex character role-play with pinned card memory and live director NOTES. It was the validated demo
checkpoint before the full-parameter run; the primary model is utkarshUY/CharacterPlex-FullFT-v4.
Code and deployment: private GitHub repo utkarshyadav009/CharacterPlex (docs/DEPLOY.md, profile fallback).
Files
| File | What |
|---|---|
merged/model.safetensors |
use this for inference: base + LoRA merged, bf16, 475 tensors (same names/shapes as the base) |
merged/memory.json, merged/codebooks.json |
pinned-memory layout and codebooks; the server reads them from the weights' folder |
adapter/lora_step-0002500.pt |
the authoritative LoRA adapter, fp32, 730 tensors (*.lora.A / *.lora.B), as saved by the trainer |
adapter/lora_step-0002500.safetensors |
the same tensors in safetensors (verified bit-identical to the .pt) |
export.json, export_verify.json |
merge record and verification: losses LoRA fp32 3.66993, merged fp32 3.66993, merged bf16 3.66986, base 4.41680 on the fixed batch |
train_config.yaml |
the trainer config of the run (paths are the cluster's) |
base_weights.sha256 |
SHA-256 of the base model.safetensors the adapter applies to |
tokenizer_spm_32k_3.model, tokenizer-e351c8d8-checkpoint125.safetensors |
text tokenizer and Mimi codec from the base repo, unchanged |
SHA256SUMS |
SHA-256 of every file |
Base model and adapter compatibility
- Base:
nvidia/personaplex-7b-v1@fdaf4090a61cb315c138a1faee287ffd6c716309,model.safetensorssha256db1290db583cdaa6cb4de444ed279e0b586ca2a372b41434b07a7461c8c0e2f4(gated: accept the licence on HF). - LoRA rank 128, scaling 2.0, on the temporal transformer (attention in/out, gating), the text head and the depformer (incl. its input projections). W' = W + scaling · B·A.
- The merged file is what was served and evaluated. To re-merge, use the CharacterPlex trainer
(
models/personaplex/finetune/trainer/pick_export.py <run_dir> --step 2500, which mergestrainable/step-N.ptinto the base and verifies merged vs unmerged); the adapter keys are the trainer's own module names, not PEFT names.
Training
Full-data LoRA run (8 × H200), LR 1e-5 (depformer 4e-6, new embeddings 1e-4), warm-up 150, batch 8/GPU, notes_switch
(live mid-window NOTES switching), card format v1 (card_format: view, the frozen studio card), without the "G"
recipe component. Selected at step 2,500.
Inference configuration (validated)
Card v1 (studio compiler), pinned memory with NOTES, stock voices from the base repo. Runtime memory / floor gate /
cardV2 are not needed (profile fallback: all off).
Results (frozen CharacterBench v2.1)
| base | this | FullFT v4 | |
|---|---|---|---|
| Persona (P+L) | 5.10 | 5.36 | 5.50 |
| Identity under a conflicting note | 8.12 | 7.75 | 7.42 |
| Director-note lift (pts) | 0 | 38.9 | 65.9 |
| Arc / memory reveal on cue | 1.9 % | 28.8 % | 92.3 % |
| User's name recalled | 69 % | 38 % | 19 % |
| Natural QA: false premise accepted | 34.6 % | 17.3 % | 34.6 % |
| Still talking at user's turn end | 6.5 % | 21.3 % | 17.1 % |
| Reply latency | 1.20 s | 1.24 s | 1.29 s |
| UTMOS | 3.06 | 2.94 | 2.91 |
| 10-min persona, first → last 3 min | 5.25 → 3.50 | 5.33 → 3.83 | 5.92 → 6.08 |
Limitations
Talks over the user (21 % at turn end), weaker recall than base, persona drifts over 10 minutes, literal pause-marker artefacts in some outputs (the v4 data fixed this for FullFT), English only.
Licences
Derivative of NVIDIA PersonaPlex 7B (NVIDIA Open Model License); Mimi / Moshi from Kyutai (CC BY 4.0). Training data include third-party corpora with their own (some non-commercial) licences. Research use; keep private.
- Downloads last month
- -