evaluation_inference_speed.py 1.08 KB
Newer Older
Rayyyyy's avatar
Rayyyyy committed
1
2
3
4
5
6
7
8
9
10
11
"""
This examples measures the inference speed of a certain model

Usage:
python evaluation_inference_speed.py
OR
python evaluation_inference_speed.py model_name
"""

import sys
import time
Rayyyyy's avatar
Rayyyyy committed
12

Rayyyyy's avatar
Rayyyyy committed
13
import torch
Rayyyyy's avatar
Rayyyyy committed
14
15
16

from datasets import load_dataset
from sentence_transformers import SentenceTransformer
Rayyyyy's avatar
Rayyyyy committed
17
18
19
20
21
22
23

# Limit torch to 4 threads
torch.set_num_threads(4)


model_name = sys.argv[1] if len(sys.argv) > 1 else "bert-base-nli-mean-tokens"

Rayyyyy's avatar
Rayyyyy committed
24
# Load a sentence transformer model
Rayyyyy's avatar
Rayyyyy committed
25
26
model = SentenceTransformer(model_name)

Rayyyyy's avatar
Rayyyyy committed
27
28
29
max_sentences = 100_000
all_nli_dataset = load_dataset("sentence-transformers/all-nli", "pair", split="train")
sentences = list(set(all_nli_dataset["anchor"]))[:max_sentences]
Rayyyyy's avatar
Rayyyyy committed
30
31
32
33
34
35
36
37
38
39
40
41
42

print("Model Name:", model_name)
print("Number of sentences:", len(sentences))

for i in range(3):
    print("Run", i)
    start_time = time.time()
    emb = model.encode(sentences, batch_size=32)
    end_time = time.time()
    diff_time = end_time - start_time
    print("Done after {:.2f} seconds".format(diff_time))
    print("Speed: {:.2f} sentences / second".format(len(sentences) / diff_time))
    print("=====")