-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinference_measure.py
44 lines (33 loc) · 1.11 KB
/
inference_measure.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import argparse
import tensorflow as tf
import timeit
import psutil
from tensorflow.python import training
from utils.common import get_configs
def main():
tf.keras.backend.set_image_data_format("channels_first")
parser = argparse.ArgumentParser()
parser.add_argument("config", nargs="+")
args, _ = parser.parse_known_args()
configs = get_configs(
args.config[0], is_evaluating=True, restart_training=False
)
print(f'\n==> Loading dataset "{configs.dataset}"')
dataset = configs.dataset()
test_dataset = dataset["test"]
print(f'\n==> Creating model "{configs.model}"')
model = configs.model()
@tf.function
def inference(sample: tf.Tensor):
return model(sample, training=False)
x, _ = next(iter(test_dataset))
single_sample = tf.expand_dims(x[0, :, :], axis=0)
print("\n\nCalculating inference time and memory usage...")
print(
f"\nInference Time = {(timeit.timeit(lambda: inference(single_sample), number=100) / 100) * 1000} ms"
)
print(
f"GPU RAM Usage = {tf.config.experimental.get_memory_info('GPU:0')['peak'] / (1 << 30)} GB"
)
if __name__ == "__main__":
main()