Incompatible changes between v1.2 and v1.1

User-facing APIs

The user-facing APIs are changed between v1.2 and v1.1. The major changes are:

  1. v1.2 abstracts neural_compressor.common.Model concept to cover those cases whose weight and graph files are stored separately.

  2. v1.2 unifies the calling style by setting model, calibration dataloader, evaluation dataloader, and metric through quantizer attributes rather than passing as function inputs.

Refer to below examples for details.

# user facing API example in v1.1
quantizer = Quantization("/path/to/user.yaml")
ds = dataset("/path/to/dataset")
dataloader = quantizer.dataloader(ds, batch_size=100)
quantizer.metric("metric", metric)
q_model = quantizer(
    "/path/to/model",
    q_dataloader=dataloader,
    eval_dataloader=dataloader,
)
...  # user to write framework specific code to save q_model
# user facing API example in v1.2
quantizer = Quantization(conf.yaml)
quantizer.model = "/path/to/model"
dl = dataset("/path/to/dataset")
quantizer.calib_dataloader = common.DataLoader(dl, batch_size=32)
quantizer.eval_dataloader = common.DataLoader(dl, batch_size=32)
quantizer.metric = common.Metric(custom_metric)
q_model = quantizer.fit()
q_model.save("/path/to/output/dir")  # explicitly call to save q_model

Built-in transform/dataset/metric APIs

v1.2 refines Neural Compressor built-in transform/dataset/metric to unify APIs cross different framework backends.

Refer to dataset, transform, and metric to learn how to use them in yaml or code.