o
    }ois                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZmZ G dd dZG dd	 d	ZG d
d dZdS )    N)	lightning)llm)_validate_config)Llama3Config8B
LlamaModelc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestValidateConfigc                 C   s:   t ttd}tjdddd}tjt d}|||fS )Nconfigi         )
seq_lengthglobal_batch_sizemicro_batch_size)strategy)	r   runConfigr   r   MockDataModulenlTrainerMegatronStrategyselfmodeldatatrainer r   R/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/llm/test_api.pyreset_configs   s   
z TestValidateConfig.reset_configsc                 C   s  |   \}}}t||| tt |   \}}}d|j_t||| W d    n1 s.w   Y  tt |   \}}}d|j_t||| W d    n1 sTw   Y  tt |   \}}}d|j_t||| W d    n1 szw   Y  tt |   \}}}d|j_	t||| W d    n1 sw   Y  tt |   \}}}d|j_
t||| W d    d S 1 sw   Y  d S )Nr   )r   r   pytestraisesAssertionErrorr	   r   
num_layershidden_sizenum_attention_headsffn_hidden_sizer   r   r   r   test_model_validation#   s6   "z(TestValidateConfig.test_model_validationc                 C   sN  |   \}}}t||| tt |   \}}}d|_t||| W d    n1 s-w   Y  tt |   \}}}d|_t||| W d    n1 sRw   Y  tt |   \}}}d|_t||| W d    n1 sww   Y  tt |   \}}}d|_d|_t||| W d    d S 1 sw   Y  d S )Nr         )r   r   r   r   r    r   r   r   r   r   r   r   test_data_validation@   s.   "z'TestValidateConfig.test_data_validationc                 C   sN  |   \}}}t||| tt |   \}}}d|j_t||| W d    n1 s.w   Y  tt |   \}}}d|j_t||| W d    n1 sTw   Y  tt |   \}}}d|j_t||| W d    n1 szw   Y  tt |   \}}}d|j_d|j_t||| W d    n1 sw   Y  tt |   \}}}d|j_d|j_t||| W d    n1 sw   Y  tt# |   \}}}d|_	d|_
d|j_d|j_t||| W d    n1 sw   Y  |   \}}}d|j_d|j_t||| |jjdks!J tt |   \}}}d|j_d |j_t||| W d    n	1 sGw   Y  |   \}}}d|j_d|j_tj|j_t||| |jjd u soJ |jjd u sxJ tt |   \}}}d|j_d|j_t||| W d    n	1 sw   Y  tt |   \}}}d|j_d|j_t||| W d    n	1 sw   Y  tt |   \}}}d |j_d|j_t||| W d    n	1 sw   Y  tt |   \}}}d|j_d|j_t||| W d    d S 1 s w   Y  d S )	Nr      r   r&      TF   )r   r   r   r   r    r   tensor_model_parallel_sizepipeline_model_parallel_sizecontext_parallel_sizer   r   sequence_parallelpipeline_dtype$virtual_pipeline_model_parallel_sizetorchbfloat16r	   r   num_moe_expertsexpert_model_parallel_sizer   r   r   r   test_trainer_validatiopnY   s   	
$z+TestValidateConfig.test_trainer_validatiopnN)__name__
__module____qualname__r   r%   r(   r6   r   r   r   r   r      s
    r   c                   @      e Zd Zdd ZdS )TestImportCkptc              	   C   s   t t4 t }tjtjt dd|dd W d   n1 s$w   Y  W d   dS W d   dS 1 s<w   Y  dS )WTest that an error is raised when the output path exists and overwrite is set to False.r   zhf://meta-llama/Llama-3.2-1BF)r   sourceoutput_path	overwriteN)	r   r   FileExistsErrortempfileTemporaryDirectoryr   import_ckptr   Llama32Config1B)r   r>   r   r   r   $test_output_path_exists_no_overwrite   s   Pz3TestImportCkpt.test_output_path_exists_no_overwriteNr7   r8   r9   rE   r   r   r   r   r;          r;   c                   @   r:   )TestExportCkptc              
   C   s   t tB t %}t }tj|d|dd W d   n1 s#w   Y  W d   n1 s2w   Y  W d   dS W d   dS 1 sJw   Y  dS )r<   hfF)pathtargetr>   r?   N)r   r   r@   rA   rB   r   export_ckpt)r   r>   rJ   r   r   r   rE      s"   P z3TestExportCkpt.test_output_path_exists_no_overwriteNrF   r   r   r   r   rH      rG   rH   )rA   nemo_runr   r   r2   nemor   r   nemo.collectionsr   nemo.collections.llm.apir   $nemo.collections.llm.gpt.model.llamar   r   r   r;   rH   r   r   r   r   <module>   s    