Files
vllm-omni/tests/diffusion/models/magi2/test_audio_decoder.py
T

56 lines
2.1 KiB
Python
Raw Normal View History

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
from __future__ import annotations
import pytest
import torch
from vllm_omni.diffusion.models.magi2.audio_decoder import (
convert_stable_audio_decoder_key,
convert_stable_audio_decoder_state_dict,
)
pytestmark = [pytest.mark.diffusion, pytest.mark.cpu, pytest.mark.core_model]
@pytest.mark.parametrize(
("source", "target"),
[
("pretransform.model.decoder.layers.0.weight_v", "conv1.weight_v"),
("pretransform.model.decoder.layers.1.layers.0.alpha", "block.0.snake1.alpha"),
("pretransform.model.decoder.layers.3.layers.1.weight_g", "block.2.conv_t1.weight_g"),
(
"pretransform.model.decoder.layers.5.layers.4.layers.2.beta",
"block.4.res_unit3.snake2.beta",
),
(
"pretransform.model.decoder.layers.2.layers.2.layers.3.weight_v",
"block.1.res_unit1.conv2.weight_v",
),
("pretransform.model.decoder.layers.6.alpha", "snake1.alpha"),
("pretransform.model.decoder.layers.7.weight_g", "conv2.weight_g"),
],
)
def test_stable_audio_decoder_key_conversion(source: str, target: str):
assert convert_stable_audio_decoder_key(source) == target
def test_stable_audio_decoder_conversion_filters_and_reshapes_snake():
alpha = torch.arange(4, dtype=torch.float32)
weight = torch.ones(2, 4, 7)
state = {
"pretransform.model.decoder.layers.6.alpha": alpha,
"pretransform.model.decoder.layers.7.weight_v": weight,
"model.model.transformer.layers.0.weight": torch.empty(1),
}
converted = convert_stable_audio_decoder_state_dict(state)
assert set(converted) == {"snake1.alpha", "conv2.weight_v"}
assert converted["snake1.alpha"].shape == (1, 4, 1)
torch.testing.assert_close(converted["snake1.alpha"].flatten(), alpha)
assert converted["conv2.weight_v"] is weight
def test_unknown_decoder_key_fails_closed():
with pytest.raises(ValueError, match="Unsupported Stable Audio decoder key"):
convert_stable_audio_decoder_key("pretransform.model.decoder.future.weight")