Beispiel #1
0
 def create_dataloader(wrap_dataloader,
                       config,
                       num_samples=1) -> DataLoader:
     data_loader = create_mock_dataloader(config, num_samples)
     if wrap_dataloader:
         data_loader = DefaultInitializingDataLoader(data_loader)
     return data_loader
Beispiel #2
0
def test_hawq_manual_configs(manual_config_params):
    config_name, bit_stats = manual_config_params
    config = NNCFConfig.from_json(str(EXAMPLES_DIR.joinpath('classification', 'configs', 'quantization') / config_name))
    config['quantizer_setup_type'] = 'pattern_based'
    config = register_default_init_args(config, train_loader=create_mock_dataloader(config), criterion=None)
    model = load_model(config['model'], pretrained=False)
    model.eval()

    _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config)

    table = compression_ctrl.non_stable_metric_collectors[0].get_bits_stat()
    # pylint: disable=protected-access
    assert table._rows == bit_stats
def test_hawq_manual_configs(manual_config_params, hw_config):
    config_name, bit_stats = manual_config_params
    config = NNCFConfig.from_json(str(EXAMPLES_DIR.joinpath('classification', 'configs', 'quantization') / config_name))
    config = register_default_init_args(config, criterion=None, train_loader=create_mock_dataloader(config))
    if hw_config:
        config['hw_config'] = hw_config.value
    model = load_model(config['model'], pretrained=False)
    model.eval()

    _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config)

    table = compression_ctrl.get_bit_stats()
    # pylint: disable=protected-access
    assert table._rows == bit_stats
def create_test_quantization_env() -> QuantizationEnv:
    model = BasicConvTestModel()
    nncf_network = NNCFNetwork(model,
                               input_infos=[ModelInputInfo([1, 1, 4, 4])])
    hw_config_type = HWConfigType.VPU
    hw_config_path = HWConfig.get_path_to_hw_config(hw_config_type)
    hw_config = HWConfig.from_json(hw_config_path)
    setup = PropagationBasedQuantizerSetupGenerator(
        NNCFConfig(), nncf_network, hw_config=hw_config).generate_setup()
    experimental_builder = ExperimentalQuantizationBuilder(setup, {})
    experimental_builder.apply_to(nncf_network)
    # pylint:disable=line-too-long
    experimental_ctrl = nncf_network.commit_compression_changes(
    )  # type: ExperimentalQuantizationController
    data_loader = create_mock_dataloader({
        "sample_size": [1, 1, 4, 4],
    })
    constraints = HardwareQuantizationConstraints()
    for qid in experimental_ctrl.all_quantizations:
        qconf_constraint_list = []
        qconf = experimental_ctrl.all_quantizations[qid].get_current_config()
        bit_set = [8, 4, 2] if 'conv' in str(qid) else [8, 4]
        for bits in bit_set:
            adj_qconf = deepcopy(qconf)
            adj_qconf.bits = bits
            qconf_constraint_list.append(adj_qconf)
        constraints.add(qid, qconf_constraint_list)

    return QuantizationEnv(nncf_network,
                           experimental_ctrl,
                           constraints,
                           data_loader,
                           lambda *x: 0,
                           hw_config_type=HWConfigType.VPU,
                           params=QuantizationEnvParams(
                               compression_ratio=0.15,
                               eval_subset_ratio=1.0,
                               skip_constraint=False,
                               finetune=False,
                               bits=[2, 4, 8],
                               dump_init_precision_data=False))
Beispiel #5
0
def create_regular_dataloader():
    return create_mock_dataloader(config=get_empty_config(),
                                  num_samples=N_SAMPLE)