a
    d
                     @   s   d dl mZ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
mZ d dlmZ d dlmZ d dlmZ ed	Zererd dlZed
 Zed Zeeef ZG dd deZdS )    )AnycastTYPE_CHECKINGUnionN)RequirementCache)Tensor)get_argsLiteral)	Precision)_convert_fp_tensor)	Steppable	deepspeed)       )3216bf16c                   @   sX   e Zd ZdZeddddZeedddZed	eedd
ddZ	e
eedddZdS )DeepSpeedPrecisionzPrecision plugin for DeepSpeed integration.

    Args:
        precision: Full precision (32), half precision (16) or bfloat16 precision (bf16).

    Raises:
        ValueError:
            If unsupported ``precision`` is provided.
    N)	precisionreturnc                 C   sB   t tt t }||vr.td|d| dttt|| _d S )Nz`precision=z>)` is not supported in DeepSpeed. `precision` must be one of: .)r   _PRECISION_INPUT_STR_PRECISION_INPUT_INT
ValueErrorr   strr   )selfr   Zsupported_precision r   u/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lightning_fabric/plugins/precision/deepspeed.py__init__-   s    zDeepSpeedPrecision.__init__)datar   c                 C   s&   t jt jt jd}|| j }t||S )N)r   r   r   )torchZbfloat16float16float32r   r   )r   r   Zprecision_to_typeZdst_typer   r   r   convert_input6   s    
z DeepSpeedPrecision.convert_inputzdeepspeed.DeepSpeedEngine)tensormodelargskwargsr   c                 O   s   |j |g|R i | dS )z3Performs back-propagation using DeepSpeed's engine.N)backward)r   r$   r%   r&   r'   r   r   r   r(   ;   s    zDeepSpeedPrecision.backward)	optimizerr'   r   c                 K   s   |j f i |S )N)step)r   r)   r'   r   r   r   optimizer_step?   s    z!DeepSpeedPrecision.optimizer_step)__name__
__module____qualname____doc___PRECISION_INPUTr   r   r#   r   r(   r   r+   r   r   r   r   r   "   s   
	r   )typingr   r   r   r   r    Z lightning_utilities.core.importsr   r   Ztyping_extensionsr   r	   Z,lightning_fabric.plugins.precision.precisionr
   Z(lightning_fabric.plugins.precision.utilsr   Z lightning_fabric.utilities.typesr   Z_DEEPSPEED_AVAILABLEr   r   r   r0   r   r   r   r   r   <module>   s   