class_docstr: Determines whether dynamic or static quantization is more appropriate for a given module.
  
  Takes advantage of the ModelReportObserver that records range information.
  Stationary distribution of data are strictly above tolerance level for the comparison statistic:
  
      S = average_batch_activation_range/epoch_activation_range
  
  Nonstationary distributions are below or at the tolerance level for this metric.
  
  If the distribution of data right after the module is non-stationary, recommend dynamic quantization
      Otherwise recommend static quantization
  
  Args:
      tolerance (float, optional): The threshold where S metric is stationary above and non-stationary otherwise. Default: 0.5
class_docstr_tok: ["Determines","whether","dynamic","or","static","quantization","is","more","appropriate","for","a","given","module",".","Takes","advantage","of","the","ModelReportObserver","that","records","range","information",".","Stationary","distribution","of","data","are","strictly","above","tolerance","level","for","the","comparison","statistic",":","S","=","average_batch_activation_range\/epoch_activation_range","Nonstationary","distributions","are","below","or","at","the","tolerance","level","for","this","metric",".","If","the","distribution","of","data","right","after","the","module","is","non-stationary",",","recommend","dynamic","quantization","Otherwise","recommend","static","quantization","Args",":","tolerance","(","float",",","optional",")",":","The","threshold","where","S","metric","is","stationary","above","and","non-stationary","otherwise",".","Default",":","0.5"]
docstr: returns the string name of this detector
docstr_tok: ["returns","the","string","name","of","this","detector"]
code: def get_detector_name(self) -> str:
      r"""returns the string name of this detector"""
      return "dynamic_vs_static_detector"
  
imports: from typing import Any, Dict, Set, Tuple, Callable, List
  import torch
  import torch.nn
  import torch.ao.nn.qat
  from abc import ABC, abstractmethod
  from torch.ao.quantization.fake_quantize import FakeQuantize
  from torch.ao.quantization.fx.graph_module import GraphModule
  from torch.ao.quantization.fx._model_report.model_report_observer import ModelReportObserver
  from torch.ao.quantization.qconfig import QConfig, default_qconfig, _assert_valid_qconfig
  from torch.ao.quantization.observer import ObserverBase, default_dynamic_quant_observer, default_per_channel_weight_observer, default_observer, default_weight_observer
  from torch.ao.quantization.fx._equalize import default_equalization_qconfig, EqualizationQConfig
  from torch.ao.quantization.observer import _is_activation_post_process
label_desc: Use image node_id 3 for calling the DynamicStaticDetector obj's underlying member method code with example usage: obj.get_detector_name() and returns: str