o
    }oi                     @   sV   d dl Zd dlZd dlmZ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pretrain)MockDataModulemamba2_370m)Trainerc                   @   sZ   e Zd Zejdddd Zdd Zdd Zd	d
 Zdd Z	ej
dddgdd ZdS )TestMamba2_370Mclass)scopec                 C   s   t S )Nr   )self r   b/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/recipes/test_mamba2_370m.pyrecipe_module   s   zTestMamba2_370M.recipe_modulec                 C   sP   |  }t|tjsJ |jjdksJ t|jtjsJ |jjjdks&J d S )N
MambaModelBaseMambaConfig370M)model
isinstancerunConfig__fn_or_cls____name__config)r   r   model_configr   r   r   
test_model   s
   zTestMamba2_370M.test_modelc                 C   s   |  }t|tjsJ |jtksJ |jdksJ |jdks!J |jdks(J |j	dks/J t|j
tjs8J |j
jjdksAJ |j
jdksIJ |j
jdksQJ |j
jdu sYJ |jdks`J |jdksgJ |jdksnJ |jd	ksuJ d S )
Ngpu      d   MegatronStrategyF2       
   )trainerr   r   r   r   r   acceleratordevices	num_nodes	max_stepsstrategyr   tensor_model_parallel_sizepipeline_model_parallel_sizesequence_parallelaccumulate_grad_batcheslimit_test_batcheslimit_val_batcheslog_every_n_steps)r   r   trainer_configr   r   r   test_trainer$   s    zTestMamba2_370M.test_trainerc                 C   s   |  }t|tjsJ |jtksJ t|jtjsJ |jjjdks%J t|j	tjs.J |j	jt
ks6J t|jtjs?J |jjtksGJ |jjdksOJ |jjdksWJ d S )Nr      r   )pretrain_reciper   r   Partialr   r   r   r   r   r"   r   datar   
seq_lengthglobal_batch_sizer   r   reciper   r   r   test_pretrain_recipe:   s   z$TestMamba2_370M.test_pretrain_recipec                 C   s   |j ddd}t|tjsJ |jtksJ t|jtjsJ |jjjdks(J t|j	tjs1J |j	jt
ks9J t|jtjsBJ |jjjdksKJ |jjdksSJ |jjdks[J d S )N
dummy_pathdummy_tokenizer)resume_pathtokenizer_modelr   SquadDataModuler1   r   )finetune_reciper   r   r3   r   r   r   r   r   r"   r   r4   r5   r6   r7   r   r   r   test_finetune_recipeG   s   z$TestMamba2_370M.test_finetune_recipeznum_nodes,num_gpus_per_node)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)r2   r"   r%   r$   )r   r   r%   rC   r8   r   r   r   2test_pretrain_recipe_with_different_configurationsT   s   zBTestMamba2_370M.test_pretrain_recipe_with_different_configurationsN)r   
__module____qualname__pytestfixturer   r   r0   r9   r@   markparametrizerD   r   r   r   r   r      s    

r   )nemo_runr   rG   nemo.collections.llm.apir   r   "nemo.collections.llm.gpt.data.mockr   nemo.collections.llm.recipesr   nemo.lightningr   r   r   r   r   r   <module>   s   