Voice / tests /test_units.py
Wiself's picture
Upload tests/test_units.py with huggingface_hub
3aa179a verified
Raw History Blame Contribute Delete
78.5 kB
"""Offline unit tests: pure logic, no network. Must stay fast (<60s total)."""
import json
import os
import shutil
import struct
import sys
import tempfile
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from _helpers import IsolatedVoices, ns, voice # noqa: E402
from vlib.pack import _resolve_pack_tensors # noqa: E402
from vlib import della as voice_della # noqa: E402
import numpy as np
def write_st(path, tensors):
header, off = {}, 0
for name, (arr, dt) in tensors.items():
b = arr.tobytes()
header[name] = {"dtype": dt, "shape": list(arr.shape),
"data_offsets": [off, off + len(b)]}
off += len(b)
hj = json.dumps(header).encode()
Path(path).write_bytes(struct.pack("<Q", len(hj)) + hj
+ b"".join(t[0].tobytes() for t in tensors.values()))
def read_arr(path, name, dtype=np.float16):
raw = Path(path).read_bytes()
hs = struct.unpack("<Q", raw[:8])[0]
hdr = json.loads(raw[8:8 + hs])
info = hdr[name]
b = raw[8 + hs + info["data_offsets"][0]:8 + hs + info["data_offsets"][1]]
return np.frombuffer(b, dtype=dtype).reshape(info["shape"])
def _mktmp(self):
d = Path(tempfile.mkdtemp())
self.addCleanup(shutil.rmtree, d, True)
return d
class TestNames(unittest.TestCase):
def test_sanitize_accepts_sane(self):
for good in ("a", "ok-name_1", "StyleTune-V2", "x" * 64):
self.assertIsNotNone(voice._sanitize_voice_name(good), good)
def test_sanitize_rejects(self):
for bad in ("", " ", "my voice", "a/b", "a.b", "a:b", "delta-foo", ".", "..", "a\nb"):
self.assertIsNone(voice._sanitize_voice_name(bad), repr(bad))
def test_slugify(self):
self.assertEqual(voice._slugify_voice_name("my model"), "my-model")
self.assertEqual(voice._slugify_voice_name("My.Model-v2"), "my-model-v2")
self.assertEqual(voice._slugify_voice_name(""), "voice")
self.assertIsNotNone(voice._sanitize_voice_name(voice._slugify_voice_name("WEIRD name!!")))
def test_resolve_name_uses_slug_for_defaults(self):
self.assertEqual(voice._resolve_name(ns(name=None), "my model"), "my-model")
def test_resolve_name_rejects_explicit(self):
with self.assertRaises(SystemExit):
voice._resolve_name(ns(name="bad name!"), "fallback")
def test_public_source_passthrough(self):
for good in ("org/model", "google/gemma-4-12b", "model.gguf",
"voice-name", "", "—"):
self.assertEqual(voice._public_source(good), good, good)
def test_public_source_strips_local_paths(self):
self.assertEqual(
voice._public_source("/Users/someone/Downloads/m.gguf"), "m.gguf")
self.assertEqual(voice._public_source("./rel/m.gguf"), "m.gguf")
self.assertEqual(voice._public_source("~/m.gguf"), "m.gguf")
def test_public_source_strips_url_secrets(self):
self.assertEqual(
voice._public_source("https://user:pw@huggingface.co/o/m"),
"https://huggingface.co/o/m")
self.assertEqual(
voice._public_source("https://cdn.example/x.bin?sig=SECRET&t=1"),
"https://cdn.example/x.bin")
def test_registry_folder_lowercases(self):
self.assertTrue(str(voice._registry_folder("StyleTune-V2")).endswith("styletune-v2"))
class TestDtypes(unittest.TestCase):
def test_roundtrips(self):
arr = (np.arange(24, dtype=np.float32).reshape(4, 6) - 12) / 3
for dt, tol in (("F32", 0.0), ("F16", 1e-3), ("BF16", 2e-2)):
back = voice.decode_to_f32(voice.encode_from_f32(arr, dt), dt, (4, 6))
self.assertLessEqual(float(np.abs(arr - back).max()), tol, dt)
def test_bf16_rounds_not_truncates(self):
rng = np.random.default_rng(0)
arr = rng.normal(size=(64, 64)).astype(np.float32)
u32 = arr.view(np.uint32)
trunc = ((u32 >> 16).astype(np.uint16).astype(np.uint32) << 16).view(np.float32)
back = voice.decode_to_f32(voice.encode_from_f32(arr, "BF16"), "BF16", arr.shape)
self.assertLessEqual(float(np.abs(arr - back).max()),
float(np.abs(arr - trunc).max()) + 1e-7)
def test_rejects_garbage(self):
with self.assertRaises(ValueError):
voice.dtype_bytes("Q4_0")
with self.assertRaises(ValueError):
voice.decode_to_f32(b"\x00" * 4, "F32", (2,))
with self.assertRaises(ValueError):
voice.encode_from_f32(np.zeros(4, dtype=np.float32), "Q8_0")
class TestHeaders(unittest.TestCase):
def test_validate_catches(self):
good = {"a": {"dtype": "F32", "shape": [2], "data_offsets": [0, 8]}}
voice._validate_safetensors_header(dict(good), 100, 50)
with self.assertRaises(ValueError): # overlap
voice._validate_safetensors_header(
{"a": {"dtype": "F32", "shape": [2], "data_offsets": [0, 8]},
"b": {"dtype": "F32", "shape": [2], "data_offsets": [4, 12]}}, 100, 50)
with self.assertRaises(ValueError): # size mismatch
voice._validate_safetensors_header(
{"a": {"dtype": "F32", "shape": [4], "data_offsets": [0, 8]}}, 100, 50)
with self.assertRaises(ValueError): # unknown dtype
voice._validate_safetensors_header(
{"a": {"dtype": "Q4_0", "shape": [2], "data_offsets": [0, 8]}}, 100, 50)
with self.assertRaises(ValueError): # out of bounds
voice._validate_safetensors_header(
{"a": {"dtype": "F32", "shape": [2], "data_offsets": [0, 999]}}, 100, 50)
def test_write_read_roundtrip(self):
p = _mktmp(self) / "t.safetensors"
write_st(p, {"output.weight": (np.ones((4, 4), dtype=np.float16), "F16")})
hdr, tens = voice.read_safetensors(str(p))
self.assertIn("output.weight", tens)
def test_rewrite_preserves_others_and_guards_size(self):
d = _mktmp(self)
tgt, out = d / "t.safetensors", d / "o.safetensors"
write_st(tgt, {"output.weight": (np.zeros((4, 4), dtype=np.float16), "F16"),
"a.weight": (np.full((2, 2), 3.0, dtype=np.float16), "F16")})
voice.rewrite_safetensors_tensor(str(tgt), str(out), "output.weight",
np.ones((4, 4), dtype=np.float16).tobytes(),
"F16", (4, 4))
self.assertTrue((read_arr(out, "output.weight") == 1.0).all())
self.assertTrue((read_arr(out, "a.weight") == 3.0).all())
with self.assertRaises(SystemExit):
voice.rewrite_safetensors_tensor(str(tgt), str(d / "bad.safetensors"),
"output.weight", b"\x00" * 2, "F16", (1, 1))
class TestDetect(unittest.TestCase):
def test_exact_alias_wins(self):
self.assertEqual(voice.detect_output_tensor(["a", "lm_head.weight"], {}), "lm_head.weight")
def test_substring_alias(self):
n = "transformer.output_layer.weight"
self.assertEqual(voice.detect_output_tensor(["other", n], {}), n)
def test_tied_falls_back_to_embed(self):
self.assertEqual(voice.detect_output_tensor(
["model.embed_tokens.weight"], {"tie_word_embeddings": True}),
"model.embed_tokens.weight")
def test_untied_embed_is_last_resort(self):
self.assertEqual(voice.detect_output_tensor(["model.embed_tokens.weight"], {}),
"model.embed_tokens.weight")
self.assertIsNone(voice.detect_output_tensor(["blk.0.weight"], {}))
def test_token_embd_detected_as_head(self):
self.assertEqual(voice.detect_output_tensor(["blk.0.weight", "token_embd.weight"], None), "token_embd.weight")
self.assertEqual(voice.detect_output_tensor(["output.weight", "token_embd.weight"], None), "output.weight")
def test_largest_2d(self):
self.assertEqual(voice.largest_2d(["a", "b"], {"a": (10, 20), "b": (5, 5)}), "a")
def test_gguf_prefers_alias_over_size(self):
class FakeGGUF:
kind = "gguf"
def ref(self, n):
shapes = {"some.huge.weight": (64, 64),
"transformer.output_layer.weight": (32, 32)}
return voice.TensorRef(n, "F16", shapes[n])
names = ["some.huge.weight", "transformer.output_layer.weight"]
self.assertEqual(voice._resolve_output_name(FakeGGUF(), None, names),
"transformer.output_layer.weight")
class TestOrient(unittest.TestCase):
def test_same_transpose_miss(self):
a = np.ones((2, 3), dtype=np.float32)
self.assertIs(voice._orient(a, (2, 3), (2, 3)), a)
self.assertEqual(voice._orient(a, (2, 3), (3, 2)).shape, (3, 2))
self.assertIsNone(voice._orient(a, (2, 3), (4, 4)))
class TestQuantNets(unittest.TestCase):
def test_parse_quant(self):
self.assertEqual(voice._parse_quant_override(None), "keep")
self.assertEqual(voice._parse_quant_override("Q4_0"), "q4_0")
self.assertEqual(voice._parse_quant_override("fp16"), "f16")
self.assertIsNone(voice._parse_quant_override("bogus-quant"))
def test_retry_after_bounded(self):
self.assertEqual(voice._bounded_retry_after({"Retry-After": "3600"}, 1.0), 30)
self.assertEqual(voice._bounded_retry_after({"Retry-After": "2"}, 1.0), 2)
self.assertEqual(voice._bounded_retry_after({}, 1.5), 1.5)
def test_hf_url_table(self):
self.assertTrue(voice._is_hf_url("https://huggingface.co/o/m"))
self.assertTrue(voice._is_hf_url("https://cdn-lfs.huggingface.co/x"))
self.assertFalse(voice._is_hf_url("https://us.aws.cdn.hf.co/xet-bridge/x"))
self.assertFalse(voice._is_hf_url("https://evil.com/huggingface.co/x"))
def test_auth_never_leaks_off_host(self):
h = voice._hf_auth_headers("https://evil.com/x", {"Authorization": "Bearer S"})
self.assertNotIn("Authorization", h)
class TestGuards(IsolatedVoices):
def test_check_overwrite_refuses_symlink(self):
d = _mktmp(self)
real = d / "real.gguf"
real.write_bytes(b"x")
link = d / "link.gguf"
try:
link.symlink_to(real)
except OSError:
self.skipTest("symlinks unsupported here")
with self.assertRaises(SystemExit):
voice._check_overwrite(str(link), ns())
def test_assert_not_symlink(self):
d = _mktmp(self)
link = d / "l"
try:
link.symlink_to(d / "t")
except OSError:
self.skipTest("symlinks unsupported here")
with self.assertRaises(SystemExit):
voice._assert_not_symlink(str(link))
class TestAddCache(IsolatedVoices):
def test_add_tensor_before_metadata(self):
src = _mktmp(self)
write_st(src / "voice.safetensors",
{"output.weight": (np.zeros((4, 4), dtype=np.float16), "F16")})
(src / "voice.json").write_text(json.dumps({"name": "myadd", "source": "t"}))
voice.cmd_add(ns(safetensors=str(src / "voice.safetensors"),
json=str(src / "voice.json"), name="myadd"))
self.assertTrue((self.vdir / "myadd" / "voice.safetensors").exists())
self.assertTrue((self.vdir / "myadd" / "voice.json").exists())
def test_add_invalid_leaves_no_metadata(self):
src = _mktmp(self)
(src / "bad.safetensors").write_bytes(b"corrupt-not-safetensors")
(src / "voice.json").write_text(json.dumps({"name": "badadd"}))
with self.assertRaises(SystemExit):
voice.cmd_add(ns(safetensors=str(src / "bad.safetensors"),
json=str(src / "voice.json"), name="badadd"))
self.assertFalse((self.vdir / "badadd" / "voice.json").exists())
def test_cache_base_survives_tmp_cleanup(self):
src = _mktmp(self)
write_st(src / "base.safetensors",
{"output.weight": (np.zeros((4, 4), dtype=np.float16), "F16")})
voice._cache_base(str(src / "base.safetensors"),
self.vdir / "base" / "m.safetensors",
self.vdir / "base" / "m.json")
self.assertTrue((self.vdir / "base" / "m.safetensors").exists())
meta = json.loads((self.vdir / "base" / "m.json").read_text())
self.assertEqual(meta.get("bytes"), 4 * 4 * 2)
class TestDeltaGates(unittest.TestCase):
def _pair(self, d, marker_voice=False, marker_base=False):
import json as _j
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"output.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"output.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16")})
for p, mk in ((v, marker_voice), (b, marker_base)):
if not mk:
continue
raw = p.read_bytes()
hs = struct.unpack("<Q", raw[:8])[0]
body = raw[8 + hs:]
total = 4 * 4 * 2
hdr = {"output.weight": {"dtype": "F16", "shape": [4, 4],
"data_offsets": [0, total]},
"delta.voice.marker": {"dtype": "U8", "shape": [1],
"data_offsets": [total, total + 1]}}
hj = _j.dumps(hdr).encode()
p.write_bytes(struct.pack("<Q", len(hj)) + hj + body[:total] + b"\x01")
return v, b
def test_normal_delta_computes(self):
d = _mktmp(self)
v, b = self._pair(d)
out = voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
got = read_arr(out, "output.weight")
self.assertTrue((got == 1.0).all(), "delta must equal voice(2.0) - base(1.0)")
def test_tied_base_head_falls_back_to_embed(self):
import io
from contextlib import redirect_stdout
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16"),
"model.language_model.embed_tokens.weight": (np.full((4, 4), 7.0, dtype=np.float16), "F16")})
write_st(b, {"model.language_model.embed_tokens.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16")})
buf = io.StringIO()
with redirect_stdout(buf):
out = voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
self.assertTrue((read_arr(out, "lm_head.weight") == 1.0).all(), "head delta must equal voice head(2.0) - tied base embed(1.0)")
self.assertTrue((read_arr(out, "model.language_model.embed_tokens.weight") == 6.0).all(), "embed delta must equal voice embed(7.0) - base embed(1.0)")
self.assertIn("ties its head", buf.getvalue(), "fallback must be loud, not silent")
def test_tied_base_shape_mismatch_fails(self):
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"model.language_model.embed_tokens.weight": (np.full((4, 8), 1.0, dtype=np.float16), "F16")})
with self.assertRaises(SystemExit):
voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
def test_headless_baseless_still_fails(self):
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"blk.0.attn.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16")})
with self.assertRaises(SystemExit):
voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
def test_resolve_head_want_table(self):
E = "model.language_model.embed_tokens.weight"
F = lambda: (np.full((4, 4), 1.0, dtype=np.float16), "F16")
cases = [
("reroutes tied head to embed",
{E: F()}, ["lm_head.weight"], [E]),
("dedupes embed",
{E: F()}, ["lm_head.weight", E], [E]),
("untied unchanged",
{"lm_head.weight": F(), E: F()}, ["lm_head.weight"], ["lm_head.weight"]),
("headless unchanged",
{"blk.0.attn.weight": F()}, ["lm_head.weight"], ["lm_head.weight"]),
("cross-format alias",
{"lm_head.weight": F()}, ["output.weight"], ["lm_head.weight"]),
]
for label, tensors, want, expected in cases:
with self.subTest(label):
d = _mktmp(self)
b = d / "b.safetensors"
write_st(b, tensors)
self.assertEqual(voice._resolve_head_want(str(b), None, want), expected)
def test_role_table(self):
self.assertEqual(voice.role_of("lm_head.weight"), "head")
self.assertEqual(voice.role_of("model.output.weight"), "head")
self.assertEqual(voice.role_of("token_embd.weight"), "embed")
self.assertEqual(voice.role_of("model.language_model.embed_tokens.weight"), "embed")
self.assertEqual(voice.role_of("blk.0.ffn_down.weight"), "body")
self.assertEqual(voice.role_of(""), "body")
self.assertTrue(voice.is_tied(["model.language_model.embed_tokens.weight", "blk.0.weight"]))
self.assertTrue(voice.is_tied(["token_embd.weight"]))
self.assertFalse(voice.is_tied(["lm_head.weight", "model.language_model.embed_tokens.weight"]))
self.assertFalse(voice.is_tied(["output.weight", "token_embd.weight"]))
self.assertFalse(voice.is_tied([]))
self.assertEqual(voice.find_head(["blk.0.weight", "output.weight"]), "output.weight")
self.assertIsNone(voice.find_head(["blk.0.weight", "token_embd.weight"]))
self.assertEqual(voice.find_embed(["blk.0.weight", "token_embd.weight"]), "token_embd.weight")
def test_cross_format_head_delta_computes(self):
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"output.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"lm_head.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16"),
"model.language_model.embed_tokens.weight": (np.full((4, 4), 9.0, dtype=np.float16), "F16")})
out = voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
self.assertTrue((read_arr(out, "output.weight") == 1.0).all(), "cross-format head delta must equal voice(2.0) - base(1.0)")
def test_gguf_tied_base_delta_computes(self):
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"token_embd.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16"),
"blk.0.attn.weight": (np.full((4, 4), 5.0, dtype=np.float16), "F16")})
out = voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
def test_ambiguous_head_fails_loud(self):
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"model.lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"lm_head.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16"),
"output.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16")})
with self.assertRaises(SystemExit):
voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
def test_gguf_voice_to_st_base_cross_format(self):
from gguf import GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
vp = d / "v.gguf"
w = GGUFWriter(str(vp), "llama", use_temp_file=False)
w.add_tensor("output.weight", np.full((4, 4), 2.0, dtype=np.float16), raw_dtype=Q.F16)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
b = d / "b.safetensors"
write_st(b, {"lm_head.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16"),
"model.language_model.embed_tokens.weight": (np.full((4, 4), 9.0, dtype=np.float16), "F16")})
out = voice._compute_delta(str(vp), str(b), d / "out", "delta-x", ns())
self.assertTrue((read_arr(out, "output.weight") == 1.0).all(), "GGUF voice head must delta against ST base head")
def test_gguf_delta_chunked_matches_full(self):
# Slow path (either side GGUF) must stream dequant in bounded chunks:
# patch the seam small + unaligned, spy max slice, assert values equal
# full-dequant math and every slice bounded by the seam.
from gguf import GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
from gguf.quants import quantize
d = _mktmp(self)
shape = (64, 128)
rng = np.random.default_rng(7)
vf = (rng.normal(size=shape) * 2).astype(np.float32)
bf = (rng.normal(size=shape) * 2).astype(np.float32)
vp, bp = d / "v.gguf", d / "b.gguf"
for p, f in ((vp, vf), (bp, bf)):
w = GGUFWriter(str(p), "llama", use_temp_file=False)
w.add_tensor("output.weight", quantize(f, Q.Q8_0), raw_dtype=Q.Q8_0)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
old_chunk = voice._DELTA_CHUNK_ELEMS
voice._DELTA_CHUNK_ELEMS = 100 # small and unaligned vs Q8_0 block 32
max_slice = []
orig_slice = voice._gguf_raw_slice_to_f32
def _spy(raw, qt, off, n):
max_slice.append(n)
return orig_slice(raw, qt, off, n)
voice._gguf_raw_slice_to_f32 = _spy
try:
out = voice._compute_delta(str(vp), str(bp), d / "out", "delta-x", ns())
finally:
voice._DELTA_CHUNK_ELEMS = old_chunk
voice._gguf_raw_slice_to_f32 = orig_slice
self.assertGreater(len(max_slice), 2, "expected many bounded chunks")
self.assertLessEqual(max(max_slice), 100, max_slice[:5])
vsrc, bsrc = voice.open_source(str(vp)), voice.open_source(str(bp))
want = (vsrc.read_f32("output.weight").astype(np.float32)
- bsrc.read_f32("output.weight").astype(np.float32)).astype("float16")
got = read_arr(out, "output.weight")
self.assertTrue((got == want).all())
def test_share_safe_delta_header(self):
import json as _j
d = _mktmp(self)
home = d / "Users" / "someone" / "Desktop"
home.mkdir(parents=True)
self._pair(home)
out = voice._compute_delta(str(home / "v.safetensors"),
str(home / "b.safetensors"),
d / "out", "delta-x", ns())
outp = Path(str(out))
data = (outp / "voice.safetensors").read_bytes() \
if outp.is_dir() else outp.read_bytes()
hs = struct.unpack("<Q", data[:8])[0]
meta = _j.loads(data[8:8 + hs]).get("__metadata__", {})
blob = _j.dumps(meta)
self.assertNotIn("Users", blob)
self.assertNotIn("someone", blob)
self.assertEqual(meta.get("base"), "b.safetensors")
self.assertEqual(meta.get("voice"), "v.safetensors")
def test_verify_agrees(self):
d = _mktmp(self)
write_st(d / "v.safetensors",
{"output.weight": (np.zeros((4, 4), dtype=np.float16), "F16")})
meta = {"tensor_name": "output.weight", "shape": [4, 4],
"dtype": "F16", "type": "voice"}
self.assertEqual(voice._verify_voice_file(str(d / "v.safetensors"), meta), [])
def test_verify_flags_mismatch(self):
d = _mktmp(self)
write_st(d / "v.safetensors",
{"output.weight": (np.zeros((4, 4), dtype=np.float16), "F16")})
meta = {"tensor_name": "output.weight", "shape": [262144, 2048],
"dtype": "BF16", "type": "voice"}
warns = voice._verify_voice_file(str(d / "v.safetensors"), meta)
blob = "\n".join(warns)
self.assertIn("MISMATCH shape", blob)
self.assertIn("MISMATCH dtype", blob)
self.assertIn("file wins", blob)
def test_gguf_slice_q4k_superblocks(self):
# K-quants share scales across 256-elem superblocks: slices crossing
# superblock boundaries must equal full dequantize cut to the same range.
# (gguf lib can't quantize Q4_K here, so synthesize raw superblock bytes.)
from gguf.constants import GGMLQuantizationType as Q
from gguf.quants import dequantize
import numpy as _np
elems, bs, ts = 1024, 256, 144
raw = _np.random.default_rng(3).integers(0, 256, size=elems // bs * ts).astype(_np.uint8).tobytes()
full = dequantize(_np.frombuffer(raw, dtype=_np.uint8).reshape(-1, ts), Q.Q4_K).reshape(-1)
for off, n in ((0, 100), (200, 100), (100, 500), (900, 124), (0, 1024)):
b0 = off // bs
b1 = (off + n + bs - 1) // bs
seg = raw[b0 * ts:b1 * ts]
got = voice._gguf_raw_slice_to_f32(seg, Q.Q4_K, off - b0 * bs, n)
self.assertTrue((got == full[off:off + n]).all(), f"off={off} n={n}")
def test_niche_gates_fail_fast_non_interactive(self):
for mv, mb in ((False, True), (True, False), (True, True)):
d = _mktmp(self)
v, b = self._pair(d, marker_voice=mv, marker_base=mb)
with self.assertRaises(SystemExit, msg=f"mv={mv} mb={mb}"):
voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
class TestGetGguf(IsolatedVoices):
def test_get_from_local_gguf(self):
from gguf import GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
gp = d / "tiny.gguf"
w = GGUFWriter(str(gp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("output.weight",
np.zeros((16, 16), dtype=np.float16), raw_dtype=Q.F16)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
voice.cmd_get(ns(source=str(gp), name="tiny-gguf"))
self.assertTrue((self.vdir / "tiny-gguf" / "voice.safetensors").exists())
def test_get_from_split_repo_picks_head(self):
import types
from unittest import mock
from vlib import cmds_voices
names = ["blk.0.ffn_down.weight", "output.weight"]
stub = types.SimpleNamespace(
kind="gguf", path=None, repo=None, _reader=None, _remote=None,
names=lambda: names,
ref=lambda n: voice.TensorRef(n, "BF16", (8, 4)),
_load=lambda: None)
arr = np.zeros((8, 4), dtype=np.float16)
with mock.patch.object(cmds_voices, "open_source", return_value=stub), \
mock.patch.object(cmds_voices, "_fetch_tensor",
return_value=("bytes", None, arr.tobytes(), "BF16", (8, 4))) as ft:
voice.cmd_get(ns(source="org/m", name="x"))
self.assertEqual(ft.call_args[0][1], "output.weight")
self.assertTrue((self.vdir / "x" / "voice.safetensors").exists())
class TestGgufTensorFirst(unittest.TestCase):
def _parsed(self, tensors):
from gguf.constants import GGMLQuantizationType as Q
off, table = 0, {}
for n, (dims, dt) in tensors.items():
table[n] = (list(dims), int(Q[dt]), off, 8)
off += 8
return ("llama", 64, table)
def _patch_parse(self, mapping):
from unittest import mock
import vlib.sources as _src
return mock.patch.object(_src, "_parse_gguf_header", side_effect=lambda u: mapping[u])
def test_triage_groups_splits_drops_polluters(self):
files = ["BF16/m-00002-of-00002.gguf", "BF16/m-00001-of-00002.gguf",
"m-Q8_0.gguf", "mmproj-m.gguf", "x-imatrix.gguf"]
g, s, d = voice._triage_gguf_files(files)
self.assertEqual(g, [["BF16/m-00001-of-00002.gguf", "BF16/m-00002-of-00002.gguf"]])
self.assertEqual(s, ["m-Q8_0.gguf"])
self.assertEqual(sorted(d), ["mmproj-m.gguf", "x-imatrix.gguf"])
def test_triage_singleton_split_counts_as_single(self):
g, s, _d = voice._triage_gguf_files(["m-00001-of-00001.gguf"])
self.assertEqual(g, [])
self.assertEqual(s, ["m-00001-of-00001.gguf"])
def test_census_requires_head_and_body(self):
self.assertEqual(voice._gguf_unit_census(["blk.0.attn.weight", "output.weight"]), ("output.weight", True))
self.assertEqual(voice._gguf_unit_census(["blk.0.attn.weight", "token_embd.weight"]), ("token_embd.weight", True))
self.assertIsNone(voice._gguf_unit_census(["blk.0.attn.weight"])[0])
self.assertFalse(voice._gguf_unit_census(["output.weight"])[1])
self.assertEqual(voice._gguf_unit_census(["proj.weight"] * 1), (None, False))
def test_dtype_rank_orders_fidelity(self):
r = voice._gguf_dtype_rank
self.assertTrue(r("F32") > r("BF16") > r("F16") > r("Q8_0") > r("Q4_K") > r("IQ1_M") > r("NVFP4"))
self.assertEqual(r("NOPE"), -1)
def test_multi_source_union_prefers_best_fidelity(self):
u1 = "https://h/x/a.gguf"
u2 = "https://h/x/b.gguf"
mapping = {
u1: self._parsed({"blk.0.attn.weight": ([4, 4], "Q8_0"), "output.weight": ([8, 4], "Q8_0")}),
u2: self._parsed({"blk.1.attn.weight": ([4, 4], "BF16"), "output.weight": ([8, 4], "BF16")}),
}
with self._patch_parse(mapping):
src = voice.GgufSource(urls=[u1, u2])
self.assertEqual(src.names(), ["blk.0.attn.weight", "output.weight", "blk.1.attn.weight"])
self.assertEqual(src.ref("output.weight").dtype, "BF16")
self.assertEqual(src.ref("output.weight").shape, (4, 8))
with self.assertRaises(KeyError):
src.ref("ghost.weight")
def test_select_split_repo_for_head_shard(self):
b = "https://huggingface.co/o/m/resolve/main/"
files = ["m-BF16-00001-of-00002.gguf", "m-BF16-00002-of-00002.gguf", "m-Q8_0.gguf"]
mapping = {
b + "m-BF16-00001-of-00002.gguf": self._parsed({"blk.0.ffn_down.weight": ([8, 4], "BF16")}),
b + "m-BF16-00002-of-00002.gguf": self._parsed({"output.weight": ([8, 4], "BF16")}),
b + "m-Q8_0.gguf": self._parsed({"blk.0.attn.weight": ([4, 4], "Q8_0"), "output.weight": ([8, 4], "Q8_0")}),
}
with self._patch_parse(mapping):
src = voice._gguf_source_for_repo("o/m", "main", files)
self.assertEqual(src.urls, [b + "m-BF16-00001-of-00002.gguf", b + "m-BF16-00002-of-00002.gguf"])
self.assertIn("output.weight", src.names())
def test_select_prefers_single_when_split_headless(self):
b = "https://huggingface.co/o/m/resolve/main/"
files = ["m-00001-of-00002.gguf", "m-00002-of-00002.gguf", "m-Q8_0.gguf"]
mapping = {
b + "m-00001-of-00002.gguf": self._parsed({"blk.0.attn.weight": ([4, 4], "F16")}),
b + "m-00002-of-00002.gguf": self._parsed({"blk.1.attn.weight": ([4, 4], "F16")}),
b + "m-Q8_0.gguf": self._parsed({"blk.0.attn.weight": ([4, 4], "Q8_0"), "output.weight": ([8, 4], "Q8_0")}),
}
with self._patch_parse(mapping):
src = voice._gguf_source_for_repo("o/m", "main", files)
self.assertEqual(src.url, b + "m-Q8_0.gguf")
def test_select_fails_loud_when_nothing_resolves(self):
b = "https://huggingface.co/o/m/resolve/main/"
with self._patch_parse({b + "mmproj-x.gguf": self._parsed({"proj.weight": ([4, 4], "F16")})}):
with self.assertRaises(SystemExit):
voice._gguf_source_for_repo("o/m", "main", ["mmproj-x.gguf"])
def test_select_finds_valid_unit_past_old_cap(self):
b = "https://huggingface.co/o/m/resolve/main/"
files = [f"a{i}-Q8_0.gguf" for i in range(8)] + ["z-model.gguf"]
mapping = {b + f: self._parsed({"proj.weight": ([4, 4], "F16")}) for f in files[:8]}
mapping[b + "z-model.gguf"] = self._parsed({"blk.0.attn.weight": ([4, 4], "F16"),
"output.weight": ([8, 4], "F16")})
with self._patch_parse(mapping):
src = voice._gguf_source_for_repo("o/m", "main", files)
self.assertEqual(src.url, b + "z-model.gguf")
class TestFeedback(unittest.TestCase):
def test_fetch_bytes_small_uses_single_read(self):
from unittest import mock
import vlib.net as net
with mock.patch.object(net, "http_range", return_value=(b"xy", 206, None)) as hr, \
mock.patch.object(net, "download_range") as dr:
self.assertEqual(net._fetch_bytes_progress("http://x/f", 0, 1, "t"), b"xy")
dr.assert_not_called()
hr.assert_called_once()
def test_fetch_bytes_large_progresses_and_cleans(self):
from unittest import mock
import vlib.net as net
from vlib import ctx
d = _mktmp(self)
big = net._PROGRESS_BYTES + 8
def fake_dl(url, s, e, part_dir, etag, label=""):
part_dir.mkdir(parents=True, exist_ok=True)
(part_dir / "combined.part").write_bytes(b"z" * (e - s + 1))
return part_dir / "combined.part"
with mock.patch.object(ctx, "VOICES_DIR", d), \
mock.patch.object(net, "download_range", side_effect=fake_dl) as dr, \
mock.patch.object(net, "http_range") as hr:
self.assertEqual(net._fetch_bytes_progress("http://x/f.gguf", 0, big - 1, "head"), b"z" * big)
hr.assert_not_called()
self.assertEqual(dr.call_args[1].get("label"), "head")
self.assertFalse(any(p.is_file() for p in d.rglob("*")), "part files cleaned on success")
def test_fetch_bytes_failure_keeps_parts(self):
from unittest import mock
import vlib.net as net
from vlib import ctx
d = _mktmp(self)
def fake_dl(url, s, e, part_dir, etag, label=""):
part_dir.mkdir(parents=True, exist_ok=True)
(part_dir / "chunk_000.part").write_bytes(b"z")
raise RuntimeError("boom")
with mock.patch.object(ctx, "VOICES_DIR", d), \
mock.patch.object(net, "download_range", side_effect=fake_dl):
with self.assertRaises(RuntimeError):
net._fetch_bytes_progress("http://x/f.gguf", 0, net._PROGRESS_BYTES + 1, "head")
self.assertTrue(any(p.name == "chunk_000.part" for p in (d / ".parts").rglob("*")),
"parts stay on failure so the next run resumes")
def test_tied_note_respects_quiet(self):
import io
from contextlib import redirect_stdout
from unittest import mock
from vlib import ctx
d = _mktmp(self)
v, b = d / "v.safetensors", d / "b.safetensors"
write_st(v, {"lm_head.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
write_st(b, {"model.language_model.embed_tokens.weight": (np.full((4, 4), 1.0, dtype=np.float16), "F16")})
buf = io.StringIO()
with mock.patch.object(ctx, "QUIET", True), redirect_stdout(buf):
voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
self.assertNotIn("ties its head", buf.getvalue(), "filler must not leak through -q")
def test_lookup_opener_and_quiet(self):
import io
from contextlib import redirect_stdout
from unittest import mock
from vlib import cmds_voices, ctx
with mock.patch.object(cmds_voices, "open_source", side_effect=RuntimeError("net down")):
buf = io.StringIO()
with redirect_stdout(buf):
with self.assertRaises(SystemExit):
voice.cmd_get(ns(source="org/model", name="x"))
self.assertIn("Looking up org/model", buf.getvalue())
buf2 = io.StringIO()
with mock.patch.object(ctx, "QUIET", True), redirect_stdout(buf2):
with self.assertRaises(SystemExit):
voice.cmd_get(ns(source="org/model", name="x"))
self.assertNotIn("Looking up", buf2.getvalue())
def test_using_opener_and_quiet(self):
import io
from contextlib import redirect_stdout
from unittest import mock
from vlib import ctx
b = "https://huggingface.co/o/m/resolve/main/"
mapping = {b + "m-Q8_0.gguf": (("llama", 64, {"blk.0.attn.weight": ([4, 4], 8, 0, 8),
"output.weight": ([8, 4], 8, 0, 8)}))}
with mock.patch("vlib.sources._parse_gguf_header", side_effect=lambda u: mapping[u]):
buf = io.StringIO()
with redirect_stdout(buf):
voice._gguf_source_for_repo("o/m", "main", ["m-Q8_0.gguf"])
self.assertIn("Using m-Q8_0.gguf", buf.getvalue())
buf2 = io.StringIO()
with mock.patch.object(ctx, "QUIET", True), redirect_stdout(buf2):
voice._gguf_source_for_repo("o/m", "main", ["m-Q8_0.gguf"])
self.assertNotIn("Using", buf2.getvalue())
def test_saving_opener_and_quiet(self):
import io
from contextlib import redirect_stdout
from unittest import mock
from vlib import ctx
d = _mktmp(self)
arr = np.full((4, 4), 1.0, dtype=np.float16)
fetched = ("bytes", None, arr.tobytes(), "F16", (4, 4))
buf = io.StringIO()
with redirect_stdout(buf):
voice._write_voice(d / "v", "output.weight", fetched, {"name": "x"})
self.assertIn("Saving voice", buf.getvalue())
self.assertTrue((d / "v" / "voice.safetensors").exists())
buf2 = io.StringIO()
with mock.patch.object(ctx, "QUIET", True), redirect_stdout(buf2):
voice._write_voice(d / "v2", "output.weight", fetched, {"name": "x"})
self.assertNotIn("Saving", buf2.getvalue())
def test_preparing_opener_and_quiet(self):
import io
from contextlib import redirect_stdout
from unittest import mock
from vlib import cmds_voices, ctx
d = _mktmp(self)
v = d / "v.safetensors"
write_st(v, {"output.weight": (np.full((4, 4), 2.0, dtype=np.float16), "F16")})
with mock.patch.object(cmds_voices, "_ensure_base_tensors", side_effect=SystemExit(1)):
buf = io.StringIO()
with redirect_stdout(buf):
with self.assertRaises(SystemExit):
voice.cmd_delta(ns(voicename=str(v), base="org/model"))
self.assertIn("Preparing base", buf.getvalue())
buf2 = io.StringIO()
with mock.patch.object(ctx, "QUIET", True), redirect_stdout(buf2):
with self.assertRaises(SystemExit):
voice.cmd_delta(ns(voicename=str(v), base="org/model"))
self.assertNotIn("Preparing", buf2.getvalue())
def test_source_read_f32_large_uses_progress_path(self):
import struct
from unittest import mock
import vlib.net as net
from vlib import ctx
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
raw64 = struct.pack("<16f", *([1.0] * 16))
table = {"output.weight": ([4, 4], int(Q.F32), 0, 20000000)}
parsed = ("llama", 64, table)
def fake_dl(url, s, e, part_dir, etag, label=""):
part_dir.mkdir(parents=True, exist_ok=True)
(part_dir / "combined.part").write_bytes(raw64)
return part_dir / "combined.part"
with mock.patch("vlib.sources._parse_gguf_header", return_value=parsed), \
mock.patch.object(ctx, "VOICES_DIR", d), \
mock.patch.object(net, "download_range", side_effect=fake_dl) as dr:
src = voice.GgufSource(urls=["http://x/m.gguf"])
got = src.read_f32("output.weight")
self.assertEqual(tuple(got.shape), (4, 4))
self.assertTrue((got == 1.0).all())
self.assertTrue(dr.called, "large tensor must go through the progress path")
class TestQuantShapes(unittest.TestCase):
def _q8_voice(self, d, shape=(64, 96)):
from gguf import GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
from gguf.quants import quantize
fused = np.arange(int(np.prod(shape)), dtype=np.float32).reshape(shape)
q = quantize(fused, Q.Q8_0)
vp = d / "v.gguf"
w = GGUFWriter(str(vp), "llama", use_temp_file=False)
w.add_tensor("output.weight", q, raw_dtype=Q.Q8_0)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
return vp, fused
def test_single_tensor_artifact_keeps_logical_shape(self):
from gguf.constants import GGMLQuantizationType as Q
from gguf.quants import quantize
d = _mktmp(self)
vp, fused = self._q8_voice(d)
src = voice.open_source(str(vp))
ref = src.ref("output.weight")
raw = src.read_raw("output.weight")
out = str(d / "voice.gguf")
Path(d / "raw.bin").write_bytes(raw)
voice._write_single_tensor_gguf("output.weight", d / "raw.bin", len(raw),
ref.dtype, ref.shape, out)
back = voice.open_source(out)
self.assertEqual(tuple(back.ref("output.weight").shape), tuple(ref.shape))
self.assertEqual(back.read_raw("output.weight"), raw)
def test_transplant_cast_keeps_shape_and_bytes(self):
from gguf import GGUFReader, GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
vp, _ = self._q8_voice(d)
tp = d / "t.gguf"
w = GGUFWriter(str(tp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("output.weight", np.zeros((64, 96), dtype=np.float16),
raw_dtype=Q.F16)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
out = d / "voiced.gguf"
voice.cmd_cast(ns(target=str(tp), voice=str(vp), out=str(out)))
got = [t for t in GGUFReader(str(out)).tensors if t.name == "output.weight"][0]
self.assertEqual(tuple(reversed(tuple(int(x) for x in got.shape))), (64, 96))
src_raw = voice.open_source(str(vp)).read_raw("output.weight")
self.assertEqual(bytes(got.data), src_raw)
class TestVoicePacks(IsolatedVoices):
def _pack_pair(self, d):
write_st(d / "v.safetensors", {
"output.weight": (np.full((4, 4), 3.0, np.float16), "F16"),
"model.norm.weight": (np.full((8,), 5.0, np.float16), "F16")})
write_st(d / "b.safetensors", {
"output.weight": (np.full((4, 4), 2.0, np.float16), "F16"),
"model.norm.weight": (np.full((8,), 4.0, np.float16), "F16"),
"extra.weight": (np.zeros((2, 2), np.float16), "F16")})
return d / "v.safetensors", d / "b.safetensors"
def test_pack_delta_computes_all(self):
d = _mktmp(self)
v, b = self._pack_pair(d)
out = voice._compute_delta(str(v), str(b), d / "out", "delta-x", ns())
for name, want in (("output.weight", 1.0), ("model.norm.weight", 1.0)):
got = read_arr(out, name)
self.assertTrue((got == want).all(), name)
def test_pack_delta_missing_name_fails(self):
d = _mktmp(self)
write_st(d / "v.safetensors",
{"ghost.weight": (np.zeros((2, 2), np.float16), "F16")})
write_st(d / "b.safetensors",
{"other.weight": (np.zeros((2, 2), np.float16), "F16")})
with self.assertRaises(SystemExit):
voice._compute_delta(str(d / "v.safetensors"), str(d / "b.safetensors"),
d / "out", "delta-x", ns())
def test_tensor_cast_delta_fuses_not_replaces(self):
from gguf import GGUFReader, GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
write_st(d / "v.safetensors",
{"output.weight": (np.full((4, 4), 3.0, np.float16), "F16")})
write_st(d / "b.safetensors",
{"output.weight": (np.full((4, 4), 2.0, np.float16), "F16")})
dout = voice._compute_delta(str(d / "v.safetensors"), str(d / "b.safetensors"),
d / "dout", "delta-x", ns())
tp = d / "t.gguf"
w = GGUFWriter(str(tp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("output.weight", np.full((4, 4), 10.0, np.float16), raw_dtype=Q.F16)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
out = d / "voiced.gguf"
voice.cmd_cast(ns(target=str(tp), voice=str(dout), out=str(out)))
got = [t for t in GGUFReader(str(out)).tensors if t.name == "output.weight"][0]
# base 10 + delta (3-2) = 11. Raw-delta replace would give 1.
self.assertTrue((np.asarray(got.data, dtype=np.float32) == 11.0).all())
def test_pack_cast_gguf_fuses_all(self):
from gguf import GGUFReader, GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
v, b = self._pack_pair(d)
dout = voice._compute_delta(str(v), str(b), d / "dout", "delta-x", ns())
tp = d / "t.gguf"
w = GGUFWriter(str(tp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("output.weight", np.full((4, 4), 10.0, np.float16), raw_dtype=Q.F16)
w.add_tensor("model.norm.weight", np.full((8,), 20.0, np.float32), raw_dtype=Q.F32)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
out = d / "voiced.gguf"
voice.cmd_cast(ns(target=str(tp), voice=str(dout), out=str(out)))
back = {t.name: t for t in GGUFReader(str(out)).tensors}
self.assertTrue((np.asarray(back["output.weight"].data, dtype=np.float32) == 11.0).all())
self.assertTrue((np.asarray(back["model.norm.weight"].data, dtype=np.float32) == 21.0).all())
def test_pack_cast_safetensors_fuses_all(self):
d = _mktmp(self)
v, b = self._pack_pair(d)
dout = voice._compute_delta(str(v), str(b), d / "dout", "delta-x", ns())
write_st(d / "t.safetensors", {
"output.weight": (np.full((4, 4), 10.0, np.float16), "F16"),
"model.norm.weight": (np.full((8,), 20.0, np.float16), "F16")})
out = d / "o.safetensors"
voice.cmd_cast(ns(target=str(d / "t.safetensors"),
voice=str(dout), out=str(out)))
for name, want in (("output.weight", 11.0), ("model.norm.weight", 21.0)):
got = read_arr(out, name)
self.assertTrue((got == want).all(), name)
def test_pack_cast_safetensors_single_pass(self):
# The old chain called rewrite_safetensors_tensor once per tensor
# (O(N.file) full copies). The fused path must succeed with it disabled.
d = _mktmp(self)
v, b = self._pack_pair(d)
dout = voice._compute_delta(str(v), str(b), d / "dout", "delta-x", ns())
write_st(d / "t.safetensors", {
"output.weight": (np.full((4, 4), 10.0, np.float16), "F16"),
"model.norm.weight": (np.full((8,), 20.0, np.float16), "F16")})
out = d / "o.safetensors"
orig = voice.rewrite_safetensors_tensor
def _boom(*a, **k):
raise AssertionError("chained per-tensor rewrite used")
voice.rewrite_safetensors_tensor = _boom
try:
voice.cmd_cast(ns(target=str(d / "t.safetensors"),
voice=str(dout), out=str(out)))
finally:
voice.rewrite_safetensors_tensor = orig
for name, want in (("output.weight", 11.0), ("model.norm.weight", 21.0)):
got = read_arr(out, name)
self.assertTrue((got == want).all(), name)
class TestBaseCache(unittest.TestCase):
def _cache(self, d, tensors):
write_st(d / "base.safetensors", tensors)
return d / "base.safetensors"
def test_validate_hit(self):
d = _mktmp(self)
p = self._cache(d, {"a": (np.zeros((4, 4), np.float16), "F16")})
self.assertEqual(voice._cache_validate(str(p), ["a"]), [])
def test_validate_missing_and_truncated(self):
import struct as _st, json as _j
d = _mktmp(self)
p = self._cache(d, {"a": (np.zeros((4, 4), np.float16), "F16")})
raw = bytearray(p.read_bytes())
hs = _st.unpack("<Q", bytes(raw[:8]))[0]
hdr = _j.loads(bytes(raw[8:8 + hs]))
hdr["b"] = {"dtype": "F16", "shape": [8], "data_offsets": [32, 48]}
hj = _j.dumps(hdr).encode()
p.write_bytes(_st.pack("<Q", len(hj)) + hj + bytes(raw[8 + hs:]))
self.assertEqual(sorted(voice._cache_validate(str(p), ["a", "b", "c"])), ["b", "c"])
def test_validate_garbage(self):
d = _mktmp(self)
p = d / "base.safetensors"
p.write_bytes(b"not-a-safetensors-file")
self.assertEqual(voice._cache_validate(str(p), ["a"]), ["a"])
def test_topup_write_roundtrip(self):
d = _mktmp(self)
p = self._cache(d, {"a": (np.full((4, 4), 7.0, np.float16), "F16")})
rawf = d / "raw.bin"
rawf.write_bytes(np.full((8,), 9.0, np.float16).tobytes())
staged = [("b", np.full((2, 2), 3.0, np.float16).tobytes(), "F16", (2, 2), None),
("c", None, "F16", (8,), rawf)]
new_hdr = voice._cache_topup_write(p, staged)
self.assertEqual(sorted(k for k in new_hdr if k != "__metadata__"), ["a", "b", "c"])
for name, want in (("a", 7.0), ("b", 3.0), ("c", 9.0)):
self.assertTrue((read_arr(p, name) == want).all(), name)
class TestRunGuarded(unittest.TestCase):
def test_timeout_reaps_child(self):
import subprocess
import time
from _helpers import run_guarded
child = []
orig_popen = subprocess.Popen
class Spy(orig_popen):
def __init__(self, *a, **k):
super().__init__(*a, **k)
child.append(self)
subprocess.Popen = Spy
try:
t0 = time.time()
with self.assertRaises(subprocess.TimeoutExpired):
run_guarded(["sleep", "30"], timeout=2)
dt = time.time() - t0
finally:
subprocess.Popen = orig_popen
self.assertLess(dt, 15, dt)
self.assertIsNotNone(child[0].poll(), "child left running")
def test_fast_command_passes_through(self):
from _helpers import run_guarded
r = run_guarded(["echo", "hi"], timeout=30)
self.assertEqual((r.returncode, r.stdout.strip()), (0, "hi"))
class TestAliases(unittest.TestCase):
GGUF_NAMES = ["token_embd.weight", "blk.28.attn_o.weight", "blk.29.attn_o.weight",
"blk.29.ffn_down.weight", "output_norm.weight", "output.weight"]
def test_alias_both_directions(self):
self.assertEqual(voice._pack_aliases("model.language_model.embed_tokens.weight", self.GGUF_NAMES),
["token_embd.weight"])
self.assertEqual(voice._pack_aliases("token_embd.weight",
["model.language_model.embed_tokens.weight", "output.weight"]),
["model.language_model.embed_tokens.weight"])
self.assertEqual(voice._pack_aliases("model.language_model.layers.29.self_attn.o_proj.weight",
self.GGUF_NAMES),
["blk.29.attn_o.weight"])
self.assertEqual(voice._pack_aliases("lm_head.weight", self.GGUF_NAMES), ["output.weight"])
def test_alias_block_mismatch_is_no_match(self):
self.assertEqual(voice._pack_aliases("model.language_model.layers.28.self_attn.o_proj.weight",
["blk.29.attn_o.weight"]), [])
self.assertEqual(voice._pack_aliases("someday.weight", self.GGUF_NAMES), [])
def test_alias_ambiguous_lists_all(self):
self.assertEqual(sorted(voice._pack_aliases("model.embed_tokens.weight",
["a.token_embd.weight", "b.token_embd.weight"])),
["a.token_embd.weight", "b.token_embd.weight"])
def test_alias_modern_gguf_variants(self):
# Evidenced live: Gemma3/Qwen3 GGUFs use attn_output + post_attention_norm.
names = ["blk.29.attn_output.weight", "blk.29.post_attention_norm.weight"]
self.assertEqual(voice._pack_aliases("model.layers.29.self_attn.o_proj.weight", names),
["blk.29.attn_output.weight"])
self.assertEqual(voice._pack_aliases("model.layers.29.post_attention_layernorm.weight", names),
["blk.29.post_attention_norm.weight"])
def test_alias_glm_generations(self):
# Evidenced live: ChatGLM-style HF names vs llama.cpp GGUF names.
gguf = ["token_embd.weight", "blk.39.attn_output.weight",
"blk.39.ffn_down.weight", "output_norm.weight", "output.weight"]
self.assertEqual(voice._pack_aliases("transformer.encoder.layers.39.self_attention.dense.weight", gguf),
["blk.39.attn_output.weight"])
self.assertEqual(voice._pack_aliases("transformer.encoder.layers.39.mlp.dense_4h_to_h.weight", gguf),
["blk.39.ffn_down.weight"])
self.assertEqual(voice._pack_aliases("transformer.encoder.final_layernorm.weight", gguf),
["output_norm.weight"])
self.assertEqual(voice._pack_aliases("transformer.output_layer.weight", gguf),
["output.weight"])
def test_pack_preset_head_only(self):
# Preset is the output head, nothing else. Tied repos resolve the embed
# (it doubles as head); untied resolve lm_head.
d = _mktmp(self)
write_st(d / "tied.safetensors", {
"model.language_model.embed_tokens.weight": (np.zeros((8, 4), np.float16), "F16"),
"model.language_model.norm.weight": (np.zeros((4,), np.float16), "F16")})
write_st(d / "untied.safetensors", {
"lm_head.weight": (np.zeros((8, 4), np.float16), "F16"),
"model.embed_tokens.weight": (np.zeros((8, 4), np.float16), "F16"),
"model.norm.weight": (np.zeros((4,), np.float16), "F16")})
src = voice.open_source(str(d / "tied.safetensors"))
self.assertEqual(_resolve_pack_tensors(src, "r", None, src.names()),
["model.language_model.embed_tokens.weight"])
src = voice.open_source(str(d / "untied.safetensors"))
self.assertEqual(_resolve_pack_tensors(src, "r", None, src.names()),
["lm_head.weight"])
def test_alias_moe_experts(self):
# Evidenced live: Qwen3-30B-A3B GGUF experts vs HF experts.* names.
gguf = ["blk.5.ffn_down_exps.weight", "blk.5.ffn_gate_inp.weight"]
self.assertEqual(voice._pack_aliases("model.layers.5.experts.down_proj", gguf),
["blk.5.ffn_down_exps.weight"])
# fused HF gate_up has no 1:1 GGUF counterpart (split exps) — no match, fail loud downstream
self.assertEqual(voice._pack_aliases("model.layers.5.experts.gate_up_proj", gguf), [])
# routers never map (semantics differ per arch)
self.assertEqual(voice._pack_aliases("model.layers.5.router.per_expert_scale", gguf), [])
def test_pack_cast_bridges_naming(self):
# ST pack names onto a GGUF target speaking llama.cpp names (replace mode).
from gguf import GGUFReader, GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
d = _mktmp(self)
write_st(d / "pack.safetensors", {
"model.language_model.embed_tokens.weight": (np.full((4, 4), 3.0, np.float16), "F16"),
"lm_head.weight": (np.full((4, 4), 7.0, np.float16), "F16")})
tp = d / "t.gguf"
w = GGUFWriter(str(tp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("token_embd.weight", np.zeros((4, 4), dtype=np.float16), raw_dtype=Q.F16)
w.add_tensor("output.weight", np.zeros((4, 4), dtype=np.float16), raw_dtype=Q.F16)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
out = d / "voiced.gguf"
voice.cmd_cast(ns(target=str(tp), voice=str(d / "pack.safetensors"), out=str(out)))
back = {t.name: np.asarray(t.data, dtype=np.float32) for t in GGUFReader(str(out)).tensors}
self.assertTrue((back["token_embd.weight"] == 3.0).all())
self.assertTrue((back["output.weight"] == 7.0).all())
def test_nearest_encodable_mapping(self):
from gguf.constants import GGMLQuantizationType as Q
self.assertEqual(voice._nearest_encodable(Q.IQ4_NL), Q.Q4_0) # same 4.5bpp
self.assertEqual(voice._nearest_encodable(Q.Q4_K), Q.Q4_0)
self.assertEqual(voice._nearest_encodable(Q.Q6_K), Q.Q5_1)
def test_unencodable_target_keeps_nearest(self):
# Q4_K target (decode-only in gguf lib): fused output lands on Q4_0, not F16.
from gguf import GGUFReader, GGUFWriter
from gguf.constants import GGMLQuantizationType as Q
from gguf.quants import quant_shape_to_byte_shape
d = _mktmp(self)
logical = (256, 256)
raw = np.zeros(quant_shape_to_byte_shape(logical, Q.Q4_K), dtype=np.uint8)
tp = d / "t.gguf"
w = GGUFWriter(str(tp), "llama", use_temp_file=False)
w.add_architecture()
w.add_tensor("blk.0.ffn_down.weight", raw, raw_dtype=Q.Q4_K)
w.write_header_to_file()
w.write_kv_data_to_file()
w.write_tensors_to_file()
w.close()
got = [t for t in GGUFReader(str(tp)).tensors if t.name == "blk.0.ffn_down.weight"][0]
self.assertEqual(got.tensor_type, Q.Q4_K)
write_st(d / "v.safetensors",
{"blk.0.ffn_down.weight": (np.full(logical, 1.0, np.float16), "F16")})
write_st(d / "b.safetensors",
{"blk.0.ffn_down.weight": (np.zeros(logical, np.float16), "F16")})
dout = voice._compute_delta(str(d / "v.safetensors"), str(d / "b.safetensors"),
d / "dout", "delta-x", ns())
out = d / "voiced.gguf"
voice.cmd_cast(ns(target=str(tp), voice=str(dout), out=str(out)))
fused = [t for t in GGUFReader(str(out)).tensors if t.name == "blk.0.ffn_down.weight"][0]
self.assertEqual(fused.tensor_type, Q.Q4_0)
def test_batch_miss_reports_all_with_hints(self):
# One failure names EVERY miss (no fix-forward) with same-size hints.
import io
from contextlib import redirect_stdout
names = ["token_embd.weight", "blk.29.attn_o.weight", "other.weight"]
counts = {"token_embd.weight": 16, "blk.29.attn_o.weight": 16, "other.weight": 64}
pairs = [("model.language_model.layers.29.self_attn.o_proj.weight", (4, 4)),
("ghost.weight", (8, 8)),
("phantom.weight", (2, 2))]
buf = io.StringIO()
with redirect_stdout(buf):
with self.assertRaises(SystemExit):
voice._resolve_pack_targets(pairs, names, "t.gguf", counts)
blob = buf.getvalue()
self.assertIn("ghost.weight", blob)
self.assertIn("phantom.weight", blob)
self.assertIn("other.weight", blob) # same-size hint for the 8x8 ghost
self.assertIn("2 tensor(s)", blob) # both misses at once; the aliased one is not listed
# all-resolvable returns the mapping (exact + alias)
got = voice._resolve_pack_targets(
[("model.language_model.layers.29.self_attn.o_proj.weight", (4, 4)),
("token_embd.weight", (4, 4))],
names, "t.gguf", counts)
self.assertEqual(got, {"model.language_model.layers.29.self_attn.o_proj.weight": "blk.29.attn_o.weight",
"token_embd.weight": "token_embd.weight"})
def test_pack_cast_bridges_same_format_prefix(self):
# Qwen-style prefixed voice onto bare names: same (block, trailing
# role) + equal count maps without growing _ROLE_ALIASES.
import io
from contextlib import redirect_stdout
got = voice._resolve_pack_targets(
[("model.language_model.layers.29.self_attn.o_proj.weight", (4, 4))],
["model.layers.29.self_attn.o_proj.weight"], "t.safetensors",
{"model.layers.29.self_attn.o_proj.weight": 16})
self.assertEqual(got, {"model.language_model.layers.29.self_attn.o_proj.weight":
"model.layers.29.self_attn.o_proj.weight"})
# …but a count mismatch stays loud, not a silent wrong-slot write.
buf = io.StringIO()
with redirect_stdout(buf):
with self.assertRaises(SystemExit):
voice._resolve_pack_targets(
[("model.language_model.layers.29.self_attn.o_proj.weight", (4, 8))],
["model.layers.29.self_attn.o_proj.weight"], "t.safetensors",
{"model.layers.29.self_attn.o_proj.weight": 16})
self.assertIn("not found", buf.getvalue())
class TestEntry(IsolatedVoices):
"""Launch-path proofs: the P3 split moved commands into vlib/, so entry
identity (__main__) must be resolved explicitly, never via __file__."""
def test_entry_script_resolves_main(self):
import types
fake = types.SimpleNamespace(__file__="voice.py")
old = sys.modules.get("__main__")
sys.modules["__main__"] = fake
try:
got = voice._entry_script()
finally:
if old is not None:
sys.modules["__main__"] = old
self.assertTrue(os.path.isabs(got), got)
self.assertTrue(got.endswith("voice.py"), got)
def test_entry_script_unknown_is_none(self):
import types
old = sys.modules.get("__main__")
sys.modules["__main__"] = types.SimpleNamespace()
try:
self.assertIsNone(voice._entry_script())
finally:
if old is not None:
sys.modules["__main__"] = old
def test_venv_reexec_targets_entry(self):
# Re-exec must run voice.py (absolute) with argv intact — never the module.
import types
d = _mktmp(self)
vp = d / ".venv" / "bin"
vp.mkdir(parents=True)
(vp / "python").symlink_to(sys.executable)
from vlib import ctx
old_dir, old_main, old_argv = ctx.VOICES_DIR, sys.modules.get("__main__"), sys.argv[:]
old_venv = os.environ.pop("VOICE_NO_VENV", None)
ctx.VOICES_DIR = d
sys.modules["__main__"] = types.SimpleNamespace(__file__="voice.py")
sys.argv = ["voice.py", "delta", "x"]
captured = {}
orig_execv = os.execv
class _Stop(BaseException):
pass
os.execv = lambda p, a: captured.update(path=p, argv=a) or (_ for _ in ()).throw(_Stop())
try:
with self.assertRaises(_Stop):
voice._ensure_venv("delta")
finally:
os.execv = orig_execv
ctx.VOICES_DIR = old_dir
if old_main is not None:
sys.modules["__main__"] = old_main
sys.argv = old_argv
if old_venv is not None:
os.environ["VOICE_NO_VENV"] = old_venv
self.assertTrue(captured["argv"][1].endswith("/voice.py"), captured["argv"])
self.assertNotIn("cmds_misc", captured["argv"][1])
self.assertEqual(captured["argv"][2:], ["delta", "x"])
def test_entry_help_runs_main(self):
# The suite calls cmd_* directly and never executes main()'s parser
# wiring — a deleted flag or bad indent kills every real invocation
# while the suite stays green. This pins the entry path end to end.
import subprocess
root = Path(__file__).resolve().parent.parent
env = dict(os.environ, VOICE_NO_VENV="1")
outs = []
for argv in (["--help"], ["cast", "--help"], ["list"]):
r = subprocess.run([sys.executable, str(root / "voice.py"), *argv],
capture_output=True, text=True, timeout=120, env=env)
self.assertEqual(r.returncode, 0, (argv, r.stderr[-500:]))
outs.append(r.stdout)
self.assertIn("{get,cast,delta,graft,chorus,add,list,info,remove,cleanup,auth,report,path,doctor}", outs[0])
self.assertIn("--speak", outs[1])
def test_voice_tensors_coerces_bare_strings(self):
# Hand-written voice.json may list tensors as bare strings; readers
# must render them, never traceback (P1 crash: only.get on a str).
got, synth = voice._voice_tensors({"tensors": ["lm_head.weight"]})
self.assertEqual(got, [{"name": "lm_head.weight"}])
self.assertFalse(synth)
def test_quant_override_byte_change_fails_fast(self):
# --quant f16 on an F32 safetensors target can never fit the fixed
# offsets: fail up front with guidance, not warn-then-dump (B1).
import io
from contextlib import redirect_stdout
d = _mktmp(self)
write_st(d / "t.safetensors",
{"output.weight": (np.zeros((4, 4), np.float32), "F32")})
write_st(d / "v.safetensors",
{"output.weight": (np.zeros((4, 4), np.float32), "F32")})
header, tensors = voice.read_safetensors(str(d / "t.safetensors"))
src = voice.open_source(str(d / "v.safetensors"))
ref = src.ref("output.weight")
buf = io.StringIO()
with redirect_stdout(buf):
with self.assertRaises(SystemExit):
voice._cast_st_prepare(str(d / "t.safetensors"), tensors,
src.read_f32("output.weight"), ref, {},
ns(quant="f16"))
self.assertIn("different byte size", buf.getvalue())
def test_cancel_exits_nonzero(self):
# Abandoned prompts (EOF/decline) must exit nonzero so scripts can
# tell cancel from success (B2 contract).
from unittest import mock
from vlib.ui import _confirm
with mock.patch("builtins.input", side_effect=EOFError), \
mock.patch.object(sys.stdin, "isatty", return_value=True):
with self.assertRaises(SystemExit) as cm:
_confirm(" Overwrite? [y/N]: ",
ns(non_interactive=False, yes=False))
self.assertNotEqual(cm.exception.code, 0)
def test_requested_subset_routes_by_role(self):
# An explicitly named tensor must land in its own slot, never the
# output-first fallback (D2: embed request fitted onto lm_head).
d = _mktmp(self)
write_st(d / "v.safetensors", {
"model.embed_tokens.weight": (np.full((4, 3), 7.0, np.float16), "F16"),
"model.lm_head.weight": (np.full((8, 4), 8.0, np.float16), "F16")})
write_st(d / "t.safetensors", {
"model.embed_tokens.weight": (np.full((4, 3), 1.0, np.float16), "F16"),
"model.lm_head.weight": (np.full((8, 4), 2.0, np.float16), "F16")})
out = d / "o.safetensors"
voice.cmd_cast(ns(target=str(d / "t.safetensors"), voice=str(d / "v.safetensors"),
out=str(out), tensors=["model.embed_tokens.weight"]))
self.assertTrue((read_arr(out, "model.embed_tokens.weight", np.float16) == 7.0).all())
self.assertTrue((read_arr(out, "model.lm_head.weight", np.float16) == 2.0).all())
class TestSymlinkHardening(IsolatedVoices):
"""Proof tests for the P3 symlink hardening (local CLI, self-owned dir)."""
def test_unresolvable_path_fails_closed(self):
# Old code swallowed resolve errors and returned (fail-open).
with self.assertRaises(SystemExit):
voice._assert_not_symlink("/tmp/voices-probe\x00evil")
def test_relative_path_under_symlinked_subdir_rejected(self):
# Old code compared raw strings, so a cwd-relative in-registry path
# never matched the absolute VOICES_DIR scope and skipped the walk.
import os as _os
t = _mktmp(self)
(t / "real" / ".voices").mkdir(parents=True)
(t / "elsewhere").mkdir()
try:
(t / "real" / ".voices" / "sub").symlink_to(t / "elsewhere")
except OSError:
self.skipTest("symlinks unsupported here")
ctx_mod = sys.modules["vlib.ctx"]
old, old_ctx = voice.VOICES_DIR, ctx_mod.VOICES_DIR
prev_cwd = _os.getcwd()
try:
voice.VOICES_DIR = t / "real" / ".voices"
ctx_mod.VOICES_DIR = t / "real" / ".voices"
_os.chdir(t)
with self.assertRaises(SystemExit):
voice._assert_not_symlink("real/.voices/sub/evil")
finally:
_os.chdir(prev_cwd)
voice.VOICES_DIR = old
ctx_mod.VOICES_DIR = old_ctx
def test_scope_boundaries(self):
# Legit nested registry path: silent. Prefix-adjacent sibling
# (".voices2"-style, outside but string-matching): refused, as before.
# Genuinely unrelated user path: untouched.
(self.vdir / "myadd").mkdir()
voice._assert_not_symlink(self.vdir / "myadd" / "voice.json")
sib = self.vdir.parent / (self.vdir.name + "2")
sib.mkdir(exist_ok=True)
self.addCleanup(shutil.rmtree, sib, True)
with self.assertRaises(SystemExit):
voice._assert_not_symlink(sib / "voice.json")
voice._assert_not_symlink(_mktmp(self) / "voice.json")
def test_topup_write_refuses_symlink(self):
d = _mktmp(self)
hdr = {"a": {"dtype": "F16", "shape": [4], "data_offsets": [0, 8]}}
hj = json.dumps(hdr).encode()
real = d / "base.safetensors"
real.write_bytes(struct.pack("<Q", len(hj)) + hj + b"\x00" * 8)
link = d / "link.safetensors"
try:
link.symlink_to(real)
except OSError:
self.skipTest("symlinks unsupported here")
with self.assertRaises(SystemExit):
voice._cache_topup_write(link, [])
def test_info_renders_chorus_provenance(self):
import io
import json as _json
from contextlib import redirect_stdout
from vlib import ctx as _ctx
home = _mktmp(self)
named = home / "chorus-a-b"
named.mkdir()
arr = np.zeros((4, 4), dtype=np.float16)
write_st(named / "voice.safetensors",
{"lm_head.weight": (arr, "F16")})
(named / "voice.json").write_text(_json.dumps({
"name": "chorus-a-b", "type": "chorus", "method": "della",
"pulse": "chorus-a-x", "donor": "b", "tensor_name": "lm_head.weight",
"shape": [4, 4], "dtype": "F16",
"config": {"density": 0.9, "epsilon": 0.05, "lambda": 1.0,
"rescale": "l1", "seed": 43},
"config_hash": "abc123", "chain": ["chorus-a-x", "chorus-a-b"],
}) + "\n")
old, old_ctx = voice.VOICES_DIR, _ctx.VOICES_DIR
try:
voice.VOICES_DIR = home
_ctx.VOICES_DIR = home
buf = io.StringIO()
with redirect_stdout(buf):
voice.cmd_info(ns(voicename="chorus-a-b"))
out = buf.getvalue()
finally:
voice.VOICES_DIR = old
_ctx.VOICES_DIR = old
for want in ("Method: della", "Pulse: chorus-a-x", "Donor: b",
"Chain: chorus-a-x → chorus-a-b", "density 0.9",
"epsilon 0.05", "seed 43", "(#abc123)"):
self.assertIn(want, out)
def test_info_omits_provenance_for_plain_voices(self):
import io
import json as _json
from contextlib import redirect_stdout
from vlib import ctx as _ctx
home = _mktmp(self)
named = home / "plain"
named.mkdir()
arr = np.zeros((4, 4), dtype=np.float16)
write_st(named / "voice.safetensors",
{"lm_head.weight": (arr, "F16")})
(named / "voice.json").write_text(_json.dumps({
"name": "plain", "tensor_name": "lm_head.weight",
"shape": [4, 4], "dtype": "F16",
}) + "\n")
old, old_ctx = voice.VOICES_DIR, _ctx.VOICES_DIR
try:
voice.VOICES_DIR = home
_ctx.VOICES_DIR = home
buf = io.StringIO()
with redirect_stdout(buf):
voice.cmd_info(ns(voicename="plain"))
out = buf.getvalue()
finally:
voice.VOICES_DIR = old
_ctx.VOICES_DIR = old
for absent in ("Method:", "Pulse:", "Donor:", "Chain:", "Config:"):
self.assertNotIn(absent, out)
class TestDella(unittest.TestCase):
"""Native DELLA core (vlib/della.py): prune/combine/merge on tiny fakes."""
def test_kept_fraction_tracks_density_per_row(self):
rng = np.random.default_rng(0)
d = rng.standard_normal((8, 400)).astype(np.float32)
out = voice_della.magprune(d, density=0.5, epsilon=0.1,
rng=np.random.default_rng(7))
frac = (out != 0).mean(axis=1)
self.assertTrue(((frac > 0.40) & (frac < 0.60)).all(), frac.tolist())
# Largest-magnitude entries survive more often than the smallest.
mag = np.abs(d)
kept_mag = mag[out != 0].mean()
dropped_mag = mag[out == 0].mean()
self.assertGreater(kept_mag, dropped_mag)
def test_seeded_run_bit_identical(self):
rng = np.random.default_rng(1)
d = rng.standard_normal((6, 64)).astype(np.float32)
a = voice_della.magprune(d, density=0.8, epsilon=0.1,
rng=np.random.default_rng(42))
b = voice_della.magprune(d, density=0.8, epsilon=0.1,
rng=np.random.default_rng(42))
self.assertTrue(np.array_equal(a, b))
base = rng.standard_normal((9, 32)).astype(np.float32)
vs = [base + 1, base - 1]
m1 = voice_della.merge(base, vs, density=0.8, epsilon=0.1, seed=42)
m2 = voice_della.merge(base, vs, density=0.8, epsilon=0.1, seed=42)
self.assertTrue(np.array_equal(m1, m2))
m3 = voice_della.merge(base, vs, density=0.8, epsilon=0.1, seed=43)
self.assertFalse(np.array_equal(m1, m3))
mb1 = voice_della.merge(base, vs, density=0.8, epsilon=0.1, seed=42,
block_rows=4096)
mb2 = voice_della.merge(base, vs, density=0.8, epsilon=0.1, seed=42,
block_rows=2)
self.assertTrue(np.array_equal(mb1, mb2))
def test_density_epsilon_violations_raise(self):
d = np.ones((2, 8), dtype=np.float32)
for density, epsilon in ((0.9, 0.2), (0.05, 0.1)):
with self.assertRaises(ValueError):
voice_della.magprune(d, density=density, epsilon=epsilon)
with self.assertRaises(ValueError):
voice_della.merge(d, [d + 1], density=0.95, epsilon=0.1, seed=0)
def test_noop_and_zero_density(self):
d = np.ones((2, 8), dtype=np.float32)
self.assertTrue(np.array_equal(
voice_della.magprune(d, density=1.0, epsilon=0.1), d))
self.assertTrue((voice_della.magprune(d, density=0.0, epsilon=0.1) == 0).all())
def test_empty_voice_list_returns_base(self):
base = np.ones((3, 5), dtype=np.float32)
out = voice_della.merge(base, [])
self.assertTrue(np.array_equal(out, base))
def test_f16_in_base_dtype_out(self):
rng = np.random.default_rng(2)
base = (rng.standard_normal((4, 16)) * 2).astype(np.float16)
donor = (base.astype(np.float32) + 1).astype(np.float16)
out = voice_della.merge(base, [donor], density=0.8, epsilon=0.1, seed=1)
self.assertEqual(out.dtype, np.float16)
self.assertTrue(np.isfinite(out.astype(np.float32)).all())
def test_all_pruned_row_stays_finite(self):
tiny = np.full((2, 50), 1e-9, dtype=np.float32)
out = voice_della.magprune(tiny, density=0.05, epsilon=0.04,
rng=np.random.default_rng(0))
self.assertTrue(np.isfinite(out).all())
def test_elected_combine_matches_upstream_formula(self):
rng = np.random.default_rng(3)
base = rng.standard_normal((5, 40)).astype(np.float32)
v1, v2 = base + 1, base - 1
pruned = [voice_della.magprune(v - base, density=0.8, epsilon=0.1,
rng=np.random.default_rng(5)) for v in (v1, v2)]
got = voice_della.combine(base, pruned, [1.0, 1.0])
stacked = np.stack([p.astype(np.float32) for p in pruned])
majority = np.where(stacked.sum(0) >= 0, 1.0, -1.0)
elected = np.sign(stacked) == majority
mixed = np.where(elected, stacked, 0).sum(0)
divisor = np.where(elected, 1.0, 0).sum(0)
divisor[divisor == 0] = 1
self.assertTrue(np.allclose(got, base + mixed / divisor, atol=1e-6))
def test_per_row_l1_rescale_not_global(self):
# Per-row L1 (vlib fork) keeps each row's own sum|x|; a whole-tensor
# L1 (upstream) would scale every row by one global factor instead.
rng = np.random.default_rng(4)
scales = np.array([0.1, 1, 5, 0.5, 2, 10], dtype=np.float32)[:, None]
d = (rng.standard_normal((6, 100)).astype(np.float32)) * scales
out = voice_della.magprune(d, density=0.7, epsilon=0.1,
rng=np.random.default_rng(11))
before = np.abs(d).sum(axis=-1)
after = np.abs(out).sum(axis=-1)
live = after >= 1e-7
self.assertTrue(live.all())
self.assertTrue(np.allclose(after[live], before[live], rtol=1e-5))
if __name__ == "__main__":
unittest.main()