Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Accuracy] PersonaPlex FP16 depth input skips the reference's Half rounding

Chiusa
#1,788 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@chaofengw-nv ci sta già lavorando.

Dal 18/10/2026.

  • #1751 di @chaofengw-nv — integrata
  • #1789 di @chaofengw-nv — chiusa senza merge

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

Summary

When the PersonaPlex depth transformer runs in FP16, the runtime builds its input differently from the reference.

  • Reference: computes depformer_in[cb](hidden) as a Half F.linear, rounds that output to Half, and then adds the
    Half previous-token embedding (depformer_text_emb / depformer_emb) with a Half add.
  • Runtime: prepare_depth_embedding_kernel (families/personaplex/runtime/sampling_kernels.cu) works on FP32 copies
    of the BF16 checkpoint tables. It sums the projection and the embedding in FP32, and the depth engine rounds the
    result to Half only once.

So the FP16 depth path skips the reference's Half rounding of the weights, of the projection output and of the sum.

Minimal counterexample

The inputs are hidden [1, 1] (Half), projection row [1, 2^-12] and embedding -1. All of these values are exact in
both BF16 and Half.

  • Reference: Half(F.linear) = 1, then 1 + (-1) = 0.
  • Current helper: Half(1 + 2^-12 - 1) = 2^-12.

The result does not depend on the reduction order.

Evidence on real data

These results come from GB300 with TensorRT 11.2, using the product kernel compiled from main 88ceb9f52.

  • Counterexample: the product kernel returns 2^-12 for both codebook 0 (text seed) and codebook 1 (audio seed),
    while the reference returns 0.
  • Native FP16 clip-7 capture: steps 0-39, all 16 codebooks, 640 depth steps.
    • The kernel received the reference's own temporal hidden state and previous token. The token was recovered uniquely
      from the reference data in all 640 steps.
    • Its Half depth input differs from the reference depformer input in every one of the 640 steps: 147,457 of 655,360
      elements, about 230 per step.
    • torch.nn.functional.linear in Half on the same GPU reproduces every reference projection bitwise.

Impact

The depth input changes in every FP16 depth step. Near-tie codebook decisions can then flip, and the generated audio
diverges. FP32 depth builds are not affected.

Status

This is a component-level defect: the fix makes the depth input match the reference at its Half boundaries. With the fix
alone, the full-model PersonaPlex audio-parity gate still fails on clip 7, so other differences remain and are tracked
separately.

Lingua principale
Python
Stelle
276
Fork
73
Merge medio
1g 12h
PR unite (30g)
150

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di NVIDIA/TensorRT-Model-Connect

Tutte le issue di NVIDIA/TensorRT-Model-Connect

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.