Пример #1
0
 def _test_relu_graph(self, X, batch_size, trt_max_batch_size):
     node_def = make_node("Relu", ["X"], ["Y"])
     Y_c2 = c2.run_node(node_def, {"X": X})
     graph_def = make_graph(
         [node_def],
         name="test",
         inputs=[
             make_tensor_value_info("X", onnx.TensorProto.FLOAT,
                                    [batch_size, 1, 3, 2])
         ],
         outputs=[
             make_tensor_value_info("Y", onnx.TensorProto.FLOAT,
                                    [batch_size, 1, 3, 2])
         ])
     model_def = make_model(graph_def, producer_name='relu-test')
     op_outputs = [x.name for x in model_def.graph.output]
     op = convert_onnx_model_to_trt_op(model_def,
                                       max_batch_size=trt_max_batch_size)
     device_option = core.DeviceOption(caffe2_pb2.CUDA, 0)
     op.device_option.CopyFrom(device_option)
     Y_trt = None
     ws = Workspace()
     with core.DeviceScope(device_option):
         ws.FeedBlob("X", X)
         ws.RunOperatorsOnce([op])
         output_values = [ws.FetchBlob(name) for name in op_outputs]
         Y_trt = namedtupledict('Outputs', op_outputs)(*output_values)
     np.testing.assert_almost_equal(Y_c2, Y_trt)
Пример #2
0
 def _test_onnx_importer(self,
                         model_name,
                         data_input_index,
                         opset_version=onnx.defs.onnx_opset_version()):
     model_dir = _download_onnx_model(model_name, opset_version)
     model_def = onnx.load(os.path.join(model_dir, 'model.onnx'))
     input_blob_dims = [
         int(x.dim_value) for x in
         model_def.graph.input[data_input_index].type.tensor_type.shape.dim
     ]
     op_inputs = [x.name for x in model_def.graph.input]
     op_outputs = [x.name for x in model_def.graph.output]
     print("{}".format(op_inputs))
     data = np.random.randn(*input_blob_dims).astype(np.float32)
     Y_c2 = c2.run_model(model_def, {op_inputs[data_input_index]: data})
     op = convert_onnx_model_to_trt_op(model_def, verbosity=3)
     device_option = core.DeviceOption(caffe2_pb2.CUDA, 0)
     op.device_option.CopyFrom(device_option)
     Y_trt = None
     ws = Workspace()
     with core.DeviceScope(device_option):
         ws.FeedBlob(op_inputs[data_input_index], data)
         if opset_version >= 5:
             # Some newer models from ONNX Zoo come with pre-set "data_0" input
             ws.FeedBlob("data_0", data)
         ws.RunOperatorsOnce([op])
         output_values = [ws.FetchBlob(name) for name in op_outputs]
         Y_trt = namedtupledict('Outputs', op_outputs)(*output_values)
     np.testing.assert_allclose(Y_c2, Y_trt, rtol=1e-3)
Пример #3
0
 def test_resnet50(self):
     input_blob_dims = (1, 3, 224, 224)
     model_dir = _download_onnx_model('resnet50')
     model_def = onnx.load(os.path.join(model_dir, 'model.onnx'))
     op_inputs = [x.name for x in model_def.graph.input]
     op_outputs = [x.name for x in model_def.graph.output]
     n, c, h, w = input_blob_dims
     data = np.random.randn(n, c, h, w).astype(np.float32)
     Y_c2 = c2.run_model(model_def, {op_inputs[0]: data})
     op = convert_onnx_model_to_trt_op(model_def)
     device_option = core.DeviceOption(caffe2_pb2.CUDA, 0)
     op.device_option.CopyFrom(device_option)
     Y_trt = None
     ws = Workspace()
     with core.DeviceScope(device_option):
         ws.FeedBlob(op_inputs[0], data)
         ws.RunOperatorsOnce([op])
         output_values = [ws.FetchBlob(name) for name in op_outputs]
         Y_trt = namedtupledict('Outputs', op_outputs)(*output_values)
     np.testing.assert_allclose(Y_c2, Y_trt, rtol=1e-3)
Пример #4
0
 def _test_onnx_importer(self, model_name, data_input_index = 0):
     model_dir = _download_onnx_model(model_name)
     model_def = onnx.load(os.path.join(model_dir, 'model.onnx'))
     input_blob_dims = [int(x.dim_value) for x in model_def.graph.input[data_input_index].type.tensor_type.shape.dim]
     op_inputs = [x.name for x in model_def.graph.input]
     op_outputs = [x.name for x in model_def.graph.output]
     print("{}".format(op_inputs))
     data = np.random.randn(*input_blob_dims).astype(np.float32)
     Y_c2 = c2.run_model(model_def, {op_inputs[data_input_index]: data})
     op = convert_onnx_model_to_trt_op(model_def, verbosity=3)
     device_option = core.DeviceOption(caffe2_pb2.CUDA, 0)
     op.device_option.CopyFrom(device_option)
     Y_trt = None
     ws = Workspace()
     with core.DeviceScope(device_option):
         ws.FeedBlob(op_inputs[data_input_index], data)
         ws.RunOperatorsOnce([op])
         output_values = [ws.FetchBlob(name) for name in op_outputs]
         Y_trt = namedtupledict('Outputs', op_outputs)(*output_values)
     np.testing.assert_allclose(Y_c2, Y_trt, rtol=1e-3)
Пример #5
0
 def _test_relu_graph(self, X, batch_size, trt_max_batch_size):
     node_def = make_node("Relu", ["X"], ["Y"])
     Y_c2 = c2.run_node(node_def, {"X": X})
     graph_def = make_graph(
         [node_def],
         name="test",
         inputs=[make_tensor_value_info("X", onnx.TensorProto.FLOAT, [batch_size, 1, 3, 2])],
         outputs=[make_tensor_value_info("Y", onnx.TensorProto.FLOAT, [batch_size, 1, 3, 2])])
     model_def = make_model(graph_def, producer_name='relu-test')
     op_outputs = [x.name for x in model_def.graph.output]
     op = convert_onnx_model_to_trt_op(model_def, max_batch_size=trt_max_batch_size)
     device_option = core.DeviceOption(caffe2_pb2.CUDA, 0)
     op.device_option.CopyFrom(device_option)
     Y_trt = None
     ws = Workspace()
     with core.DeviceScope(device_option):
         ws.FeedBlob("X", X)
         ws.RunOperatorsOnce([op])
         output_values = [ws.FetchBlob(name) for name in op_outputs]
         Y_trt = namedtupledict('Outputs', op_outputs)(*output_values)
     np.testing.assert_almost_equal(Y_c2, Y_trt)