+
    QV-j¤+  ã                   ó  € ^ RI Ht ^RIHt ^RIHtHtHt ^RIH	t	 ^RI
Ht ]'       d   ^RIHt ^RIHt ]! 4       '       d   ^ RIt]! 4       '       d   ^ R	IHt ]R
 4       t]]n        ]P*                  ! ]4      t ! R R]	4      tR# )é    )ÚTYPE_CHECKING)Úprepare_for_hqq_linear)Úis_hqq_availableÚis_torch_availableÚlogging)ÚHfQuantizer)Úget_module_from_name)ÚPreTrainedModel)Ú	HqqConfigN)Ú	HQQLinearc                 ó\   € \         P                  ! ^ V P                  V P                  R7      # )r   )ÚdtypeÚdevice)ÚtorchÚemptyÚcompute_dtyper   ©Úselfs   &Úv/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/quantizers/quantizer_hqq.pyÚweightr   %   s   € ä�{Š{˜1 D×$6Ñ$6¸t¿{¹{ÔKÐKó    c                   óª   a a€ ] tR t^.t oRtRtV 3R ltR tV3R lR ltR t	V3R lR	 lt
V3R
 lR ltR t]V3R lR l4       tV3R ltRtVtV ;t# )ÚHqqHfQuantizerz~
HQQ quantizer base HF class.
nn.Linear modules are first tagged with quant_config in _process_model_before_weight_loading().
Fc                óÊ   <€ \        4       '       g   \        R 4      h\        SV `  ! V3/ VB  RV n        RV n        \        RR4      P                  4       R0,
          V n        R# )z�A valid HQQ version (>=0.2.1) is not available. Please follow the instructions to install it: `https://github.com/mobiusml/hqq/`.NFÚbias)	r   ÚImportErrorÚsuperÚ__init__r   Úusing_multi_gpur   Ústate_dict_keysÚhqq_keys)r   Úquantization_configÚkwargsÚ	__class__s   &&,€r   r   ÚHqqHfQuantizer.__init__7   sa   ø€ Ü×!Ò!Üð Tóð ô 	‰ÒÐ,Ñ7°Ò7ØˆŒ
