Ë
    S^(h3l  ã                   óB  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZ  e«       rddlmZ  e
j$                  e«      Z G d„ de«      Z	 dd	„Zdd
efd„Z	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 dd„Zd„ Z	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 dd„Zdd„Zdd„Z dd„Z!y)z#PyTorch - TF 2.0 general utilities.é    Né   )	ÚExplicitEnumÚexpand_dimsÚis_numpy_arrayÚis_safetensors_availableÚis_torch_tensorÚloggingÚreshapeÚsqueezeÚtensor_size)Ú	transpose)Ú	safe_openc                   ó    — e Zd ZdZdZdZdZdZy)ÚTransposeTypez
    Possible ...
    ÚnoÚsimpleÚconv1dÚconv2dN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚNOÚSIMPLEÚCONV1DÚCONV2D© ó    úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/modeling_tf_pytorch_utils.pyr   r   +   s   „ ñð 
€BØ€FØ€FØ�Fr   r   c                 óª  — |�F| j                  |«      sd| vrt        d| › d|› d�«      ‚| t        |«      d } | j                  d«      } | j	                  dd«      } t        j                  d	d
| «      } | j	                  dd«      } t        j                  dd| «      } | j                  d«      } t        | «      dkD  r| dd } t        |«      }| d   dk(  r!|�t        |«      dk(  rt        j                  }nf| d   dk(  r!|�t        |«      dk(  rt        j                  }n=t        | d   dv xs
 d| v xs d| v «      rt        j                  }nt        j                  }| d   dk(  s| d   dk(  s| d   dk(  rd| d<   | d   dk(  rd| d<   | d   dk(  s| d   dk(  r| d   j	                  dd«      | d<   dj                  | «      } |r| j	                  |dd«      } | |fS )aU  
    Convert a TF 2.0 model variable name in a pytorch model weight name.

    Conventions for TF2.0 scopes -> PyTorch attribute names conversions:

        - '$1___$2' is replaced by $2 (can be used to duplicate or remove layers in TF2.0 vs PyTorch)
        - '_._' is replaced by a new level separation (can be used to convert TF2.0 lists in PyTorch nn.ModulesList)

    return tuple with:

        - pytorch model weight name
        - transpose: `TransposeType` member indicating whether and how TF2.0 and PyTorch weights matrices should be
          transposed with regards to each other
    NÚfinal_logits_biaszWeight name z  does not start with name_scope z€. This is an internal error in Transformers, so (unless you were doing something really evil) please open an issue to report it!ú/z:0Ú z/[^/]*___([^/]*)/z/\1/z_._z//+r   éÿÿÿÿÚkernelé   é   )r%   Úpointwise_kernelÚdepthwise_kernelÚ	emb_projsÚ	out_projsÚ
embeddingsÚgammaÚweightÚbetaÚbiasr(   r)   Ú_kernelz.weightú.)Ú
startswithÚ
ValueErrorÚlenÚlstripÚreplaceÚreÚsubÚsplitÚlistr   r   r   Úboolr   r   Újoin)Útf_nameÚstart_prefix_to_removeÚtf_weight_shapeÚ
name_scoper   s        r   Ú(convert_tf_weight_name_to_pt_weight_namerB   6   s*  € ð" ÐØ×!Ñ! *Ô-Ð2EÈWÑ2TÜØ˜w˜iÐ'GÈ
À|ð Twð wóð ð œ#˜j›/Ð+Ð,ˆØ—.‘. Ó%ˆØ�o‰o˜d BÓ'€GÜ�f‰fØ˜g wó€Gð �o‰oØˆsó€Gô �f‰f�V˜S 'Ó*€GØ�m‰m˜CÓ €Gä
ˆ7ƒ|�aÒØ˜!˜"�+ˆä˜?Ó+€Oð ˆr�{�hÒ ?Ð#>Ä3ÀÓCWÐ[\ÒC\Ü!×(Ñ(‰	Ø	�‰˜Ò	  _Ð%@ÄSÈÓEYÐ]^ÒE^Ü!×(Ñ(‰	Ü	Ø�‰ÐIÐIò 	"Ø˜'Ð!ò	"à˜'Ð!ô
ô
 "×(Ñ(‰	ä!×$Ñ$ˆ	ð ˆr�{�hÒ '¨"¡+°Ò"=ÀÈÁÐPWÒAWØˆ�‰Øˆr�{�fÒØˆ�‰ð ˆr�{Ð(Ò(¨G°B©KÐ;MÒ,MØ˜b‘k×)Ñ)¨)°YÓ?ˆ�‰ð �h‰h�wÓ€GÙØ—/‘/Ð"8¸"¸aÓ@ˆà�IÐÐr   r   c                 ó>  — | t         j                  u r|rdnd}t        ||¬«      }n=| t         j                  u rt        |d¬«      }n| t         j                  u rt        |«      }|€|S t        |«      t        |j                  «      k  rt        |«      }n.t        |«      t        |j                  «      kD  rt        |d¬«      }t        |«      t        |j                  «      k7  r	 t        ||«      }|S |S # t        $ r}|xj                  ||fz  c_        |‚d}~ww xY w)z”
    Apply a transpose to some weight then tries to reshape the weight to the same shape as a given shape, all in a
    framework agnostic way.
    )é   r'   r   r   )r'   rD   r   r   )Úaxes)rD   r   r   Nr   )Úaxis)r   r   Útranspose_funcr   r   r5   Úshaper   r   r;   r
   ÚAssertionErrorÚargs)r   r.   Úmatch_shapeÚpt_to_tfrE   Úes         r   Úapply_transposerN   ~   s  € ð
 ”M×(Ñ(Ñ(ñ  (‰|¨\ˆÜ ¨TÔ2‰Ø	”m×*Ñ*Ñ	*ô   ¨YÔ7‰Ø	”m×*Ñ*Ñ	*Ü Ó'ˆàÐØˆä
ˆ;Óœ#˜fŸl™lÓ+Ò+Ü˜“‰Ü	ˆ[Ó	œC §¡Ó-Ò	-Ü˜V¨!Ô,ˆäˆKÓœD §¡Ó.Ò.ð	Ü˜V [Ó1ˆFð
 €Mˆ6€Møô	 ò 	Ø�FŠF�{ KÐ0Ñ0�FØˆGûð	ús   Ã%C5 Ã5	DÃ>DÄDc           	      ó  — 	 ddl }ddl}ddlm}	 t        |t        «      r|g}i }
