o
    wi                     @   s   d dl mZ d dlmZmZ d dlmZ d dlZd dlm	Z	 d dl
mZ dZG dd	 d	eZejd
g dedeedeededd ZdS )    )partial)AnyOptional)patchN)Config)Contextz/nemo_run/checkpointsc                       sB   e Zd Zd
dee ddf fddZdedef fdd	Z  Z	S )MockContextNconfigreturnc                    s2   t  }d|d d< d|d d< t j|d d S )NTrunptyF	in_stream)r	   )r   global_defaultssuper__init__)selfr	   defaults	__class__ Z/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/lightning/test_nemo_run.pyr      s   zMockContext.__init__commandkwargsc                    s    d|d< t  j|fi | d S )NFr   )r   r   )r   r   r   r   r   r   r   !   s   zMockContext.run)N)
__name__
__module____qualname__r   r   r   strr   r   __classcell__r   r   r   r   r      s    r   zmodule, recipe, name)")	llama3_8bpretrain_recipellama3_8b_pretrain)r   finetune_recipellama3_8b_finetune)llama3_8b_16kr   llama3_8b_16k_pretrain)llama3_8b_64kr   llama3_8b_64k_pretrain)
llama3_70br   llama3_70b_pretrain)r'   r!   llama3_70b_finetune)llama3_70b_16kr   llama3_70b_16k_pretrain)llama3_70b_64kr   llama3_70b_64k_pretrain)
llama31_8br   llama31_8b_pretrain)r.   r!   llama31_8b_finetune)llama31_70br   llama31_70b_pretrain)r1   r!   llama31_70b_finetune)llama31_405br   llama31_405b_pretrain)r4   r!   llama31_405b_finetune)
mistral_7br   mistral_pretrain)r7   r!   mistral_finetune)mixtral_8x7br   mixtral_8x7b_pretrain)r:   r!   mixtral_8x7b_finetune)mixtral_8x7b_16kr   mixtral_8x7b_16k_pretrain)mixtral_8x7b_64kr   mixtral_8x7b_64k_pretrain)mixtral_8x22br   mixtral_8x22b_pretrain)rA   r!   mixtral_8x22b_finetune)nemotron3_4br   nemotron3_4b_pretrain)nemotron3_8br   nemotron3_8b_pretrain)rF   r!   nemotron3_8b_finetune)nemotron3_22br   nemotron3_22b_pretrain)nemotron3_22b_16kr   nemotron3_22b_16k_pretrain)nemotron3_22b_64kr   nemotron3_22b_64k_pretrain)nemotron4_15br   nemotron4_15b_pretrain)nemotron4_15b_16kr   nemotron4_15b_16k_pretrain)nemotron4_15b_64kr   nemotron4_15b_64k_pretrain)nemotron4_340br   nemotron4_340b_pretrain)rU   r!   nemotron4_340b_finetune)	gpt3_175br   gpt3_175b_pretrainzinvoke.context.Contextz#nemo_run.core.packaging.git.Contextz%nemo_run.core.execution.slurm.Contextc                 C   s  | dt| | dd dd l}ddlm} ddlm} ddlm} t	t	|| ||t
dd	d
}	| |j|t|ddddg}
|jdd}|
| || d#}|j|	|jdd|	jj|	jj| d||
d |  W d    n1 s{w   Y  tt? || d'}|j|	|jdd|	jjd |	jjd | d||
d |  W d    n1 sw   Y  W d    n1 sw   Y  ttD |	 }d|j_|| d#}|j||jdd|jj|jj| d||
d |  W d    n	1 s	w   Y  W d    n	1 sw   Y  |jdddg|
 }
|| d$}|j|	|jdd|	jj|	jj| d||
d |  W d    d S 1 sXw   Y  d S )NNEMORUN_HOMEWANDB_API_KEYdummyr   )llm)wandb_logger)plugins      )namedir	num_nodesnum_gpus_per_node)entityproject)rb   	logger_fnT)validate_wandbz
-unit-test)account	partitionnodesntasks_per_nodepackager)executorrb   r_   z*-unit-test-fail-validate-nodes-and-devicesz/temporary-does-not-existz'-unit-test-fail-validate-checkpoint-dir      )
start_stepend_stepz-nsys-unit-test)setenvr   nemo_runnemo.collectionsr]   (nemo.collections.llm.recipes.log.defaultr^   nemo.lightning.runr_   getattrBASE_CHECKPOINT_DIRPreemptionPluginWandbPluginr   ConfigValidationPluginappend
ExperimentaddSlurmExecutortrainerrd   devicesPackagerdryrunpytestraisesAssertionErrorcloneloglog_dir
NsysPlugin)modulereciperb   tmpdirmonkeypatchr   r]   r^   r_   recipe_configrun_pluginsvalidation_pluginexpcfgr   r   r   test_recipes_with_nemo_run&   s   +






$r   )	functoolsr   typingr   r   unittest.mockr   r   invoke.configr   invoke.contextr   rz   r   markparametrizer   r   r   r   r   <module>   s    '