o
    }oi                     @   s   d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZ dd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)

bf16_mixed#bf16_with_fp8_current_scaling_mixedbf16_with_fp8_mixed&bf16_with_fp8_subchannel_scaling_mixedbf16_with_mxfp8_mixed
fp16_mixed#fp16_with_fp8_current_scaling_mixedfp16_with_fp8_mixed&fp16_with_fp8_subchannel_scaling_mixedfp16_with_mxfp8_mixedc                  C   sT   t  } | jdks
J | jtjksJ | jtjksJ | jdu s!J | jdu s(J d S )N
bf16-mixedFT)r   	precisionparams_dtypetorchbfloat16pipeline_dtypeautocast_enabledgrad_reduce_in_fp32config r   f/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/recipes/test_mixed_precision.pytest_bf16_mixed_config      r   c                  C   sT   t  } | jdks
J | jtjksJ | jtjksJ | jdu s!J | jdu s(J d S )N16-mixedF)r   r   r   r   halfr   r   r   r   r   r   r   test_fp16_mixed_config'   r   r   c                  C      t  } | jdks
J | jtjksJ | jtjksJ | jdks!J | jdks(J | jdks/J | j	dks6J | j
dks=J | jdu sDJ d S )Nr   hybriddelayedr      maxT)r   r   r   r   r   r   fp8
fp8_recipe
fp8_marginfp8_amax_history_lenfp8_amax_compute_algofp8_param_gatherr   r   r   r   test_bf16_with_fp8_mixed_config0      r(   c                  C   r   )Nr   r   r   r   r    r!   T)r	   r   r   r   r   r   r"   r#   r$   r%   r&   r'   r   r   r   r   test_fp16_with_fp8_mixed_config@   r)   r*   c                  C   b   t  } | jdks
J | jtjksJ | jtjksJ | jdks!J | jdks(J | jdu s/J d S )Nr   r   mxfp8T)	r   r   r   r   r   r   r"   r#   r'   r   r   r   r   !test_bf16_with_mxfp8_mixed_configP      r-   c                  C   r+   )Nr   r   r,   T)	r   r   r   r   r   r   r"   r#   r'   r   r   r   r   !test_fp16_with_mxfp8_mixed_config\   r.   r/   c                  C      t  } | jdks
J | jtjksJ | jtjksJ | jdks!J | jdks(J | jdu s/J | j	du s6J | j
dks=J | jdksDJ d S )Nr   r   
tensorwiseT   )r   r   r   r   r   r   r"   r#   r'   first_last_layers_bf16num_layers_at_start_in_bf16num_layers_at_end_in_bf16r   r   r   r   /test_bf16_with_fp8_current_scaling_mixed_configh   s   r6   c                  C   r0   )Nr   r   r1   Tr2   )r   r   r   r   r   r   r"   r#   r'   r3   r4   r5   r   r   r   r   /test_fp16_with_fp8_current_scaling_mixed_configw   s   r7   c                  C   r+   )Nr   r   	blockwiseF)	r   r   r   r   r   r   r"   r#   r'   r   r   r   r   2test_bf16_with_fp8_subchannel_scaling_mixed_config   s   r9   c                  C   r+   )Nr   r   r8   F)	r
   r   r   r   r   r   r"   r#   r'   r   r   r   r   2test_fp16_with_fp8_subchannel_scaling_mixed_config   r.   r:   )r   6nemo.collections.llm.recipes.precision.mixed_precisionr   r   r   r   r   r   r   r	   r
   r   r   r   r(   r*   r-   r/   r6   r7   r9   r:   r   r   r   r   <module>   s   0		