Auto Channels Last

Channels last memory format is known to have performance advantage over channels first memory format. Refer to Channels Last for details. Intel® Extension for PyTorch* automatically converts the model to channels last memory format by default when users optimize their model with ipex.optimize(model).

Ease-of-use auto channels last API

Note: Auto channels last APIs ipex.enable_auto_channels_last() and ipex.disable_auto_channels_last() will be deprecated in future releases.

default

model = ipex.optimize(model) # by default, model is channels last

enable

ipex.enable_auto_channels_last() # This API will be deprecated in future releases.
model = ipex.optimize(model) # enable, model is channels last

disable

ipex.disable_auto_channels_last() # This API will be deprecated in future releases.
model = ipex.optimize(model) # disable, model is channels first 

Known issue

For broad models, channels last memory format brings performance boost over channels first memory format. However, for few use cases, this may bring performance regression. If performance regression is observed, we recommend to feed sample input data to ipex.optimize(model, sample_input=...).

model = ipex.optimize(model, sample_input=...)