o
    }oi                     @   sZ   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 G dd dZdS )    N)finetune)Llava15Config7B
LlavaModelLoRA
llava15_7b)Trainerc                   @   sR   e Zd Zejdddd Zdd Zdd Zd	d
 Zej	
dddgdd ZdS )TestLlava15_7Bclass)scopec                 C   s   t S Nr   )self r   a/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/vlm/recipes/test_llava15_7b.pyrecipe_module   s   zTestLlava15_7B.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_7B.test_modelc                 C   sn  |  }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}t|tjsYJ |jdks`J |jdksgJ |jdksnJ |jdu suJ t|jtjs~J |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 S )Ngpu         r   TMockDataModulei         )finetune_reciper   r   Partialr   r   r   r   r   trainerr   accelerator	num_nodesdevicesstrategytensor_model_parallel_sizepipeline_model_parallel_size$encoder_pipeline_model_parallel_sizesequence_paralleldata__name__
seq_lengthglobal_batch_sizemicro_batch_sizenum_workerslogresume)r   r   recipestratr   r   r   test_finetune_recipe_default(   s0   z+TestLlava15_7B.test_finetune_recipe_defaultc                 C   sR   |j dd}t|dsJ t|jtjsJ |jjtksJ |jj	j
dks'J d S )Nlora)peft_schemepeftg-C6?)r    hasattrr   r8   r   r   r   r   optimr   lr)r   r   r3   r   r   r   test_finetune_recipe_peft_loraQ   s
   z-TestLlava15_7B.test_finetune_recipe_peft_loraznum_nodes,num_gpus)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_gpusr3   r   r   r   -test_finetune_recipe_different_configurations\   s   z<TestLlava15_7B.test_finetune_recipe_different_configurationsN)r,   
__module____qualname__pytestfixturer   r   r5   r<   markparametrizer?   r   r   r   r   r	      s    


)r	   )nemo_runr   rB   nemo.collections.llm.apir   nemo.collections.vlmr   r   r   nemo.collections.vlm.recipesr   nemo.lightningr   r	   r   r   r   r   <module>   s   