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nemotronh_8b)Trainerc                   @   s\   e Zd Zejdd Z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 )TestNemotronH8Bc                 C   s   t S )Nr   )self r
   c/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/recipes/test_nemotronh_8b.pyrecipe   s   zTestNemotronH8B.recipec                 C   s   |  }|jjjdksJ d S )NNemotronHConfig8B)modelconfig__fn_or_cls____name__r	   r   model_configr
   r
   r   test_model_config   s   z!TestNemotronH8B.test_model_configc                 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
MambaModelr   )r   
isinstancerunConfigr   r   r   r   r
   r
   r   
test_model!   s
   zTestNemotronH8B.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 d S )	Ngpu   
   MegatronStrategy      T    )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_val_batcheslog_every_n_steps)r	   r   trainer_configr
   r
   r   test_trainer(   s   zTestNemotronH8B.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          )pretrain_reciper   r   Partialr   r   r   r   r   r!   r   datar   
seq_lengthglobal_batch_sizer	   r   r
   r
   r   test_pretrain_recipe=   s   z$TestNemotronH8B.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_vocab)resume_path
vocab_filer   r   r/   r0   )finetune_reciper   r   r2   r   r   r   r   r   r!   r   r3   r4   r5   r6   r
   r
   r   test_finetune_recipeJ   s   z$TestNemotronH8B.test_finetune_recipeznum_nodes,num_gpus_per_node)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)r1   r!   r$   r#   )r	   r   r$   r?   r
   r
   r   2test_pretrain_recipe_with_different_configurationsW   s   zBTestNemotronH8B.test_pretrain_recipe_with_different_configurationsN)r   
__module____qualname__pytestfixturer   r   r   r.   r7   r=   markparametrizer@   r
   r
   r
   r   r      s    
r   )nemo_runr   rC   nemo.collections.llm.apir   r   "nemo.collections.llm.gpt.data.mockr   nemo.collections.llm.recipesr   nemo.lightningr   r   r
   r
   r
   r   <module>   s   