Objective
Introduction
In terms of evaluating the status of a specific model during tuning, we should have general objectives. Intel® Neural Compressor Objective supports code-free configuration through neural_compressor.config.TuningCriterion. With built-in objectives, users can compress models with different objectives easily. In special cases, users can also register their own objective classes.
Single Objective
The objective supported by Intel® Neural Compressor is driven by accuracy. If users want to evaluate a specific model with other objectives, they can realize it with objective in a yaml file. Default value for objective is performance, and the other values are modelsize and footprint.
Multiple Objectives
In some cases, users want to use more than one objective to evaluate the status of a specific model and they can realize it with multi_objectives in a yaml file. Currently multi_objectives supports built-in objectives.
If users use multi_objectives to evaluate the status of the model during tuning, Neural Compressor will return a model with the best score of multi_objectives and meeting accuracy_criterion after tuning ending.
Intel® Neural Compressor will normalize the results of each objective to calculate the final weighted multi_objective score.
Objective Support Matrix
Built-in objectives support list:
| Objective | Usage |
|---|---|
| accuracy | Evaluate the accuracy |
| performance | Evaluate the inference time |
| footprint | Evaluate the peak size of memory blocks during inference |
| modelsize | Evaluate the model size |
Get Started with Objective API
Config Single Objective
Users can specify a built-in objective in neural_compressor.config.TuningCriterion as shown below:
from neural_compressor.config import TuningCriterion
tuning_criterion = TuningCriterion(objective="accuracy")
Config Multiple Objectives
Users can specify built-in multiple objectives in neural_compressor.config.TuningCriterion as shown below:
from neural_compressor.config import TuningCriterion
tuning_criterion = TuningCriterion(objective=["performance", "accuracy"])