o
    oi                     @   s   d dl Z d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZ er:d dlmZ dddZG d	d
 d
eZdededefddZdddZe  e  dS )    N)TYPE_CHECKINGAnyLiteralOptional)rank_zero_deprecation)	BitsandbytesPrecisionDeepSpeedPrecisionDoublePrecisionFSDPPrecisionHalfPrecisionMixedPrecision	PrecisionTransformerEnginePrecisionXLAPrecision)ShardedGradScalerreturnc                   C   s   t jd t jd< d S )Nz-lightning.pytorch.plugins.precision.precisionz4lightning.pytorch.plugins.precision.precision_plugin)sysmodules r   r   Z/home/ubuntu/.local/lib/python3.10/site-packages/lightning/pytorch/_graveyard/precision.py_patch_sys_modules   s   r   c                	       s>   e Zd ZdZ	dded deded ddf fd	d
Z  ZS )FSDPMixedPrecisionPluginzAMP for Fully Sharded Data Parallel (FSDP) Training.

    .. deprecated:: Use :class:`FSDPPrecision` instead.

    .. warning::  This is an :ref:`experimental <versioning:Experimental API>` feature.

    N	precision)z16-mixedz
bf16-mixeddevicescalerr   r   c                    s*   t dt| j d t j||d d S )NThe `zQ` is deprecated. Use `lightning.pytorch.plugins.precision.FSDPPrecision` instead.)r   r   )r   type__name__super__init__)selfr   r   r   	__class__r   r   r   %   s   z!FSDPMixedPrecisionPlugin.__init__)N)	r   
__module____qualname____doc__r   strr   r   __classcell__r   r   r!   r   r      s    	r   deprecated_name	new_classc                    s2   dt dtdtdd f fdd}t  fd|iS )Nr    argskwargsr   c                    s4   t d  dj d j| g|R i | d S )Nr   z:` is deprecated. Use `lightning.pytorch.plugins.precision.z
` instead.)r   r   r   )r    r*   r+   r(   r)   r   r   init0   s   z_create_class.<locals>.initr   )r   r   )r(   r)   r-   r   r,   r   _create_class/   s    r.   c                  C   s   ddt fddtfddtfddtfdd	tfd
dtfddtfddtfddtfddtff
} | D ]$\}}}t	||}t
ttjj||| t
tjj|| t
tj|| q,t
tjjjd	t t
tjjd	t t
tjd	t d S )NbitsandbytesBitsandbytesPrecisionPlugin	deepspeedDeepSpeedPrecisionPlugindoubleDoublePrecisionPluginfsdpFSDPPrecisionPluginr   halfHalfPrecisionPluginampMixedPrecisionPluginr   PrecisionPlugintransformer_engine TransformerEnginePrecisionPluginxlaXLAPrecisionPlugin)r   r   r	   r
   r   r   r   r   r   r.   setattrgetattrplpluginsr   r5   r   )classes_mapmodule_namer(   r)   deprecated_classr   r   r   _patch_classes:   s&   
rG   )r   N)r   typingr   r   r   r   lightning.pytorchpytorchrB   $lightning.fabric.utilities.rank_zeror   #lightning.pytorch.plugins.precisionr   r   r	   r
   r   r   r   r   r   *torch.distributed.fsdp.sharded_grad_scalerr   r   r   r&   r   r.   rG   r   r   r   r   <module>   s    ,


