NVFP4-QAD is sized by the pack that runs (76.8 GB), not by its 102.2 GB checkpoint minus the table

This commit is contained in:
Niko1221 committed 2026-11-08 20:52:43 +01:00
1 parent f16e297e5e
commit 82d3a03458
2 files changed
+9 -1

No files matched your search

+5
View File
@@ -18,12 +18,15 @@ SLOWER = "may run slower"
# qwen / swift / coder / unsloth (all but the three big files): the n-gram table, IQ4_NL, 28,800,138,432 bytes, a shard of its own
# unsloth UD-Q5_K_XL, UD-Q6_K_XL, Q8_0: the Q8_0 table, shard 3, 54,400,261,312 bytes
# nvfp4: the FP8 table `ple-fp8.gguf`, 51,200,246,176 bytes
# nvfp4 NVFP4-QAD: its 102.2 GB download is NVIDIA's checkpoint, which this PC converts into the pack that runs; the files that run are the converted pack, the same
# size as the other NVFP4 sets (128.0 - 51.2 = 76.8 GB), so that figure is used (owner's rule: the model files that run, minus the table)
# gyro: the table is inside the one GGUF; the catalog states the rest (its `ram_gb`: 27.6 / 35 GB), the table is the difference
# qwen36 (its own path) has none. A family this module does not know counts its whole download.
_GB = 1e9
_TABLE_BYTES = {"qwen": 28_800_138_432, "swift": 28_800_138_432, "coder": 28_800_138_432, "unsloth": 28_800_138_432, "nvfp4": 51_200_246_176}
_BIG_UNSLOTH = ("UD-Q5_K_XL", "UD-Q6_K_XL", "Q8_0")
_BIG_TABLE_BYTES = 54_400_261_312
_PACK_GB = {("nvfp4", "NVFP4-QAD"): 76.8} # sets whose download is not the files that run: the size of what runs
def table_gb(family: str | None, model: str | None, d: dict) -> float:
@@ -37,6 +40,8 @@ def table_gb(family: str | None, model: str | None, d: dict) -> float:
def files_gb(family: str | None, model: str | None, d: dict) -> float:
"""The model's files without the lookup table, in GB (one decimal): the size the label and the "Needs" column use."""
if (family, model) in _PACK_GB:
return _PACK_GB[(family, model)]
return round(float(d["download_gb"]) - table_gb(family, model, d), 1)
+4 -1
View File
@@ -25,6 +25,8 @@ class TheRule(unittest.TestCase):
("gyro", "Gyro-S"): 27.6, ("gyro", "Gyro-M"): 35.0, ("nvfp4", "NVFP4"): 76.8} # Gyro: the table is inside the file, the catalog states the rest
for (family, model), gb in want.items():
self.assertEqual(fit_label.files_gb(family, model, setup.MODELS[model]), gb, (family, model))
self.assertEqual(fit_label.files_gb("nvfp4", "NVFP4-QAD", setup.MODELS["NVFP4-QAD"]), 76.8) # the converted pack that runs, not the 102.2 GB checkpoint minus the table
self.assertEqual(fit_label.files_gb("nvfp4", "NVFP4-NVIDIA", setup.MODELS["NVFP4-NVIDIA"]), 76.8)
self.assertEqual(fit_label.files_gb("qwen36", "UD-Q6_K_XL", {"download_gb": 32.6, "ram_gb": 44}), 32.6) # its own path: no table
self.assertEqual(fit_label.files_gb("somefeedmodel", "X", {"download_gb": 10.0, "ram_gb": 8}), 10.0) # a family this module does not know counts its whole download
@@ -57,7 +59,8 @@ class TheTerminalMenu(unittest.TestCase):
self.assertEqual(rows[("unsloth", m)].words, "may run slower", m)
self.assertEqual(round(rows[("unsloth", "UD-IQ4_XS-v31")].fit_gb, 1), 64.9) # 93.7 - 28.8: over 63
self.assertEqual(rows[("qwen", "IQ3_S")].words, rows[("unsloth", "UD-IQ3_XXS")].words) # same size, same word
self.assertEqual({rows[("nvfp4", m)].words for m in ("NVFP4", "NVFP4-NVIDIA")}, {"may run slower"})
self.assertEqual({rows[("nvfp4", m)].words for m in ("NVFP4", "NVFP4-NVIDIA", "NVFP4-QAD")}, {"may run slower"}) # QAD too: the pack that runs is 76.8 GB
self.assertEqual({round(rows[("nvfp4", m)].fit_gb, 1) for m in ("NVFP4", "NVFP4-NVIDIA", "NVFP4-QAD")}, {76.8})
for key, r in rows.items():
if key[0] == "deepseek41": # the whole size (download minus the 110.6 / 202.8 GB Engram file) is the "Needs" figure
self.assertGreater(r.fit_gb, 70, key)