|D ]x  }t        j                  j                  |«      }t
        j                  d|› �«       |j                  d«      r	 |	|«      }n|j                  |dd¬	«      }|
j                  |«       Œz t
        j                  d
t!        d„ |
j#                  «       D «       «      d›d�«       t%        | |
|||||¬«      S # t        $ r t
        j                  d«       ‚ w xY w)ú*Load pytorch checkpoints in a TF 2.0 modelr   N)Ú	load_fileúÃLoading a PyTorch model in TensorFlow, requires both PyTorch and TensorFlow to be installed. Please see https://pytorch.org/ and https://www.tensorflow.org/install/ for installation instructions.zLoading PyTorch weights from z.safetensorsÚcpuT)Úmap_locationÚweights_onlyzPyTorch checkpoint contains c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N)Únumel)Ú.0Úts     r   ú	<genexpr>z7load_pytorch_checkpoint_in_tf2_model.<locals>.<genexpr>Í   s   è ø€ Ò2]À°1·7±7·9Ñ2]ùs   ‚ú,z parameters©Ú	tf_inputsÚallow_missing_keysÚoutput_loading_infoÚ_prefixÚtf_to_pt_weight_rename)Ú
tensorflowÚtorchÚsafetensors.torchrQ   ÚImportErrorÚloggerÚerrorÚ
isinstanceÚstrÚosÚpathÚabspathÚinfoÚendswithÚloadÚupdateÚsumÚvaluesÚ!load_pytorch_weights_in_tf2_model)Útf_modelÚpytorch_checkpoint_pathr^   r_   r`   ra   rb   Útfrd   Úsafe_load_fileÚpt_state_dictrl   Úpt_pathÚ
state_dicts                 r   Ú$load_pytorch_checkpoint_in_tf2_modelr|   ¨   s  € ð	ÛÛÝAô Ð)¬3Ô/Ø#:Ð";Ðð €MØ'ò )ˆÜ—'‘'—/‘/ $Ó'ˆÜ�‰Ð3°G°9Ð=Ô>Ø×Ñ˜NÔ+Ù'¨Ó0‰JàŸ™ G¸%Èd˜ÓSˆJà×Ñ˜ZÕ(ð)ô ‡K�KÐ.¬sÑ2]Àm×FZÑFZÓF\Ô2]Ó/]Ð^_Ð.`Ð`kÐlÔmä,ØØØØ-Ø/ØØ5ôð øô3 ò Ü�‰ðjô	
ð 	ðús   ‚C, Ã, Dc                 ó@   — |j                  «       }t        | |||¬«      S )rP   )r^   r_   )r{   rt   )ru   Úpt_modelr^   r_   ry   s        r   Úload_pytorch_model_in_tf2_modelr   Ú   s'   € à×'Ñ'Ó)€Mä,Ø�-¨9ÐI[ôð r   c           	      óZ  — 	 ddl }ddl}|j                  «       D �	�
ci c]M  \  }	}
|	|
j                  |j                  k7  r|
j                  «       n|
j                  «       j                  «       “ŒO }}	}
t        | ||||||¬«      S # t        $ r t        j	                  d«       ‚ w xY wc c}
}	w )z*Load pytorch state_dict in a TF 2.0 model.r   NrR   r]   )rc   rd   rf   rg   rh   ÚitemsÚdtypeÚbfloat16ÚnumpyÚfloatÚ$load_pytorch_state_dict_in_tf2_model)ru   ry   r^   r_   r`   ra   rb   rw   rd   ÚkÚvs              r   rt   rt   ã   s²   € ðÛÛð Vc×UhÑUhÓUj÷ÙMQÈQÐPQˆ˜Ÿ™ 5§>¡>Ò1ˆ1�7‰7Œ9°q·w±w³y·±Ó7HÑHð€Mñ ô 0ØØØØ-Ø/ØØ5ôð øô ò Ü�‰ðjô	
ð 	ðüós   ‚B �AB'Â B$c                 óì  — t        |«      dkD  r#t        j                  d|› d|› d|› d|› d�	«       nt        j                  d|› d�«       t        | «      dkD  rt        j                  d	|› d
| › d�«       nt        j                  d|› d|› d�«       t        |«      dkD  rNdj                  |D ���cg c]  \  }}}d|› d|› d|› d�‘Œ c}}}«      }t        j                  d|› d|› d�«       y y c c}}}w )Nr   zSSome weights of the PyTorch model were not used when initializing the TF 2.0 model ú: ú,
- This IS expected if you are initializing z× from a PyTorch model trained on another task or with another architecture (e.g. initializing a TFBertForSequenceClassification model from a BertForPreTraining model).
- This IS NOT expected if you are initializing z¥ from a PyTorch model that you expect to be exactly identical (e.g. initializing a TFBertForSequenceClassification model from a BertForSequenceClassification model).z6All PyTorch model weights were used when initializing ú.
z,Some weights or buffers of the TF 2.0 model zH were not initialized from the PyTorch model and are newly initialized: úo
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.úAll the weights of zŽ were initialized from the PyTorch model.
If your task is similar to the task the model of the checkpoint was trained on, you can already use ú* for predictions without further training.ú
z- z: found shape z in the checkpoint and z in the model instantiatedúSome weights of zh were not initialized from the model checkpoint are newly initialized because the shapes did not match:
)r5   rg   Úwarningr=   )Úmissing_keysÚunexpected_keysÚmismatched_keysÚ
class_nameÚkeyÚshape1Úshape2Úmismatched_warnings           r   Ú_log_key_warningsr›     sQ  € Ü
ˆ?Ó˜aÒÜ�‰ðØˆ|˜2˜oÐ.ð /Øˆ|ð 5à5?°Lð A5ð	5õ	
ô 	�‰ÐOÐPZÈ|Ð[^Ð_Ô`Ü
ˆ<Ó˜1ÒÜ�‰Ø:¸:¸,ð G9Ø9E¸ð GTðTõ	
ô 	�‰Ø! * ð .#à#- ,Ð.XðZô	
ô ˆ?Ó˜aÒØ!ŸY™Yð ,;÷ð á'�C˜ ð �S�E˜¨ xÐ/FÀvÀhÐNhÒiôó
Ðô 	�‰Ø˜z˜lð +à*Ð+ð ,8ð8õ	
ð  ùôs   Â1C/c	                 ó8  ‡ ‡"— ddl }	|€‰ j                  }|€d}|r$|	j                  |«      5   ‰ |d¬«       ddd«       i }
|j                  «       D ]¿  }d}d|v r|j	                  dd«      }d|v r|j	                  dd	«      }d
|v r|j	                  d
d«      }d|v r|j	                  dd«      }|j                  d«      }dŠ"|ddd…   ddgk(  r	|d   dz   Š"n|ddd…   ddgk(  r|d   dz   Š"‰"�|dd ‰"gz   }dj                  |«      }|€|}||
|<   ŒÁ d}t        ˆ fd„|
j                  «       D «       «      s‰ j                  dz   }‰ j                  ‰ j                  z   }d}t        |
j                  «       «      }g }g }t        |d«      }|D �]  }|j                  }t        |||j                  |¬«      \  Š"}|� |‰"«      }|D ]
  }||
v sŒ|Š" n |d   Š"‰"|
vrM|r|j!                  ‰"«       Œb‰ j"                  �t        ˆ"fd„‰ j"                  D «       «      rŒ�t%        ‰"› d�«      ‚|
‰"   }|r|j'                  |«      }n||   }	 t)        |||j                  «      }|t1        |«      z  }|j3                  |	j5                  ||j6                  «      «       ~|j9                  ‰"«       �Œ t:        j=                  d|d›d�«       t?        |«      }‰ j"                  �7‰ j"                  D ](  }|D � cg c]  } tA        jB                  || «      �Œ| ‘Œ }} Œ* ‰ jD                  �7‰ jD                  D ](  }|D � cg c]  } tA        jB                  || «      �Œ| ‘Œ }} Œ* |s#tG        |||‰ jH                  jJ                  ¬ «       |r
|||d!œ}!‰ |!fS ‰ S # 1 sw Y   �ŒTxY w# |	j*                  j,                  $ r`}|s+t/        |«      }|dz  }|	j*                  j-                  |«      ‚|j!                  ‰"|j                  |j                  f«       Y d}~�Œ~d}~ww xY wc c} w c c} w )"z¨Load a pytorch state_dict in a TF 2.0 model. pt_state_dict can be either an actual dict or a lazy-loading
    safetensors archive created with the safe_open() function.r   Nr#   F©Útrainingr-   r.   r/   r0   Úrunning_varÚmoving_varianceÚrunning_meanÚmoving_meanr2   éýÿÿÿrD   ÚparametrizationsÚ	original0éþÿÿÿÚ_gÚ	original1Ú_vc              3   óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wrW   ©r3   Úbase_model_prefix)rY   Úsru   s     €r   r[   z7load_pytorch_state_dict_in_tf2_model.<locals>.<genexpr>g  s    øè ø€ Ò[¸Aˆq�|‰|˜H×6Ñ6×7Ñ[ùó   ƒ%(Ú
