class RandomDataset(torch.utils.data.Dataset): def __len__(self): return 10000 def __getitem__(self, idx): return torch.randn(3, 224, 224) def nncf_quantize(onnx_path): import nncf core = Core() onnx_model = core.read_model(onnx_path) calibration_loader = torch.utils.data.DataLoader(RandomDataset()) input_name = onnx_model.inputs[0].get_any_name() transform_fn = lambda data_item: {input_name: data_item.numpy()} calibration_dataset = nncf.Dataset(calibration_loader, transform_fn) quantized_model = nncf.quantize(onnx_model, calibration_dataset) return core.compile_model(quantized_model, "CPU") batch_size = 8 model = get_model() onnx_path = export_to_onnx(model) q_model = nncf_quantize(onnx_path) batch = get_input(batch_size).numpy() infer_fn = openvino_infer_fn(q_model) avg_time = benchmark(infer_fn, batch) print(f"\nAverage samples per second: {(batch_size/avg_time):.2f}")