Trt10.5/10.7 trtexec convert onnx model failed (Error Code 2: Internal Error (Assertion !mValueMapUndo failed. ))

Description

I’m trying to convert a onnx model(converted from tf1.15.5) to tensorrt, but failed
the error logs is

[12/18/2024-12:25:17] [E] Error[2]: [graphShapeAnalyzer.cpp::eraseFromTensorMaps::1138] Error Code 2: Internal Error (Assertion !mValueMapUndo failed. )
[12/18/2024-12:25:17] [E] Engine could not be created from network
[12/18/2024-12:25:17] [E] Building engine failed
[12/18/2024-12:25:17] [E] Failed to create engine from model or file.
[12/18/2024-12:25:17] [E] Engine set up failed

Environment

TensorRT Version: 10.5.0.18/10.7.0.23 both failed
GPU Type: L4
Nvidia Driver Version: Driver Version: 535.129.0
CUDA Version: cuda-12.6
CUDNN Version: libcudnn_ops.so.9 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_ops.so.9
Operating System + Version: Ubuntu 22.04.5 LTS
Python Version (if applicable): 3.8( i think this is useless?)
TensorFlow Version (if applicable): 1.15.5 ( i think this is useless?)
PyTorch Version (if applicable): none
Baremetal or Container (if container which image + tag): nvcr.io/nvidia/tensorrt:24.10-py3

Relevant Files

  • LOG: trtexec --onnx=model-op18.onnx--verbose
    build.log (17.6 MB)
  • Model
    model.file is too big(1G), upload failed for limit is 100M. Maybe you can contact me if you need

Steps To Reproduce

trtexec --onnx=model-op18.onnx

Please include:

  • Exact steps/commands to build your repro
  • Exact steps/commands to run your repro
  • Full traceback of errors encountered

Update1: (update after Update3: Maybe update1 is useless, i find onnx_graphsurgeon is negative-effect)

What did I Do?

  1. export only subgraph to find which part cause failed(modify tf build_graph code when export)
  2. use onnx_graphsurgeon to cleanup the graph
  • graph = graph.cleanup(remove_unused_node_outputs=True, remove_unused_graph_inputs=True)
import onnx_graphsurgeon as gs
import onnx
from onnx_graphsurgeon.logger.logger import Logger, G_LOGGER
import argparse

parser = argparse.ArgumentParser(description="model-cut")
parser.add_argument('--model', type=str)

args = parser.parse_args()
model = args.model

graph = gs.import_onnx(onnx.load(model))
print("[before]", "nodes", len(graph.nodes), "inputs", len(graph.inputs), "outputs", len(graph.outputs))
G_LOGGER.severity = Logger.ULTRA_VERBOSE
graph = graph.cleanup(remove_unused_node_outputs=True, remove_unused_graph_inputs=True)
print("[after]", "nodes", len(graph.nodes), "inputs", len(graph.inputs), "outputs", len(graph.outputs))
print(graph.inputs)
print(graph.outputs)
onnx.save(gs.export_onnx(graph), f"cut_{model}")

Then, got more details error

