o
    }oiT                     @   sn   d dl Zd dlZd dlmZ d dlmZmZ d dl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)llm)finetunepretrain)MockDataModule)PEFT_STR2CLS	qwen3_32b)Trainerc                   @   sP   e Zd Zejdddd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )TestQwen3_32Bclass)scopec                 C   s   t S Nr   )self r   `/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/recipes/test_qwen3_32b.pyrecipe_module   s   zTestQwen3_32B.recipe_modulec                 C   s   |  }t|tjsJ d S r   )model
isinstancerunConfig)r   r   model_configr   r   r   
test_model   s   zTestQwen3_32B.test_modelc                 C   s  |  }t|tjsJ |jtksJ t|jtjsJ t|jtjs%J |jjt	ks-J t|j
tjs6J |j
jtks>J |j
jdksFJ |j
jdksNJ |j
jdksVJ |jjjdks_J |jjjdkshJ |jjdkspJ |jjdksxJ |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
jjjd	ksJ |j
jjd
ksJ |jjjdksJ |jjjdksJ |jjjdksJ d S )Ni             i    i  
   AutoTokenizerzQwen/Qwen3-32Bfulluniform) pretrain_reciper   r   Partial__fn_or_cls__r   r   r   trainerr	   datar   
seq_lengthglobal_batch_sizemicro_batch_sizestrategytensor_model_parallel_sizepipeline_model_parallel_size	num_nodes	max_stepsaccumulate_grad_batchesval_check_intervallimit_test_batcheslimit_val_batcheslog_every_n_steps	tokenizer__name__pretrained_model_nameconfigrecompute_granularityrecompute_methodrecompute_num_layersr   r   reciper   r   r   test_pretrain_recipe#   s2   z"TestQwen3_32B.test_pretrain_recipec                 C   s   |  }t|tjsJ |jtksJ t|jtjsJ t|jtjs%J |jjt	ks-J t|j
tjs6J |j
jtjks?J t|jtjsHJ |jjtd ksRJ |jjjdks[J d S )Nlora-C6?)finetune_reciper   r   r!   r"   r   r   r   r#   r	   r$   r   SquadDataModulepeftr   optimr5   lrr9   r   r   r   test_finetune_recipeF   s   z"TestQwen3_32B.test_finetune_recipec                 C   sH   |j dd}t|jtjsJ |jjtd ksJ |jjj	dks"J d S )Ndorapeft_schemer=   )
r>   r   r@   r   r   r"   r   rA   r5   rB   r9   r   r   r   test_finetune_recipe_with_doraU   s   z,TestQwen3_32B.test_finetune_recipe_with_dorac                 C   s^   |j d d}t|dr|jd u sJ |jjjdksJ |jjjdks$J |jjj	dks-J d S )NrE   r@   r   r   gh㈵>)
r>   hasattrr@   r#   r(   r)   r*   rA   r5   rB   r9   r   r   r   !test_finetune_recipe_without_peft[   s
   z/TestQwen3_32B.test_finetune_recipe_without_peftc                 C   s@   t jtdd |jdd W d    d S 1 sw   Y  d S )Nz(Unrecognized peft scheme: invalid_scheme)matchinvalid_schemerE   )pytestraises
ValueErrorr>   )r   r   r   r   r   &test_finetune_recipe_with_invalid_peftb   s   "z4TestQwen3_32B.test_finetune_recipe_with_invalid_peftN)r3   
__module____qualname__rL   fixturer   r   r;   rC   rG   rI   rO   r   r   r   r   r
      s    

#r
   )nemo_runr   rL   nemo.collectionsr   nemo.collections.llm.apir   r   "nemo.collections.llm.gpt.data.mockr   nemo.collections.llm.peftr   nemo.collections.llm.recipesr   nemo.lightningr	   r
   r   r   r   r   <module>   s   