o
    }oi                     @   sb   d dl Z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)LoRAMLlamaConfig11BInstructMLlamaModel
mllama_11b)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g ddd ZdS )TestMLlama11Bclass)scopec                 C   s   t S Nr   )self r   a/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/vlm/recipes/test_mllama_11b.pyrecipe_module   s   zTestMLlama11B.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TestMLlama11B.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}|jdksXJ |jdks_J |jdksfJ |jtjksnJ |j}t|tjsyJ |jjdksJ |jdksJ |jdksJ |jdksJ |jdksJ |jd	ksJ |jd
ksJ |jdksJ |jd usJ |jd usJ t |dsJ t|j!tjsJ |j!jt"ksJ |j#j$j%dksJ d S )Ngpu      r   MockDataModulei  i      i  )0  r   peftg-C6?)&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pipeline_dtypetorchbfloat16data__name__
seq_lengthdecoder_seq_lengthglobal_batch_sizemicro_batch_size
vocab_size	crop_sizenum_workerslogresumehasattrr   r   optimr   lr)r   r   recipestratr-   r   r   r   test_finetune_recipe_default(   s>   z*TestMLlama11B.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   r   gh㈵>)r    r8   r"   r&   r'   r9   r   r:   )r   r   r;   r   r   r   test_finetune_recipe_peft_none[   s   z,TestMLlama11B.test_finetune_recipe_peft_noneznum_nodes, num_gpus))r   r   )r      )rA   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_gpusr;   r   r   r   #test_finetune_recipe_configurationse   s   z1TestMLlama11B.test_finetune_recipe_configurationsN)r.   
__module____qualname__pytestfixturer   r   r=   r@   markparametrizerD   r   r   r   r   r	      s    

	3
r	   )nemo_runr   rG   r+   nemo.collections.llm.apir   nemo.collections.vlmr   r   r   nemo.collections.vlm.recipesr   nemo.lightningr   r	   r   r   r   r   <module>   s   