in packages/core/src/suites.js [19:60]
async run() {
const { task, model_id, options } = this.config;
const { result: pipe, time: setupTime } = await time(() =>
pipeline(task, model_id, {
...DEFAULT_MODEL_OPTIONS,
...options,
}),
);
const stats = {};
for (const test of this.tests) {
const { inputs, expected, test_function, num_runs } = test;
const times = [];
const numRuns = DEFAULT_NUM_WARMUP_RUNS + (num_runs ?? DEFAULT_NUM_RUNS);
for (let i = 0; i < numRuns; ++i) {
const { result, time: executionTime } = await time(() =>
pipe(...inputs),
);
const { pass, message } = (test_function ?? toBeCloseToNested)(
result,
expected,
);
if (!pass) {
console.log(result);
console.log(expected);
throw new Error(message());
}
if (i >= DEFAULT_NUM_WARMUP_RUNS) times.push(executionTime);
}
stats[test.name] = computeStatistics(times);
}
const { time: disposeTime } = await time(() => pipe.dispose());
return {
setupTime,
stats,
disposeTime,
};
}