+
    $Lj                         ^ 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                 6   R p\        V P                  4      R8X  d"   V P                  \        P                  4      p R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bfloat16.datdtypeshapezw+)r
   moder   :NNN)strr
   viewtorchint16cpunumpyospathjoinlistr   ndimnpmemmapflush)weightweight_nameoffload_folderindexr
   arraytensor_file
file_arrays   &&&&    D/app/.local/lib/python3.14/site-packages/accelerate/utils/offload.pyoffload_weightr#      s    E
6<<,,U[[)JJL E'',,~d/CDK=$E%ugtEKK7HIzzQd;kkEKKXJ!HJqML    c                 X   \        VR ,          4      pVR8X  d   RpVR,          pVR8X  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# )r   r
   r   r   r)r
   r   r    )   )tupler   r   lenr   tensorr   r   )weight_fileweight_infor   r
   r   s   &&   r"   load_offloaded_weightr.   .   s    +g&'E{ E
YY{u3GF
;w A%\\&!F7z)U^^,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_indexr=   D   s    }E
anlC	ww~~())$w771 IIaLM 87 	 #	8	8A		-1- 
9	8 87 
9	8	8s   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__rF   U   s9     ( (sBKK'7!8 (d3PUP\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#   r=   )r@   rA   r   name	parameters   &&   r"   offload_state_dictrM   U   sB     KK4(E%++-yF . u'r$   c                   H   a  ] tR t^ht 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[/# )r?   datasetprefix)r   r   )rE   __classdict__s   "r"   rF   PrefixedDataset.__annotate__q   s        r$   c                    Wn         W n        R # NrQ   rR   )selfrQ   rR   s   &&&r"   __init__PrefixedDataset.__init__q   s    r$   c                D    V P                   V P                   V 2,          # rV   rW   rX   keys   &&r"   __getitem__PrefixedDataset.__getitem__u   s    ||t{{mC5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 rV   )iterrQ   
startswithrR   r\   s   & r"   __iter__PrefixedDataset.__iter__x   s2    DLLPLSNN4;;4OSSLPQQPs
   "AAc                ,    \        V P                  4      # rV   )r*   rQ   rX   s   &r"   __len__PrefixedDataset.__len__{   s    4<<  r$   rW   N__name__
__module____qualname____firstlineno____doc__rY   r^   rc   rg   __static_attributes____classdictcell__rS   s   @r"   rO   rO   h   s)      3R! !r$   rO   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[,          /# )r?   rA   save_folderr   )	r   rC   r   r   rD   r   r   rB   r   )rE   rS   s   "r"   rF   #OffloadedWeightsLoader.__annotate__   sT      T#u||"345 eC$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.r0   )
ValueErrorrA   ru   r5   r   r   r   r6   r7   r   r   keysall_keysextenddevice)rX   rA   ru   r   r|   r;   r]   s   &&&&&  r"   rY   OffloadedWeightsLoader.__init__   s     +"5%-vww * 2"
&=[4bggll;=>>!		! ? =Re
T__1134TZZTZcdmm;SccZTU ?> Us   $DD2DD	c                    < V ^8  d   QhRS[ /# )r?   r]   )r   )rE   rS   s   "r"   rF   rv      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	   )rA   r   getr|   r   
get_tensor	TypeErrortogetattrr   r   r   r   ru   r.   )rX   r]   r-   r|   r+   r;   r,   s   &&     r"   r^   "OffloadedWeightsLoader.__getitem__   sb   //!??3''jjo??-.:"kk1Ut{{FFO{+=>$W]^^bc\\+//-*MNF _ +%75+g2F#GH}}V 446*Mggll4#3#3uD\B$[>> _^ O{+=>$W\]]ab\\+//-*MNF ^]]]OsH   )E  "E(E  E	E  E   (G"F6*G6GGGc                ,    \        V P                  4      # rV   )ra   rz   rf   s   &r"   rc   OffloadedWeightsLoader.__iter__   s    DMM""r$   c                ,    \        V P                  4      # rV   )r*   rz   rf   s   &r"   rg   OffloadedWeightsLoader.__len__   s    4==!!r$   )rz   r|   r   ru   rA   )NNNNri   rq   s   @r"   rs   rs      s-      (? ?4#" "r$   rs   c                |    V ^8  d   QhR\         \        \        P                  3,          R\        \        ,          /# )r?   rA   submodule_names)rC   r   r   rD   r   )rE   s   "r"   rF   rF      s/      d3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.
.)r8   rJ   rb   )rA   r   resultmodule_namer]   params   &&    r"   extract_submodules_state_dictr      so     F& 	 #-"2"2"4"4JC%c8I)J 
"4	
 ' Ms   (A'A'rV   )r6   r   collections.abcr   typingr   r   r   r   r   safetensorsr   r#   r.   r=   rM   rO   rs   r   r'   r$   r"   <module>r      sP     	 # "   !*,."(&!g !.@"W @"Fr$   