ó
    qyüiÝ
  ã                   óÌ   • S SK Jr  SSKJr  \(       a  SSKJr  SSKJr  SSKJ	r	  SSK
JrJrJrJr  SS	KJr  \" 5       (       a  S S
Kr\R"                  " \5      r " S S\5      rg
)é    )ÚTYPE_CHECKINGé   )ÚHfQuantizeré   )ÚPreTrainedModel)Ú
SpQRConfig)Úreplace_with_spqr_linear)Úis_accelerate_availableÚis_spqr_availableÚis_torch_availableÚlogging)ÚQuantizationConfigMixinNc                   óx   ^ • \ rS rSr% SrSrS\S'   S\4U 4S jjrS r	SS jr
  SS	 jr\S
 5       rS rSrU =r$ )ÚSpQRHfQuantizeré"   zK
Quantizer of the SpQR method. Enables the loading of prequantized models.
Tr   Úquantization_configc                 ó(   >• [         TU ]  " U40 UD6  g )N)ÚsuperÚ__init__)Úselfr   ÚkwargsÚ	__class__s      €Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/quantizers/quantizer_spqr.pyr   ÚSpQRHfQuantizer.__init__*   s   ø€ Ü‰ÒÐ,Ñ7°Ó7ó    c                 óÈ   • [         R                  R                  5       (       d  [        S5      e[	        5       (       d  [        S5      e[        5       (       d  [        S5      eg )Nz,GPU is required to run SpQR quantized model.zGUsing `spqr` quantization requires Accelerate: `pip install accelerate`zFUsing `spqr` quantization requires SpQR: `pip install spqr_quant[gpu]`)ÚtorchÚcudaÚis_availableÚRuntimeErrorr
   ÚImportErrorr   )r   Úargsr   s      r   Úvalidate_environmentÚ$SpQRHfQuantizer.validate_environment-   sP   € Ü�z‰z×&Ñ&×(Ñ(ÜÐMÓNÐNä&×(Ñ(ÜÐgÓhÐhä ×"Ñ"ÜÐfÓgÐgð #r   c                 óD   • U[         R                  :w  a  [        S5      eU$ )NzdYou cannot use any type other than torch.float16 for SpQR. Please set it totorch.float16 explicitly.)r   Úfloat16Ú
ValueError)r   Údtypes     r   Úupdate_dtypeÚSpQRHfQuantizer.update_dtype7   s%   € Ø”E—M‘MÓ!ÜØvóð ð ˆr   c                 ó¬   • U R                  XR                  R                  UR                  5      U l        [	        UU R                  U R                  S9  g )N)r   Úmodules_to_not_convert)Úget_modules_to_not_convertr   r,   Ú_keep_in_fp32_modulesr	   )r   Úmodelr   s      r   Ú$_process_model_before_weight_loadingÚ4SpQRHfQuantizer._process_model_before_weight_loading>   sM   € ð
 '+×&EÑ&EØ×+Ñ+×BÑBÀE×D_ÑD_ó'
ˆÔ#ô 	!ØØ $× 8Ñ 8Ø#'×#>Ñ#>ó	
r   c                 ó   • g)NF© ©r   s    r   Úis_trainableÚSpQRHfQuantizer.is_trainableL   s   € àr   c                 ó   • g)NTr3   r4   s    r   Úis_serializableÚSpQRHfQuantizer.is_serializableP   s   € Ør   )r,   )r(   útorch.dtypeÚreturnr:   )r/   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationÚ__annotations__r   r   r#   r)   r0   Úpropertyr5   r8   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   "   sY   ø‡ ñð  ÐØ%Ó%ð8Ð,C÷ 8òhôð
à ô
ð ñó ð÷ð r   r   )Útypingr   Úbaser   Úmodeling_utilsr   Úutils.quantization_configr   Úintegrationsr	   Úutilsr
   r   r   r   r   r   Ú
get_loggerr<   Úloggerr   r3   r   r   Ú<module>rN      sN   ðõ !å ö Ý0Ý6å 3ß [Ó [Ý ?ñ ×ÑÛà	×	Ò	˜HÓ	%€ô/�kõ /r   