Ë
      çi  ã                   ó¼   — d dl mZmZ d dlmZmZmZ d dlZd dlm	Z	 d dlm
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ erd dlmZ ed   Z G d„ de«      Zy)é    )ÚAbstractContextManagerÚnullcontext)ÚTYPE_CHECKINGÚAnyÚLiteralN)Úapply_to_collection)ÚTensor)ÚModule)Úget_argsÚoverride)Ú	Precision)Ú_convert_fp_tensorÚ_DtypeContextManager)Ú	Steppable)ÚDeepSpeedEngine)ú32-trueú16-trueú	bf16-trueú16-mixedú
bf16-mixedc                   óÞ   — e Zd ZdZdeddfd„Zededefd„«       Zede	fd„«       Z
ede	fd	„«       Zed
edefd„«       Zed
edefd„«       Zededddededdf
d„«       Zedededefd„«       Zy)ÚDeepSpeedPrecisiona  Precision plugin for DeepSpeed integration.

    Args:
        precision: Full precision (32-true), half precision (16-true, bf16-true) or
            mixed precision (16-mixed, bf16-mixed).

    Raises:
        ValueError:
            If unsupported ``precision`` is provided.

    Ú	precisionÚreturnNc                 ó   — t        t        «      }||vrt        d|›d|› d�«      ‚|| _        t        j
                  t        j                  t        j
                  t        j                  t        j                  dœ}|| j                     | _        y )Nz`precision=z>)` is not supported in DeepSpeed. `precision` must be one of: Ú.)r   r   r   r   r   )	r   Ú_PRECISION_INPUTÚ
ValueErrorr   ÚtorchÚbfloat16Úfloat16Úfloat32Ú_desired_dtype)Úselfr   Úsupported_precisionÚprecision_to_types       ú�/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning_fabric/plugins/precision/deepspeed.pyÚ__init__zDeepSpeedPrecision.__init__.   s‡   € Ü&Ô'7Ó8ÐØÐ/Ñ/ÜØ˜i˜]ð +0Ø0CÐ/DÀAðGóð ð #ˆŒô  Ÿ.™.ÜŸ™ÜŸ™Ü—}‘}Ü—}‘}ñ
Ðð 0°·±Ñ?ˆÕó    Úmodulec                 óZ   — d| j                   v r|j                  | j                  ¬«      S |S )NÚtrue)Údtype)r   Útor#   )r$   r*   s     r'   Úconvert_modulez!DeepSpeedPrecision.convert_module@   s*   € à�T—^‘^Ñ#Ø—9‘9 4×#6Ñ#6�9Ó7Ð7Øˆr)   c                 ó\   — d| j                   vr
t        «       S t        | j                  «      S )Nr,   )r   r   r   r#   ©r$   s    r'   Útensor_init_contextz&DeepSpeedPrecision.tensor_init_contextF   s'   € à˜Ÿ™Ñ'Ü“=Ð Ü# D×$7Ñ$7Ó8Ð8r)   c                 ó"   — | j                  «       S )N)r2   r1   s    r'   Úmodule_init_contextz&DeepSpeedPrecision.module_init_contextL   s   € à×'Ñ'Ó)Ð)r)   Údatac                 óD   — t        |t        t        | j                  ¬«      S ©N)Úfunctionr-   Údst_type)r   r   r	   r#   ©r$   r5   s     r'   Úconvert_inputz DeepSpeedPrecision.convert_inputP   s   € ä" 4Ô2DÌFÐ]a×]pÑ]pÔqÐqr)   c                 óT   — t        |t        t        t        j                  «       ¬«      S r7   )r   r   r	   r   Úget_default_dtyper:   s     r'   Úconvert_outputz!DeepSpeedPrecision.convert_outputT   s   € ä" 4Ô2DÌFÔ]b×]tÑ]tÓ]vÔwÐwr)   ÚtensorÚmodelr   ÚargsÚkwargsc                 ó0   —  |j                   |g|¢­i |¤Ž y)z3Performs back-propagation using DeepSpeed's engine.N)Úbackward)r$   r?   r@   rA   rB   s        r'   rD   zDeepSpeedPrecision.backwardX   s   € ð 	ˆ�‰�vÐ/ Ò/¨Ó/r)   Ú	optimizerc                 ó&   —  |j                   di |¤ŽS )N© )Ústep)r$   rE   rB   s      r'   Úoptimizer_stepz!DeepSpeedPrecision.optimizer_step]   s   € ð ˆy�~‰~Ñ' Ñ'Ð'r)   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r(   r   r
   r/   r   r2   r4   r   r;   r>   r	   rD   r   rI   rG   r)   r'   r   r   !   s.  „ ñ
ð@Ð"2ð @°tó @ð$ ð Vð °ò ó ðð
 ð9Ð%;ò 9ó ð9ð
 ð*Ð%;ò *ó ð*ð ðr #ð r¨#ò ró ðrð ðx 3ð x¨3ò xó ðxð ð0˜vð 0Ð.?ð 0Èð 0ÐWZð 0Ð_cò 0ó ð0ð ð(àð(ð ð(ð 
ò	(ó ñ(r)   r   )Ú
contextlibr   r   Útypingr   r   r   r   Ú#lightning_utilities.core.apply_funcr   r	   Útorch.nnr
   Útyping_extensionsr   r   Ú,lightning_fabric.plugins.precision.precisionr   Ú(lightning_fabric.plugins.precision.utilsr   r   Ú lightning_fabric.utilities.typesr   Ú	deepspeedr   r   r   rG   r)   r'   Ú<module>rW      sH   ð÷ ;ß .Ñ .ã Ý CÝ Ý ß 0å Bß ]Ý 6áÝ)àÐVÑWÐ ôC(˜õ C(r)   