[Accuracy] PersonaPlex FP16 RMSNorm keeps FP32 weights that the reference stores in Half
I maintainer di solito rispondono entro 1 giorno
@chaofengw-nv ci sta già lavorando.
Dal 18/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Summary
PersonaPlex FP16 decoder builds use RMSNorm weights at a different precision from the reference.
- Reference (pinned Moshi,
transformer.py): the reference loads the language model withdtype=torch.float16, so everyRMSNorm.alpha(BF16 in the checkpoint) is stored as Half._rms_normthen computes in FP32 withalpha.to(var), the Half value widened to FP32. - Family graph:
graph_ops.add_rms_normembeds the checkpoint weight as an FP32 constant and never rounds it to the model dtype.
Most BF16 weights are exact in Half. Small ones that land in the Half subnormal range are not. In the PersonaPlex checkpoint, 5 of the 278,528 RMSNorm weights change when rounded to Half:
| Weight | Elements | Largest relative change |
|---|---|---|
transformer.layers.0.norm1.alpha |
65 | 0.73% |
transformer.layers.1.norm1.alpha |
718, 968, 1453 | 9.1% |
transformer.layers.3.norm1.alpha |
2568 | 0.49% |
For example, transformer.layers.0.norm1.alpha[65] is -1.0207295417785645e-06 in the checkpoint and -1.0132789611816406e-06 in the reference model. The reference's runtime weights for layers 0 and 31 equal the Half rounding of the checkpoint element for element.
Minimal counterexample
Inputs: x = [3, 1, 1, 1], gamma = [-1.0207295417785645e-06, 1, 1, 1] (the real BF16 checkpoint value), eps = 1e-8. The mean of x * x is exactly 3, so neither the reduction order nor the operation grouping affects the result.
- Reference (
_rms_normon CUDA, Half weight):y[0] = -1.7285346984863281e-06. - Current graph (FP32 weight):
y[0] = -1.7881393432617188e-06.
The two results differ by one Half subnormal step. Repeating the 4-element block to the model width 4096 gives the same outcome in all 1,024 blocks.
Evidence on real data
GB300, TensorRT 11.2.0.113, the reference FP16 run of PersonaPlex audio-parity clip 7, with temporal norm1/norm2 inputs captured at layers 0 and 31, steps 0, 27 and 28:
- The reference CUDA
_rms_normreproduces every captured output exactly. - The family
add_rms_normdiffers in 8 elements over the 12 captures. One of them is element 65 of layer 0norm1at step 0, and only rounding the weight to Half removes it. - The other differences are associated with the FP32 operation grouping and reciprocal square root (a same-precision reordering). That is a separate numerical-alignment question, not part of this issue.
Impact
Every PersonaPlex RMSNorm in an FP16 (or BF16) build is affected. With this checkpoint, five weights in the first temporal layers change. FP32 builds are not affected. The full-model effect on the audio-parity profile is not established.
Suspected Location
families/personaplex/graph_ops.py, add_rms_norm.
- Lingua principale
- Python
- Stelle
- 276
- Fork
- 73
- Merge medio
- 1g 7h
- PR unite (30g)
- 166
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/TensorRT-Model-Connect
-
Docs: ITrtModule::forward() output-buffer lifetime and dtype contract are undocumentedForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NVIDIA/TensorRT-Model-Connect#1126 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 6/100
NVIDIA/TensorRT-Model-Connect#1700 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Feature: Nomic Embed Text v1.5 native embeddingsForse già presa @JiaxinD l’ha presa 20 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
NVIDIA/TensorRT-Model-Connect#1582 ·
I maintainer di solito rispondono entro 1 giorno
-
retry_backoff retries the entire multi-family GPU test run even when a single family's genuine (non-transient) failure is the causeForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
NVIDIA/TensorRT-Model-Connect#1576 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
NVIDIA/TensorRT-Model-Connect#1567 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di NVIDIA/TensorRT-Model-Connect
Issue simili
-
type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
push_gh-pages fails on master branch on forksForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertagood first issue infrastructure
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
documentation priority: high
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
a-lex-s/mealie-telegram-bot#54 ·
I maintainer di solito rispondono entro 1 giorno