get_tensor)r?   r@   rA   c              3   óN   •K  — | ]  }t        j                  |‰«      d u–— Œ y ­wrW   )r8   Úsearch)rY   ÚpatÚnames     €r   r[   z7load_pytorch_state_dict_in_tf2_model.<locals>.<genexpr>‰  s!   øè ø€ Òl¸C”r—y‘y  dÓ+°4Ô7Ñlùs   ƒ"%z not found in PyTorch modelz_
	You may consider adding `ignore_mismatched_sizes=True` in the model `from_pretrained` method.zLoaded r\   z  parameters in the TF 2.0 model.©r–   ©r“   r”   r•   )&rc   Údummy_inputsrA   Úkeysr7   r:   r=   Úanyr¬   Útrainable_weightsÚnon_trainable_weightsÚsetÚhasattrr³   rB   rH   ÚappendÚ_keys_to_ignore_on_load_missingÚAttributeErrorr¯   rN   ÚerrorsÚInvalidArgumentErrorrj   r   ÚassignÚcastr‚   Údiscardrg   rn   r;   r8   r±   Ú"_keys_to_ignore_on_load_unexpectedr›   Ú	__class__r   )#ru   ry   r^   r_   r`   ra   rb   Úignore_mismatched_sizesÚskip_logger_warningsrw   Útf_keys_to_pt_keysr—   Únew_keyÚkey_componentsr?   Úsymbolic_weightsÚtf_loaded_numelÚall_pytorch_weightsr“   r•   Úis_safetensor_archiveÚsymbolic_weightÚsw_namer   ÚaliasesÚaliasÚstate_dict_nameÚarrayrM   Ú	error_msgr”   r²   r‡   Úloading_infor³   s#   `                                 @r   r†   r†   /  s¬  ù€ ó àÐØ×)Ñ)ˆ	à€ØˆÙØ�]‰]˜7Ó#ñ 	0Ù�Y¨Õ/÷	0ð ÐØ×!Ñ!Ó#ò *ˆØˆØ�c‰>Ø—k‘k '¨8Ó4ˆGØ�S‰=Ø—k‘k &¨&Ó1ˆGØ˜CÑØ—k‘k -Ð1BÓCˆGØ˜SÑ Ø—k‘k .°-Ó@ˆGð Ÿ™ 3›ˆØˆØ˜"˜%˜a˜%Ñ Ð%7¸Ð$EÒEØ! "Ñ%¨Ñ,‰DØ˜B˜E ˜EÑ"Ð'9¸;Ð&GÒGØ! "Ñ%¨Ñ,ˆDØÐØ+¨C¨RÐ0°D°6Ñ9ˆNØ—h‘h˜~Ó.ˆGàˆ?ØˆGØ&)Ð˜7Ò#ð1*ð<  ÐÜÓ[ÐAS×AXÑAXÓAZÔ[Ô[Ø!)×!;Ñ!;¸cÑ!AÐà×1Ñ1°H×4RÑ4RÑRÐØ€OÜÐ0×5Ñ5Ó7Ó8ÐØ€LØ€OÜ# M°<Ó@ÐØ+ó 2*ˆØ!×&Ñ&ˆÜBØØ#9Ø+×1Ñ1Øô	
