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

クローズ
#1,788 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@chaofengw-nv がすでに取り組んでいます。

2026年10月18日 から。

  • #1751 @chaofengw-nv による — マージ済み
  • #1789 @chaofengw-nv による — マージされずにクローズ

評価

この issue はまだ評価されていません。

説明

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.

主要言語
Python
スター
288
フォーク
73
平均マージ
1日 3時間
マージ済み PR(30日)
273

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

NVIDIA/TensorRT-Model-Connect のほかの issue

NVIDIA/TensorRT-Model-Connect の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。