Ø$ˆÔä! $¨Ó-×=Ñ=Ó?À6À(ÕJˆŽr   c                ó²  € V P                   fA   RV9   d   VR,          V n         M*\        P                  V n         \        P	                  R4       VP                  R4      p\        V\        4      '       db   RVP                  4       9   g   RVP                  4       9   d   \        R4      h\        \        VP                  4       4      4      ^8„  V n        R # R # )Nr   zOSetting dtype to torch.float32 as the default value since it was not specified.Ú
device_mapÚcpuÚdiskz­You are attempting to use an HQQ model with a device_map that contains a CPU or disk device. This is not supported. Please remove the CPU or disk device from the device_map.)r   r   Úfloat32ÚloggerÚinfoÚgetÚ
isinstanceÚdictÚvaluesÚ
ValueErrorÚlenÚsetr   )r   Úargsr#   r'   s   &*, r   Úvalidate_environmentÚ#HqqHfQuantizer.validate_environmentB   s­   € Ø�:‰:ÒØ˜&Ô Ø# G�_�•
ä"Ÿ]™]�”
Ü—‘ÐmÔnà—Z‘Z Ó-ˆ
Ü�j¤$×'Ò'Ø˜
×)Ñ)Ó+Ô+¨v¸×9JÑ9JÓ9LÔ/LÜ ðhóð ô
 (+¬3¨z×/@Ñ/@Ó/BÓ+CÓ'DÀqÑ'H�Ö$ñ (r   c                ó*   <€ V ^8„  d   QhRRRS[ RS[/# )é   Úmodelr
   Ú
param_nameÚreturn)ÚstrÚbool)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚHqqHfQuantizer.__annotate__’   s$   ø€ ÷ 3ñ 3Ð.?ð 3ÉSð 3Ñ_cñ 3r   c                ód   € \        W4      w  rE\        V\        P                  P                  4      # ©N)r	   r.   r   ÚnnÚLinear)r   r9   r:   r#   ÚmoduleÚ_s   &&&,  r   Úparam_needs_quantizationÚ'HqqHfQuantizer.param_needs_quantization’   s%   € Ü(¨Ó;‰	ˆô ˜&¤%§(¡(§/¡/Ó2Ð2r   c                ó(   aa€ R  oVV3R lSn         S# )c                 óÞ   € \         P                  ! VP                  V P                  4      V P	                  4       P                  4       4      pV P                  e   W P                  ,          pV# rC   )r   ÚmatmulÚtor   Ú
dequantizeÚtr   )r   ÚxÚouts   && r   Úforward_with_deviceÚEHqqHfQuantizer._patch_layer_for_multigpu.<locals>.forward_with_deviceì   sJ   € Ü—,’,˜qŸt™t D§K¡KÓ0°$·/±/Ó2C×2EÑ2EÓ2GÓHˆCØ�y‰yÒ$Ø—y‘yÕ �ØˆJr   c                 ó   <€ S! SV 4      # rC   © )rP   rR   Ú	hqq_layers   &€€r   Ú<lambda>Ú:HqqHfQuantizer._patch_layer_for_multigpu.<locals>.<lambda>ò   s   ø€ Ñ&9¸)ÀQÔ&Gr   )Úforward)r   rV   rR   s   &f@r   Ú_patch_layer_for_multigpuÚ(HqqHfQuantizer._patch_layer_for_multigpuë   s   ù€ ò	õ Hˆ	ÔØÐr   c                ó   <€ V ^8„  d   QhRR/# ©r8   r9   r
   rU   )r>   r?   s   "€r   r@   rA   õ   s   ø€ ÷ \ñ \à ñ\r   c                ó2   € \        WP                  R 7      pR# ))r"   N)r   r"   ©r   r9   r#   s   &&,r   Ú$_process_model_before_weight_loadingÚ3HqqHfQuantizer._process_model_before_weight_loadingõ   s   € ô ' u×BZÑBZÔ[Šr   c                ó   <€ V ^8„  d   QhRR/# r]   rU   )r>   r?   s   "€r   r@   rA   þ   s   ø€ ÷ ñ Ð9Jñ r   c                óV   € \        VR R4       \        VRV P                  4       4       V# )Úis_hqq_quantizedTÚis_hqq_serializable)ÚsetattrÚis_serializabler_   s   &&,r   Ú#_process_model_after_weight_loadingÚ2HqqHfQuantizer._process_model_after_weight_loadingþ   s*   € Ü�Ð)¨4Ô0Ü�Ð,¨d×.BÑ.BÓ.DÔEØˆr   c                ó   € R # ©TrU   r   s   &r   rg   ÚHqqHfQuantizer.is_serializable  s   € Ùr   c                ó    <€ V ^8„  d   QhRS[ /# )r8   r;   )r=   )r>   r?   s   "€r   r@   rA     s   ø€ ÷ ñ ™dñ r   c                ó   € R # rk   rU   r   s   &r   Úis_trainableÚHqqHfQuantizer.is_trainable  s   € ár   c                ó$   <€ V ^8„  d   Qh/ R;R&   # )r8   r   r"   rU   )r>   r?   s   "€r   r@   rA   .   s   ø‡ ‚ ð %Ñ$ò r   )r   r!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationr   r5   rH   rZ   r`   rh   rg   Úpropertyro   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r$   r?   s   @@r   r   r   .   sf   ù‡ € ñð
 !Ðõ	KòI÷`3ð 3òr÷\ð \÷ð ò
ð ÷ó ð÷s … r   r   )Útypingr   Úintegrationsr   Úutilsr   r   r   Úbaser   Úquantizers_utilsr	   Úmodeling_utilsr
   Úutils.quantization_configr   r   Úhqq.core.quantizer   rx   r   Ú
get_loggerrr   r+   r   rU   r   r   Ú<module>r†      s|   ðõ !å 1ß AÑ AÝ Ý 2÷ Ý0Ý5ñ ×ÒÛá×ÒÝ+ð
 ñLó ðLð €IÔà	×	Ò	˜HÓ	%€ôZ�[ö Zr   