[12/18/2024-17:40:51] [V] [TRT] Parsing node: custom_rnn_scan_Scan__352 [Scan]
[12/18/2024-17:40:51] [V] [TRT] Searching for input: net/tn/encoder_output_net/cond/rnn/while/iteration_counter:0
[12/18/2024-17:40:51] [V] [TRT] Searching for input: net/tn/encoder_output_net/cond/Squeeze_1:0
[12/18/2024-17:40:51] [V] [TRT] Searching for input: net/tn/encoder_output_net/cond/rnn/time:0
[12/18/2024-17:40:51] [V] [TRT] Searching for input: net/tn/encoder_output_net/cond/rnn/transpose:0
[12/18/2024-17:40:51] [V] [TRT] custom_rnn_scan_Scan__352 [Scan] inputs: [net/tn/encoder_output_net/cond/rnn/while/iteration_counter:0 -> ()[INT32]], [net/tn/encoder_output_net/cond/Squeeze_1:0 -> (-1, 117)[FLOAT]], [net/tn/encoder_output_net/cond/rnn/time:0 -> ()[INT32]], [net/tn/encoder_output_net/cond/rnn/transpose:0 -> (-1, -1, 117)[FLOAT]], 
[12/18/2024-17:40:51] [E] [TRT] ModelImporter.cpp:937: While parsing node number 12 [Slice -> "net/strided_slice_3:0"]:
[12/18/2024-17:40:51] [E] [TRT] ModelImporter.cpp:938: --- Begin node ---
input: "net/Shape_1__480:0"
input: "const_starts__515"
input: "const_starts__515__3320"
input: "const_starts__1899"
output: "net/strided_slice_3:0"
name: "net/strided_slice_3"
op_type: "Slice"
domain: ""

[12/18/2024-17:40:51] [E] [TRT] ModelImporter.cpp:939: --- End node ---
[12/18/2024-17:40:51] [E] [TRT] ModelImporter.cpp:942: ERROR: ModelImporter.cpp:181 In function parseNode:
[6] Invalid Node - custom_rnn_scan_Scan__352
[12/18/2024-17:40:51] [E] Failed to parse onnx file
[12/18/2024-17:40:51] [I] Finished parsing network model. Parse time: 4.82884
[12/18/2024-17:40:51] [E] Parsing model failed
[12/18/2024-17:40:51] [E] Failed to create engine from model or file.
[12/18/2024-17:40:51] [E] Engine set up failed
&&&& FAILED TensorRT.trtexec [TensorRT v100700] [b23] # /workspace/projects/TensorRT-10.7.0.23/targets/x86_64-linux-gnu/bin/trtexec --onnx=cut_20241218_165655_tn.onnx --saveEngine=20241218_165655_tn.engine --verbose

But i’m confused why Rnn or Scan node is invalid.
image

Experiment Setting Change:

  • use onnx opset=15 instead

Full log:
trt.log (2.6 MB)

Update2 (update after Update3: Maybe update2 is useless, i find onnx_graphsurgeon is negative-effect)

What did i do?

  1. remove atf.cond code of crf_decode from tf.ontrib.crf.python.ops.crf import crf_decode
  • Original Code:
return utils.smart_cond(
      pred=math_ops.equal(tensor_shape.dimension_value(potentials.shape[1]) or
                          array_ops.shape(potentials)[1], 1),
      true_fn=_single_seq_fn,
      false_fn=_multi_seq_fn)
  • My Change:
return _multi_seq_fn()

SourceCode: tensorflow/tensorflow/contrib/crf/python/ops/crf.py at v1.15.5 · tensorflow/tensorflow · GitHub

LOG