‰ˆˆið "Ð-Ù,¨TÓ2ˆGØ ò "�ØÐ.Ò.Ø �DÙð"ð ˜q‘z�ð Ð)Ñ)Ù!Ø×#Ñ# DÔ)ØØ×9Ñ9ÐEäÓlÀ8×CkÑCkÔlÔlØÜ  D 6Ð)DÐ!EÓFÐFØ,¨TÑ2ˆÙ Ø!×,Ñ,¨_Ó=‰Eà! /Ñ2ˆEð	Ü# I¨u°o×6KÑ6KÓLˆEð 	œ; uÓ-Ñ-ˆà×Ñ˜rŸw™w u¨o×.CÑ.CÓDÔEØØ×#Ñ# DÖ)ðe2*ôh ‡K�K�'˜/¨!Ð,Ð,LÐMÔNäÐ.Ó/€Oà×/Ñ/Ð;Ø×;Ñ;ò 	RˆCØ'3ÖQ !´r·y±yÀÀaÓ7HÑ7PšAÐQˆLÑQð	Rà×2Ñ2Ð>Ø×>Ñ>ò 	XˆCØ*9ÖW Q¼R¿Y¹YÀsÈAÓ=NÑ=VšqÐWˆOÑWð	XáÜ˜,¨¸ÐU]×UgÑUg×UpÑUpÕqáà(Ø.Ø.ñ
ˆð
 ˜Ð%Ð%à€O÷k	0ñ 	0ûð^ �y‰y×-Ñ-ò 		Ù*Ü ›F�	ØØwñ�	ð —i‘i×4Ñ4°YÓ?Ð?à×&Ñ&¨¨e¯k©k¸?×;PÑ;PÐ'QÔRÝûð		üò. Rùò Xs<   ¬N	ÉNË/PÌPÌ2PÍPÎ	NÎPÎ/AP
