Nano: upgrade openvino to 2022.3.0 and torchmetics to 0.11.0 (#7091)
This commit is contained in:
parent
c66cca0c62
commit
6375e36f00
5 changed files with 13 additions and 14 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue