Cheat Sheet
===========
Get started with Intel® Extension for PyTorch\* using the following commands:
|Description | Command |
| -------- | ------- |
| Basic CPU Installation | `python -m pip install intel_extension_for_pytorch` |
| Import Intel® Extension for PyTorch\* | `import intel_extension_for_pytorch as ipex`|
| Capture a Verbose Log (Command Prompt) | `export ONEDNN_VERBOSE=1` |
| Optimization During Training | `model = ...`
`optimizer = ...`
`model.train()`
`model, optimizer = ipex.optimize(model, optimizer=optimizer)`|
| Optimization During Inference | `model = ...`
`model.eval()`
`model = ipex.optimize(model)` |
| Optimization Using the Low-Precision Data Type bfloat16
During Training (Default FP32) | `model = ...`
`optimizer = ...`
`model.train()`
`model, optimizer = ipex.optimize(model, optimizer=optimizer, dtype=torch.bfloat16)`
`with torch.no_grad():`
` with torch.cpu.amp.autocast():`
` model(data)` |
| Optimization Using the Low-Precision Data Type bfloat16
During Inference (Default FP32) | `model = ...`
`model.eval()`
`model = ipex.optimize(model, dtype=torch.bfloat16)`
`with torch.cpu.amp.autocast():`
` model(data)`
| [Prototype] Fast BERT Optimization | `from transformers import BertModel`
`model = BertModel.from_pretrained("bert-base-uncased")`
`model.eval()`
`model = ipex.fast_bert(model, dtype=torch.bfloat16)`|
| Run CPU Launch Script (Command Prompt):
Automate Configuration Settings for Performance | `ipexrun [knobs] [args]`|
| [Prototype] Run HyperTune to perform hyperparameter/execution configuration search | `python -m intel_extension_for_pytorch.cpu.hypertune --conf-file [args]`|
| [Prototype] Enable Graph capture | `model = …`
`model.eval()`
`model = ipex.optimize(model, graph_mode=True)`|
| Post-Training INT8 Quantization (Static) | `model = …`
`model.eval()`
`data = …`
`qconfig = ipex.quantization.default_static_qconfig`
`prepared_model = ipex.quantization.prepare(model, qconfig, example_inputs=data, anyplace=False)`
`for d in calibration_data_loader():`
` prepared_model(d)`
`converted_model = ipex.quantization.convert(prepared_model)`|
| Post-Training INT8 Quantization (Dynamic) | `model = …`
`model.eval()`
`data = …`
`qconfig = ipex.quantization.default_dynamic_qconfig`
`prepared_model = ipex.quantization.prepare(model, qconfig, example_inputs=data)`
`converted_model = ipex.quantization.convert(prepared_model)` |
| [Prototype] Post-Training INT8 Quantization (Tuning Recipe): | `model = …`
`model.eval()`
`data = …`
`qconfig = ipex.quantization.default_static_qconfig`
`prepared_model = ipex.quantization.prepare(model, qconfig, example_inputs=data, inplace=False)`
`tuned_model = ipex.quantization.autotune(prepared_model, calibration_data_loader, eval_function, sampling_sizes=[100],`
` accuracy_criterion={'relative': .01}, tuning_time=0)`
`convert_model = ipex.quantization.convert(tuned_model)`|