Ð
Pc                 ó  — g }|D ]@  }	t        |	d¬«      5 }
t        | |
||d|||d¬«	      \  } }d d d «       |j                  «       ŒB t        t	        j
                  |D �cg c]  }t	        |d   «      ‘Œ c}Ž «      }t        |D �cg c]  }|d   ‘Œ	 c}g «      }t        |D �cg c]  }|d   ‘Œ	 c}g «      }t        |||| j                  j                  ¬«       |r
|||d	œ}| |fS | S # 1 sw Y   Œ¼xY wc c}w c c}w c c}w )
Nrw   )Ú	frameworkT)r^   r_   r`   ra   rb   rÇ   rÈ   r“   r”   r•   r´   rµ   )
r   r†   r½   Úsortedr»   Úintersectionrr   r›   rÆ   r   )ru   Úsafetensors_shardsr^   r_   r`   ra   rb   rÇ   Úall_loading_infosÚshardÚsafetensors_archiver×   rn   r“   r”   r•   s                   r   Ú-load_sharded_pytorch_safetensors_in_tf2_modelrà   ¼  s+  € ð ÐØ#ò /ˆÜ�u¨Ô-ð 	Ð1DÜ%IØØ#Ø#Ø#5Ø$(ØØ'=Ø(?Ø%)ô
&Ñ"ˆH�l÷	ð 	× Ñ  Õ.ð/ô  œ#×*Ñ*ÐSdÖ,eÈ4¬S°°nÑ1EÕ-FÒ,eÐfÓg€LäÐ?PÖQ°t˜4Ð 1Ó2ÒQÐSUÓV€OÜÐ?PÖQ°t˜4Ð 1Ó2ÒQÐSUÓV€Oä�l O°_ÐQY×QcÑQc×QlÑQlÕmáà(Ø.Ø.ñ
ˆð
 ˜Ð%Ð%à€O÷=	ð 	üò -fùâQùÚQs   •C(Á C4ÂC9Â#C>Ã(C1	c                 óp  — 	 ddl }ddl}ddl}ddlm} t        j                  d|› �«       d| j                  j                  z   }	t        ||	«      }
 |
| j                  «      }|€|j                  }|�
 ||d¬	«        |||«       t        | |||¬
«      S # t        $ r t        j	                  d«       ‚ w xY w)zû
    Load TF 2.0 HDF5 checkpoint in a PyTorch model We use HDF5 to easily do transfer learning (see
    https://github.com/tensorflow/tensorflow/blob/ee16fcac960ae660e0e4496658a366e2f745e1f0/tensorflow/python/keras/engine/network.py#L1352-L1357).
    r   NúÃLoading a TensorFlow model in PyTorch, requires both PyTorch and TensorFlow to be installed. Please see https://pytorch.org/ and https://www.tensorflow.org/install/ for installation instructions.r   )Úload_tf_weightsz Loading TensorFlow weights from ÚTFFr�   ©r_   r`   )rc   rd   rf   rg   rh   ÚtransformersÚmodeling_tf_utilsrã   rn   rÆ   r   ÚgetattrÚconfigr¶   Úload_tf2_model_in_pytorch_model)r~   Útf_checkpoint_pathr^   r_   r`   rw   rd   ræ   rã   Útf_model_class_nameÚtf_model_classru   s               r   Ú$load_tf2_checkpoint_in_pytorch_modelrî   î  sË   € ðÛÛó å2ä
‡K�KÐ2Ð3EÐ2FÐGÔHð  ×!3Ñ!3×!<Ñ!<Ñ<ÐÜ˜\Ð+>Ó?€NÙ˜hŸo™oÓ.€HàÐØ×)Ñ)ˆ	àÐÙ� UÕ+á�HÐ0Ô1ä*Ø�(Ð/AÐWjôð øô5 ò Ü�‰ðjô	
ð 	ðús   ‚B Â B5c                 ó8   — |j                   }t        | |||¬«      S )z$Load TF 2.0 model in a pytorch modelrå   )ÚweightsÚ!load_tf2_weights_in_pytorch_model)r~   ru   r_   r`   rð   s        r   rê   rê     s%   € à×Ñ€Gä,Ø�'Ð.@ÐViôð r   c                 óÒ   — 	 ddl }ddl}|D �ci c]  }|j
                  |j                  «       “Œ }}t        | |||¬«      S # t        $ r t        j	                  d«       ‚ w xY wc c}w )z.Load TF2.0 symbolic weights in a PyTorch modelr   Nrâ   rå   )rc   rd   rf   rg   rh   r³   r„   Ú$load_tf2_state_dict_in_pytorch_model)r~   Ú
tf_weightsr_   r`   rw   rd   Ú	tf_weightÚtf_state_dicts           r   rñ   rñ      sy   € ðÛÛð ISÖS¸9�Y—^‘^ Y§_¡_Ó%6Ñ6ÐS€MÐSÜ/Ø�-Ð4FÐ\oôð øô ò Ü�‰ðjô	
ð 	ðüò Ts   ‚A Ž"A$Á A!c                 ó*  ‡ — dd l }i }t        ‰ j                  «       «      }d}t        ˆ fd„|j	                  «       D «       «      s‰ j
                  dz   }i }|j                  «       D ]'  \  }	}
