o
    Xi                     @  s  d dl mZ d dlZd dlZd dlZd dlmZ d dlZed0i ddddgdd	d
ddd dd dddddddddddddddddddddd d!dd"d#d$d%d&d'd(d)d*d%d+d,Z	dZ
d-Ze	jZe	jZee Ze	jZG d.d/ d/ZdS )1    )annotationsN)LlamaConfig_name_or_pathzHuggingFaceTB/SmolLM-1.7BarchitecturesLlamaForCausalLMattention_biasFattention_dropoutg        bos_token_ideos_token_id
hidden_actsiluhidden_sizei   initializer_rangeg{Gz?intermediate_sizei    max_position_embeddings
model_typellamanum_attention_heads    num_hidden_layers   num_key_value_headspretraining_tprms_norm_epsgh㈵>rope_scaling
rope_thetag     @tie_word_embeddingsTtorch_dtypefloat32transformers_versionz4.37.2	use_cache
vocab_sizei   
   c                   @  s>   e Zd Zdd Zdd ZdddZd	d
 Zdd Zdd ZdS )_SmollmTestDatac                 C  s   d S )N )selfr$   r$   [/home/ubuntu/.local/lib/python3.10/site-packages/onnxscript/rewriter/models/_test_models.py__init__2   s   z_SmollmTestData.__init__c                 C  s(   t | dstt}|  || _| jS )N_torch_model)hasattrtransformersr   _configevalr(   )r%   modelr$   r$   r&   get_torch_model5   s
   

z_SmollmTestData.get_torch_modelreturnir.Modelc                   sV   |   }|    fddtt D }tjj| |ddd}|j}tj	
| |S )Nc                   s$   g | ]} | d urdt | qS Ninput)str).0iinputsr$   r&   
<listcomp>?   s   $ z2_SmollmTestData.get_onnx_model.<locals>.<listcomp>T)input_namesdynamofallback)r.   
get_inputsrangelentorchonnxexportr-   
onnxscript	optimizeroptimize)r%   r-   r9   exportedexported_modelr$   r6   r&   get_onnx_model<   s   
z_SmollmTestData.get_onnx_modelc                 C  sZ   t | ds*tdtttftj}t|j	}t
d|dd}|||f| _| jS )N_inputsr   )r)   r?   randint_vocab_size_batch_size_seq_lentoint64onesshapearangesize	unsqueezerH   )r%   	input_idsattention_maskposition_idsr$   r$   r&   r<   H   s   
z_SmollmTestData.get_inputsc                 C  sR   |   |   }|j}|jd }|d }|d }|  |  |  fS )Nr   r   )r.   r<   logitspast_key_valuesdetachnumpy)r%   outputrX   past_key_valuekeyvaluer$   r$   r&   get_torch_outputsP   s   
"z!_SmollmTestData.get_torch_outputsc                 C  s   |   }dd t|D S )Nc                 S  s(   i | ]\}}|d urd| |  qS r1   )r[   )r4   r5   r2   r$   r$   r&   
<dictcomp>Z   s    "z2_SmollmTestData.get_ort_inputs.<locals>.<dictcomp>)r<   	enumerate)r%   r7   r$   r$   r&   get_ort_inputsX   s   z_SmollmTestData.get_ort_inputsN)r/   r0   )	__name__
__module____qualname__r'   r.   rG   r<   r`   rc   r$   r$   r$   r&   r#   1   s    
r#   r$   )
__future__r   onnx_irirr?   r*   r   onnxscript.optimizerrB   r+   rL   rM   r   _hidden_sizer   _num_attention_headsdimr!   rK   r#   r$   r$   r$   r&   <module>   s|   	
