Paya / code /paya /inference.py
yeabwang's picture
Paya model bundle and revised model card
534cc76
Raw History Blame Contribute Delete
1.12 kB
"""Load an exported model for inference."""
import json
from pathlib import Path
from .checkpoint import load_checkpoint
from .model import PayaModel
from .provenance import RUNTIME_CONTRACT, contained_file, sha256
from .vendor import signal
__all__ = ["load_model"]
def load_model(directory, device="cpu"):
root = Path(directory).resolve()
manifest = json.loads((root/"manifest.json").read_text(encoding="utf-8"))
if manifest.get("contract") != RUNTIME_CONTRACT:
raise ValueError("Unsupported model architecture")
for name, expected in manifest["files"].items():
if sha256(contained_file(root, name)) != expected:
raise ValueError(f"Model file checksum changed: {name}")
config = json.loads((root/"config.json").read_text(encoding="utf-8"))
assets = {name: root/name for name in (signal.ASSET_KEY, "text")}
model = PayaModel.from_assets(assets, config["preparation"], config["head"], device)
if manifest["identity"] != model.identity():
raise ValueError("Model identities differ")
load_checkpoint(root/"decision.pt", model)
return model