optimizer icon indicating copy to clipboard operation
optimizer copied to clipboard

why default pass only have 'eliminate_nop_transpose', 'eliminate_nop_pad','fuse_consecutive_transposes', 'fuse_transpose_into_gemm'?

Open Veiiling opened this issue 4 years ago • 0 comments

In optimze func:

def optimize(model, passes=None, fixed_point=False):  # type: (ModelProto, Optional[Sequence[Text]], bool) -> ModelProto
    """Apply the optimization on the serialized ModelProto.
    Arguments:
        input (ModelProto): model
        names (list of string): list of optimization names
    Return:
        return (ModelProto) optimized model
    """
    if passes is None:
        print('WARNING: defualt optimization passes will be enlarged to all fuse and elimination passes in the next version')
        passes = ['eliminate_nop_transpose',
                  'eliminate_nop_pad',
                  'fuse_consecutive_transposes',
                  'fuse_transpose_into_gemm']
    if not isinstance(model, ModelProto):
        raise ValueError(
            'Optimizer only accepts ModelProto, incorrect type: {}'.format(type(model)))

    model_str = model.SerializeToString()
    if fixed_point:
        optimized_model_str = C.optimize_fixedpoint(model_str, passes)
    else:
        optimized_model_str = C.optimize(model_str, passes)

    return onnx.load_from_string(optimized_model_str)

default pass: passes = ['eliminate_nop_transpose', 'eliminate_nop_pad', 'fuse_consecutive_transposes', 'fuse_transpose_into_gemm']

Why are there only these types of default passes? Can all passes be used together? Are there any restrictions between various passes?

Veiiling avatar Oct 13 '21 03:10 Veiiling