+
    $Lj	                         ^ RI t ^ RIHtHt ^ RIt^ RIt^RIHt ^RI	H
t
 ^RIHtHt ^RIHtHtHtHtHtHtHtHt ]! 4       '       d
   ^ RIHu Ht RR R lltRR	 R
 lltRR R lltR# )    N)OptionalUnion)AcceleratorState)CUDA_DISTRIBUTED_TYPES)DistributedTypeRNGType)is_hpu_availableis_mlu_availableis_musa_availableis_neuron_availableis_npu_availableis_sdaa_availableis_torch_xla_availableis_xpu_availablec                <    V ^8  d   QhR\         R\        R\        /# )   seeddevice_specificdeterministic)intbool)formats   "C/app/.local/lib/python3.14/site-packages/accelerate/utils/random.py__annotate__r   (   s!     &1 &13 &1 &1d &1    c                P   V'       d   V \        4       P                  ,          p \        P                  ! V 4       \        P                  P                  V 4       \
        P                  ! V 4       \        4       '       d"   \
        P                  P                  V 4       EM@\        4       '       d"   \
        P                  P                  V 4       EM\        4       '       d!   \
        P                  P                  V 4       M\        4       '       d!   \
        P                  P                  V 4       M\!        4       '       d!   \
        P"                  P                  V 4       M\%        4       '       d!   \
        P&                  P                  V 4       MO\)        4       '       d!   \
        P*                  P                  V 4       M\
        P,                  P                  V 4       \/        4       '       d   \0        P2                  ! V 4       V'       d   \
        P4                  ! R4       R# R# )a  
Helper function for reproducible behavior to set the seed in `random`, `numpy`, `torch`.

Args:
    seed (`int`):
        The seed to set.
    device_specific (`bool`, *optional*, defaults to `False`):
        Whether to differ the seed on each device slightly with `self.process_index`.
    deterministic (`bool`, *optional*, defaults to `False`):
        Whether to use deterministic algorithms where available. Can slow down training.
