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_56b)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 )TestNemotronH56Bc                 C   s   t S )Nr   )self r
   d/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/recipes/test_nemotronh_56b.pyrecipe   s   zTestNemotronH56B.recipec                 C   s   |  }|jjjdksJ d S )NNemotronHConfig56B)modelconfig__fn_or_cls____name__r	   r   model_configr
   r
   r   test_model_config   s   z"TestNemotronH56B.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TestNemotronH56B.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TestNemotronH56B.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%TestNemotronH56B.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.   r/   )finetune_reciper   r   r1   r   r   r   r   r   r    r   r2   r3   r4   r5   r
   r
   r   test_finetune_recipeJ   s   z%TestNemotronH56B.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)r0   r    r#   r"   )r	   r   r#   r>   r
   r
   r   2test_pretrain_recipe_with_different_configurationsW   s   zCTestNemotronH56B.test_pretrain_recipe_with_different_configurationsN)r   
__module____qualname__pytestfixturer   r   r   r-   r6   r<   markparametrizer?   r
   r
   r
   r   r      s    
r   )nemo_runr   rB   nemo.collections.llm.apir   r   "nemo.collections.llm.gpt.data.mockr   nemo.collections.llm.recipesr   nemo.lightningr   r   r
   r
   r
   r   <module>   s   