+
     °³j�   ã                   ó¨   € ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIt^ RI	t	^ RI
Ht RR ltR tR tR R	 lt ! R
 R]4      t ! R R]4      tR R ltR# )é    N)ÚMapping)ÚOptionalÚUnion)Ú	safe_openc                 ó   € R p\        V P                  4      R8X  d#   V P                  \        P                  4      p RpMt\        V P                  4      P                  R4      '       dK   \        V P                  4      P                  R4      ^,          pV P                  \        P                  4      p V P                  4       P                  4       p\        P                  P                  W! R24      pVe5   Vf   \        VP                  4      pRVR\        VP                  4      /W1&   VP                  ^ 8X  d
   VR ,          p\         P"                  ! WeP                  RVP                  R	7      pVR
,          VR
&   VP%                  4        V# )Nztorch.bfloat16Úbfloat16ztorch.float8_Ú.ú.datÚdtypeÚshapezw+)r   Úmoder   :NNN)Ústrr   ÚviewÚtorchÚint16Ú
startswithÚsplitÚint8ÚcpuÚnumpyÚosÚpathÚjoinÚlistr   ÚndimÚnpÚmemmapÚflush)ÚweightÚweight_nameÚoffload_folderÚindexr   ÚarrayÚtensor_fileÚ
file_arrays   &&&&    ÚY/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/utils/offload.pyÚoffload_weightr'      s&  € Ø€Eä
ˆ6�<‰<ÓÐ,Ô,à—‘œUŸ[™[Ó)ˆØ‰Ü	ˆV�\‰\Ó	×	%Ñ	% o×	6Ò	6ä�F—L‘LÓ!×'Ñ'¨Ó,¨QÕ/ˆØ—‘œUŸZ™ZÓ(ˆØ�J‰J‹L×ÑÓ €EÜ—'‘'—,‘,˜~°¸dÐ/CÓD€KØÒØŠ=Ü˜Ÿ™Ó$ˆEØ% u¨g´t¸E¿K¹KÓ7HÐIˆÑØ‡z�z�Q„Ø�d•ˆÜ—’˜;¯k©kÀÈEÏKÉKÔX€JØ˜!•H€Jˆq�MØ×ÑÔØ€Ló    c                 ó  € \        VR ,          4      pVR8X  d   R	pVR,          pVR8X  d   RpMVP                  R4      '       d   Rp\        P                  ! WVRR7      p\	        VR ,          4      ^ 8X  d
   V^ ,          p\
        P                  ! V4      pVR,          R8X  d"   VP                  \
        P                  4      pV# VR,          P                  R4      '       d'   VP                  \        \
        VR,          4      4      pV# )
r   r   r   r   Úfloat8_r   Úr)r   r   r   © )é   )
Útupler   r   r   Úlenr   Útensorr   r   Úgetattr)Úweight_fileÚweight_infor   r   r   s   &&   r&   Úload_offloaded_weightr4   2   sâ   € Ü�+˜gÕ&Ó'€EØ�„{àˆà˜Õ €EØ�
Ôà‰Ø	×	Ñ	˜)×	$Ò	$àˆä�YŠY�{°uÀ3ÔG€Fä
ˆ;�wÕÓ  AÔ%Ø˜•ˆÜ�\Š\˜&Ó!€FØ�7Õ˜zÔ)Ø—‘œUŸ^™^Ó,ˆð €Mð 
�WÕ	×	(Ñ	(¨×	3Ò	3Ø—‘œW¤U¨K¸Õ,@ÓAÓBˆà€Mr(   c                 ó  € V e   \        V 4      ^ 8X  d   R # \        P                  P                  VR4      p\        P                  P	                  V4      '       d6   \        VRR7      ;_uu_ 4       p\        P                  ! V4      pR R R 4       M/ pXP                  V 4       \        VRRR7      ;_uu_ 4       p\        P                  ! WC^R7       R R R 4       R #   + '       g   i     LZ; i  + '       g   i     R # ; i)Nú
index.jsonzutf-8)ÚencodingÚw)Úindent)
r/   r   r   r   ÚisfileÚopenÚjsonÚloadÚupdateÚdump)r"   r!   Úoffload_index_fileÚfÚcurrent_indexs   &&   r&   Úsave_offload_indexrC   M   s´   € Ø‚}œ˜E›
 aœáäŸ™Ÿ™ n°lÓCÐÜ	‡w�w‡~�~Ð(×)Ò)ÜÐ$¨w×7Õ7¸1Ü ŸIšI a›LˆM÷ 8Ð7ð ˆØ×Ñ˜Ôä	Ð  #°×	8Õ	8¸AÜ�	Š	�-¨1Õ-÷ 
9Ñ	8÷ 8×7ú÷ 
9×	8Ð	8ús   Á1CÂ:C0ÃC-	Ã0D	c                óœ   € V ^8„  d   QhR\         \        \        P                  3,          R\        \        \
        P                  3,          /# )é   Úsave_dirÚ
