FastAPI service wrapping the Surya-OCR-2 model (datalab-to) served through vLLM: legacy /v1/api/ai/* endpoints, an OpenAI-compatible /v1/chat/completions endpoint, a coalescing request batcher, a local OCR CLI, Docker packaging, multilingual example outputs, and quantization/concurrency benchmarks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from pathlib import Path
|
|
|
|
import scripts.quant.build_model as bm
|
|
|
|
|
|
def test_baseline_and_online_need_no_build(tmp_path):
|
|
assert bm.needs_build("bf16") is False
|
|
assert bm.needs_build("fp8") is False
|
|
assert bm.needs_build("awq") is True
|
|
assert bm.needs_build("bnb4") is True
|
|
|
|
|
|
def test_build_is_idempotent_when_output_exists(tmp_path, monkeypatch):
|
|
out = tmp_path / "awq"
|
|
out.mkdir()
|
|
(out / "config.json").write_text("{}", encoding="utf-8")
|
|
called = {"n": 0}
|
|
|
|
def fake_compressor(*a, **k):
|
|
called["n"] += 1
|
|
|
|
monkeypatch.setattr(bm, "_build_compressor", fake_compressor)
|
|
result = bm.build_model("awq", base_model="datalab-to/surya-ocr-2", out_dir=out, calib_images=[])
|
|
assert result == out
|
|
assert called["n"] == 0 # skipped because config.json already present
|
|
|
|
|
|
def test_build_dispatches_to_compressor(tmp_path, monkeypatch):
|
|
out = tmp_path / "gptq"
|
|
seen = {}
|
|
|
|
def fake_compressor(method, base_model, out_dir, calib_images):
|
|
seen["method"] = method
|
|
out_dir.mkdir(parents=True, exist_ok=True)
|
|
(out_dir / "config.json").write_text("{}", encoding="utf-8")
|
|
|
|
monkeypatch.setattr(bm, "_build_compressor", fake_compressor)
|
|
bm.build_model("gptq", base_model="b", out_dir=out, calib_images=[])
|
|
assert seen["method"] == "gptq"
|