* [Docs][PyOV] update python snippets * first snippet * Fix samples debug * Fix linter * part1 * Fix speech sample * update model state snippet * add serialize * add temp dir * CPU snippets update (#134) * snippets CPU 1/6 * snippets CPU 2/6 * snippets CPU 3/6 * snippets CPU 4/6 * snippets CPU 5/6 * snippets CPU 6/6 * make module TODO: REMEMBER ABOUT EXPORTING PYTONPATH ON CIs ETC * Add static model creation in snippets for CPU * export_comp_model done * leftovers * apply comments * apply comments -- properties * small fixes * rempve debug info * return IENetwork instead of Function * apply comments * revert precision change in common snippets * update opset * [PyOV] Edit docs for the rest of plugins (#136) * modify main.py * GNA snippets * GPU snippets * AUTO snippets * MULTI snippets * HETERO snippets * Added properties * update gna * more samples * Update docs/OV_Runtime_UG/model_state_intro.md * Update docs/OV_Runtime_UG/model_state_intro.md * attempt1 fix ci * new approach to test * temporary remove some files from run * revert cmake changes * fix ci * fix snippet * fix py_exclusive snippet * fix preprocessing snippet * clean-up main * remove numpy installation in gha * check for GPU * add logger * iexclude main * main update * temp * Temp2 * Temp2 * temp * Revert temp * add property execution devices * hide output from samples --------- Co-authored-by: p-wysocki <przemyslaw.wysocki@intel.com> Co-authored-by: Jan Iwaszkiewicz <jan.iwaszkiewicz@intel.com> Co-authored-by: Karol Blaszczak <karol.blaszczak@intel.com>
64 lines
1.7 KiB
Python
64 lines
1.7 KiB
Python
# Copyright (C) 2018-2023 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
#! [dataset]
|
|
import nncf
|
|
import torch
|
|
|
|
calibration_loader = torch.utils.data.DataLoader(...)
|
|
|
|
def transform_fn(data_item):
|
|
images, _ = data_item
|
|
return images
|
|
|
|
calibration_dataset = nncf.Dataset(calibration_loader, transform_fn)
|
|
validation_dataset = nncf.Dataset(calibration_loader, transform_fn)
|
|
#! [dataset]
|
|
|
|
#! [validation]
|
|
import numpy as np
|
|
import torch
|
|
import openvino
|
|
from sklearn.metrics import accuracy_score
|
|
|
|
def validate(model: openvino.CompiledModel,
|
|
validation_loader: torch.utils.data.DataLoader) -> float:
|
|
predictions = []
|
|
references = []
|
|
|
|
output = model.outputs[0]
|
|
|
|
for images, target in validation_loader:
|
|
pred = model(images)[output]
|
|
predictions.append(np.argmax(pred, axis=1))
|
|
references.append(target)
|
|
|
|
predictions = np.concatenate(predictions, axis=0)
|
|
references = np.concatenate(references, axis=0)
|
|
return accuracy_score(predictions, references)
|
|
#! [validation]
|
|
|
|
#! [quantization]
|
|
model = ... # openvino.Model object
|
|
|
|
quantized_model = nncf.quantize_with_accuracy_control(model,
|
|
calibration_dataset=calibration_dataset,
|
|
validation_dataset=validation_dataset,
|
|
validation_fn=validate,
|
|
max_drop=0.01,
|
|
drop_type=nncf.DropType.ABSOLUTE)
|
|
#! [quantization]
|
|
|
|
#! [inference]
|
|
import openvino as ov
|
|
|
|
# compile the model to transform quantized operations to int8
|
|
model_int8 = ov.compile_model(quantized_model)
|
|
|
|
input_fp32 = ... # FP32 model input
|
|
res = model_int8(input_fp32)
|
|
|
|
# save the model
|
|
ov.serialize(quantized_model, "quantized_model.xml")
|
|
#! [inference]
|