:py:mod:`neural_compressor.model.torch_model` ============================================= .. py:module:: neural_compressor.model.torch_model .. autoapi-nested-parse:: Class for PyTorch model. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: neural_compressor.model.torch_model.PyTorchBaseModel neural_compressor.model.torch_model.PyTorchModel neural_compressor.model.torch_model.PyTorchFXModel neural_compressor.model.torch_model.IPEXModel .. py:class:: PyTorchBaseModel(model, **kwargs) Bases: :py:obj:`torch`, :py:obj:`neural_compressor.model.base_model.BaseModel` Build PyTorch base model. .. py:property:: model Getter to model. .. py:property:: fp32_model Getter to model. .. py:method:: forward(*args, **kwargs) Pytorch model forward func. .. py:method:: register_forward_pre_hook() Register forward pre hook. .. py:method:: remove_hooks() Remove hooks. .. py:method:: generate_forward_pre_hook() Generate forward pre hook. .. py:method:: framework() Return framework. .. py:method:: get_all_weight_names() Get weight names. .. py:method:: get_weight(tensor_name) Get weight value. .. py:method:: update_weights(tensor_name, new_tensor) Update weight value. :param tensor_name: weight name. :type tensor_name: string :param new_tensor: weight value. :type new_tensor: ndarray .. py:method:: update_gradient(grad_name, new_grad) Update grad value. :param grad_name: grad name. :type grad_name: str :param new_grad: grad value. :type new_grad: ndarray .. py:method:: prune_weights_(tensor_name, mask) Prune weight in place according to tensor_name with mask. :param tensor_name: weight name. :type tensor_name: str :param mask: pruning mask. :type mask: tensor .. py:method:: get_inputs(input_name=None) Get inputs of model. :param input_name: name of input tensor. Defaults to None. :type input_name: str, optional :returns: input tensor :rtype: tensor .. py:method:: get_gradient(input_tensor) Get gradients of specific tensor. :param input_tensor: weight name or a tensor. :type input_tensor: string or tensor :returns: gradient tensor array :rtype: ndarray .. py:method:: report_sparsity() Get sparsity of the model. :returns: DataFrame of sparsity of each weight. total_sparsity (float): total sparsity of model. :rtype: df (DataFrame) .. py:class:: PyTorchModel(model, **kwargs) Bases: :py:obj:`PyTorchBaseModel` Build PyTorchModel object. .. py:property:: workspace_path Return workspace path. .. py:property:: graph_info Return graph info. .. py:method:: save(root=None) Save configure file and weights. .. py:method:: quantized_state_dict() Load quantized state dict. .. py:method:: load_quantized_state_dict(stat_dict) Load quantized state with given dict. .. py:method:: export_to_jit(example_inputs=None) Export JIT model. .. py:method:: export_to_fp32_onnx(save_path='fp32-model.onnx', example_inputs=torch.rand([1, 1, 1, 1]), opset_version=14, dynamic_axes={'input': {0: 'batch_size'}, 'output': {0: 'batch_size'}}, input_names=None, output_names=None, do_constant_folding=True, verbose=True, fp32_model=None) Export PyTorch FP32 model to ONNX FP32 model. :param save_path: ONNX model path to save. Defaults to 'fp32-model.onnx'. :type save_path: str, optional :param example_inputs: example inputs for export. Defaults to torch.rand([1, 1, 1, 1]). :type example_inputs: torch.Tensor, optional :param opset_version: opset version for exported ONNX model. Defaults to 14. :type opset_version: int, optional :param dynamic_axes: specify axes of tensors as dynamic. Defaults to {"input": {0: "batch_size"}, "output": {0: "batch_size"}}. :type dynamic_axes: dict, optional :param input_names: names to assign to the input nodes of the graph, in order. Defaults to None. :type input_names: list or str, optional :param output_names: names to assign to the output nodes of the graph, in order. Defaults to None. :type output_names: list or str, optional :param do_constant_folding: Apply the constant-folding optimization. Defaults to True. :type do_constant_folding: bool, optional :param verbose: if True, prints a description of the model being exported to stdout. Defaults to True. :type verbose: bool, optional :param fp32_model: FP32 PyTorch model. Defaults to None. :type fp32_model: torch.nn.model, optional .. py:method:: export_to_bf16_onnx(save_path='bf16-model.onnx', example_inputs=torch.rand([1, 1, 1, 1]), opset_version=14, dynamic_axes={'input': {0: 'batch_size'}, 'output': {0: 'batch_size'}}, input_names=None, output_names=None, do_constant_folding=True, verbose=True) Export PyTorch bf16 model to ONNX bf16 model. :param save_path: ONNX model path to save. Defaults to 'bf16-model.onnx'. :type save_path: str, optional :param example_inputs: example inputs for export. Defaults to torch.rand([1, 1, 1, 1]). :type example_inputs: torch.Tensor, optional :param opset_version: opset version for exported ONNX model. Defaults to 14. :type opset_version: int, optional :param dynamic_axes: specify axes of tensors as dynamic. Defaults to {"input": {0: "batch_size"}, "output": {0: "batch_size"}}. :type dynamic_axes: dict, optional :param input_names: names to assign to the input nodes of the graph, in order. Defaults to None. :type input_names: list or str, optional :param output_names: names to assign to the output nodes of the graph, in order. Defaults to None. :type output_names: list or str, optional :param do_constant_folding: Apply the constant-folding optimization. Defaults to True. :type do_constant_folding: bool, optional :param verbose: if True, prints a description of the model being exported to stdout. Defaults to True. :type verbose: bool, optional .. py:method:: export_to_int8_onnx(save_path='int8-model.onnx', example_inputs=torch.rand([1, 1, 1, 1]), opset_version=14, dynamic_axes={'input': {0: 'batch_size'}, 'output': {0: 'batch_size'}}, input_names=None, output_names=None, do_constant_folding=True, quant_format='QDQ', dtype='S8S8', fp32_model=None, calib_dataloader=None) Export PyTorch int8 model to ONNX int8 model. :param save_path: ONNX model path to save. Defaults to 'int8-model.onnx'. :type save_path: str, optional :param example_inputs: example inputs for export. Defaults to torch.rand([1, 1, 1, 1]). :type example_inputs: torch.Tensor, optional :param opset_version: opset version for exported ONNX model. Defaults to 14. :type opset_version: int, optional :param dynamic_axes: specify axes of tensors as dynamic. Defaults to {"input": {0: "batch_size"}, "output": {0: "batch_size"}}. :type dynamic_axes: dict, optional :param input_names: names to assign to the input nodes of the graph, in order. Defaults to None. :type input_names: list or str, optional :param output_names: names to assign to the output nodes of the graph, in order. Defaults to None. :type output_names: list or str, optional :param do_constant_folding: Apply the constant-folding optimization. Defaults to True. :type do_constant_folding: bool, optional :param quant_format: format of quantized ONNX model. Defaults to 'QDQ'. :type quant_format: str, optional :param dtype: type for quantized activation and weight. Defaults to 'S8S8'. :type dtype: str, optional :param fp32_model: FP32 PyTorch model. Defaults to None. :type fp32_model: torch.nn.model, optional :param calib_dataloader: calibration dataloader. Defaults to None. :type calib_dataloader: object, optional .. py:method:: export(save_path: str, conf) Export PyTorch model to ONNX model. .. py:class:: PyTorchFXModel(model, **kwargs) Bases: :py:obj:`PyTorchModel` Build PyTorchFXModel object. .. py:class:: IPEXModel(model, **kwargs) Bases: :py:obj:`PyTorchBaseModel` Build IPEXModel object. .. py:property:: workspace_path Return workspace path. .. py:method:: save(root=None) Save PyTorch IPEX model.