TN)r   process_indexrandomr   nptorchmanual_seedr   xpumanual_seed_allr   npur
   mlur   sdaar   musar	   hpur   neuroncudar   xmset_rng_stateuse_deterministic_algorithms)r   r   r   s   &&&r   set_seedr.   (   sA     "000
KKIINN4	d		!!$'					!!$'					!!$'			

""4(			

""4(					!!$'			$$T*

""4(
**40 r   c                p    V ^8  d   QhR\         \        ,          R\         \        P                  ,          /# )r   rng_type	generator)r   r   r    	Generator)r   s   "r   r   r   Q   s/     O' O'HW$5 O'RWRaRaIb O'r   c                    V \         P                  8X  d   \        P                  ! 4       pEMV \         P                  8X  d!   \        P
                  P                  4       pEMV \         P                  8X  dC   \        4       '       g   Q R 4       h\        P                  ! \        P                  ! 4       4      pEMAV \         P                  8X  d8   \        4       '       g   Q R4       h\        P                  P                  4       pEMV \         P                  8X  d8   \        4       '       g   Q R4       h\        P                  P                  4       pEMV \         P                   8X  d8   \#        4       '       g   Q R4       h\        P$                  P                  4       pEM]V \         P&                  8X  d8   \)        4       '       g   Q R4       h\        P*                  P                  4       pEMV \         P,                  8X  d7   \/        4       '       g   Q R4       h\        P0                  P                  4       pMV \         P2                  8X  d7   \5        4       '       g   Q R4       h\        P6                  P                  4       pM{V \         P8                  8X  d7   \;        4       '       g   Q R4       h\        P<                  P                  4       pM0V \         P>                  8X  d   Vf   Q R	4       hVPA                  4       p\C        4       pVPD                  \F        P                  8X  dc   XPI                  \        PJ                  ! 4       4      p\        PL                  ! V.4       \        PN                  ! 4        VPQ                  4       pEMyVPD                  \R        9   g   VPD                  \F        PT                  8X  g   VPD                  \F        PV                  8X  g   VPD                  \F        PX                  8X  g}   VPD                  \F        PZ                  8X  g^   VPD                  \F        P\                  8X  g?   VPD                  \F        P^                  8X  g    VPD                  \F        P`                  8X  dM   XPI                  VPb                  4      p\        Pd                  Pg                  V^ 4       VPQ                  4       pM?VPD                  \F        Ph                  8X  d!   \        Pd                  Pg                  X^ 4       V \         P                  8X  d   \        Pj                  ! X4       R# V \         P                  8X  d"   \        P
                  Pk                  X4       R# V \         P                  8X  d"   \        P                  Pk                  X4       R# V \         P                  8X  d"   \        P                  Pk                  X4       R# V \         P                   8X  d"   \        P$                  Pk                  X4       R# V \         P&                  8X  d"   \        P*                  Pk                  X4       R# V \         P,                  8X  d"   \        P0                  Pk                  X4       R# V \         P2                  8X  d"   \        P6                  Pk                  X4       R# V \         P8                  8X  d"   \        P<                  Pk                  X4       R# V \         P                  8X  d'   \        Pj                  ! XPm                  4       4       R# V \         P>                  8X  d   VPo                  X4       R# R# )
z8Can't synchronize XLA seeds as torch_xla is unavailable.z;Can't synchronize NPU seeds on an environment without NPUs.z;Can't synchronize MLU seeds on an environment without MLUs.z=Can't synchronize SDAA seeds on an environment without SDAAs.z=Can't synchronize MUSA seeds on an environment without MUSAs.z;Can't synchronize XPU seeds on an environment without XPUs.z;Can't synchronize HPU seeds on an environment without HPUs.zFCan't synchronize Neuron seeds on an environment without Neuron Cores.Nz)Need a generator to synchronize its seed.)8r   TORCHr    get_rng_stateCUDAr*   XLAr   tensorr+   NPUr   r$   MLUr
   r%   SDAAr   r&   MUSAr   r'   XPUr   r"   HPUr	   r(   NEURONr   r)   	GENERATOR	get_stater   distributed_typer   to
xla_devicecollective_broadcast	mark_stepcpur   	MULTI_MLU
MULTI_SDAA
MULTI_MUSA	MULTI_NPU	MULTI_XPU	MULTI_HPUMULTI_NEURONdevicedistributed	broadcast	MULTI_CPUr,   item	set_state)r0   r1   	rng_statestates   &&  r   synchronize_rng_staterW   Q   s   7== '')		W\\	!JJ,,.		W[[	 %''c)cc'LL!1!1!34		W[[	 !!`#``!II++-		W[[	 !!`#``!II++-		W\\	! ""c$cc"JJ,,.		W\\	! ""c$cc"JJ,,.		W[[	 !!`#``!II++-		W[[	 !!`#``!II++-		W^^	#"$$n&nn$LL..0		W&&	&$Q&QQ$'')	 E!4!44LL1	
,
MMO	"88!!_%>%>>!!_%?%??!!_%?%??!!_%>%>>!!_%>%>>!!_%>%>>!!_%A%AALL.	##Iq1MMO				?#<#<	<##Iq1 7== I&	W\\	!

  +	W[[	 			*	W[[	 			*	W\\	!

  +	W\\	!

  +	W[[	 			*	W[[	 			*	W^^	#""9-	W[[	 
)*	W&&	&I& 
'r   c                    V ^8  d   QhR\         \        \        \        3,          ,          R\        \
        P                  ,          /# )r   	rng_typesr1   )listr   strr   r   r    r2   )r   s   "r   r   r      s8     F Fd5g+>&? FHUZUdUdLe Fr   c                 D    V  F  p\        \        V4      VR 7       K  	  R# ))r1   N)rW   r   )rY   r1   r0   s   && r   synchronize_rng_statesr]      s    gh/9E r   )FF)NN)N)r   typingr   r   numpyr   r    rV   r   	constantsr   dataclassesr   r   importsr	   r
   r   r   r   r   r   r   torch_xla.core.xla_modelcore	xla_modelr+   r.   rW   r]    r   r   <module>rg      sU     "   $ - 1	 	 	 ))&1RO'dF Fr   