+
    œ°³js  ã                   óÎ   € R t ^RIHtHtHt ^RIHt ^RIHt ]! 4       '       d#   ^ RI	t	^RI
Ht ^RIHtHtHt ^RIHtHtHtHtHt ]P,                  ! ]4      t ! R R	]4      tR# )
zLKeeping GGUF weights in their blocks instead of unpacking them at load time.)Úis_torch_availableÚis_torch_mps_availableÚlogging)Ú
GgufConfig)ÚHfQuantizerN)Úget_gguf_kernel)Ú
GgufHeaderÚload_gguf_state_dictÚread_gguf_metadata)Úadd_gguf_load_opsÚget_gguf_conversion_mappingÚget_gguf_planÚis_gguf_arch_supportedÚreplace_with_gguf_modulesc                   óò   a a€ ] tR t^&t oRtRtRtV 3R ltR tR t	V3R lR lt
R tV3R	 lR
 ltR tR tR tV3R lR lt]V3R lR l4       t]V3R lR l4       tRV3R lR lltV3R ltRtVtV ;t# )ÚGgufHfQuantizerzGLoads a quantized GGUF checkpoint with its weights left in GGUF blocks.Fc                ó¶   <€ \         SV `  ! V3/ VB  R V n        / V n        / V n        / V n        . V n        . V n        RV n        RV n	        RV n
        RV n        R# )TNF)ÚsuperÚ__init__Úpre_quantizedÚpacked_modulesÚinput_permutationsÚ	quantizedÚnamesÚmappingÚheaderÚkernelÚdtypeÚ	supported)ÚselfÚquantization_configÚkwargsÚ	__class__s   &&,€Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/quantizers/quantizer_gguf.pyr   ÚGgufHfQuantizer.__init__.   sa   ø€ Ü‰ÒÐ,Ñ7°Ò7Ø!ˆÔØ ˆÔØ"$ˆÔØˆŒØˆŒ
ØˆŒØˆŒØˆŒØˆŒ
ð ˆŽó    c                óZ  € V P                   '       g   R # V P                  P                  '       d   R # V P                  P                  '       g   RV P                  n        R # \        4       V n        V P                  '       g)   RV P                  n        \        P                  R4       R # R # )NTzXNo GGUF matmul kernel is available for this device. We will dequantize the entire model.)	r   r    Ú
dequantizer   Úhas_quantized_weightsr   r   ÚloggerÚwarning)r   Úargsr!   s   &*,r#   Úvalidate_environmentÚ$GgufHfQuantizer.validate_environment=   s|   € Ø�~�~ˆ~ÙØ×#Ñ#×.×.Ð.ÙØ�{‰{×0×0Ð0ð 37ˆD×$Ñ$Ô/ÙÜ%Ó'ˆŒØ�{�{ˆ{Ø26ˆD×$Ñ$Ô/Ü�N‰NÐuÔvÙñ r%   c                ód  a€ R\        SRV3R l4      ! 4        Uu0 uF  p\        V4      kK  	  up9   d   \        R4      hV P                  P                  '       d   S# SfI   \        4       '       d9   R\        P                  ! R4      /o\        P                  RSR,           R24       S# u upi )	zHDefault to the backend the blocks are computed on, rather than the host.ÚdiskÚvaluesc                  ó
   <€ S .# ©N© )Ú
