ó
    Eñi	  ã                   ó6  • S SK r S SKJr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Jr  SSKJrJrJrJrJrJrJrJr  \" 5       (       a	  S SKJs  Jr  SS	\S
\S\4S jjrSS\\   S\\R<                     4S jjrSS\ \\!\4      S\\R<                     4S jjr"g)é    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_availableÚseedÚdevice_specificÚdeterministicc                 ó0  • U(       a  U [        5       R                  -  n [        R                  " U 5        [        R                  R                  U 5        [
        R                  " U 5        [        5       (       a!  [
        R                  R                  U 5        GO:[        5       (       a!  [
        R                  R                  U 5        GO
[        5       (       a   [
        R                  R                  U 5        OÛ[        5       (       a   [
        R                  R                  U 5        O¬[!        5       (       a   [
        R"                  R                  U 5        O}[%        5       (       a   [
        R&                  R                  U 5        ON[)        5       (       a   [
        R*                  R                  U 5        O[
        R,                  R                  U 5        [/        5       (       a  [0        R2                  " U 5        U(       a  [
        R4                  " S5        gg)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      ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/accelerate/utils/random.pyÚset_seedr)   (   sA  € ö ØÔ Ó"×0Ñ0Ñ0ˆÜ
‡K‚K�ÔÜ‡I�I‡N�N�4ÔÜ	×Ò�dÔÜ×ÑÜ�	‰	×!Ñ! $Ö'Ü	×	Ñ	Ü�	‰	×!Ñ! $Ö'Ü	×	Ñ	Ü�	‰	×!Ñ! $Õ'Ü	×	Ñ	Ü�
‰
×"Ñ" 4Õ(Ü	×	Ñ	Ü�
‰
×"Ñ" 4Õ(Ü	×	Ñ	Ü�	‰	×!Ñ! $Õ'Ü	×	Ñ	Ü�‰×$Ñ$ TÕ*ä�
‰
×"Ñ" 4Ô(ä×ÑÜ
×Ò˜ÔæÜ×*Ò*¨4Õ0ð ó    Úrng_typeÚ	generatorc                 ó  • U [         R                  :X  a  [        R                  " 5       nGOºU [         R                  :X  a   [        R
                  R                  5       nGO†U [         R                  :X  aA  [        5       (       d   S5       e[        R                  " [        R                  " 5       5      nGO1U [         R                  :X  a6  [        5       (       d   S5       e[        R                  R                  5       nGOçU [         R                  :X  a6  [        5       (       d   S5       e[        R                  R                  5       nGO�U [         R                   :X  a6  [#        5       (       d   S5       e[        R$                  R                  5       nGOSU [         R&                  :X  a6  [)        5       (       d   S5       e[        R*                  R                  5       nGO	U [         R,                  :X  a5  [/        5       (       d   S5       e[        R0                  R                  5       nOÀU [         R2                  :X  a5  [5        5       (       d   S5       e[        R6                  R                  5       nOwU [         R8                  :X  a5  [;        5       (       d   S5       e[        R<                  R                  5       nO.U [         R>                  :X  a  Uc   S	5       eURA                  5       n[C        5       nURD                  [F        R                  :X  ab  WRI                  [        RJ                  " 5       5      n[        RL                  " U/5        [        RN                  " 5         URQ                  5       nGOpURD                  [R        ;   dÒ  URD                  [F        RT                  :X  d´  URD                  [F        RV                  :X  d–  URD                  [F        RX                  :X  dx  URD                  [F        RZ                  :X  dZ  URD                  [F        R\                  :X  d<  URD                  [F        R^                  :X  d  URD                  [F        R`                  :X  aL  WRI                  URb                  5      n[        Rd                  Rg                  US
5        URQ                  5       nO>URD                  [F        Rh                  :X  a   [        Rd                  Rg                  WS
5        U [         R                  :X  a  [        Rj                  " W5        g U [         R                  :X  a   [        R
                  Rk                  W5        g U [         R                  :X  a   [        R                  Rk                  W5        g U [         R                  :X  a   [        R                  Rk                  W5        g U [         R                   :X  a   [        R$                  Rk                  W5        g U [         R&                  :X  a   [        R*                  Rk                  W5        g U [         R,                  :X  a   [        R0                  Rk                  W5        g U [         R2                  :X  a   [        R6                  Rk                  W5        g U [         R8                  :X  a   [        R<                  Rk                  W5        g U [         R                  :X  a%  [        Rj                  " WRm                  5       5        g U [         R>                  :X  a  URo                  W5        g g )Nz8Can'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.z)Need a generator to synchronize its seed.r   )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)r+   r,   Ú	rng_stateÚstates       r(   Úsynchronize_rng_staterQ   Q   s¡  € à”7—=‘=Ó Ü×'Ò'Ó)Š	Ø	”W—\‘\Ó	!Ü—J‘J×,Ñ,Ó.Š	Ø	”W—[‘[Ó	 Ü%×'Ñ'ÐcÐ)cÓcÐ'Ü—L’L¤×!1Ò!1Ó!3Ó4Š	Ø	”W—[‘[Ó	 Ü×!Ñ!Ð`Ð#`Ó`Ð!Ü—I‘I×+Ñ+Ó-Š	Ø	”W—[‘[Ó	 Ü×!Ñ!Ð`Ð#`Ó`Ð!Ü—I‘I×+Ñ+Ó-Š	Ø	”W—\‘\Ó	!Ü ×"Ñ"ÐcÐ$cÓcÐ"Ü—J‘J×,Ñ,Ó.Š	Ø	”W—\‘\Ó	!Ü ×"Ñ"ÐcÐ$cÓcÐ"Ü—J‘J×,Ñ,Ó.Š	Ø	”W—[‘[Ó	 Ü×!Ñ!Ð`Ð#`Ó`Ð!Ü—I‘I×+Ñ+Ó-‰	Ø	”W—[‘[Ó	 Ü×!Ñ!Ð`Ð#`Ó`Ð!Ü—I‘I×+Ñ+Ó-‰	Ø	”W—^‘^Ó	#Ü"×$Ñ$ÐnÐ&nÓnÐ$Ü—L‘L×.Ñ.Ó0‰	Ø	”W×&Ñ&Ó	&ØÑ$ÐQÐ&QÓQÐ$Ø×'Ñ'Ó)ˆ	ô Ó€EØ×Ñ¤×!4Ñ!4Ó4Ø—L‘L¤§¢£Ó1ˆ	Ü
×Ò  Ô,Ü
�ŠŒØ—M‘M“OŠ	à×ÑÔ"8Ó8Ø×!Ñ!¤_×%>Ñ%>Ó>Ø×!Ñ!¤_×%?Ñ%?Ó?Ø×!Ñ!¤_×%?Ñ%?Ó?Ø×!Ñ!¤_×%>Ñ%>Ó>Ø×!Ñ!¤_×%>Ñ%>Ó>Ø×!Ñ!¤_×%>Ñ%>Ó>Ø×!Ñ!¤_×%AÑ%AÓAà—L‘L §¡Ó.ˆ	Ü×Ñ×#Ñ# I¨qÔ1Ø—M‘M“O‰	Ø	×	Ñ	¤?×#<Ñ#<Ó	<Ü×Ñ×#Ñ# I¨qÔ1ð ”7—=‘=Ó Ü×Ò˜IÕ&Ø	”W—\‘\Ó	!Ü�
‰
× Ñ  Õ+Ø	”W—[‘[Ó	 Ü�	‰	×Ñ 	Õ*Ø	”W—[‘[Ó	 Ü�	‰	×Ñ 	Õ*Ø	”W—\‘\Ó	!Ü�
‰
× Ñ  Õ+Ø	”W—\‘\Ó	!Ü�
‰
× Ñ  Õ+Ø	”W—[‘[Ó	 Ü�	‰	×Ñ 	Õ*Ø	”W—[‘[Ó	 Ü�	‰	×Ñ 	Õ*Ø	”W—^‘^Ó	#Ü�‰×"Ñ" 9Õ-Ø	”W—[‘[Ó	 Ü
×Ò˜Ÿ™Ó)Õ*Ø	”W×&Ñ&Ó	&Ø×Ñ˜IÕ&ð 
'r*   Ú	rng_typesc                 ó<   • U  H  n[        [        U5      US9  M     g )N)r,   )rQ   r
   )rR   r,   r+   s      r(   Úsynchronize_rng_statesrT   £   s   € ÛˆÜœg hÓ/¸9ÔEò r*   )FF)NN)N)#r   Útypingr   r   Únumpyr   r   rP   r   Ú	constantsr   Údataclassesr	   r
   Úimportsr   r   r   r   r   r   r   r   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelr%   ÚintÚboolr)   Ú	GeneratorrQ   ÚlistÚstrrT   © r*   r(   Ú<module>rc      s¯   ðó ß "ã Û å $Ý -ß 1÷	÷ 	ó 	ñ ×Ñß)Ð)ñ&1�3ð &1¨ð &1Àdõ &1ñRO' H¨WÑ$5ð O'ÈÐRW×RaÑRaÑIbõ O'ñdF d¨5°°g°Ñ+>Ñ&?ð FÈHÐUZ×UdÑUdÑLeö Fr*   