o
    }oi"                     @   sb   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z d dlmZ G dd dZdS )    N)plugins)
strategies)	lightning)	to_fabricc                   @   sD   e Z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 )TestConversionc                 C   s$   t  }t|}t|tjsJ d S )N)pl_strategiesDDPStrategyr   
isinstancefl_strategiesselfpl_strategyfabric_strategy r   [/home/ubuntu/.local/lib/python3.10/site-packages/tests/lightning/_fabric/test_conversion.pytest_ddp_strategy_conversion   s   z+TestConversion.test_ddp_strategy_conversionc                 C   s8   t jdd}t|}t|tjsJ |jjdu sJ d S )NT)cpu_offload)r   FSDPStrategyr   r	   r
   r   offload_paramsr   r   r   r   test_fsdp_strategy_conversion    s   z,TestConversion.test_fsdp_strategy_conversionc                 C   s8   t jddd}t|}t|tjsJ |jdksJ d S )N16-mixedcpu)	precisiondevice)
pl_pluginsMixedPrecisionr   r	   
fl_pluginsr   r   	pl_pluginfabric_pluginr   r   r   &test_mixed_precision_plugin_conversion)   s   z5TestConversion.test_mixed_precision_plugin_conversionc                 C   s6   t jdd}t|}t|tjsJ |jdksJ d S Nr   )r   )r   FSDPPrecisionr   r	   r   r   r   r   r   r   %test_fsdp_precision_plugin_conversion0      z4TestConversion.test_fsdp_precision_plugin_conversionc                 C   sX   G dd d}t t}t|  W d    n1 sw   Y  dt|jv s*J d S )Nc                   @   s   e Zd ZdS )zLTestConversion.test_unsupported_object_conversion.<locals>.UnsupportedObjectN)__name__
__module____qualname__r   r   r   r   UnsupportedObject8   s    r(   z4No Fabric converter registered for UnsupportedObject)pytestraisesNotImplementedErrorr   strvalue)r   r(   excinfor   r   r   "test_unsupported_object_conversion7   s
   z1TestConversion.test_unsupported_object_conversionc              	   C   s   t jdddddddd}t|}t|t jsJ |jdksJ |jdks&J |jdks-J |jdks4J |j	du s;J |j
dksBJ |jdu sIJ d S )N   T)tensor_model_parallel_sizepipeline_model_parallel_size$virtual_pipeline_model_parallel_sizecontext_parallel_sizesequence_parallelexpert_model_parallel_sizemoe_extended_tp)nlMegatronStrategyr   r	   FabricMegatronStrategyr1   r2   r3   r4   r5   r6   r7   r   r   r   r   !test_megatron_strategy_conversion@   s$   	z0TestConversion.test_megatron_strategy_conversionc                 C   s6   t jdd}t|}t|t jsJ |jdksJ d S r!   )r8   MegatronMixedPrecisionr   r	   FabricMegatronMixedPrecisionr   r   r   r   r   "test_megatron_precision_conversionU   r$   z1TestConversion.test_megatron_precision_conversionN)
r%   r&   r'   r   r   r    r#   r/   r;   r>   r   r   r   r   r      s    		r   )r)   lightning.fabricr   r   r   r
   lightning.pytorchr   r   nemor   r8    nemo.lightning.fabric.conversionr   r   r   r   r   r   <module>   s   