You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算/测量TensorFlow模型推理时间?如何获取更高精度结果

如何高精度对比两个TensorFlow模型的预测速度

evaluate方法给出的每步耗时精度确实有限——它包含了数据加载、预处理等额外环节的开销,统计粒度偏粗。要获得更高精度的测速,核心是聚焦纯推理计算环节,排除其他干扰因素,具体实现方式如下:

关键优化思路

  • 预热模型:TensorFlow首次推理会执行图优化、算子编译等操作,耗时远高于稳定状态下的推理。必须先跑若干轮推理预热,让模型进入稳定运行阶段。
  • 隔离推理步骤:将数据预处理与模型推理完全分离,确保测试数据已加载到内存中,只统计模型推理本身的耗时,避免IO、预处理环节的干扰。
  • 使用高精度计时工具:用Python的time.perf_counter()(纳秒级精度)或TensorFlow内置的tf.timestamp()记录时间戳,比普通time.time()的精度更高。
  • 多次取平均:单次推理耗时波动大,重复推理数百甚至上千次,去掉首尾少量异常值后取平均,结果更稳定可靠。

具体代码实现

import tensorflow as tf
import time

# 加载两个待测试的模型
model_a = tf.keras.models.load_model('model_a.h5')
model_b = tf.keras.models.load_model('model_b.h5')

# 准备已预处理完成的测试数据(加载到内存)
test_input = tf.random.normal([32, 224, 224, 3])  # 批量大小、输入尺寸根据你的模型调整

# 预热模型,消除首次推理的额外开销
for _ in range(10):
    _ = model_a(test_input)
    _ = model_b(test_input)

# 测试Model A的耗时
num_runs = 1000
times_a = []
for _ in range(num_runs):
    start = time.perf_counter()
    _ = model_a(test_input)
    end = time.perf_counter()
    times_a.append(end - start)

# 去掉首尾5%的异常值,计算平均耗时
times_a_sorted = sorted(times_a)
trimmed_a = times_a_sorted[int(num_runs*0.05):int(num_runs*0.95)]
avg_a = sum(trimmed_a) / len(trimmed_a)

# 测试Model B的耗时
times_b = []
for _ in range(num_runs):
    start = time.perf_counter()
    _ = model_b(test_input)
    end = time.perf_counter()
    times_b.append(end - start)

times_b_sorted = sorted(times_b)
trimmed_b = times_b_sorted[int(num_runs*0.05):int(num_runs*0.95)]
avg_b = sum(trimmed_b) / len(trimmed_b)

print(f"Model A 平均推理耗时:{avg_a*1000:.4f} 毫秒")
print(f"Model B 平均推理耗时:{avg_b*1000:.4f} 毫秒")

额外优化建议

如果是面向部署场景的测速,建议:

  • 用tf.function装饰推理函数,切换到静态图模式,进一步降低动态图的开销:
@tf.function
def infer_a(x):
    return model_a(x)

@tf.function
def infer_b(x):
    return model_b(x)

后续用infer_a(test_input)和infer_b(test_input)执行推理测速即可。

  • 考虑使用TensorRT、TF Lite等优化后的模型格式测试,结果更贴近实际部署的运行速度。

内容的提问来源于stack exchange,提问作者hedge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:47:25