ipex-llm icon indicating copy to clipboard operation
ipex-llm copied to clipboard

Nano: add ipex and jit options to `bigdl.nano.pytorch.Trainer.trace`

Open TheaperDeng opened this issue 3 years ago • 2 comments

Motivation

Since we find for some models(e.g. Autoformer in Chronos), JIT and ipex brings some improvement on inference latency while Onnxruntime and OpenVINO can not work properly (e.g. lack of operators).

API design

There is no special design in this issue, we are working on a really similar API as onnxruntime and openvino.

# ipex
model_ipex = Trainer.trace(model, accelerator=None, use_ipex=True...)
model_ipex(*args)

# jit
model_jit = Trainer.trace(model, accelerator="jit", input_sample=input_sample, use_ipex=False...)
model_jit(*args)

# jit + ipex
model_jit_ipex = Trainer.trace(model, accelerator="jit", input_sample=input_sample, use_ipex=True...)
model_jit_ipex(*args)

Working on a PR to implement this design.

TheaperDeng avatar Jul 19 '22 14:07 TheaperDeng

# ipex
model_ipex = Trainer.trace(model, accelerator=None, use_ipex=True, ...)
model_ipex(*args)

# jit
model_jit = Trainer.trace(model, accelerator="jit", input_sample=input_sample, ...)
model_jit(*args)

# jit + ipex
model_jit_ipex = Trainer.trace(model, accelerator="jit", input_sample=input_sample, use_ipex=True, ...)
model_jit_ipex(*args)

Maybe this is more closer to the parameter of Trainer ?

rnwang04 avatar Jul 20 '22 03:07 rnwang04

# ipex
model_ipex = Trainer.trace(model, accelerator=None, use_ipex=True, ...)
model_ipex(*args)

# jit
model_jit = Trainer.trace(model, accelerator="jit", input_sample=input_sample, ...)
model_jit(*args)

# jit + ipex
model_jit_ipex = Trainer.trace(model, accelerator="jit", input_sample=input_sample, use_ipex=True, ...)
model_jit_ipex(*args)

Maybe this is more closer to the parameter of Trainer ?

yes, I have changed to this design, which is more consistent.

TheaperDeng avatar Jul 20 '22 05:07 TheaperDeng