t        |	||
j                  ¬«      \  }}|
|f||<   Œ) t        |j	                  «       «      }i }g }|j                  «       D �]g  \  }}|j                  «       |v r||j                  «          ||<   Œ0|}|j                  d«      }d }	|dd d…   dd	gk(  r	|d
   dz   }	n|dd d…   ddgk(  r|d
   dz   }	|	�|d d |	gz   }dj                  |«      }||vr"|r|j                  |«       Œ¤t        |› d�«      ‚||   \  }}t        |||j                  d¬«      }t!        j"                  |«      rt!        j$                  |«      }t'        |«      st)        |«      s|j!                  «       }t)        |«      r|j+                  |«      }|||<   |||j                  «       <   |j-                  |«       �Œj ‰ j/                  |d¬«      \  }}||z  }‰ j0                  �7‰ j0                  D ](  }|D �cg c]  }t3        j4                  ||«      �Œ|‘Œ }}Œ* ‰ j6                  �7‰ j6                  D ](  }|D �cg c]  }t3        j4                  ||«      �Œ|‘Œ }}Œ* t9        |«      dkD  r_t:        j=                  d‰ j>                  j@                  › d|› d‰ j>                  j@                  › d‰ j>                  j@                  › d�	«       n-t:        j=                  d‰ j>                  j@                  › d�«       t9        |«      dkD  r1t:        j=                  d‰ j>                  j@                  › d|› d�«       nDt:        j=                  d‰ j>                  j@                  › d‰ j>                  j@                  › d�«       t:        jC                  d|› �«       |r	||d œ}‰ |fS ‰ S c c}w c c}w )!Nr   r#   c              3   óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wrW   r«   )rY   r­   r~   s     €r   r[   z7load_tf2_state_dict_in_pytorch_model.<locals>.<genexpr>;  s    øè ø€ Ò_¸Aˆq�|‰|˜H×6Ñ6×7Ñ_ùr®   r2   )r?   r@   r£   rD   r¤   r¥   r¦   r§   r¨   r©   z not found in TF 2.0 modelF)rL   )ÚstrictzSSome weights of the TF 2.0 model were not used when initializing the PyTorch model rŠ   r‹   zÖ from a TF 2.0 model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a TFBertForPreTraining model).
