Nano: upgrade openvino to 2022.3.0 and torchmetics to 0.11.0 (#7091)

This commit is contained in:
Yishuo Wang 2022-12-29 17:35:37 +08:00 committed by GitHub
parent c66cca0c62
commit 6375e36f00
5 changed files with 13 additions and 14 deletions

View file

@ -160,12 +160,12 @@ There are a few arguments required only by INC, and you should not specify or mo
Here is an example to use INC with accuracy control as below. It will search for a model within 1% accuracy drop with 10 trials.
```python
from torchmetrics.classification import Accuracy
from torchmetrics.classification import MulticlassAccuracy
InferenceOptimizer.quantize(model,
precision='int8',
accelerator=None,
calib_data=dataloader,
metric=Accuracy()
metric=MulticlassAccuracy(num_classes=10)
accuracy_criterion={'relative': 0.01, 'higher_is_better': True},
approach='static',
method='fx',
@ -182,7 +182,7 @@ InferenceOptimizer.quantize(model,
precision='int8',
accelerator='openvino',
calib_data=dataloader,
metric=Accuracy()
metric=MulticlassAccuracy(num_classes=10)
accuracy_criterion={'relative': 0.01, 'higher_is_better': True},
approach='static',
max_trials=10,

View file

@ -76,12 +76,12 @@ There are a few arguments required only by INC.
- `outputs`: A list of output names. Default: None, automatically get names from the graph.
Here is an example to use INC with accuracy control as below. It will search for a model within 1% accuracy drop with 10 trials.
```python
from torchmetrics.classification import Accuracy
from torchmetrics.classification import MulticlassAccuracy
q_model = model.quantize(precision='int8',
accelerator=None,
calib_dataset= train_dataset,
metric=Accuracy(),
metric=MulticlassAccuracy(num_classes=10),
accuracy_criterion={'relative': 0.01, 'higher_is_better': True},
approach='static',
tuning_strategy='bayesian',

View file

@ -52,7 +52,7 @@ train_dataloader = DataLoader(train_dataset, batch_size=32)
import torch
from torchvision.models import resnet18
from bigdl.nano.pytorch import Trainer
from torchmetrics import Accuracy
from torchmetrics.classification import MulticlassAccuracy
model_ft = resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
@ -62,7 +62,7 @@ loss_ft = torch.nn.CrossEntropyLoss()
optimizer_ft = torch.optim.SGD(model_ft.parameters(), lr=0.01, momentum=0.9, weight_decay=5e-4)
# Compile our model with loss function, optimizer.
model = Trainer.compile(model_ft, loss_ft, optimizer_ft, metrics=[Accuracy])
model = Trainer.compile(model_ft, loss_ft, optimizer_ft, metrics=[MulticlassAccuracy(num_classes=37)])
trainer = Trainer(max_epochs=5)
trainer.fit(model, train_dataloader=train_dataloader)
@ -79,8 +79,8 @@ Quantization is widely used to compress models to a lower precision, which not o
Without extra accelerator, `InferenceOptimizer.quantize()` returns a pytorch module with desired precision and accuracy. You can add quantization as below:
```python
from bigdl.nano.pytorch import InferenceOptimizer
from torchmetrics.functional import accuracy
q_model = InferenceOptimizer.quantize(model, calib_data=train_dataloader, metric=accuracy)
from torchmetrics.classification import MulticlassAccuracy
q_model = InferenceOptimizer.quantize(model, calib_data=train_dataloader, metric=MulticlassAccuracy(num_classes=37))
# run simple prediction
y_hat = q_model(x)

View file

@ -51,7 +51,7 @@ train_dataloader = DataLoader(train_dataset, batch_size=32)
import torch
from torchvision.models import resnet18
from bigdl.nano.pytorch import Trainer
from torchmetrics import Accuracy
from torchmetrics.classification import MulticlassAccuracy
model_ft = resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
@ -61,7 +61,7 @@ loss_ft = torch.nn.CrossEntropyLoss()
optimizer_ft = torch.optim.SGD(model_ft.parameters(), lr=0.01, momentum=0.9, weight_decay=5e-4)
# Compile our model with loss function, optimizer.
model = Trainer.compile(model_ft, loss_ft, optimizer_ft, metrics=[Accuracy])
model = Trainer.compile(model_ft, loss_ft, optimizer_ft, metrics=[MulticlassAccuracy(num_classes=37)])
trainer = Trainer(max_epochs=5)
trainer.fit(model, train_dataloader=train_dataloader)
@ -78,8 +78,8 @@ With the ONNXRuntime accelerator, `InferenceOptimizer.quantize()` will return a
you can add quantization as below:
```python
from bigdl.nano.pytorch import InferenceOptimizer
from torchmetrics.functional import accuracy
ort_q_model = InferenceOptimizer.quantize(model, accelerator='onnxruntime', calib_data=train_dataloader, metric=accuracy)
from torchmetrics.classification import MulticlassAccuracy
ort_q_model = InferenceOptimizer.quantize(model, accelerator='onnxruntime', calib_data=train_dataloader, metric=MulticlassAccuracy(num_classes=37))
# run simple prediction
y_hat = ort_q_model(x)

View file

@ -77,7 +77,6 @@ y_hat.argmax(dim=1)
Accelerator='openvino' means using OpenVINO POT to do quantization. The quantization can be added as below:
```python
from bigdl.nano.pytorch import InferenceOptimizer
from torchmetrics import Accuracy
ov_q_model = InferenceOptimizer.quantize(model, accelerator="openvino", calib_data=data_loader)
# run simple prediction