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 |
| Basic GPU Installation | pip install torch==<version> --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/us/pip install intel_extension_for_pytorch==<version> --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/cpu/us/-xpu |
| 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) |
| [Experimental] Fast BERT Optimization | from transformers import BertModelmodel = 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] <your_pytorch_script> [args] |
| [Experimental] Run HyperTune to perform hyperparameter/execution configuration search | python -m intel_extension_for_pytorch.cpu.hypertune --conf-file <your_conf_file> <your_python_script> [args] |
| [Experimental] 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_qconfigprepared_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_qconfigprepared_model = ipex.quantization.prepare(model, qconfig, example_inputs=data)converted_model = ipex.quantization.convert(prepared_model) |
| [Experimental] Post-Training INT8 Quantization (Tuning Recipe): | model = …model.eval()data = …qconfig = ipex.quantization.default_static_qconfigprepared_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) |