state_dict)r   r   r   ÚPathLikeÚdictr   ÚTensor)Úformats   "r&   Ú__annotate__rL   ^   s9   € ÷ (ñ (¤¤s¬B¯K©KÐ'7Õ!8ð (ÄdÌ3ÔPU×P\ÑP\ÐK\ÕF]ñ (r(   c                óœ   € \         P                  ! V RR7       / pVP                  4        F  w  r4\        WCWR7      pK  	  \	        W 4       R# )zë
Offload a state dict in a given folder.

Args:
    save_dir (`str` or `os.PathLike`):
        The directory in which to offload the state dict.
    state_dict (`Dict[str, torch.Tensor]`):
        The dictionary of tensors to offload.
T)Úexist_ok)r"   N)r   ÚmakedirsÚitemsr'   rC   )rF   rG   r"   ÚnameÚ	parameters   &&   r&   Úoffload_state_dictrS   ^   sB   € ô ‡K‚K� 4Õ(Ø€EØ%×+Ñ+Ö-‰ˆÜ˜y°ÔFŠñ .ô �uÖ'r(   c                   óH   a € ] tR t^qt o RtV 3R lR ltR tR tR tRt	V t
R# )	ÚPrefixedDatasetzÔ
Will access keys in a given dataset by adding a prefix.

Args:
    dataset (`Mapping`): Any map with string keys.
    prefix (`str`): A prefix to add when trying to access any element in the underlying dataset.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# )rE   ÚdatasetÚprefix)r   r   )rK   Ú__classdict__s   "€r&   rL   ÚPrefixedDataset.__annotate__z   s   ø€ ÷ ñ ¡ð ±ñ r(   c                ó   € Wn         W n        R # ©N©rW   rX   )ÚselfrW   rX   s   &&&r&   Ú__init__ÚPrefixedDataset.__init__z   s   € ØŒØŽr(   c                óD   € V P                   V P                   V 2,          # r\   r]   ©r^   Úkeys   &&r&   Ú__getitem__ÚPrefixedDataset.__getitem__~   s   € Ø�|‰|˜tŸ{™{˜m¨C¨5Ð1Õ2Ð2r(   c                óš   € \        V P                   Uu. uF'  qP                  V P                  4      '       g   K%  VNK)  	  up4      # u upi r\   )ÚiterrW   r   rX   rb   s   & r&   Ú__iter__ÚPrefixedDataset.__iter__�   s2   € Ü D§L¢LÓP¡L˜S·N±NÀ4Ç;Á;×4O—S�S¡LÑPÓQÐQùÒPs
   ”"A»Ac                ó,   € \        V P                  4      # r\   )r/   rW   ©r^   s   &r&   Ú__len__ÚPrefixedDataset.__len__„   s   € Ü�4—<‘<Ó Ð r(   r]   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r_   rd   rh   rl   Ú__static_attributes__Ú__classdictcell__©rY   s   @r&   rU   rU   q   s)   ø‡ € ñ÷ð ò3òR÷!ð !r(   rU   c                   óX   a € ] tR t^ˆt o RtR
V 3R lR lltV 3R lR ltR tR tR	t	V t
R# )ÚOffloadedWeightsLoadera  
A collection that loads weights stored in a given state dict or memory-mapped on disk.

Args:
    state_dict (`Dict[str, torch.Tensor]`, *optional*):
        A dictionary parameter name to tensor.
    save_folder (`str` or `os.PathLike`, *optional*):
        The directory in which the weights are stored (by `offload_state_dict` for instance).
    index (`Dict`, *optional*):
        A dictionary from weight name to their information (`dtype`/ `shape` or safetensors filename). Will default
        to the index saved in `save_folder`.
Nc                ó°   <€ V ^8„  d   QhRS[ S[S[S[P                  3,          ,          RS[ S[S[S[P                  3,          ,          RS[ S[,          /# )rE   rG   Úsave_folderr"   )	r   rI   r   r   rJ   r   r   rH   r   )rK   rY   s   "€r&   rL   Ú#OffloadedWeightsLoader.__annotate__–   sT   ø€ ÷ ñ á™T¡#¡u§|¡|Ð"3Õ4Õ5ðñ ™e¡C©¯©Ð$4Õ5Õ6ðñ ™Õ ñ	r(   c                ó>  € Vf   Vf   Vf   \        R4      hVf   / MTV n        W n        VfU   VeQ   \        \        P
                  P                  VR4      4      ;_uu_ 4       p\        P                  ! V4      pR R R 4       Vf   / MTV n	        \        V P                  P                  4       4      V n        V P                  P                  V P                   Uu. uF  qfV P                  9  g   K  VNK  	  up4       W@n        R #   + '       g   i     L”; iu upi )NzWNeed either a `state_dict`, a `save_folder` or an `index` containing offloaded weights.r6   )Ú
ValueErrorrG   rz   r;   r   r   r   r<   r=   r"   r   ÚkeysÚall_keysÚextendÚdevice)r^   rG   rz   r"   r�   rA   rc   s   &&&&&  r&   r_   ÚOffloadedWeightsLoader.__init__–   sÔ   € ð Ò +Ò"5¸%º-ÜÐvÓwÐwà *Ò 2™"¸
ˆŒØ&ÔØŠ=˜[Ò4Ü”b—g‘g—l‘l ;°Ó=×>Ô>À!ÜŸ	š	 !›�÷ ?à š=‘R¨eˆŒ
Ü˜TŸ_™_×1Ñ1Ó3Ó4ˆŒØ�‰×Ñ¨T¯ZªZÓT©Z cÀdÇmÁmÑ;SŸc˜c©ZÑTÔUØŽ÷ ?×>üò Us   Á$DÃDÃ2DÄD	c                ó    <€ V ^8„  d   QhRS[ /# )rE   rc   )r   )rK   rY   s   "€r&   rL   r{   ª   s   ø€ ÷ ?ñ ?™sñ ?r(   c           	     óž  € WP                   9   d   V P                   V,          # V P                  V,          pVP                  R 4      eÌ   V P                  f   RMV P                  pRp \	        VR ,          RVR7      ;_uu_ 4       pVP                  VP                  RV4      4      pRRR4       RT9   d'   TP                  \        \        TR,          4      4      pTP                  \        P                  ! T4      8w  d   TP                  T4      pT# \        P                  P                  V P                  V R24      p\        Wb4      #   + '       g   i     L­; i  \         db    \	        TR ,          RRR7      ;_uu_ 4       pTP                  TP                  RT4      4      pRRR4        EK    + '       g   i      EL; ii ; i)Úsafetensors_fileNr   Úpt)Ú	frameworkr�   r    r   r
   )rG   r"   Úgetr�   r   Ú
get_tensorÚ	TypeErrorÚtor1   r   r   r   r   rz   r4   )r^   rc   r3   r�   r0   rA   r2   s   &&     r&   rd   Ú"OffloadedWeightsLoader.__getitem__ª   sb  € à—/‘/Ô!Ø—?‘? 3Õ'Ð'Ø—j‘j •oˆØ�?‰?Ð-Ó.Ò:Ø"Ÿk™kÒ1‘U°t·{±{ˆFØˆFðOÜ˜{Ð+=Õ>È$ÐW]×^Õ^ÐbcØŸ\™\¨+¯/©/¸-ÈÓ*MÓN�F÷ _ð ˜+Ô%ØŸ™¤7¬5°+¸gÕ2FÓ#GÓH�à�}‰}¤§¢¨VÓ 4Ô4ØŸ™ 6Ó*�ØˆMä—g‘g—l‘l 4×#3Ñ#3¸°u¸D°\ÓBˆÜ$ [Ó>Ð>÷ _×^ûäô Oä˜{Ð+=Õ>È$ÐW\×]Õ]ÐabØŸ\™\¨+¯/©/¸-ÈÓ*MÓN�F÷ ^×]×]Õ]úðOúsH   Á)E  Â"EÂ(E  ÅE	ÅE  ÅE  Å (GÆ"F6Æ*GÆ6GÇGÇGc                ó,   € \        V P                  4      # r\   )rg   r   rk   s   &r&   rh   ÚOffloadedWeightsLoader.__iter__Ä   s   € Ü�D—M‘MÓ"Ð"r(   c                ó,   € \        V P                  4      # r\   )r/   r   rk   s   &r&   rl   ÚOffloadedWeightsLoader.__len__Ç   s   € Ü�4—=‘=Ó!Ð!r(   )r   r�   r"   rz   rG   )NNNNrn   rv   s   @r&   rx   rx   ˆ   s-   ø‡ € ñ÷ò ÷(?ð ?ò4#÷"ð "r(   rx   c                ó|   € V ^8„  d   QhR\         \        \        P                  3,          R\        \        ,          /# )rE   rG   Úsubmodule_names)rI   r   r   rJ   r   )rK   s   "r&   rL   rL   Ë   s/   € ÷ ñ ¬d´3¼¿¹Ð3DÕ.Eð ÔX\Ô]`ÕXañ r(   c                óÚ   € / pV F\  pTP                  V P                  4        UUu/ uF-  w  rEWC8X  g!   VP                  VR,           4      '       g   K+  WEbK/  	  upp4       K^  	  V# u uppi )zï
Extract the sub state-dict corresponding to a list of given submodules.

Args:
    state_dict (`Dict[str, torch.Tensor]`): The state dict to extract from.
    submodule_names (`List[str]`): The list of submodule names we want to extract.
r	   )r>   rP   r   )rG   r’   ÚresultÚmodule_namerc   Úparams   &&    r&   Úextract_submodules_state_dictr—   Ë   so   € ð €FÛ&ˆð 	�‰ð #-×"2Ñ"2Ô"4ôá"4‘J�CØÔ%¨¯©¸ÀcÕ8I×)Jô �’
Ù"4òö	
ñ 'ð €Mùós   ¦(A'ÁA'r\   )r<   r   Úcollections.abcr   Útypingr   r   r   r   r   Úsafetensorsr   r'   r4   rC   rS   rU   rx   r—   r,   r(   r&   Ú<module>r›      sP   ðó Û 	Ý #ß "ã Û Ý !ôò2ò6.õ"(ô&!�gô !ô.@"˜Wô @"÷Fr(   