[diffusion] fix: stabilize H3 reference audio across repeated requests (#38225)

This commit is contained in:
Mick
2026-09-07 09:32:57 +08:00
committed by GitHub
parent 0afba909e7
commit b83f1bdd21
3 changed files with 37 additions and 2 deletions
@@ -140,8 +140,8 @@ def WNConv1d(*args, **kwargs):
return weight_norm(nn.Conv1d(*args, **kwargs))
@torch.jit.script
def snake(x, alpha):
# profiling JIT changes rounding after the first call when it fuses this graph
shape = x.shape
x = x.reshape(shape[0], shape[1], -1)
x = x + (alpha + 1e-9).reciprocal() * torch.sin(alpha * x).pow(2)
@@ -40,7 +40,7 @@ logger = init_logger(__name__)
# NPU/ascend) is read from sgl-project/ci-data-diffusion, where the GT-gen workflows
# publish.
SGL_TEST_FILES_CI_DATA_REPO = "sgl-project/ci-data-diffusion"
SGL_TEST_FILES_CI_DATA_REVISION = "11783b3fbd8ebb1e3509cc4590c1fff476e65511"
SGL_TEST_FILES_CI_DATA_REVISION = "285ffa7fa7a8afcfb90e2344e3f9d6ca12a5e2ea"
# The NPU pin is kept as a separate branch so ascend GT can be bumped independently
# when it's regenerated on its own cadence.
@@ -1,6 +1,9 @@
# SPDX-License-Identifier: Apache-2.0
"""MiniMax-H3 released VAE decode contract."""
import subprocess
import sys
import textwrap
from unittest import mock
import pytest
@@ -117,3 +120,35 @@ def test_audio_vae_attention_defaults_to_local_sdpa_and_allows_fa():
}
assert recording_fa.input_dtype == torch.bfloat16
assert output.dtype == torch.float32
@pytest.mark.skipif(not torch.cuda.is_available(), reason="requires CUDA")
def test_audio_snake_first_call_matches_repeated_calls():
# a fresh process prevents earlier tests from warming a profiling JIT graph
subprocess.run(
[
sys.executable,
"-c",
textwrap.dedent(
"""
import torch
from sglang.multimodal_gen.runtime.models.vaes.minimax_h3_audio_vae.audio_vae import Snake1d
torch.manual_seed(42)
activation = Snake1d(64).cuda().eval()
with torch.inference_mode():
activation.alpha.uniform_(0.1, 2.0)
x = torch.randn(2, 64, 4096, device="cuda")
original_x = x.clone()
original_alpha = activation.alpha.clone()
first = activation(x)
for _ in range(4):
torch.testing.assert_close(activation(x), first, rtol=0, atol=0)
torch.testing.assert_close(x, original_x, rtol=0, atol=0)
torch.testing.assert_close(activation.alpha, original_alpha, rtol=0, atol=0)
"""
),
],
check=True,
timeout=120,
)