def get_smooth_quant_qconfig_mapping(
    alpha=0.5,
    act_observer=None,
    act_ic_observer=None,
    wei_observer=None,
    wei_ic_observer=None,
    share_weight_observers=True,
):
    """
    Configuration with SmoothQuant for static quantization of large language models (LLM)
    For SmoothQuant, see https://arxiv.org/pdf/2211.10438.pdf

    Args:
        alpha: Hyper-parameter for SmoothQuant.
        act_observer: Observer for activation of ops other than nn.Linear.
            HistogramObserver by default. For nn.Linear with SmoothQuant
            enabled, q-param is calculated based on act_ic_observer's and
            wei_ic_observer's min/max. It is not affected by this argument.
            Example: ``torch.ao.quantization.MinMaxObserver``
        act_ic_observer: Per-input-channel Observer for activation.
            For nn.Linear with SmoothQuant enabled only.
            PerChannelMinMaxObserver by default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(ch_axis=1)``
        wei_observer: Observer for weight of all weighted ops.
            For nn.Linear with SmoothQuant enabled, it calculates q-params
            after applying scaling factors. PerChannelMinMaxObserver by
            default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(\
dtype=torch.qint8, qscheme=torch.per_channel_symmetric)``
        wei_ic_observer: Per-input-channel Observer for weight.
            For nn.Linear with SmoothQuant enabled only.
            PerChannelMinMaxObserver by default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(ch_axis=1)``

    Returns:
        torch.ao.quantization.QConfig
    """
    qconfig = QConfigSmoothQuant(
        activation=SmoothQuantActivationObserver.with_args(
            reduce_range=False,
            alpha=float(alpha),
            act_observer=act_observer,
            act_ic_observer=act_ic_observer,
        ),
        weight=SmoothQuantWeightObserver.with_args(
            dtype=torch.qint8,
            qscheme=torch.per_channel_symmetric,
            alpha=float(alpha),
            wei_observer=wei_observer,
            wei_ic_observer=wei_ic_observer,
        ),
        share_weight_observers=share_weight_observers,
    )
    return QConfigMapping().set_global(qconfig)

    Configuration with SmoothQuant for static quantization of large language models (LLM)
    For SmoothQuant, see https://arxiv.org/pdf/2211.10438.pdf

    Args:
        alpha: Hyper-parameter for SmoothQuant.
        act_observer: Observer for activation of ops other than nn.Linear.
            HistogramObserver by default. For nn.Linear with SmoothQuant
            enabled, q-param is calculated based on act_ic_observer's and
            wei_ic_observer's min/max. It is not affected by this argument.
            Example: ``torch.ao.quantization.MinMaxObserver``
        act_ic_observer: Per-input-channel Observer for activation.
            For nn.Linear with SmoothQuant enabled only.
            PerChannelMinMaxObserver by default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(ch_axis=1)``
        wei_observer: Observer for weight of all weighted ops.
            For nn.Linear with SmoothQuant enabled, it calculates q-params
            after applying scaling factors. PerChannelMinMaxObserver by
            default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(dtype=torch.qint8, qscheme=torch.per_channel_symmetric)``
        wei_ic_observer: Per-input-channel Observer for weight.
            For nn.Linear with SmoothQuant enabled only.
            PerChannelMinMaxObserver by default.
            Example: ``torch.ao.quantization.PerChannelMinMaxObserver.with_args(ch_axis=1)``

    Returns:
        torch.ao.quantization.QConfig
    
intel_extension_for_pytorch/quantization/_qconfig.py