embedding-bench / evals /memory.py
AmrYassinIsFree
adding more models, fix prefixs
7c4c461
from __future__ import annotations
import json
import os
import subprocess
import sys
def _measure(model_id: str, backend: str, sentences: list[str], batch_size: int) -> float:
import psutil
from models import ModelConfig
from wrapper import load_model
process = psutil.Process(os.getpid())
baseline = process.memory_info().rss
cfg = ModelConfig(name="", model_id=model_id, backend=backend)
model = load_model(cfg)
model.encode(sentences, batch_size=batch_size)
peak = process.memory_info().rss
return round((peak - baseline) / (1024 * 1024), 1)
def evaluate_memory(model_id: str, sentences: list[str], batch_size: int = 64, backend: str = "sbert") -> float:
"""Return memory delta in MB, measured in an isolated subprocess."""
payload = json.dumps({
"model_id": model_id,
"backend": backend,
"sentences": sentences,
"batch_size": batch_size,
})
result = subprocess.run(
[sys.executable, "-m", "evals.memory"],
input=payload,
capture_output=True,
text=True,
check=True,
)
return float(result.stdout.strip().splitlines()[-1])
if __name__ == "__main__":
args = json.loads(sys.stdin.read())
mb = _measure(
model_id=args["model_id"],
backend=args["backend"],
sentences=args["sentences"],
batch_size=args["batch_size"],
)
print(mb)