o
    wiK                  
   @   s   d dl Z d dlZd dlZd dlmZmZmZ d dlZ	 dd Z	dde	de	deee	ef  d	e
fd
dZedkroe dZejdddd ejdddd ejdejdd ejdddd e Zeejejejej dS dS )    N)AnyDictOptionalc                 C   s6   t | jdkrtd| j  | jd }tt|}|S )z(Get HuggingFace model class from config.   z:More than one model architecture available, choosing 1st: r   )lenarchitecturesprintgetattrtransformers)	hf_config
model_namemodel_class r   _/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/setup/models/create_hf_model.pyget_hf_model_class,   s
   

r   Fmodel_name_or_path
output_dirconfig_updates	overwritec                 C   s   t j|r|std| d dS tj| }tj| }t|}|dur+|	| t| ||}t| t j
|dd td| d || || td dS )	z6Create HuggingFace model with optional config updates.zOutput directory z1 exists and overwrite flag is not set so exiting.NT)exist_okzSaving model to z...zOK.)ospathisdirr   r
   
AutoConfigfrom_pretrainedAutoTokenizerr   updatemakedirssave_pretrained)r   r   r   r   r   	tokenizerr   modelr   r   r   create_hf_model5   s    


r!   __main__zHCreate a HuggingFace model (random initialization) for testing purposes.z--model_name_or_pathTz8Model name or local path with model config and tokenizer)requiredhelpz--output_dirzOutput directoryz--config_updatesz>Parameter updates in JSON format to overwrite for model config)typer$   z--overwrite
store_truezOverwrite file if it exists)actionr$   )NF)argparsejsonr   typingr   r   r   r
   r   strboolr!   __name__ArgumentParserparseradd_argumentloads
parse_argsargsr   r   r   r   r   r   r   r   <module>   sT   


