[Accuracy] PersonaPlex FP16 RMSNorm keeps FP32 weights that the reference stores in Half
Maintainer thường phản hồi trong vòng 1 ngày
@chaofengw-nv đang làm issue này rồi.
Từ ngày 18/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 276
- Fork
- 73
- Merge trung bình
- 1 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 166
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NVIDIA/TensorRT-Model-Connect
-
Docs: ITrtModule::forward() output-buffer lifetime and dtype contract are undocumentedCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
NVIDIA/TensorRT-Model-Connect#1126 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 6/100
NVIDIA/TensorRT-Model-Connect#1700 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Feature: Nomic Embed Text v1.5 native embeddingsCó thể đã có người làm @JiaxinD đã nhận 20 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 12/100
NVIDIA/TensorRT-Model-Connect#1582 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
NVIDIA/TensorRT-Model-Connect#1576 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
NVIDIA/TensorRT-Model-Connect#1567 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của NVIDIA/TensorRT-Model-Connect
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
fossasia/visdom-dev#77 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
aws-cloudformation/cfn-lint#4890 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
volcengine/OpenViking#6521 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
AstrBotDevs/AstrBot#10720 ·
Maintainer thường phản hồi trong vòng 1 ngày