o
    wi                     @   s  d dl mZ d dlZd dlmZ d dlmZm	Z	 d dl
mZmZmZ dZejjeddeje fdd	Zejjedddededejej fddZejje	eddddddddde	f	dejfddZejjeeddddddddddef
dejfddZdS )    N)TokenizerSpec)finetunepretrain)model_recipepretrain_recipe_creatertokenizer_recipe	hyena_40b)namereturnc                   C   s   t  S )a<  
    Defines a factory function for creating a tokenizer configuration.

    This function is registered as a CLI factory with the specified name and
    returns a tokenizer configuration based on the `tokenizer_recipe`.

    Returns:
        run.Config[TokenizerSpec]: A configuration object for the tokenizer.
    )r    r   r   c/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/nemo/collections/llm/recipes/hyena_40b.py	tokenizer   s   r   F    tp_comm_overlap
seq_lengthc                 C   s   t d| |S )z
    Factory function to create a Striped-Hyena 40B model configuration.

    Returns:
        run.Config[pl.LightningModule]: Configuration for the Striped-Hyena 40B model.
    40b)r   )r   r   r   r   r   model+   s   r   )targetr	               r   c	           
      K   s    t d| |||||||d|	S )aZ  
    Create a pre-training recipe for Striped-Hyena 40B model.

    This function sets up a complete configuration for pre-training, including
    model, trainer, data, logging, optimization, and resumption settings.

    Args:
        dir (Optional[str]): Directory for saving logs and checkpoints.
        name (str): Name of the pre-training run.
        num_nodes (int): Number of compute nodes to use.
        num_gpus_per_node (int): Number of GPUs per node.
        fn (Callable): The pre-training function to use.

    Returns:
        run.Partial: Partial configuration for pre-training.

    )dirmicro_batch_sizeglobal_batch_size	num_nodesnum_gpus_per_nodetensor_parallel_sizecontext_parallel_size
model_sizeNr   r   )
r   r   r   r   r   r   r   r   fnkwargsr   r   r   pretrain_recipe6   s   	r#   zhyena-40b-pretrainc
                 K   s$   t d| |||||||||	d
|
S ) )
r   resume_pathr   r   r   r   r   r   r   r!   Nr   r    )r   r%   r   r   r   r   r   r   r   r!   r"   r   r   r   finetune_recipea   s   r&   )Fr   )lightning.pytorchpytorchplnemo_runrun1nemo.collections.common.tokenizers.tokenizer_specr   nemo.collections.llm.apir   r   'nemo.collections.llm.recipes.hyena_baser   r   r   NAMEclifactoryConfigr   boolintLightningModuler   Partialr#   r&   r   r   r   r   <module>   sJ   "
*