device_maps   €r#   Ú<lambda>Ú3GgufHfQuantizer.update_device_map.<locals>.<lambda>S   s	   ø€ ÐU_ÑT`r%   zxOne or more modules is configured to be mapped to disk. Disk offload is not supported for models loaded from GGUF files.Ú Úmpsz8No `device_map` was passed; loading the GGUF weights on Ú.)
ÚgetattrÚstrÚRuntimeErrorr    r'   r   ÚtorchÚdevicer)   Úinfo)r   r4   Úplaces   &f r#   Úupdate_device_mapÚ!GgufHfQuantizer.update_device_mapN   s¨   ø€ ð
 ¬g°jÀ(ÔL`Ô.aÔ.cÓdÑ.c U”c˜%–jÑ.cÑdÔdÜð5óð ð ×#Ñ#×.×.Ð.ØÐØÒÔ"8×":Ò":ØœeŸlšl¨5Ó1Ð2ˆJÜ�K‰KÐRÐS]Ð^`ÕSaÐRbÐbcÐdÔeØÐùò es   ›B-c                ó    <€ V ^8„  d   QhRS[ /# )é   Ú	gguf_file©r;   )ÚformatÚ__classdict__s   "€r#   Ú__annotate__ÚGgufHfQuantizer.__annotate___   s   ø€ ÷ (ñ (¡Sñ (r%   c                óÌ   € \        V4      w  r#\        VR,          4      V n        V P                  '       d.   \        P                  ! V4      V n        V P                  4        R# R# )zJParse the file's metadata, once `from_pretrained` knows where the file is.zgeneral.architectureN)r
   r   r   r   Ú	from_filer   r,   )r   rE   ÚmetadataÚ_s   &&  r#   Úread_headerÚGgufHfQuantizer.read_header_   sL   € ä(¨Ó3‰ˆÜ/°Ð9OÕ0PÓQˆŒØ�>�>ˆ>Ü$×.Ò.¨yÓ9ˆDŒKØ×%Ñ%Ö'ñ r%   c                ó  € Vfw   V P                   '       g'   \        P                  ! 4       V n        V P                  # V P                  P                  e   V P                  P                  M\        P
                  pWn        V# )z5Settle the dtype the model is loaded in, and keep it.)r   r=   Úget_default_dtyper   r   Úfloat32)r   r   s   &&r#   Úupdate_dtypeÚGgufHfQuantizer.update_dtypeg   sX   € àŠ=Ø—>—>�>Ü"×4Ò4Ó6�”
Ø—z‘zÐ!Ø)-¯©×):Ñ):Ò)F�D—K‘K×%Ò%ÌEÏMÉMˆEØŒ
Øˆr%   c                ó    <€ V ^8„  d   QhRS[ /# )rD   Úcheckpoint_filerF   )rG   rH   s   "€r#   rI   rJ   q   s   ø€ ÷ 
!ñ 
!©cñ 
!r%   c                ó˜   € V P                   '       d   \        V P                  4      # ^RIHp V! VRW P
                  R7      pVR,          # )z6The file's tensors, quantized ones kept as raw blocks.)Úload_gguf_checkpointT)Úreturn_tensorsÚmodel_to_loadÚtorch_dtypeÚtensors)r   r	   r   Úmodeling_gguf_pytorch_utilsrY   r   )r   rW   ÚmodelrY   Úlegacys   &&&  r#   Úget_state_dictÚGgufHfQuantizer.get_state_dictq   sA   € à�>�>ˆ>Ü'¨¯©Ó4Ð4åFá%Ø¨DÀ×S]ÑS]ô
ˆð �iÕ Ð r%   c                óz  € V P                   '       g   R# \        V P                  P                  VP                  4      V n        \        V P                  V P
                  4      w  V n        q0n        V n	        V P                  P                  '       d   R# \        WV P                  V P                  4      V n        R# )z9Swap in `GgufLinear` wherever the weight can stay packed.N)r   r   r   ÚarchitectureÚconfigr   r   r   r   r   r    r'   r   r   r   r   )r   r_   r!   Úpackables   &&, r#   Ú$_process_model_before_weight_loadingÚ4GgufHfQuantizer._process_model_before_weight_loading}   sƒ   € à�~�~ˆ~ÙÜ2°4·;±;×3KÑ3KÈUÏ\É\ÓZˆŒÜHUÐVZ×VaÑVaÐcg×coÑcoÓHpÑEˆŒ˜Ô"9¸4¼:Ø×#Ñ#×.×.Ð.ÙÜ7¸ÈÏÉÐVZ×V`ÑV`ÓaˆÖr%   c                ó4  € V P                   '       g   V# ^RIHp V P                  P	                  4        FP  w  rEV P
                  P                  V4      pVf   K&  VP                  VP                  P                  4      Vn
        KR  	  V! V4       RVn        V# )z`Fill in what needs the weights already in place: the input permutations, then the layer kernels.)Úkernelize_ggml_layersN)r   Úintegrations.gguf.kernelsrj   r   Úitemsr   ÚgetÚtoÚweightr>   Úinput_permutationÚ_weight_conversions)r   r_   r!   rj   Ú
