docstr: Forward once to track information, such as the wrapped module input/output shape.
  Make sure the input has the same batch size and data distribution with the batch sampled from dataloader.
  The track logic can be found in ``ModuleWrapper._track_info``.
  
  Parameters
  ----------
  args
      Positional real input to the model.
  kwargs
      Keyword real input to the model.
docstr_tok: ["Forward","once","to","track","information",",","such","as","the","wrapped","module","input\/output","shape",".","Make","sure","the","input","has","the","same","batch","size","and","data","distribution","with","the","batch","sampled","from","dataloader",".","The","track","logic","can","be","found","in","``","ModuleWrapper._track_info","``",".","Parameters","--","--","--","--","--","args","Positional","real","input","to","the","model",".","kwargs","Keyword","real","input","to","the","model","."]
code: def track_forward(self, *args, **kwargs):
      """
      Forward once to track information, such as the wrapped module input/output shape.
      Make sure the input has the same batch size and data distribution with the batch sampled from dataloader.
      The track logic can be found in ``ModuleWrapper._track_info``.
  
      Parameters
      ----------
      args
          Positional real input to the model.
      kwargs
          Keyword real input to the model.
      """
      assert (
          self._is_wrapped
      ), "The bound model is not wrapped, can not track information with an unwrapped model."
      with torch.no_grad():
          model_device = next(
              iter(self.bound_model.parameters())
          ).device
          args = tree_map(
              lambda x: x.to(model_device)
              if isinstance(x, torch.Tensor)
              else x,
              args,
          )
          kwargs = tree_map(
              lambda x: x.to(model_device)
              if isinstance(x, torch.Tensor)
              else x,
              kwargs,
          )
          self.bound_model(*args, **kwargs)
  
imports: from __future__ import annotations
  from collections import defaultdict
  from copy import deepcopy
  import logging
  from typing import Any, Dict, List, Literal, Callable
  import torch
  from torch.utils._pytree import tree_map
  from .config import trans_legacy_config_list, default_config_schema
  from .target_space import TargetSpace, TargetType, DistillationTargetSpace, PruningTargetSpace, QuantizationTargetSpace
  from .wrapper import ModuleWrapper, register_wrappers
  from ..utils import Evaluator, Scaling, _EVALUATOR_DOCSTRING
label_desc: Use image node_id 6 for calling the Compressor obj's underlying member method code with example usage: obj.track_forward() without return types