[12/18/2024-19:02:32] [V] [TRT] custom_rnn_scan_Scan__362 [Scan] inputs: [net/tn/encoder_hidden_net/enc_block3/self_attention/SequenceMask_1/Const:0 -> ()[INT32]], [net/tn/encoder_hidden_net/enc_block3/self_attention/SequenceMask_1/Const:0 -> ()[INT32]], [net/tn/encoder_output_net/Squeeze:0 -> (-1, 117)[FLOAT]], [net/tn/encoder_output_net/rnn/transpose:0 -> (-1, -1, 117)[FLOAT]], 
[12/18/2024-19:02:32] [E] [TRT] ModelImporter.cpp:937: While parsing node number 1695 [Scan -> "custom_rnn_scan_Scan__362:2"]:
[12/18/2024-19:02:32] [E] [TRT] ModelImporter.cpp:938: --- Begin node ---
input: "net/tn/encoder_hidden_net/enc_block3/self_attention/SequenceMask_1/Const:0"
input: "net/tn/encoder_hidden_net/enc_block3/self_attention/SequenceMask_1/Const:0"
input: "net/tn/encoder_output_net/Squeeze:0"
input: "net/tn/encoder_output_net/rnn/transpose:0"
output: "custom_rnn_scan_Scan__362:2"
output: "custom_rnn_scan_Scan__362:3"
name: "custom_rnn_scan_Scan__362"
op_type: "Scan"
attribute {
  name: "num_scan_inputs"
  i: 1
  type: INT
}
attribute {
  name: "body"
  g {
    node {
      input: "net/tn/encoder_output_net/rnn/while/Identity_3:0"
      input: "const_fold_opt__3135"
      output: "net/tn/encoder_output_net/rnn/while/ExpandDims:0"
      name: "net/tn/encoder_output_net/rnn/while/ExpandDims"
      op_type: "Unsqueeze"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/ExpandDims:0"
      input: "net/tn/encoder_output_net/ExpandDims__334"
      output: "net/tn/encoder_output_net/rnn/while/add_1:0"
      name: "net/tn/encoder_output_net/rnn/while/add_1"
      op_type: "Add"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/add_1:0"
      output: "net/tn/encoder_output_net/rnn/while/Max:0"
      name: "net/tn/encoder_output_net/rnn/while/Max"
      op_type: "ReduceMax"
      attribute {
        name: "axes"
        ints: 1
        type: INTS
      }
      attribute {
        name: "keepdims"
        i: 0
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/TensorArrayReadV3:0"
      input: "net/tn/encoder_output_net/rnn/while/Max:0"
      output: "net/tn/encoder_output_net/rnn/while/add_2:0"
      name: "net/tn/encoder_output_net/rnn/while/add_2"
      op_type: "Add"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/add_1:0"
      output: "net/tn/encoder_output_net/rnn/while/ArgMax:0"
      name: "net/tn/encoder_output_net/rnn/while/ArgMax"
      op_type: "ArgMax"
      attribute {
        name: "axis"
        i: 1
        type: INT
      }
      attribute {
        name: "keepdims"
        i: 0
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/ArgMax:0"
      output: "net/tn/encoder_output_net/rnn/while/Cast:0"
      name: "net/tn/encoder_output_net/rnn/while/Cast"
      op_type: "Cast"
      attribute {
        name: "to"
        i: 6
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Identity_1:0"
      input: "net/tn/encoder_output_net/sub/y:0"
      output: "sub_graph_ending_node_Identity__355:0"
      name: "net/tn/encoder_output_net/rnn/while/add_3"
      op_type: "Add"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Identity_1:0"
      input: "net/tn/encoder_output_net/Maximum:0"
      output: "net/tn/encoder_output_net/rnn/while/GreaterEqual:0"
      name: "net/tn/encoder_output_net/rnn/while/GreaterEqual"
      op_type: "GreaterOrEqual"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/GreaterEqual:0"
      input: "net/tn/encoder_output_net/rnn/while/Select__2581"
      output: "Reshape__2582:0"
      name: "Reshape__2582"
      op_type: "Reshape"
      domain: ""
    }
    node {
      input: "Reshape__2582:0"
      output: "net/tn/encoder_output_net/rnn/while/Select__2586:0"
      name: "net/tn/encoder_output_net/rnn/while/Select__2586"
      op_type: "Not"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select__2586:0"
      output: "net/tn/encoder_output_net/rnn/while/Select__2588:0"
      name: "net/tn/encoder_output_net/rnn/while/Select__2588"
      op_type: "Cast"
      attribute {
        name: "to"
        i: 6
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Cast:0"
      input: "net/tn/encoder_output_net/rnn/while/Select__2588:0"
      output: "net/tn/encoder_output_net/rnn/while/Select__2593:0"
      name: "net/tn/encoder_output_net/rnn/while/Select__2593"
      op_type: "Mul"
      domain: ""
    }
    node {
      input: "Reshape__2582:0"
      output: "net/tn/encoder_output_net/rnn/while/Select__2584:0"
      name: "net/tn/encoder_output_net/rnn/while/Select__2584"
      op_type: "Cast"
      attribute {
        name: "to"
        i: 6
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select__2584:0"
      input: "net/tn/encoder_output_net/rnn/zeros:0"
      output: "net/tn/encoder_output_net/rnn/while/Select__2590:0"
      name: "net/tn/encoder_output_net/rnn/while/Select__2590"
      op_type: "Mul"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select__2590:0"
      input: "net/tn/encoder_output_net/rnn/while/Select__2593:0"
      output: "sub_graph_ending_node_Identity__357:0"
      name: "net/tn/encoder_output_net/rnn/while/Select"
      op_type: "Add"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/GreaterEqual:0"
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2566"
      output: "Reshape__2567:0"
      name: "Reshape__2567"
      op_type: "Reshape"
      domain: ""
    }
    node {
      input: "Reshape__2567:0"
      output: "net/tn/encoder_output_net/rnn/while/Select_1__2571:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2571"
      op_type: "Not"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2571:0"
      output: "net/tn/encoder_output_net/rnn/while/Select_1__2573:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2573"
      op_type: "Cast"
      attribute {
        name: "to"
        i: 1
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/add_2:0"
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2573:0"
      output: "net/tn/encoder_output_net/rnn/while/Select_1__2578:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2578"
      op_type: "Mul"
      domain: ""
    }
    node {
      input: "Reshape__2567:0"
      output: "net/tn/encoder_output_net/rnn/while/Select_1__2569:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2569"
      op_type: "Cast"
      attribute {
        name: "to"
        i: 1
        type: INT
      }
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2569:0"
      input: "net/tn/encoder_output_net/rnn/while/Identity_3:0"
      output: "net/tn/encoder_output_net/rnn/while/Select_1__2575:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2575"
      op_type: "Mul"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2575:0"
      input: "net/tn/encoder_output_net/rnn/while/Select_1__2578:0"
      output: "sub_graph_ending_node_Identity__356:0"
      name: "net/tn/encoder_output_net/rnn/while/Select_1"
      op_type: "Add"
      domain: ""
    }
    node {
      input: "net/tn/encoder_output_net/rnn/while/Identity:0"
      input: "net/tn/encoder_output_net/sub/y:0"
      output: "sub_graph_ending_node_Identity__354:0"
      name: "net/tn/encoder_output_net/rnn/while/add"
      op_type: "Add"
      domain: ""
    }
    name: "tf2onnx__353"
    initializer {
      dims: 1
      data_type: 7
      name: "const_fold_opt__3135"
      raw_data: "\002\000\000\000\000\000\000\000"
    }
    initializer {
      dims: 1
      dims: 117
      dims: 117
      data_type: 1
      name: "net/tn/encoder_output_net/ExpandDims__334"
      raw_data: "..."
    }
    initializer {
      data_type: 6
      name: "net/tn/encoder_output_net/sub/y:0"
      raw_data: "\001\000\000\000"
    }
    initializer {
      dims: 2
      data_type: 7
      name: "net/tn/encoder_output_net/rnn/while/Select__2581"
      raw_data: "\377\377\377\377\377\377\377\377\001\000\000\000\000\000\000\000"
    }
    initializer {
      dims: 2
      data_type: 7
      name: "net/tn/encoder_output_net/rnn/while/Select_1__2566"
      raw_data: "\377\377\377\377\377\377\377\377\001\000\000\000\000\000\000\000"
    }
    doc_string: "graph for custom_rnn_scan_Scan__362 body"
    input {
      name: "net/tn/encoder_output_net/rnn/while/Identity:0"
      type {
        tensor_type {
          elem_type: 6
          shape {
          }
        }
      }
    }
    input {
      name: "net/tn/encoder_output_net/rnn/while/Identity_1:0"
      type {
        tensor_type {
          elem_type: 6
          shape {
          }
        }
      }
    }
    input {
      name: "net/tn/encoder_output_net/rnn/while/Identity_3:0"
      type {
        tensor_type {
          elem_type: 1
          shape {
            dim {
              dim_param: "unk__3437"
            }
            dim {
              dim_value: 117
            }
          }
        }
      }
    }
    input {
      name: "net/tn/encoder_output_net/rnn/while/TensorArrayReadV3:0"
      type {
        tensor_type {
          elem_type: 1
          shape {
            dim {
              dim_param: "unk__3438"
            }
            dim {
              dim_value: 117
            }
          }
        }
      }
    }
    output {
      name: "sub_graph_ending_node_Identity__354:0"
      type {
        tensor_type {
          elem_type: 6
          shape {
          }
        }
      }
    }
    output {
      name: "sub_graph_ending_node_Identity__355:0"
      type {
        tensor_type {
          elem_type: 6
          shape {
          }
        }
      }
    }
    output {
      name: "sub_graph_ending_node_Identity__356:0"
      type {
        tensor_type {
          elem_type: 1
          shape {
            dim {
              dim_param: "unk__3439"
            }
            dim {
              dim_value: 117
            }
          }
        }
      }
    }
    output {
      name: "sub_graph_ending_node_Identity__357:0"
      type {
        tensor_type {
          elem_type: 6
          shape {
            dim {
              dim_param: "unk__3440"
            }
            dim {
              dim_value: 117
            }
          }
        }
      }
    }
  }
  type: GRAPH
}
domain: ""

[12/18/2024-19:02:32] [E] [TRT] ModelImporter.cpp:939: --- End node ---
[12/18/2024-19:02:32] [E] [TRT] ModelImporter.cpp:942: ERROR: ModelImporter.cpp:181 In function parseNode:
[6] Invalid Node - custom_rnn_scan_Scan__362
[12/18/2024-19:02:32] [E] Failed to parse onnx file
[12/18/2024-19:02:32] [I] Finished parsing network model. Parse time: 2.30646
[12/18/2024-19:02:32] [E] Parsing model failed
[12/18/2024-19:02:32] [E] Failed to create engine from model or file.
[12/18/2024-19:02:32] [E] Engine set up faile

Update3:

What did i do?

I wrote a code snippet that reproduces the current problem.And it works. So i don’t know what happen to my model. Everything fallback to the begining

import numpy as np
import tensorflow as tf
from tensorflow import graph_util
from tensorflow_core.python.saved_model import saved_model
from tensorflow_core.python.saved_model.signature_def_utils_impl import *

# Data settings.
num_words = 20
num_features = 100
num_tags = 5

# Train and evaluate the model.
with tf.Graph().as_default():
  with tf.Session() as session:
    # Add the data to the TensorFlow graph.
    x_t = tf.placeholder(name="x", shape=[None, num_words, num_features], dtype=tf.float32)
    y_t = tf.placeholder(name="y", shape=[None, num_words], dtype=tf.int32)
    sequence_lengths_t = tf.placeholder(name="seq_len", shape=[None], dtype=tf.int32) # tf.constant(sequence_lengths)
    features = {"x": x_t, "y": y_t, "seq_len": sequence_lengths_t}

    # Compute unary scores from a linear layer.
    weights = tf.get_variable("weights", [num_features, num_tags])
    matricized_x_t = tf.reshape(x_t, [-1, num_features])
    matricized_unary_scores = tf.matmul(matricized_x_t, weights)
    unary_scores = tf.reshape(matricized_unary_scores,
                              [tf.shape(x_t)[0], num_words, num_tags])

    # Compute the log-likelihood of the gold sequences and keep the transition
    # params for inference at test time.
    from tensorflow_core.contrib.crf.python.ops.crf import crf_log_likelihood, crf_decode
    log_likelihood, transition_params = crf_log_likelihood(
        unary_scores, y_t, sequence_lengths_t)

    # Compute the viterbi sequence and score.
    viterbi_sequence, viterbi_score = crf_decode(
        unary_scores, transition_params, sequence_lengths_t)
    
    viterbi_sequence = tf.identity(viterbi_sequence, name="output1")
    viterbi_score = tf.identity(viterbi_score, name="output2")
    log_likelihood = tf.identity(log_likelihood, name="logits")
    
    predictions = {"output1": viterbi_sequence, "output2": viterbi_score, "logits": log_likelihood}

    # Add a training op to tune the parameters.
    loss = tf.reduce_mean(-log_likelihood)
    train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

    session.run(tf.global_variables_initializer())

    # Train for a fixed number of iterations.
    for i in range(10):
      num_examples = i + 1
      # Random features.
      x = np.random.rand(num_examples, num_words, num_features).astype(np.float32)
      # Random tag indices representing the gold sequence.
      y = np.random.randint(num_tags, size=[num_examples, num_words]).astype(np.int32)
      # All sequences in this example have the same length, but they can be variable in a real model.
      sequence_lengths = np.full(num_examples, num_words - 1, dtype=np.int32)

      tf_viterbi_sequence, _ = session.run([viterbi_sequence, train_op], feed_dict={x_t: x, y_t: y, sequence_lengths_t: sequence_lengths})
      if i % 10 == 0 or i == 9:
        mask = (np.expand_dims(np.arange(num_words), axis=0) <
                np.expand_dims(sequence_lengths, axis=1))
        total_labels = np.sum(sequence_lengths)
        correct_labels = np.sum((y == tf_viterbi_sequence) * mask)
        accuracy = 100.0 * correct_labels / float(total_labels)
        print("Accuracy: %.2f%%" % accuracy)


    predictions_signature = saved_model.signature_def_utils.build_signature_def(
        inputs=dict(((k, saved_model.utils.build_tensor_info(v))
                     for k, v in features.items())),
        outputs=dict(((k, saved_model.utils.build_tensor_info(v))
                      for k, v in predictions.items())),
        method_name=saved_model.signature_constants.PREDICT_METHOD_NAME,
    )
    model_dir = "./crf_test_model"
    sm_builder = saved_model.builder.SavedModelBuilder(model_dir)
    sm_builder.add_meta_graph_and_variables(
            session,
            tags=[saved_model.tag_constants.SERVING],
            signature_def_map={
                'predictions': predictions_signature,
            },
            clear_devices=True,
        )

    sm_builder.save()
    tf.io.write_graph(tf.get_default_graph(), model_dir, "frozen_graph.pb", as_text=False)

Transfer: TF1.15.5 → Onnx → TensorRT

MODEL=crf_test_model
# Step1: TF.SavedModel -> Onnx
python3 -m tf2onnx.convert \
        --saved-model $PWD/crf_test_model \
        --opset 15 \
        --tag serve \
        --signature_def predictions \
        --output "${MODEL}.onnx" \
        --verbose
# Step2: Onnx -> Trt
trtexec \
    --onnx="${MODEL}.onnx"\
    --saveEngine="${MODEL}.engine" \
    --builderOptimizationLevel=5 

New Info

  • if i use GraphSurgeon(graph.cleanup), onnx -> trt will fail

Update 4: Only graph.cleanup(remove_unused_node_outputs=true) make failed

Now, the error is still

[12/18/2024-23:07:01] [E] Error[2]: [graphShapeAnalyzer.cpp::eraseFromTensorMaps::1138] Error Code 2: Internal Error (Assertion !mValueMapUndo failed. )
[12/18/2024-23:07:01] [E] Engine could not be created from network
[12/18/2024-23:07:01] [E] Building engine failed
[12/18/2024-23:07:01] [E] Failed to create engine from model or file.

https://bucket-standard-chatdata.bj.bcebos.com/temp/model.zip
model.onnx in model.zip. Thanks.

Hi @songxz1989
can you please share your onnx model with us?

Thanks