o
    wÖi=  ć                   @   s$   d dl mZ d dlZedd ZdS )é    )ŚcontextmanagerNc               	   c   s    t  ” } t  t j” z3t jjt j ” rdndt jd dV  W d   n1 s*w   Y  W t  | ” dS W t  | ” dS t  | ” w )aR  
    Workaround for precision related issues when training with bf16-true PyTorch Lightning precision setting.
    In bf16-true, PTL changes PyTorch's default dtype, which may break implicit assumptions for some models.
    This context manager restores default float32 precision and runs the computation in float32 autocast context.
    ŚcudaŚcpu)Śdevice_typeŚdtypeN)ŚtorchŚget_default_dtypeŚset_default_dtypeŚfloat32ŚampŚautocastr   Śis_available)Śdefault_dtype© r   śg/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/nemo/collections/speechlm2/parts/precision.pyŚfp32_precision   s   "’żr   )Ś
contextlibr   r   r   r   r   r   r   Ś<module>   s   