param_nameÚmoduleÚpermutations   &&,    r#   Ú#_process_model_after_weight_loadingÚ3GgufHfQuantizer._process_model_after_weight_loading‡   s   € à�~�~ˆ~ØˆLÝEà"&×"5Ñ"5×";Ñ";Ö"=ÑˆJØ×1Ñ1×5Ñ5°jÓAˆKØÔ&Ø+6¯>©>¸&¿-¹-×:NÑ:NÓ+O�Ö(ñ #>ñ 	˜eÔ$ð %)ˆÔ!Øˆr%   c                ó  € V P                   '       g   V# V P                  P                  4        UUu/ uF  w  r#W P                  9  g   K  W#bK  	  ppp\	        V P
                  V,           W@P                  V P                  4      # u uppi )zUPrepend this file's conversions: the GGUF -> transformers mapping, and the unpacking.)r   r   rl   r   r   r   r   r   )r   Úweight_conversionsÚnameÚtÚ	to_unpacks   &&   r#   Úupdate_weight_conversionsÚ)GgufHfQuantizer.update_weight_conversionsš   so   € à�~�~ˆ~Ø%Ð%Ø,0¯N©N×,@Ñ,@Ô,BÔfÑ,B¡ Àd×ReÑReÑFe”W�T’WÑ,Bˆ	ÑfÜ  §¡Ð0BÕ!BÀIÏzÉzÐ[_×[eÑ[eÓfÐfùó gs   ²BÁBc                ó&   <€ V ^8„  d   QhRS[ RS[/# )rD   rr   Úreturn)r;   Úbool)rG   rH   s   "€r#   rI   rJ   ¡   s   ø€ ÷ ñ ¹#ð ÉDñ r%   c                ó   € R # ©Fr3   )r   r_   rr   r!   s   &&&,r#   Úparam_needs_quantizationÚ(GgufHfQuantizer.param_needs_quantization¡   ó   € Ùr%   c                ó    <€ V ^8„  d   QhRS[ /# ©rD   r   ©r€   )rG   rH   s   "€r#   rI   rJ   ¥   s   ø€ ÷ ñ ™dñ r%   c                ó   € R # r‚   r3   ©r   s   &r#   Úis_trainableÚGgufHfQuantizer.is_trainable¤   s   € ár%   c                ó    <€ V ^8„  d   QhRS[ /# r‡   rˆ   )rG   rH   s   "€r#   rI   rJ   ©   s   ø€ ÷ ñ ¡ñ r%   c                ó   € R # )Tr3   rŠ   s   &r#   Úis_compileableÚGgufHfQuantizer.is_compileable¨   s   € ár%   c                ó    <€ V ^8„  d   QhRS[ /# r‡   rˆ   )rG   rH   s   "€r#   rI   rJ   ¬   s   ø€ ÷ ñ ¹$ñ r%   c                ó   € R # r‚   r3   )r   Úsafe_serializations   &&r#   Úis_serializableÚGgufHfQuantizer.is_serializable¬   r…   r%   c                ó.   <€ V ^8„  d   Qh/ R;R&   R;R&   # )rD   r   r    r   r   r3   )rG   rH   s   "€r#   rI   rJ   &   s   ø‡ ‚ ð &Ñ%ñ ð Ñò	 r%   )
r   r   r   r   r   r   r   r   r   r   r2   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationÚ requires_parameters_quantizationr   r,   rA   rO   rT   ra   rg   ru   r|   rƒ   Úpropertyr‹   r�   r”   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r"   rH   s   @@r#   r   r   &   s“   ù‡ € ÙQð !ÐØ',Ð$õòò"÷"(ð (ò÷
!ð 
!òbòò&g÷ð ð ÷ó ðð ÷ó ð÷ò ÷M … r%   r   )r›   Úutilsr   r   r   Úutils.quantization_configr   Úbaser   r=   rk   r   Úintegrations.gguf.readerr   r	   r
   Úintegrations.gguf.utilsr   r   r   r   r   Ú
get_loggerr—   r)   r   r3   r%   r#   Ú<module>r©      sX   ðñ Sç GÑ GÝ 2Ý ñ ×ÒÛå;ß_Ñ_÷õ ð 
×	Ò	˜HÓ	%€ôG�kö Gr%   