- This IS NOT expected if you are initializing z¤ from a TF 2.0 model that you expect to be exactly identical (e.g. initializing a BertForSequenceClassification model from a TFBertForSequenceClassification model).z5All TF 2.0 model weights were used when initializing rŒ   r‘   zG were not initialized from the TF 2.0 model and are newly initialized: r�   rŽ   z� were initialized from the TF 2.0 model.
If your task is similar to the task the model of the checkpoint was trained on, you can already use r�   z1Weights or buffers not loaded from TF 2.0 model: )r“   r”   )"rd   ÚdictÚnamed_parametersr¸   r·   r¬   r�   rB   rH   r»   Údata_ptrr:   r=   r½   r¿   rN   r„   ÚisscalarrÕ   r   r   Ú
from_numpyrÄ   Úload_state_dictr¾   r8   r±   rÅ   r5   rg   r’   rÆ   r   rn   )r~   rö   r_   r`   rd   Únew_pt_params_dictÚcurrent_pt_params_dictr?   Útf_weights_mapr³   rõ   Úpt_namer   Úall_tf_weightsÚloaded_pt_weights_data_ptrÚmissing_keys_ptÚpt_weight_nameÚ	pt_weightÚpt_weight_name_to_checkrË   rÕ   r“   r”   r²   r‡   r×   s   `                         r   ró   ró   2  s‡  ø€ ÛàÐÜ! (×";Ñ";Ó"=Ó>Ðð  ÐÜÓ_ÐAW×A\ÑA\ÓA^Ô_Ô_Ø!)×!;Ñ!;¸cÑ!AÐð €NØ(×.Ñ.Ó0ò 9‰ˆˆiÜEØÐ)?ÐQZ×Q`ÑQ`ô
Ñˆ�ð $-¨iÐ"8ˆ�wÒð	9ô ˜×,Ñ,Ó.Ó/€NØ!#ÐØ€OØ%;×%AÑ%AÓ%Có (/Ñ!ˆ˜	à×ÑÓÐ#=Ñ=Ø1KÈI×L^ÑL^ÓL`Ñ1aÐ˜~Ñ.Øà"0Ðà'×-Ñ-¨cÓ2ˆØˆØ˜"˜%˜a˜%Ñ Ð%7¸Ð$EÒEØ! "Ñ%¨Ñ,‰DØ˜B˜E ˜EÑ"Ð'9¸;Ð&GÒGØ! "Ñ%¨Ñ,ˆDØÐØ+¨C¨RÐ0°D°6Ñ9ˆNØ&)§h¡h¨~Ó&>Ð#ð #¨.Ñ8Ù!Ø×&Ñ& ~Ô6Øä  NÐ#3Ð3MÐ!NÓOÐOà)Ð*AÑBÑˆˆyä 	¨5°)·/±/ÈEÔRˆä�>‰>˜%Ô Ü—K‘K Ó&ˆEÜ˜uÔ%¬n¸UÔ.CØ—K‘K“MˆEÜ˜%Ô à×$Ñ$ UÓ+ˆEà-2Ð˜>Ñ*Ø;@Ð" 9×#5Ñ#5Ó#7Ñ8Ø×Ñ˜~Ö.ðQ(/ðT %-×$<Ñ$<Ð=OÐX]Ð$<Ó$^Ñ!€L�/Ø�OÑ#€Lð ×/Ñ/Ð;Ø×;Ñ;ò 	RˆCØ'3ÖQ !´r·y±yÀÀaÓ7HÑ7PšAÐQˆLÑQð	Rð ×2Ñ2Ð>Ø×>Ñ>ò 	XˆCØ*9ÖW Q¼R¿Y¹YÀsÈAÓ=NÑ=VšqÐWˆOÑWð	Xô ˆ?Ó˜aÒÜ�‰ðØ×"Ñ"×+Ñ+Ð,¨B¨Ð.?ð @Ø×"Ñ"×+Ñ+Ð,ð -5à5=×5GÑ5G×5PÑ5PÐ4Qð R7ð	7õ	
ô 	�‰ÐNÈx×OaÑOa×OjÑOjÐNkÐknÐoÔpÜ
ˆ<Ó˜1ÒÜ�‰Ø˜x×1Ñ1×:Ñ:Ð;ð <Ø)˜Nð +5ð5õ	
ô 	�‰Ø! (×"4Ñ"4×"=Ñ"=Ð!>ð ?#à#+×#5Ñ#5×#>Ñ#>Ð"?Ð?iðkô	
ô ‡K�KÐCÀNÐCSÐTÔUáØ(4ÈÑYˆØ˜Ð%Ð%à€OùòK Rùò Xs   É"PÉ>PÊ%PËP)r#   NN)NT)NFFNN)NF)NFFNNFF)NFFNNF)NFF)FF)"r   rk   r8   r„   Úutilsr   r   r   r   r   r	   r
   r   r   r   rG   Úsafetensorsr   Ú
get_loggerr   rg   r   rB   rN   r|   r   rt   r›   r†   rà   rî   rê   rñ   ró   r   r   r   ú<module>r     sû   ðñ *ã 	Û 	ã ÷
÷ 
õ 
õ /ñ ÔÝ%ð 
ˆ×	Ñ	˜HÓ	%€ô�Lô ð JNóEñP"˜}ó "ðZ ØØØØó/ódð ØØØØó òF&
ðX ØØØØØ!ØóJð` ØØØØØ!ó*ðf afó&óRóô$mr   