Skip to content

Commit f6bf260

Browse files
fix: refresh MPS benchmark and lockfile
Honor the benchmark --runs option across every backend and regenerate uv.lock for the optional MPS dependencies.
1 parent f252d5e commit f6bf260

2 files changed

Lines changed: 2083 additions & 390 deletions

File tree

benchmarks/apple_silicon_bench.py

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def time_it(fn: Callable[[], None], warmup: int = 1, runs: int = 3) -> dict:
106106
}
107107

108108

109-
def bench_onnx_default(chunks: List[str], batch_size: int) -> dict:
109+
def bench_onnx_default(chunks: List[str], batch_size: int, runs: int) -> dict:
110110
"""ChromaDB's ONNXMiniLM_L6_V2 with default providers (current mempalace)."""
111111
from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2
112112

@@ -118,10 +118,10 @@ def fn():
118118
for i in range(0, len(chunks), batch_size):
119119
_ = ef(chunks[i : i + batch_size])
120120

121-
return time_it(fn)
121+
return time_it(fn, runs=runs)
122122

123123

124-
def bench_onnx_cpu_only(chunks: List[str], batch_size: int) -> dict:
124+
def bench_onnx_cpu_only(chunks: List[str], batch_size: int, runs: int) -> dict:
125125
from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2
126126

127127
ef = ONNXMiniLM_L6_V2(preferred_providers=["CPUExecutionProvider"])
@@ -131,10 +131,10 @@ def fn():
131131
for i in range(0, len(chunks), batch_size):
132132
_ = ef(chunks[i : i + batch_size])
133133

134-
return time_it(fn)
134+
return time_it(fn, runs=runs)
135135

136136

137-
def bench_onnx_coreml(chunks: List[str], batch_size: int) -> dict:
137+
def bench_onnx_coreml(chunks: List[str], batch_size: int, runs: int) -> dict:
138138
"""Explicitly force CoreML — expected to raise or silently fall back."""
139139
try:
140140
import onnxruntime
@@ -154,12 +154,12 @@ def fn():
154154
for i in range(0, len(chunks), batch_size):
155155
_ = ef(chunks[i : i + batch_size])
156156

157-
return time_it(fn)
157+
return time_it(fn, runs=runs)
158158
except Exception as e:
159159
return {"error": str(e)[:120]}
160160

161161

162-
def bench_sentence_transformers(chunks: List[str], batch_size: int, device: str) -> dict:
162+
def bench_sentence_transformers(chunks: List[str], batch_size: int, device: str, runs: int) -> dict:
163163
try:
164164
from sentence_transformers import SentenceTransformer
165165
except ImportError:
@@ -176,7 +176,7 @@ def bench_sentence_transformers(chunks: List[str], batch_size: int, device: str)
176176
def fn():
177177
_ = model.encode(chunks, batch_size=batch_size, show_progress_bar=False)
178178

179-
return time_it(fn)
179+
return time_it(fn, runs=runs)
180180

181181

182182
# ---- main ---------------------------------------------------------------
@@ -219,11 +219,26 @@ def main():
219219
return
220220

221221
backends = [
222-
("onnx_default", lambda: bench_onnx_default(chunks, args.batch_size)),
223-
("onnx_cpu_only", lambda: bench_onnx_cpu_only(chunks, args.batch_size)),
224-
("onnx_coreml", lambda: bench_onnx_coreml(chunks, args.batch_size)),
225-
("st_cpu", lambda: bench_sentence_transformers(chunks, args.batch_size, "cpu")),
226-
("st_mps", lambda: bench_sentence_transformers(chunks, args.batch_size, "mps")),
222+
(
223+
"onnx_default",
224+
lambda: bench_onnx_default(chunks, args.batch_size, args.runs),
225+
),
226+
(
227+
"onnx_cpu_only",
228+
lambda: bench_onnx_cpu_only(chunks, args.batch_size, args.runs),
229+
),
230+
(
231+
"onnx_coreml",
232+
lambda: bench_onnx_coreml(chunks, args.batch_size, args.runs),
233+
),
234+
(
235+
"st_cpu",
236+
lambda: bench_sentence_transformers(chunks, args.batch_size, "cpu", args.runs),
237+
),
238+
(
239+
"st_mps",
240+
lambda: bench_sentence_transformers(chunks, args.batch_size, "mps", args.runs),
241+
),
227242
]
228243

229244
results = {}

0 commit comments

Comments
 (0)