55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
import importlib.util
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
DEVICE_UTILS_PATH = REPO_ROOT / "funasr" / "models" / "fun_asr_nano" / "device_utils.py"
|
|
PACKAGE_MODEL_PATH = REPO_ROOT / "funasr" / "models" / "fun_asr_nano" / "model.py"
|
|
EXAMPLE_MODEL_PATH = (
|
|
REPO_ROOT / "examples" / "industrial_data_pretraining" / "fun_asr_nano" / "model.py"
|
|
)
|
|
|
|
|
|
def _load_device_utils():
|
|
spec = importlib.util.spec_from_file_location("fun_asr_nano_device_utils", DEVICE_UTILS_PATH)
|
|
module = importlib.util.module_from_spec(spec)
|
|
assert spec.loader is not None
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_resolve_autocast_device_type_keeps_npu_backend():
|
|
device_utils = _load_device_utils()
|
|
|
|
assert device_utils.resolve_autocast_device_type("npu:1") == "npu"
|
|
assert device_utils.resolve_autocast_device_type("npu") == "npu"
|
|
assert device_utils.resolve_autocast_device_type("cuda:0") == "cuda"
|
|
assert device_utils.resolve_autocast_device_type("xpu:0") == "xpu"
|
|
assert device_utils.resolve_autocast_device_type("mps") == "mps"
|
|
assert device_utils.resolve_autocast_device_type("cpu") == "cpu"
|
|
assert device_utils.resolve_autocast_device_type("unknown:0") == "cpu"
|
|
|
|
|
|
def test_device_type_from_value_treats_none_as_cpu():
|
|
device_utils = _load_device_utils()
|
|
|
|
assert device_utils._device_type_from_value(None) == "cpu"
|
|
|
|
|
|
def test_resolve_autocast_device_type_accepts_device_like_objects():
|
|
device_utils = _load_device_utils()
|
|
|
|
class DeviceLike:
|
|
type = "npu"
|
|
|
|
assert device_utils.resolve_autocast_device_type(DeviceLike()) == "npu"
|
|
|
|
|
|
def test_fun_asr_nano_autocast_calls_use_shared_resolver():
|
|
old_inline_fallback = 'device_type if device_type in ["cuda", "xpu", "mps"] else "cpu"'
|
|
|
|
for path in (PACKAGE_MODEL_PATH, EXAMPLE_MODEL_PATH):
|
|
source = path.read_text(encoding="utf-8")
|
|
assert old_inline_fallback not in source
|
|
assert source.count("resolve_autocast_device_type(") >= 2
|