ó
    oM‡jûv  ã                   óŠ  • S SK r S SKrS SKrS SKrS SKJr  S SKJrJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKrS SKr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JrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  S	SK&J'r'  \%RP                  " \)5      r*SSSS.0r+\ " 5       (       a  S SK,J-r-  S SK.J/r/J0r0J1r1J2r2  / S4S\Rf                  Rh                  4S jjr5S r6S\7S\8\7\9\7-  \Rt                  -  4   S-  4S jr;   S8S\7\Rx                  -  S\8\7\4   S-  S\=S\7\Rt                  -  4S jjr>          S9S\S\7\R~                  -  S-  S \7S-  S!\S-  S"\@S-  S\8\7\9\7-  \Rt                  -  4   S-  S#\@\7   S-  S$\7\Rx                  -  S-  S%\8S-  S&\8S-  S'\7\Rx                  -  S-  S(\@\7   4S) jjrAS:S* jrB              S;S+ jrC              S;S, jrDS- rE S<S\S.\=S(\@\7   4S/ jjrF S=S\8\7\4   S-  4S0 jjrG S=S\8\7\4   S-  4S1 jjrHS2 rIS<S3 jrJS4 rES5 rKS6\8\7\Rt                  4   S\R~                  S!\S-  S(S4S7 jrLg)>é    N)Úarray)ÚOrderedDictÚdefaultdict)ÚThreadPoolExecutorÚas_completed)ÚPath)Ú
is_zipfile)Ú	DDUFEntry)ÚEntryNotFoundErroré   )ÚDiffusersQuantizer)Ú#DEFAULT_HF_PARALLEL_LOADING_WORKERSÚGGUF_FILE_EXTENSIONÚSAFE_WEIGHTS_INDEX_NAMEÚSAFETENSORS_FILE_EXTENSIONÚWEIGHTS_INDEX_NAMEÚ_add_variantÚ_get_model_fileÚ	deprecateÚis_accelerate_availableÚis_accelerate_versionÚis_gguf_availableÚis_torch_availableÚis_torch_versionÚlogging)Úis_torch_dist_rank_zeroÚTransformer2DModelÚDiTTransformer2DModelÚPixArtTransformer2DModel)Úada_norm_zeroÚada_norm_single)Úinfer_auto_device_map)Úget_balanced_memoryÚget_max_memoryÚoffload_weightÚset_module_tensor_to_deviceÚmodelc           
      óÚ  ^• [        U[        5      (       GaM  0 nUb   UR                  UR                  X5      5        UR                  U R	                  5        V^Vs0 s H3  u  mn[        U4S jU 5       5      (       d  M"  T[        R                  _M5     snn5        Un	Ub  UR                  U	5      n	U R                  U5      n
SU
0nS[        R                  " [        5      R                  ;   a  XkS'   O$[        U5      S:”  a  [        R!                  S5        US:w  a  [#        U 4UUS:H  US.UD6nO[%        U5      nUb  UR'                  U5      nX+S	'   [        U 4S
U	0UD6nU$ s  snnf )Nc              3   ó,   >#   • U  H	  oT;   v •  M     g 7f©N© )Ú.0ÚmÚnames     €Ú²C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\diffusers/models/model_loading_utils.pyÚ	<genexpr>Ú(_determine_device_map.<locals>.<genexpr>O   s   øé € Ð?Ò*> Q˜D–yÒ*>ùs   ƒÚno_split_module_classesÚspecial_dtypesr   z¦This model has some weights that should be kept in higher precision, you need to upgrade `accelerate` to properly deal with them (`pip install --upgrade accelerate`).Ú
sequentialÚbalanced_low_0)ÚdtypeÚlow_zeroÚ
max_memoryr8   r6   )Ú
isinstanceÚstrÚupdateÚget_special_dtypes_updateÚnamed_parametersÚanyÚtorchÚfloat32Úadjust_target_dtypeÚ_get_no_split_modulesÚinspectÚ	signaturer"   Ú
parametersÚlenÚloggerÚwarningr#   r$   Úadjust_max_memory)r'   Ú
device_mapr8   Útorch_dtypeÚkeep_in_fp32_modulesÚhf_quantizerr3   r.   Ú_Útarget_dtypeÚno_split_modulesÚdevice_map_kwargss          `    r/   Ú_determine_device_maprR   D   s„  ø€ ô �*œc×"Ò"ØˆØÑ#Ø×!Ñ! ,×"HÑ"HÈÓ"\Ô]Ø×Ñð  %×5Ñ5Ô7õâ7‘G�D˜!ÜÔ?Ñ*>Ó?×?ó $�”e—m‘mÒ#Ù7òô	
ð #ˆØÑ#Ø'×;Ñ;¸LÓIˆLà ×6Ñ6°zÓBÐØ6Ð8HÐIÐàœw×0Ò0Ô1FÓG×RÑRÓRØ2@Ð.Ò/Ü�Ó  1Ó$Ü�N‰Nð`ôð
 ˜Ó%Ü,Øðà!Ø$Ð(8Ñ8Ø%ñ	ð
 $ñ‰Jô (¨
Ó3ˆJàÑ#Ø%×7Ñ7¸
ÓCˆJà*4˜,Ñ'Ü*¨5ÑZ¸ÐZÐHYÑZˆ
àÐùóOs   Á!E'
ÂE'
c           	      ó,  • UR                   n[        R                  U5      R                  U S   S 5      nU(       aX  [        R                  " [         R                  S5      S   5      n[        XC5      n[        R                  SU SU SU S35        U$ U$ )NÚ	norm_typeÚ.r   z Changing class object to be of `z` type from `z` type.This is because `ze` is scheduled to be deprecated in a future version. Note that this DOESN'T affect the final results.)	Ú__name__Ú_CLASS_REMAPPING_DICTÚgetÚ	importlibÚimport_moduleÚsplitÚgetattrrG   Úinfo)ÚconfigÚ	old_classÚprevious_class_nameÚremapped_class_nameÚdiffusers_libraryÚremapped_classs         r/   Ú_fetch_remapped_cls_from_configrd   v   s¤   € Ø#×,Ñ,ÐÜ/×3Ñ3Ð4GÓH×LÑLÈVÐT_ÑM`ÐbfÓgÐö ä%×3Ò3´H·N±NÀ3Ó4GÈÑ4JÓKÐÜ Ð!2ÓHˆÜ�‰Ø.Ð/BÐ.CÀ=ÐQdÐPeð f Ø 3Ð4ð 51ð1ô	
ð
 ÐàÐó    Ú
param_namerJ   c                 óä   • Uc  gU n[        U5      S:”  a>  X!;  a9  SR                  UR                  S5      SS 5      n[        U5      S:”  a  X!;  a  M9  US:X  a  SU;  a  [        U  S35      eX   $ )z4
Find the device of param_name from the device_map.
NÚcpur   rU   éÿÿÿÿÚ z doesn't have any device set.)rF   Újoinr[   Ú
ValueError)rf   rJ   Úmodule_names      r/   Ú_determine_param_devicern   Š   s…   € ð ÑØà ˆô �+Ó Ó" {Ó'DØŸ(™( ;×#4Ñ#4°SÓ#9¸#¸2Ð#>Ó?ˆKô �+Ó Ó" {Õ'Dà˜"Ó ¨:Ó!5Ü 
˜|Ð+HÐIÓJÐJØÑ&Ð&re   Úcheckpoint_fileÚdduf_entriesÚdisable_mmapÚmap_locationc           	      óV  • [        U [        5      (       a  U $  [        R                  R	                  U 5      R                  S5      S   nU[        :X  a�  U(       a;  X   R                  5        n[        R                  R                  U5      sSSS5        $ U(       a7  [        R                  R                  [        U S5      R                  5       5      $ [        R                  R                  XS9$ U[        :X  a  [        U 5      $ 0 n[!        SS5      (       a  SS	0O0 n[        U ["        5      (       a2  US
:w  a,  [!        SS5      (       a  [%        U 5      (       a  U(       d  SS	0n[        R                  " U 4SU0UDUD6$ ! , (       d  f       Nù= f! [&         aŒ  n [        U 5       n	U	R                  5       R)                  S5      (       a  [+        S5      e[-        SU  S35      Ue! , (       d  f        SnAg= f! [.        [,        4 a    [+        SU  SU  S35      ef = fSnAff = f)zM
Reads a checkpoint file, returning properly formatted errors if they arise.
rU   ri   NÚrb)Údeviceú>=z1.13Úweights_onlyTÚmetaz2.1.0Úmmaprr   Úversionz¬You seem to have cloned a repository without having git-lfs installed. Please install git-lfs and run `git lfs install` followed by `git lfs pull` in the folder you cloned.zUnable to locate the file z_ which is necessary to load this pretrained model. Make sure you have saved the model properly.z1Unable to load weights from checkpoint file for 'z' at 'z'. )r9   ÚdictÚosÚpathÚbasenamer[   r   Úas_mmapÚsafetensorsr?   ÚloadÚopenÚreadÚ	load_filer   Úload_gguf_checkpointr   r:   r	   Ú	ExceptionÚ
startswithÚOSErrorrl   ÚUnicodeDecodeError)
ro   rp   rq   rr   Úfile_extensionÚmmÚ
extra_argsÚweights_only_kwargÚeÚfs
             r/   Úload_state_dictr�   ›   s  € ô �/¤4×(Ñ(ØÐð+ÜŸ™×)Ñ)¨/Ó:×@Ñ@ÀÓEÀbÑIˆØÔ7Ó7Þà!Ñ2×:Ñ:Ô<ÀÜ&×,Ñ,×1Ñ1°"Ó5÷ =Ñ<æÜ"×(Ñ(×-Ñ-¬d°?ÀDÓ.I×.NÑ.NÓ.PÓQÐQä"×(Ñ(×2Ñ2°?Ð2ÐXÐXØÔ2Ó2Ü'¨Ó8Ð8àˆJÜ;KÈDÐRX×;YÑ;Y .°$Ñ!7Ð_aÐô ˜?¬C×0Ñ0Ø  FÓ*Ü$ T¨7×3Ñ3Ü˜×/Ñ/Þ$à$ d˜^�
Ü—:’:˜oÑm¸LÐmÐL^ÐmÐblÑmÐm÷) =Õ<ûô* ó ð	Ü�oÔ&¨!Ø—6‘6“8×&Ñ& y×1Ñ1Ü!ð&óð ô %Ø4°_Ð4Eð FNð Nóð ð÷ '×&Ñ&ûô #¤JÐ/ó 	ÜØCÀOÐCTÐTZÐ[jÐZkÐknÐoóð ð	þðúsn   ™AF Á-FÂ	F Â=F ÃF Ã1F ÄA:F Æ
FÆF Æ
H(ÆG=Æ(A G(Ç(
G:	Ç2G=Ç:G=Ç=#H È H#È#H(Ú
state_dictr6   Úmodel_name_or_pathrM   rL   Úunexpected_keysÚoffload_folderÚoffload_indexÚstate_dict_indexÚstate_dict_folderÚreturnc                 óˆ  ^• USLnU R                  5       nUR                  5        GH–  u  mnTU;  a  M  0 nUb£  [        R                  " U5      (       aˆ  UbM  [	        U4S jU 5       5      (       a3  UR                  [        R                  5      n[        R                  US'   O8Ub   UR                  [        [        SS5      :X  a  OUR                  U5      nX/S'   [        SS5      (       a
  SUS'   S	US
'   U nTR                  S5      nU H  n[        UU5      nM     [        U[        R                  R                  [        R                  45      (       d  SnUbC  Uc  UR                  UR                  5      nUR                  5       (       a  UR!                  5       n[#        TU5      nUT   R$                  UR$                  :w  a  U(       a?  UR&                  (       a.  UR)                  XTUUS9(       a  UR+                  TUT   U5        O9Ub  U S3OSn[-        SU ST SUT   R$                   SUR$                   S3	5      eUS:X  a  [/        UTX‰5      n	GM9  US:X  a  U
b  [/        UTXº5      n
GMR  U(       a-  UR)                  XTUUS9(       a  UR1                  XTUXUS9  GM†  [3        U TU4SU0UD6  GM™     Xš4$ )zË
This is somewhat similar to `_load_state_dict_into_model`, but deals with a model that has some or all of its
params on a `meta` device. It replaces the model params with the data from the `state_dict`
Nc              3   óJ   >#   • U  H  oTR                  S 5      ;   v •  M     g7f)rU   N)r[   )r,   Úmodule_to_keep_in_fp32rf   s     €r/   r0   Ú,load_model_dict_into_meta.<locals>.<genexpr>ô   s$   øé € ð 8Ú^rÐDZ¨*×*:Ñ*:¸3Ó*?Ö?Ò^rùs   ƒ #r6   Úfloat8_e4m3fnÚ>z1.8.1TÚnon_blockingFÚclear_cacherU   )Úparam_deviceÚ rj   zCannot load z	 because z expected shape z
, but got a  . If you want to instead overwrite randomly initialized weights, please make sure to pass both `low_cpu_mem_usage=False` and `ignore_mismatched_sizes=True`. For more information, see also: https://github.com/huggingface/diffusers/issues/1619#issuecomment-1345604389 as an example.Údiskrh   )r6   Úvalue)r‘   Úitemsr?   Úis_floating_pointr>   Útor@   r6   r\   r   r[   r9   ÚnnÚ	ParameterÚTensorÚis_contiguousÚ
contiguousrn   ÚshapeÚpre_quantizedÚcheck_if_quantized_paramÚcheck_quantized_param_shaperl   r%   Úcreate_quantized_paramr&   )r'   r‘   r6   r’   rM   rL   rJ   r“   r”   r•   r–   r—   Úis_quantizedÚempty_state_dictÚparamÚset_module_kwargsÚ	old_paramÚsplitsr[   r¡   Úmodel_name_or_path_strrf   s                        @r/   Úload_model_dict_into_metar¹   Õ   s	  ø€ ð&   tÐ+€LØ×'Ñ'Ó)Ðà'×-Ñ-×/Ñˆ
�EØÐ-Ó-ÙàÐð Ñ¤×!8Ò!8¸×!?Ñ!?Ø#Ñ/´Cô 8Ù^ró8÷ 5ñ 5ð Ÿ™¤§¡Ó/�Ü-2¯]©]Ð! 'Ò*àÑ)¨e¯k©k¼WÄUÈOÐ]aÓ=bÓ.bØàŸ™ ›�Ø-2 'Ñ*ä   g×.Ñ.Ø04Ð˜nÑ-Ø/4Ð˜mÑ,ð
 ˆ	Ø×!Ñ! #Ó&ˆÛˆEÜ 	¨5Ó1ŠIñ ô ˜)¤e§h¡h×&8Ñ&8¼%¿,¹,Ð%G×HÑHØˆIàÑ Ø‰}ØŸ™ §¡Ó1�à×&Ñ&×(Ñ(Ø×(Ñ(Ó*�ä.¨z¸:ÓFˆð ˜JÑ'×-Ñ-°·±Ó<æØ ×.×.Ø ×9Ñ9Ø *¨jÀ|ð :ö ð ×8Ñ8¸ÐEUÐV`ÑEaÐchÕiàEWÑEcÐ,>Ð+?¸qÑ)AÐikÐ&Ü Ø"Ð#9Ð":¸)ÀJÀ<ÐO_Ð`pÐq{Ñ`|÷  aCñ  aCð  `Dð  DNð  OT÷  OZñ  OZð  N[ð  [sð  tóð ð ˜6Ó!Ü*¨5°*¸nÓ\‹MØ˜UÓ"Ð'7Ñ'CÜ-¨e°ZÐARÓeÓÞØ×1Ñ1°%À
ÈJÐeqÐ1Örà×/Ñ/Ø˜j¨,¸
Ð[`ð 0ô ô (¨¨z¸<ÑjÈuÐjÐXiÕjñQ 0ðT Ð*Ð*re   c                 ó   • U R                   R                  S:X  a  g[        U Vs/ s H  o3R                  U5      (       d  M  UPM     sn5      S:X  a  g[	        U SS5      (       d-  [
        R                  U R                  R                   S35        g[        [        U R                  5       R                  5       5      5      nX$-   U;   a/  XU-      R                  U R                  5       U   R                  :H  $ gs  snf )zî
Checks if `model_to_load` supports param buffer assignment (such as when loading in empty weights) by first
checking if the model explicitly disables it, then by ensuring that the state dict keys are a subset of the model's
parameters.

rx   Fr   Ú!_supports_param_buffer_assignmentTzA does not support param buffer assignment, loading will be slower)ru   ÚtyperF   r‡   r\   rG   ÚdebugÚ	__class__rV   ÚnextÚiterr‘   Úkeysr6   )Úmodel_to_loadr‘   Ústart_prefixÚkeyÚ	first_keys        r/   Ú%check_support_param_buffer_assignmentrÆ   8  sã   € ð ×Ñ× Ñ  FÓ*Øä
™:ÓFš:�C¯©¸×)E�C™:ÑFÓGÈ1ÓLØô �=Ð"EÀt×LÑLÜ�‰Ø×&Ñ&×/Ñ/Ð0Ð0qÐrô	
ð ô ”T˜-×2Ñ2Ó4×9Ñ9Ó;Ó<Ó=€IØÑ :Ó-Ø¨Ñ2Ñ3×9Ñ9¸]×=UÑ=UÓ=WÐXaÑ=b×=hÑ=hÑhÐhàùò Gs   ¥C;ÁC;c                 óÚ   • [        XUS9nUb  UR                  U5      n[        UUUU5      n/ nU(       a  [        UUUUUUU	UU
UUS9u  p¬O[	        UU5      nU[        UUU5      -  nX¬UU4$ )N)rp   rq   )	rJ   r6   rM   rL   r“   r”   r•   r–   r—   )r�   Úmaybe_update_state_dictÚ_find_mismatched_keysr¹   rÆ   Ú_load_state_dict_into_model)Ú
shard_filer'   Úmodel_state_dictrJ   r6   rM   rL   rp   Úloaded_keysr“   r•   r”   r–   r—   Úignore_mismatched_sizesÚlow_cpu_mem_usagerq   r‘   Úmismatched_keysÚ
error_msgsÚassign_to_params_bufferss                        r/   Ú_load_shard_filerÓ   T  s«   € ô& ! ÐUaÑb€JØÑØ!×9Ñ9¸*ÓEˆ
ä+ØØØØó	€Oð €JÞÜ*CØØØ!ØØ%Ø!5Ø+Ø)Ø'Ø-Ø/ñ+
Ñ'ˆÐ'ô $IÈÐPZÓ#[Ð àÔ1°%¸ÐE]Ó^Ñ^ˆ
Ø¨O¸ZÐGÐGre   c           	      óÈ  • [        [        U 5      [        5      n[        R	                  SU S35        / n/ n[
        R                  " [        40 SU_SU_SU_SU_SU_SU_S	U_S
U_SU	_SU
_SU_SU_SU_SU_SU_SU_6n[        U 5      SS.n[        5       (       d  SUS'   [        US9 n[        R                  " S0 UD6 nU  Vs/ s H  nUR                  UU5      PM     nn[        U5       H4  nUR                  5       nUu  p¬nnUU-  nUU-  nUR                  S5        M6     S S S 5        S S S 5        X¬UU4$ s  snf ! , (       d  f       N = f! , (       d  f       N)= f)Nz'Loading model weights in parallel with z workers...r'   rÌ   rJ   r6   rM   rL   rp   rÍ   r“   r•   r”   r–   r—   rÎ   rÏ   rq   zLoading checkpoint shards)ÚtotalÚdescTÚdisable)Úmax_workersé   r+   )ÚminrF   r   rG   r]   Ú	functoolsÚpartialrÓ   r   r   r   ÚtqdmÚsubmitr   Úresultr;   )Úshard_filesr'   rÌ   rJ   r6   rM   rL   rp   rÍ   r“   r•   r”   r–   r—   rÎ   rÏ   rq   Únum_workersrÑ   rÐ   Úload_oneÚtqdm_kwargsÚexecutorÚpbarrË   ÚfuturesÚfuturerß   Ú_mismatched_keysÚ_error_msgss                                 r/   Ú!_load_shard_files_with_threadpoolrê   ‡  s¾  € ô( ”c˜+Ó&Ô(KÓL€Kä
‡K�KÐ9¸+¸ÀkÐRÔSà€JØ€Oä× Ò Üòáðñ *ðñ ð	ñ
 ðñ "ðñ 2ðñ "ðñ  ðñ (ðñ $ðñ &ðñ *ðñ ,ðñ !8ðñ  ,ð!ñ" "ð#€Hô(   Ó,Ð6QÑR€KÜ"×$Ñ$Ø!%ˆ�IÑä	¨Ò	4¸Ü�\Š\Ñ(˜KÒ(¨DÙOZÓ[Ê{À�x—‘ x°Ö<É{ˆGÐ[Ü& wÖ/�ØŸ™›�ØQWÑN�Ð1AÀ;Ø˜kÑ)�
ØÐ#3Ñ3�Ø—‘˜A–ñ 0÷ )÷ 
5ð ¨O¸ZÐGÐGùò \÷ )Õ(ú÷ 
5Õ	4ús7   Â+EÃEÃD=Ã#AEÄ(EÄ=EÅ
E	ÅEÅ
E!c                 óæ   • / nU(       ag  U Ha  nUnXP;  a  M  Xa;   d  M  X   R                   X   R                   :w  d  M3  UR                  XPU   R                   X   R                   45        X	 Mc     U$ r*   ©r­   Úappend©r‘   rÌ   rÍ   rÎ   rÐ   Úcheckpoint_keyÚ	model_keys          r/   rÉ   rÉ   Ç  s   € ð €OÞÛ)ˆNØ&ˆIàÓ/ÙàÕ,°Ñ1K×1QÑ1QÐUeÑUp×UvÑUvÕ1vØ×&Ñ&Ø#°Ñ%?×%EÑ%EÐGWÑGb×GhÑGhÐiôð Ò.ñ *ð Ðre   rÒ   c                 ó    ^^^• TR                  5       m/ mSS[        R                  R                  S[        S[
        4UUU4S jjjmT" XS9  T$ )NÚmoduleÚprefixrÒ   c                 ó  >• 0 nX#S'   U(       a&  [        SS5      (       d  [        R                  S5        T	XS/ / T4nU R                  " U6   U R                  R                  5        H  u  pVUc  M
  T" XaU-   S-   U5        M     g )NrÒ   rv   z2.1zYYou need to have torch>=2.1 in order to load the model with assign_to_params_buffers=TrueTrU   )r   rG   r]   Ú_load_from_state_dictÚ_modulesr¥   )
rò   ró   rÒ   Úlocal_metadataÚargsr.   ÚchildrÑ   r�   r‘   s
          €€€r/   r�   Ú)_load_state_dict_into_model.<locals>.loadç  s�   ø€ ØˆØ5MÐ1Ñ2Þ#Ô,<¸TÀ5×,IÑ,IÜ�K‰KÐsÔtØ˜F°D¸"¸bÀ*ÐMˆØ×$Ò$ dÑ+à!Ÿ?™?×0Ñ0Ö2‰KˆDØÓ Ù�U T™M¨CÑ/Ð1IÖJò 3re   )rÒ   )rj   F)Úcopyr?   r¨   ÚModuler:   Úbool)rÂ   r‘   rÒ   rÑ   r�   s    ` @@r/   rÊ   rÊ   Ý  sS   ú€ ð
 —‘Ó"€JØ€Jñ
K”U—X‘X—_‘_ð 
K¬cð 
KÔRV÷ 
Kò 
Kñ 	ˆÒJàÐre   c                 óv  • U (       a3  [        UU=(       d    S[        U(       a  [        O[        U5      5      nU$ [        U=(       d    S[        U(       a  [        O[        U5      5      R	                  5       n [        UUUUUUU	U
S UUUS9nU(       d  [        U5      nU$ ! [        [        4 a    S n U$ f = f)Nrj   ©Úweights_nameÚ	cache_dirÚforce_downloadÚproxiesÚlocal_files_onlyÚtokenÚrevisionÚ	subfolderÚ
user_agentÚcommit_hashrp   )r   r   r   r   Úas_posixr   r   ÚEnvironmentError)Úis_localÚpretrained_model_name_or_pathr  Úuse_safetensorsr  Úvariantr  r  r  r  r  r  r	  rp   Ú
index_fileÚindex_file_in_repos                   r/   Ú_fetch_index_filer  ø  sÐ   € ö  ÜØ)Ø�O˜Ü¶OÕ0ÔI[Ð]dÓeó
ˆ
ð< Ðô1 "Ø�O˜Ü¶OÕ0ÔI[Ð]dÓeó
÷ ‰(‹*ð 	ð	Ü(Ø-Ø/Ø#Ø-ØØ!1ØØ!ØØ%Ø'Ø)ñˆJö  Ü! *Ó-�
ð Ðøô #Ô$4Ð5ó 	Ø‰JàÐð	ús   Á:&B" Â"B8Â7B8c                 óú  • U (       aº  [        UU=(       d    SU(       a  [        O[        5      R                  5       nUR	                  S5      nSU;   a  SOSnUS U*  U/-   UU* S  -   nSR                  U5      n[        R                  R                  U5      (       a  SU S3n[        SS	US
S9  [        U5      nU$ S n U$ Ub�  [        U=(       d    SU(       a  [        O[        5      R                  5       nUR	                  S5      nSnUS U*  U/-   UU* S  -   nSR                  U5      n [        UUUUUUU	U
S UUUS9n[        U5      nSU S3n[        SS	US
S9  U$ W$ ! [        [        4 a    S n U$ f = f)Nrj   rU   z.cacheéýÿÿÿéþÿÿÿzÏThis serialization format is now deprecated to standardize the serialization format between `transformers` and `diffusers`. We recommend you to remove the existing files associated with the current variant (z6) and re-obtain them by running a `save_pretrained()`.Ú!legacy_sharded_ckpts_with_variantz1.0.0F)Ústandard_warnrÿ   )r   r   r   r
  r[   rk   r|   r}   Úexistsr   r   r   r  )r  r  r  r  r  r  r  r  r  r  r  r  r	  rp   r  r·   Úsplit_indexÚdeprecation_messager  s                      r/   Ú_fetch_index_file_legacyr  *  s  € ö  ÜØ)Ø�O˜Þ'6Õ#Ô<Nó
÷ ‰(‹*ð	 	ð
 ×!Ñ! #Ó&ˆØ$¨
Ó2‘b¸ˆØ˜˜+˜Ð&¨'¨Ñ2°V¸[¸L¸MÐ5JÑJˆØ—X‘X˜fÓ%ˆ
Ü�7‰7�>‰>˜*×%Ñ%ð %tð  u|ð  t}ð  }sð  #tÐÜÐ9¸7ÐDWÐglÒmÜ˜jÓ)ˆJðD ÐðA ‰Jð@ Ðð= ÑÜ!%Ø—˜RÞ+:Õ'Ô@Ró"÷ ‰h‹jð ð (×-Ñ-¨cÓ2ˆFØˆKØ˜M˜k˜\Ð*¨g¨YÑ6¸ÀÀÀÐ9NÑNˆFØ!$§¡¨&Ó!1Ðð"Ü,Ø1Ø!3Ø'Ø#1Ø#Ø%5ØØ%Ø"Ø)Ø +Ø!-ñ�
ô " *Ó-�
ð )xð  y@ð  xAð  Awð  'xÐ#ÜÐ=¸wÐH[ÐkpÒqð Ðˆ:Ðøô 'Ô(8Ð9ó "Ø!‘
àÐð"ús   Ä/1E$ Å$E:Å9E:c                 ó¬  • [        U[        5      (       d  U/n[        U5      S:X  a  US   nS nOUS   S:w  a  [        S5      eUu  pUS;   a  [	        U S   5      n U $ US;   a  [        U S   5      n U $ US;   a  [        U S   5      n U $ US;   a3  [        S	[        U 5      5      R                  5       R                  5       n U $ US
;   a  [        X5      n U $ )NrÙ   r   é	   zPReceived multiple types, therefore expected the first type to indicate an array.)r   rÙ   r   é   é   é   é
   é   )é   é   )é   )é   ÚB)r  )r9   ÚlistrF   rl   ÚintÚfloatrý   r   ÚtobytesÚdecodeÚ_gguf_parse_value)Ú_valueÚ	data_typeÚarray_data_types      r/   r-  r-  l  sö   € Ü�i¤×&Ñ&Ø�Kˆ	Ü
ˆ9ƒ~˜ÓØ˜a‘Lˆ	Ø‰à�Q‰<˜1ÓÜÐoÓpÐpØ%.Ñ"ˆ	àÐ.Ó.Ü�V˜A‘Y“ˆð €Mð 
�gÓ	Ü�v˜a‘yÓ!ˆð €Mð 
�cÓ	Ü�f˜Q‘i“ˆð
 €Mð	 
�cÓ	Ü�sœD ›LÓ)×1Ñ1Ó3×:Ñ:Ó<ˆð €Mð 
�cÓ	Ü" 6Ó;ˆØ€Mre   c           	      óž  • [        5       (       a"  [        5       (       a  SSKnSSKJn  SSKJnJn  O [        R                  S5        [        S5      eU" U 5      n0 nUR                   HÜ  nUR                  n	UR                  n
X¢R                  R                  UR                  R                  4;  nU(       aM  X¤;  aH  SR!                  U Vs/ s H  n[#        U5      PM     sn5      n[%        U	 S	[#        U
5       S
U S35      e[&        R(                  " UR*                  R-                  5       5      nU(       a  U" XêS9OUXy'   MÞ     U$ s  snf )aŒ  
Load a GGUF file and return a dictionary of parsed parameters containing tensors, the parsed tokenizer and config
attributes.

Args:
    gguf_checkpoint_path (`str`):
        The path the to GGUF file to load
    return_tensors (`bool`, defaults to `True`):
        Whether to read the tensors from the file and return them. Not doing so is faster and only loads the
        metadata in memory.
r   N)Ú
GGUFReaderr   )ÚSUPPORTED_GGUF_QUANT_TYPESÚGGUFParameterzÛLoading a GGUF checkpoint in PyTorch, requires both PyTorch and GGUF>=0.10.0 to be installed. Please see https://pytorch.org/ and https://github.com/ggerganov/llama.cpp/tree/master/gguf-py for installation instructions.zKPlease install torch and gguf>=0.10.0 to load a GGUF checkpoint in PyTorch.Ú
z has a quantization type: zT which is unsupported.

Currently the following quantization types are supported: 

zs

To request support for this quantization type please open an issue here: https://github.com/huggingface/diffusers)Ú
quant_type)r   r   Úggufr2  Úquantizers.gguf.utilsr3  r4  rG   ÚerrorÚImportErrorÚtensorsr.   Útensor_typeÚGGMLQuantizationTypeÚF32ÚF16rk   r:   rl   r?   Ú
from_numpyÚdatarû   )Úgguf_checkpoint_pathÚreturn_tensorsr7  r2  r3  r4  ÚreaderÚparsed_parametersÚtensorr.   r6  Úis_gguf_quantr¼   Ú_supported_quants_strÚweightss                  r/   r…   r…   „  s@  € ô ×ÑÔ1×3Ñ3ÛÝ#çUÐUä�‰ðAô	
ô ÐgÓhÐháÐ,Ó-€FàÐØ—.”.ˆØ�{‰{ˆØ×'Ñ'ˆ
ð #×+DÑ+D×+HÑ+HÈ$×JcÑJc×JgÑJgÐ*hÑhˆÞ˜ZÓIØ$(§I¡IÑE_Ó.`ÒE_¸T¬s°4®yÑE_Ñ.`Ó$aÐ!Üà�fÐ6´s¸:³Ð6Gð HYà,Ð-ð LðLóð ô ×"Ò" 6§;¡;×#3Ñ#3Ó#5Ó6ˆÞS`¡-°Ò"OÐfmÐÓñ% !ð( Ðùò /as   ÃE

c                 óê   • / nU(       d  U$ U Ha  nUnXP;  a  M  Xa;   d  M  X   R                   X   R                   :w  d  M3  UR                  XPU   R                   X   R                   45        X	 Mc     U$ r*   rì   rî   s          r/   rÉ   rÉ   ·  sƒ   € Ø€OÞ"ØÐÛ%ˆØ"ˆ	àÓ+ÙàÕ(¨ZÑ-G×-MÑ-MÐQaÑQl×QrÑQrÕ-rØ×"Ñ"Ø¨NÑ!;×!AÑ!AÐCSÑC^×CdÑCdÐeôð Ò*ñ &ð Ðre   c           
      óÖ   • 0 nU R                  5        HM  u  p4UR                  U Vs0 s H+  oUU:X  d!  UR                  U S35      (       d  US:X  d  M)  XT_M-     sn5        MO     U$ s  snf )zL
Expand a device map to return the correspondence parameter name to device.
rU   rj   )r¥   r;   r‡   )rJ   Úparam_namesÚnew_device_maprò   ru   Úps         r/   Ú_expand_device_maprO  É  sr   € ð €NØ$×*Ñ*Ö,‰ˆØ×ÑÙ +Ói¢˜1°F«{¸a¿l¹lÈfÈXÐUVÈ<×>XÑ>XÐ\bÐfhÑ\h‹YˆQŠY¡Ñiö	
ñ -ð Ðùò js   §(A&
ÁA&
Úexpanded_device_mapc                 ó~  • Uc  SOUR                  5       nUR                  5        VVs0 s H-  u  pV[        U5      S;  d  M  U[        R                  " U5      _M/     nnnU(       d  g[        [        5      nUR                  5        H1  u  p– U R                  U	5      n
X†==   U
R                  5       -  ss'   M3     UR                  5        H)  u  pk[        SX´-  5      n[        R                  " XÂUSS9nM+     gs  snnf ! [         a2     U R                  U	5      n
 N€! [         a    [        SU	 S35      ef = ff = f)	ae  
This function warm-ups the caching allocator based on the size of the model tensors that will reside on each
device. It allows to have one large call to Malloc, instead of recursively calling it later when loading the model,
which is actually the loading speed bottleneck. Calling this function allows to cut the model loading time by a
very large margin.
Nr   )rh   r£   zParameter or buffer with name=z not found in modelrÙ   F)r6   ru   Úrequires_grad)Úget_cuda_warm_up_factorr¥   r:   r?   ru   r   r)  Úget_parameterÚAttributeErrorÚ
get_bufferÚnumelÚmaxÚempty)r'   rP  r6   rM   Úfactorr´   ru   Úaccelerator_device_mapÚelements_per_devicerf   rN  Ú
elem_countÚwarmup_elemsrN   s                 r/   Ú_caching_allocator_warmupr_  Ö  sF  € ð Ñ&‰Q¨L×,PÑ,PÓ,R€Fð
 1×6Ñ6Ô8ôâ8‰MˆEÜˆv‹;˜oÑ-ó 	$ˆŒu�|Š|˜FÓ#Ò#Ù8ð ñ ö
 "Øä%¤cÓ*ÐØ4×:Ñ:Ö<Ñˆ
ð	gØ×#Ñ# JÓ/ˆAð 	Ó# q§w¡w£yÑ0Õ#ñ =ð 2×7Ñ7Ö9ÑˆÜ˜1˜jÑ2Ó3ˆÜ�KŠK˜¸&ÐPUÑVŠò :ùó+øô ó 	gðgØ×$Ñ$ ZÓ0’øÜ!ó gÜ$Ð'EÀjÀ\ÐQdÐ%eÓfÐfðgúð	gús)   ©C:ÁC:ÂD Ä 
D<ÄDÄD8Ä8D<)NFrh   )
NNNNNNNNNN)rj   )NNNNNNNNNNNFFF)Fr*   )MrÛ   rY   rC   r|   r   Úcollectionsr   r   Úconcurrent.futuresr   r   Úpathlibr   Úzipfiler	   r€   r?   Úhuggingface_hubr
   Úhuggingface_hub.utilsr   Ú
quantizersr   Úutilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úutils.distributed_utilsr   Ú
get_loggerrV   rG   rW   Ú
accelerater"   Úaccelerate.utilsr#   r$   r%   r&   r¨   rü   rR   rd   r:   r{   r)  ru   rn   ÚPathLikerý   r�   r6   r(  r¹   rÆ   rÓ   rê   rÉ   rÊ   r  r  r-  r…   rO  r_  r+   re   r/   Ú<module>rm     sz  ðó" Û Û Û 	Ý ß 0ß ?Ý Ý ã Û Ý %Ý 4å +÷÷ ÷ ÷ õ  >ð 
×	Ò	˜HÓ	%€ð Ø0Ø5ñðÐ ñ ×ÑÝ0ßqÓqð
 WYÐgkñ/Ø�8‰8�?‰?õ/òdð('¨ð '¸¸cÀ3ÈÁ9ÈuÏ|É|ÑC[Ð>[Ñ9\Ð_cÑ9cô 'ð& 15ØØ',ñ	7Ø˜2Ÿ;™;Ñ&ð7à�s˜I�~Ñ&¨Ñ-ð7ð ð7ð ˜Ÿ™Ñ$õ	7ðz '+Ø%)Ø.2Ø(,Ø=AØ(,Ø/3Ø!%Ø$(Ø26ñ`+àð`+ð �—‘Ñ˜tÑ#ð`+ð ˜d™
ð	`+ð
 % tÑ+ð`+ð  ™+ð`+ð �S˜# ™) e§l¡lÑ2Ð2Ñ3°dÑ:ð`+ð ˜#‘Y Ñ%ð`+ð ˜"Ÿ+™+Ñ%¨Ñ,ð`+ð ˜$‘;ð`+ð ˜T‘kð`+ð ˜RŸ[™[Ñ(¨4Ñ/ð`+ð 
ˆ#�Yõ`+ôFð@ Ø
ØØØØØØØØØØ!ØØô#0Hðn Ø
ØØØØØØØØØØ!ØØô#=Hò@ð. NSñØ*ðØFJðà	ˆ#�YõðR 15ñ/ð �s˜I�~Ñ&¨Ñ-õ/ð@ 15ñ?ð �s˜I�~Ñ&¨Ñ-õ?òDô00òfò$	ð#WØ $ S¨%¯,©,Ð%6Ñ 7ð#WØ@EÇÁð#WØ[mÐptÑ[tð#Wà	õ#Wre   