Ë
    ÿÍ:jí  ã                   ó
  — d dl Z d dlmZ d dlmZmZmZmZ d dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ  G d
„ de«      Zde
deddfd„Zde
deddfd„Zde
dej2                  ddfd„Zddee
ef   dedefd„Zy)é    N)ÚSequence)ÚAnyÚCallableÚOptionalÚUnion)ÚModuleÚ	Parameter)Ú	Optimizer)ÚTorchFunctionMode)Úoverride)Úrank_zero_warn)Ú_DEVICEc                   óf   ‡ — e Zd ZdZddeddfˆ fd„Ze	 	 ddededee	   d	e
e   de	f
d
„«       Zˆ xZS )Ú
_EmptyInitzÑInitialize `nn.Module` with empty tensors, i.e., uninitialized memory.

    Example::

        with _EmptyInit():
            model = BigModel()
        model.load_state_dict(torch.load("checkpoint.pt"))

    ÚenabledÚreturnNc                 ó0   •— t         ‰| �  «        || _        y ©N)ÚsuperÚ__init__r   )Úselfr   Ú	__class__s     €út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/lightning_fabric/utilities/init.pyr   z_EmptyInit.__init__(   s   ø€ Ü‰ÑÔØˆ�ó    ÚfuncÚtypesÚargsÚkwargsc                 ó‚   — |xs i }| j                   s ||i |¤ŽS t        |dd «      dk(  rd|v r|d   S |d   S  ||i |¤ŽS )NÚ
__module__ztorch.nn.initÚtensorr   )r   Úgetattr)r   r   r   r   r   s        r   Ú__torch_function__z_EmptyInit.__torch_function__,   sa   € ð ’˜2ˆØ�|Š|Ù˜Ð( Ñ(Ð(Ü�4˜ tÓ,°Ò?Ø˜6Ñ!Ø˜hÑ'Ð'Ø˜‘7ˆNÙ�TÐ$˜VÑ$Ð$r   ©T)© N)Ú__name__r    Ú__qualname__Ú__doc__Úboolr   r   r   r   r   r   Údictr#   Ú__classcell__)r   s   @r   r   r      so   ø„ ññ ð °õ ð ð
 !Ø!%ñ%àð%ð ð%ð �s‰mð	%ð
 ˜‘ð%ð 
ò%ó ô%r   r   ÚmoduleÚdevicer   c                 óÒ   — | j                  |d¬«       t        | d«      s"t        dt        | «      j                  › d�«      ‚t        | j                  «      r| j                  «        yy)zMaterialize a module.F)r-   ÚrecurseÚreset_parametersz#Materialization requires that the `z~.reset_parameters` method is implemented. This method is used to initialize any children parameters or buffers in this module.N)Úto_emptyÚhasattrÚ	TypeErrorÚtyper&   Úcallabler0   ©r,   r-   s     r   Ú_materializer7   >   sj   € à
‡O�O˜6¨5€OÔ1Ü�6Ð-Ô.ÜØ1´$°v³,×2GÑ2GÐ1Hð Idð dó
ð 	
ô �×'Ñ'Ô(Ø×ÑÕ!ð )r   c                 ób   — | j                  «       D ]  } t        | d¬«      sŒt        | |«       Œ y)z*Materialize all tensors in a given module.F©r/   N)ÚmodulesÚ&_has_meta_device_parameters_or_buffersr7   r6   s     r   Ú_materialize_meta_tensorsr<   J   s,   € à—.‘.Ó"ò )ˆÜ1°&À%ÖHÜ˜ Õ(ñ)r   c           
      óÔ  — t        | «      sy | j                  |¬«       t        «       }| j                  «       D ]�  }t	        d„ t        j                  |j                  d¬«      |j                  d¬«      «      D «       «      rŒJt        t        |dd «      x}«      r |«        Œj|j                  t        |«      j                  «       Œ� |rt        ddj                  |«      › �«       y y )N)r-   c              3   ó    K  — | ]  }d –— Œ y­w)FNr%   )Ú.0Ú_s     r   ú	<genexpr>z2_materialize_distributed_module.<locals>.<genexpr>\   s   è ø€ Òu˜ŒuÑuùs   ‚Fr9   r0   z¿Parameter initialization incomplete. The following modules have parameters or buffers with uninitialized memory because they don't define a `reset_parameters()` method for re-initialization: z, )r;   r1   Úsetr:   ÚallÚ	itertoolsÚchainÚ
parametersÚbuffersr5   r"   Úaddr4   r&   r   Újoin)r,   r-   Úuninitialized_modulesÚ	submoduleÚreset_methods        r   Ú_materialize_distributed_modulerM   Q   s×   € ô 2°&Ô9Øà
‡O�O˜6€OÔ"ä›EÐØ—^‘^Ó%ò @ˆ	ÜÑuœiŸo™o¨i×.BÑ.BÈ5Ð.BÓ.QÐS\×SdÑSdÐmrÐSdÓSsÓtÔuÔuàÜ¤G¨IÐ7IÈ4Ó$PÐP�LÔQÙ�Nà!×%Ñ%¤d¨9£o×&>Ñ&>Õ?ð@ñ Üðà—	‘	Ð/Ó0Ð1ð3õ	
ð r   Úobjr/   c           	      óH  — t        | t        «      rt        d„ | j                  D «       «      S t        | t        «      rFt        d„ t        j                  | j                  |¬«      | j                  |¬«      «      D «       «      S t        dt        | «      j                  › �«      ‚)Nc              3   ój   K  — | ]+  }|d    D ]!  }t        |t        «      sŒ|j                  –— Œ# Œ- y­w)ÚparamsN)Ú
isinstancer	   Úis_meta)r?   Úparam_groupÚts      r   rA   z9_has_meta_device_parameters_or_buffers.<locals>.<genexpr>n   s<   è ø€ ò 
Ø%À;ÈxÑCXò
Ø>?Ô\fÐghÔjsÕ\tˆA�I�Ið
Øñ
ùs   ‚3 3c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )rS   )r?   rU   s     r   rA   z9_has_meta_device_parameters_or_buffers.<locals>.<genexpr>r   s   è ø€ Òu �1—9•9Ñuùs   ‚r9   z<Expected `torch.nn.Module` or `torch.optim.Optimizer`, got: )rR   r
   ÚanyÚparam_groupsr   rD   rE   rF   rG   r3   r4   r&   )rN   r/   s     r   r;   r;   l   s�   € Ü�#”yÔ!Üñ 
Ø),×)9Ñ)9ô
ó 
ð 	
ô �#”vÔÜÑu¤i§o¡o°c·n±nÈW°nÓ6UÐWZ×WbÑWbÐkrÐWbÓWsÓ&tÔuÓuÐuÜ
ÐRÔSWÐX[ÓS\×SeÑSeÐRfÐgÓ
hÐhr   r$   )rD   Úcollections.abcr   Útypingr   r   r   r   ÚtorchÚtorch.nnr   r	   Útorch.optimr
   Útorch.overridesr   Útyping_extensionsr   Ú$lightning_fabric.utilities.rank_zeror   Ú lightning_fabric.utilities.typesr   r   r7   r<   r-   rM   r)   r;   r%   r   r   ú<module>rb      s²   ðó Ý $ß 1Ó 1ã ß &Ý !Ý -Ý &å ?Ý 4ô%Ð"ô %ðB	"˜ð 	"¨ð 	"°Tó 	"ð) fð )°gð )À$ó )ð
¨Fð 
¸E¿L¹Lð 
ÈTó 
ñ6i°°f¸iÐ6GÑ0Hð iÐSWð iÐcgô ir   