Skip to content

Commit 6a39ca6

Browse files
authored
Add Phi-4 runtime dependency requirements (#2784)
* Add Phi-4 runtime dependency requirements * Sync Phi-4 CI test dependencies * Keep backoff out of global requirements
1 parent 6ed955c commit 6a39ca6

4 files changed

Lines changed: 35 additions & 0 deletions

File tree

.github/scripts/deps.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ tests/models:
135135
- transformers<=4.44.2
136136

137137
test_phi_4.py:
138+
- backoff>=2.2.1
139+
- optimum>=1.24.0
138140
- scipy
139141

140142
test_llama3_2_exllamav3.py:

gptqmodel/models/definitions/phi4.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99

1010
class Phi4MMGPTQ(BaseQModel):
11+
require_pkgs = [
12+
"backoff>=2.2.1",
13+
"optimum>=1.24.0",
14+
]
1115
pre_lm_head_norm_module = "model.norm"
1216

1317
module_tree = [

tests/test_model.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from gptqmodel.looper.module_looper import ModuleLooper, StopMainLoop
3333
from gptqmodel.models import loader
3434
from gptqmodel.models.auto import _hide_unsupported_quantization_config_for_eval, _is_supported_quantization_config
35+
from gptqmodel.models.definitions.phi4 import Phi4MMGPTQ
3536

3637

3738
############ test_model_dequant.py ############
@@ -432,6 +433,11 @@ class DummyRequirePkgModel:
432433
require_pkgs = ["fakepkg>=1.0.0"]
433434

434435

436+
def test_phi4_model_definition_requires_required_packages():
437+
assert "backoff>=2.2.1" in Phi4MMGPTQ.require_pkgs
438+
assert "optimum>=1.24.0" in Phi4MMGPTQ.require_pkgs
439+
440+
435441
def test_check_versions_passes_when_version_matches(monkeypatch):
436442
monkeypatch.setattr(loader, "version", lambda _: "1.0.0")
437443

tests/test_require_pkgs.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,31 @@
33
# Contact: qubitium@modelcloud.ai, x.com/qubitium
44
# GPU=-1
55
from importlib.metadata import PackageNotFoundError
6+
from pathlib import Path
7+
import re
68

79
import pytest
810

911
from gptqmodel.models import loader
12+
from gptqmodel.models.definitions.phi4 import Phi4MMGPTQ
1013

1114

1215
class DummyModel:
1316
pass
1417

1518

19+
def _deps_yaml_block_for(test_name: str) -> set[str]:
20+
deps_yaml = Path(__file__).resolve().parents[1] / ".github" / "scripts" / "deps.yaml"
21+
text = deps_yaml.read_text(encoding="utf-8")
22+
match = re.search(rf"(?ms)^ {re.escape(test_name)}:\n((?: - .*\n)+)", text)
23+
assert match is not None, f"Missing deps.yaml entry for {test_name}"
24+
return {
25+
line.strip()[2:].strip()
26+
for line in match.group(1).splitlines()
27+
if line.strip().startswith("- ")
28+
}
29+
30+
1631
def test_check_versions_accepts_satisfied_requirements(monkeypatch):
1732
def fake_version(pkg):
1833
return {"transformers": "4.44.2"}[pkg]
@@ -47,3 +62,11 @@ def fake_version(pkg):
4762
monkeypatch.setattr(loader, "version", fake_version)
4863

4964
loader.check_versions(DummyModel, ["transformers<=4.38.2", "tokenizers<=0.15.2"])
65+
66+
67+
def test_phi4_ci_deps_cover_required_packages():
68+
pkgs = _deps_yaml_block_for("test_phi_4.py")
69+
70+
assert "scipy" in pkgs
71+
for requirement in Phi4MMGPTQ.require_pkgs:
72+
assert requirement in pkgs

0 commit comments

Comments
 (0)