def METHOD_NAME():
    model = Mnist().to(device)
    configure_list = [{
        'target_names':['_input_', 'weight'],
        'op_names': ['conv2'],
        'quant_dtype': 'int8',
        'quant_scheme': 'affine',
        'granularity': 'default',
    },{
        'op_names': ['relu1', 'relu2'],
        'target_names': ['_output_'],
        'quant_dtype': 'int8',
        'quant_scheme': 'affine',
        'granularity': 'default',
    },{
        'op_names': ['max_pool2'],
        'target_names': ['_output_'],
        'quant_dtype': 'int8',
        'quant_scheme': 'affine',
        'granularity': 'default',
    },
    {
        'target_names':['_input_', 'weight', '_output_'],
        'op_names': ['conv1'],
        'quant_dtype': 'int8',
        'quant_scheme': 'affine',
        'granularity': 'default',
        'fuse_names': [("conv1", "batchnorm1")]
    }]
    print(configure_list)
    print("use fused modules")
    optimizer = nni.trace(torch.optim.SGD)(model.parameters(), momentum=0.5, lr=1e-2)
    # from torch.optim.lr_scheduler import StepLR
    # lrs = nni.trace(StepLR)(optimizer, step_size=300, gamma=0.1)
    evaluator = TorchEvaluator(training_model, optimizer, training_step) #, lrs)
    quantizer = LsqQuantizer(model, configure_list, evaluator)
    for module_name, ts in quantizer._target_spaces.items():
        for target_name, target_name in ts.items():
            print(f"module_name={module_name}\ttarget_name={target_name}\t")
    for module_name, wrapper in quantizer._module_wrappers.items():
        print("module_name={}\twrapper={}\tbias={}".format(module_name, wrapper, getattr(wrapper, "bias", -1)))
    model, calibration_config = quantizer.compress(None, 4)
    acc = evaluating_model(model)
    print(f"inference: acc:{acc}")
    print(f"calibration_config={calibration_config}")