def METHOD_NAME(pb_model_file, val_data):
    [x_test_np, label_test] = val_data
    q_model = tf.saved_model.load(pb_model_file)
    x_test = tf.convert_to_tensor(x_test_np)
    infer = q_model.signatures["serving_default"]
    times = 10
    bt = 0
    warmup = int(times*0.2)
    for i in range(times):
        if i == warmup:
            bt = time.time()
        res = infer(x_test)
    et = time.time()
    res = list(res.values())[0]
    accuracy = calc_accuracy(res, label_test)
    print('accuracy:', accuracy)
    throughput = len(x_test)*(times-warmup)/(et-bt)
    print('max throughput(fps):', throughput)
     # latency when BS=1
    times = 1
    bt = 0
    warmup = int(times*0.2)
    for i in range(times):
        if i == warmup:
            bt = time.time()
        for i in range(len(x_test)):
           res = infer(tf.convert_to_tensor([x_test_np[i]])) 
        #q_model.test_on_batch(val_data, verbose=0)
    et = time.time()
    latency = (et - bt) * 1000 / (times - warmup)/len(x_test)
    print('latency(ms):', latency)
    return accuracy, throughput, latency