ONNX

class singa.sonnx.SingaFrontend

This class provides mthods to convert model from singa to onnx.

classmethod handle_special_ops(op, X, W)

hanlde the special operators, because the inputs of batchnorm and reshape are differnet with onnx we need to add these inputs into onnx model mannully :param op: a given operator

Parameters
  • X – onnx input list

  • X – onnx weight list

Returns: the onnx node

classmethod singa_op_to_onnx_node(op, op_t)

get a onnx node from singa operator :param op: a given operator

Parameters

op_t – the tensor of the operator

Returns

the onnx node

classmethod singa_to_onnx_graph(inputs, y, model_name='sonnx')

get onnx model from singa computational graph :param inputs: a list of input tensors (each is initialized with a name)

Parameters

y – a list of tensors, usually the outputs of the graph

Returns

the onnx model

classmethod singa_to_onnx_model(inputs, y, model_name='sonnx')

get onnx model from singa computational graph :param inputs: a list of input tensors (each is initialized with a name)

Parameters

y – a list of tensors, usually the outputs of the graph

Returns

the onnx model

class singa.sonnx.OnnxNode(node)

Reimplementation of NodeProto from ONNX, but in a form more convenient to work with from Python.

getattr(key, default=None)
class singa.sonnx.OnnxAttributes

This is a more convenient way to work with ONNX attributes that is not the protobuf representation.

static from_onnx(args)
class singa.sonnx.SingaBackend
classmethod run_node(onnx_node, inputs, opset_version=11)

run a single singa operator from a onnx node :param onnx_node: a given onnx node

Parameters
  • inputs – the input tensor

  • device – the used device

  • opset_version – the opset version

Returns

list, the output of the

classmethod prepare(model, device, **kwargs)

get the batch norm operator from onnx node :param model: a given onnx node

Parameters

device – the used device

Returns

a list of output values

class singa.sonnx.SingaRep(model, weights, singa_ops, keep_initializers_as_inputs=True)
run(inputs, **kwargs)

run the forward of singa model :param inputs: a given operator

Returns

the onnx node

singa.sonnx.run_node(onnx_node, inputs, opset_version=11)

run a single singa operator from a onnx node :param onnx_node: a given onnx node

Parameters
  • inputs – the input tensor

  • device – the used device

  • opset_version – the opset version

Returns

list, the output of the

singa.sonnx.prepare(model, device, **kwargs)

get the batch norm operator from onnx node :param model: a given onnx node

Parameters

device – the used device

Returns

a list of output values

singa.sonnx.get_op(onnx_node, inputs, opset_version=11)

get a singa operator(handle and autograd) from a onnx node :param onnx_node: a given onnx node

Parameters
  • inputs – the input list

  • opset_version – the opset version

Returns

a dict of tensors

Returns

a list of SingaOps(‘name’, ‘op’, ‘handle’, ‘forward’)

singa.sonnx.to_onnx(inputs, y, model_name='sonnx')

get onnx model from singa computational graph :param inputs: a list of input tensors (each is initialized with a name)

Parameters

y – a list of tensors, usually the outputs of the graph

Returns

the onnx model