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

ONNX模型相同输入多次推理每次输出结果均存在差异

ONNX模型同输入多次推理结果不一致的排查方案
  • 检查模型是否包含随机算子
    模型导出时未正确切换为推理模式,会导致dropout、随机采样等训练阶段的随机算子在推理时仍然生效,每次运行会生成不同的中间结果。解决方法为导出ONNX模型前,原PyTorch模型需先调用.eval()方法,原TensorFlow模型需将推理参数设置为training=False,再执行模型导出操作。
  • 排查浮点计算精度误差
    GPU场景下浮点运算的并行执行顺序不固定,会带来极小的累计误差,若多次输出的差值在1e-6量级,属于正常现象,通常不会影响下游任务效果。如需强一致性,可切换为CPU推理,或在ONNX Runtime中添加确定性配置:
    import onnxruntime as ort
    session_options = ort.SessionOptions()
    # 关闭算子内多线程并行
    session_options.intra_op_num_threads = 1
    # 关闭所有图优化
    session_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_DISABLE_ALL
    
  • 验证算子实现的确定性
    若使用TensorRT、OpenVINO等硬件加速后端,部分优化后的算子实现本身没有确定性约束,会导致输出差异。可先切换到ONNX Runtime原生CPU后端验证结果一致性,若CPU后端结果一致,可通过关闭对应加速后端的非确定性优化选项解决。
  • 确认输入预处理无隐式随机性
    部分预处理流程中存在未固定随机种子的操作(比如随机padding、动态归一化参数生成等),会导致实际送入模型的输入张量存在差异。可打印输入张量的哈希值或者逐元素对比,确认每次推理的输入完全一致,排除预处理环节的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:00:03