o
    }oi                     @   sr   d dl Zd dlZd dlmZ d dlmZmZ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)finetune)Llava15Config13B
LlavaModelLoRAllava15_13b)Trainer)MegatronCommOverlapCallback)TimingCallbackc                   @   sR   e Zd Zejdddd Zdd Zdd Zd	d
 Zej	
dg ddd ZdS )TestLlava15_13Bclass)scopec                 C   s   t S Nr   )self r   b/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/vlm/recipes/test_llava15_13b.pyrecipe_module   s   zTestLlava15_13B.recipe_modulec                 C   sL   |  }t|tjsJ |jtksJ t|jtjsJ |jjtks$J d S r   )model
isinstancerunConfig__fn_or_cls__r   configr   )r   r   model_configr   r   r   
test_model    s
   zTestLlava15_13B.test_modelc                 C   s  |  }t|tjsJ |jtksJ t|jtjsJ |jjtks$J t|j	tjs-J |j	jt
ks5J |j	jdks=J |j	jdksEJ |j	jdksMJ |j	jdksUJ |j	j}t|tjsaJ t|dshJ t|jtjsqJ |jjtksyJ |jjjdksJ t|jtjsJ |jjjdksJ |jjdksJ |jjd	ksJ |jjdksJ |jjd
ksJ |jd usJ |jd usJ dd |j	jD }t|v sJ t |v sJ d S )Ngpu      iF  peftg-C6?MockDataModulei         c                 S   s   h | ]}t |tjr|jqS r   )r   r   r   r   ).0cbr   r   r   	<setcomp>X   s    z?TestLlava15_13B.test_finetune_recipe_default.<locals>.<setcomp>)!finetune_reciper   r   Partialr   r   r   r   r   trainerr   acceleratordevices	num_nodes	max_stepsstrategyhasattrr   r   optimr   lrdata__name__
seq_lengthglobal_batch_sizemicro_batch_sizenum_workerslogresume	callbacksr
   r	   )r   r   recipestratcallback_classesr   r   r   test_finetune_recipe_default)   s8   z,TestLlava15_13B.test_finetune_recipe_defaultc                 C   sB   |j dd}t|dsJ |jjjdksJ |jjjdksJ d S )Nnone)peft_schemer      gh㈵>)r%   r-   r'   r,   tensor_model_parallel_sizer.   r   r/   )r   r   r9   r   r   r   test_finetune_recipe_peft_none\   s   z.TestLlava15_13B.test_finetune_recipe_peft_noneznum_nodes,num_gpus))r   r   )r?   r!   )r!   r?   c                 C   s2   |j ||d}|jj|ksJ |jj|ksJ d S )N)r*   num_gpus_per_node)r%   r'   r*   r)   )r   r   r*   num_gpusr9   r   r   r   !test_parameterized_configurationsf   s   z1TestLlava15_13B.test_parameterized_configurationsN)r1   
__module____qualname__pytestfixturer   r   r<   rA   markparametrizerD   r   r   r   r   r      s    

	3
r   )nemo_runr   rG   nemo.collections.llm.apir   nemo.collections.vlmr   r   r   nemo.collections.vlm.recipesr   nemo.lightningr   6nemo.lightning.pytorch.callbacks.megatron_comm_overlapr	   nemo.utils.exp_managerr
   r   r   r   r   r   <module>   s   