class_docstr: This is a NodeHandler class which deals with the batched matrix multiplication operation in PyTorch.
  Such operations including `torch.bmm` and `torch.Tensor.bmm` require the tensor to be 3D, thus, there is
  no logical-physical shape conversion in this handler.
class_docstr_tok: ["This","is","a","NodeHandler","class","which","deals","with","the","batched","matrix","multiplication","operation","in","PyTorch",".","Such","operations","including","`","torch.bmm","`","and","`","torch.Tensor.bmm","`","require","the","tensor","to","be","3D",",","thus",",","there","is","no","logical-physical","shape","conversion","in","this","handler","."]
code: def _infer_op_data_type(
      self, tensor: torch.Tensor
  ) -> OperationDataType:
      if isinstance(tensor, torch.nn.parameter.Parameter):
          data_type = OperationDataType.PARAM
      else:
          data_type = OperationDataType.ARG
      return data_type
  
file_path: ColossalAI/colossalai/auto_parallel/tensor_shard/node_handler/addmm_handler.py
imports: from typing import Dict, List, Union
  import torch
  from ..sharding_strategy import OperationData, OperationDataType, ShardingStrategy
  from ..utils import comm_actions_for_oprands, recover_sharding_spec_for_broadcast_shape
  from .node_handler import NodeHandler
  from .registry import operator_registry
  from .strategy import LinearProjectionStrategyGenerator, StrategyGenerator
label_desc: Use image node_id 1 for calling the ADDMMFunctionHandler obj's underlying member method code with example usage: obj._infer_op_data_type(tensor) and returns: data_type