[Hardware][Ascend][Model] Optimize Qwen3-TTS on 310P (#4841)

Signed-off-by: zouyizhou <zouyizhou@huawei.com>
Co-authored-by: amy-why-3459 <wuhaiyan17@huawei.com>
This commit is contained in:
zyz111222andamy-why-3459 authored and GitHub committed 2026-07-15 08:57:44 +08:00
1 parent a7b6a174bc
commit 2d58070f60
9 files changed
+909 -166

No files matched your search

@@ -49,6 +49,11 @@ def _load_module(name: str, filename: str):
def _build_mock_modules(mocker: MockerFixture) -> dict[str, object]:
"""Build the dict of modules to inject into sys.modules."""
class NativeCustomOp(torch.nn.Module):
def forward(self, *args, **kwargs):
return self.forward_native(*args, **kwargs)
platforms_mock = mocker.MagicMock()
platforms_mock.current_omni_platform.supports_torch_inductor.return_value = False
platforms_mock.current_omni_platform.is_npu.return_value = False
@@ -76,6 +81,8 @@ def _build_mock_modules(mocker: MockerFixture) -> dict[str, object]:
vllm_parallel_mock = mocker.MagicMock()
vllm_parallel_mock.VocabParallelEmbedding = torch.nn.Embedding
custom_op_mock = types.ModuleType("vllm_omni.diffusion.layers.custom_op")
custom_op_mock.CustomOp = NativeCustomOp
return {
"vllm_omni": mocker.MagicMock(),
@@ -85,6 +92,7 @@ def _build_mock_modules(mocker: MockerFixture) -> dict[str, object]:
"vllm.config.vllm": vllm_config_mod,
"vllm.model_executor.model_loader.weight_utils": weight_utils_mock,
"vllm.model_executor.layers.vocab_parallel_embedding": vllm_parallel_mock,
"vllm_omni.diffusion.layers.custom_op": custom_op_mock,
"vllm_omni.model_executor": types.ModuleType("vllm_omni.model_executor"),
"vllm_omni.model_executor.models": models_pkg,
"vllm_omni.model_executor.models.common": common_pkg,
@@ -168,6 +176,38 @@ def _make_vllm_config(mocker: MockerFixture, max_num_seqs: int = 4):
return vllm_config
def test_npu_custom_ops_use_fused_norm_and_cached_rope(mocker: MockerFixture, loaded_target_classes) -> None:
common_mod = sys.modules["vllm_omni.model_executor.models.common.qwen3_code_predictor"]
cp_config, _ = _make_tiny_config(loaded_target_classes)
rms_calls = []
def npu_rms_norm(hidden_states, weight, epsilon):
rms_calls.append((hidden_states, weight, epsilon))
return hidden_states + 1, None
mocker.patch.object(common_mod.current_omni_platform, "is_npu", return_value=True)
mocker.patch.object(
common_mod,
"torch_npu",
types.SimpleNamespace(npu_rms_norm=npu_rms_norm),
create=True,
)
hidden_states = torch.zeros(1, 2, cp_config.hidden_size, dtype=torch.float16)
norm = common_mod._RMSNorm(cp_config.hidden_size, eps=cp_config.rms_norm_eps)
torch.testing.assert_close(norm.forward_npu(hidden_states), hidden_states + 1)
assert len(rms_calls) == 1
assert rms_calls[0][2] == cp_config.rms_norm_eps
rotary = common_mod._RotaryEmbedding(cp_config)
assert rotary.cos_cached.shape == (cp_config.num_code_groups + 1, cp_config.head_dim)
assert rotary.sin_cached.shape == rotary.cos_cached.shape
position_ids = torch.tensor([[0, 2, 4]])
cos, sin = rotary.forward_npu(hidden_states, position_ids)
torch.testing.assert_close(cos, rotary.cos_cached[position_ids].to(torch.float16))
torch.testing.assert_close(sin, rotary.sin_cached[position_ids].to(torch.float16))
class TestCodePredictorDtypeAlignment:
"""Test that code predictor buffers match model parameter dtype."""