code: def on_train_start(
      self, trainer: "pl.Trainer", pl_module: "pl.LightningModule"
  ):
      if not _avx512_checker():
          # IPEX BF16 weight prepack needs the cpu support avx512bw, avx512vl and avx512dq
          return
      if not TORCH_VERSION_LESS_1_10:
          if compare_version(
              "intel_extension_for_pytorch", operator.lt, "1.13.100"
          ):
              from intel_extension_for_pytorch.optim._optimizer_utils import (
                  IPEX_FUSED_OPTIMIZER_LIST,
              )
          else:
              from intel_extension_for_pytorch.optim._optimizer_utils import (
                  IPEX_FUSED_OPTIMIZER_LIST_CPU as IPEX_FUSED_OPTIMIZER_LIST,
              )
          # IPEX only support one optimizer
          opt = trainer.optimizers[0]
          if type(opt) in IPEX_FUSED_OPTIMIZER_LIST:
              assert opt.fused  # type: ignore
          else:
              # Check non-fused step
              assert hasattr(opt, "_original_step")
              assert getattr(opt, "step") is not getattr(
                  type(opt), "step"
              )
  
file_path: BigDL/python/nano/test/pytorch/utils/_train_ipex_callback.py
imports: import operator
  import torch
  import warnings
  from typing import Dict
  import pytorch_lightning
  from pytorch_lightning.callbacks import Callback
  from pytorch_lightning.plugins.training_type import SingleDevicePlugin, DDPSpawnPlugin
  from pytorch_lightning.accelerators.cpu import CPUAccelerator
  from bigdl.nano.utils.pytorch import TORCH_VERSION_LESS_1_10
  from bigdl.nano.utils.common import _avx512_checker
  from bigdl.nano.utils.common import compare_version
label_desc: Use image node_id 1 for calling the CheckIPEXFusedStepCallback obj's underlying member method code with example usage: obj.on_train_start(trainer, pl_module) without return types