o
    XiC                     @   sj   d 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 dd Zdd	 ZG d
d dZdd ZdS )z
Onnxscript version of "hf-internal-testing_tiny-random-bart".

See: https://huggingface.co/hf-internal-testing/tiny-random-bart
    N)script)opset20)FLOATINT64c                    sL   t  dtd dtd f 	
fdd}| S )N	input_ids)   Nreturn)NN   c                    sZ
  t }t }t }t }t }t }t }t }t }	t }
t }t }t }t }t }t }t }t }t | }t jdd}t ||}t jdgd}t jdgd}t ||}t j||dd}t j| |dd}t |}t jdgd}t ||}t | }t jdd}t j||dd} t jdd}!t j	|dd	}"t jdd}#t 
|!|"|#}$t jdgd}%t | |%}&t jdgd}'t j|&|'dd}(t jdgd})t |(|)}*t |*}+t j|+ttjdgtjd
d},t jdgd}-t |,|-}.t |*|.}/t |/|,|*}0t |$|0}1t jdd}2t |1|2}3t  |3}4t j	|4dd	}5t ||5}6t j|6||ddd}7t |7}8t jdd}9t j|8|9dd}:t |7};t jdd}<t j|;|<dd}=t |7}>t ||>}?t jdgd}@t |:|@}At jdgd}Bt jdgd}Ct jdgd}Dt j|A|B|C|Ddd}Et jdgd}Ft |:|F}Gt jdgd}Ht jdgd}It jdgd}Jt j|G|H|I|Jdd}Kt jdgd}Lt |:|L}Mt jdgd}Nt jdgd}Ot jdgd}Pt j|M|N|O|Pdd}Qt j|?|Edd}Rt j|Rg dd}St |7}Tt |T}Ut |7}Vt ||V}Wt j|U|Kdd}Xt j|W|Qdd}Yt j|Yg dd}Zt |S}[t jdgd}\t jdgd}]t |[|\|]}^t j	|^dd	}_t |_}`t jdgd}at |a|`}bt j	|bdd	}ct j|Xg dd}dt |c}et |S|e}ft |c}gt |d|g}ht |f|h}it j|idd}jt |j|Z}kt j|kg dd}lt jdgd}mt |:|m}nt jdgd}ot |=|o}pt jdgd}qt j|n|p|qdd}rt j|l|rdd}st |s}tt ||t}ut |7|u}vt j|v|ddd}wt |w	}xt |x}yt j|ydd}zt |z
}{t ||{}|t |w||}}t j|}||ddd}~t |~}t jdd}t j||dd}t |~}t jdd}t j||dd}t |~}t |	|}t jdgd}t ||}t jdgd}t jdgd}t jdgd}t j||||dd}t jdgd}t ||}t jdgd}t jdgd}t jdgd}t j||||dd}t jdgd}t ||}t jdgd}t jdgd}t jdgd}t j||||dd}t j||dd}t j|g dd}t |~}t ||}t |~}t |
|}t j||dd}t j||dd}t j|g dd}t |}t jdgd}t jdgd}t |||}t j	|dd	}t |}t jdgd}t ||}t j	|dd	}t j|g dd}t |}t ||}t |}t ||}t ||}t j|dd}t ||}t j|g dd}t jdgd}t ||}t jdgd}t ||}t jdgd}t j|||dd}t j||dd}t |}t ||}t |~|}t j|||ddd}t |}t ||}t j|dd}t |}t ||¡}t ||á}t j|||ddd}|S )Nr   )valuer   )axis)	allowzerog      ?   )todtype   g   >)r   epsilon   )r   r   r      )perml    )r   r   r   r   r	   g  #@none)approximate)r   IdentityShapeConstantGather	UnsqueezeConcatReshapeMulCastRangeConstantOfShapeirtensornparrayint64EqualWhereExpandAddLayerNormalizationMatMul	TransposeSliceSqrtDivSoftmaxGelu)r    encoder_layernorm_embedding_bias"encoder_layernorm_embedding_weight&encoder_layers_1_final_layer_norm_bias(encoder_layers_1_final_layer_norm_weightencoder_layers_1_fc2_bias*encoder_layers_1_self_attn_layer_norm_bias,encoder_layers_1_self_attn_layer_norm_weight(encoder_layers_1_self_attn_out_proj_bias&encoder_layers_1_self_attn_q_proj_bias&encoder_layers_1_self_attn_v_proj_bias&encoder_layers_1_self_attn_k_proj_bias&encoder_layers_0_final_layer_norm_bias(encoder_layers_0_final_layer_norm_weightencoder_layers_0_fc2_biasencoder_layers_1_fc1_bias(encoder_layers_0_self_attn_out_proj_bias&encoder_layers_0_self_attn_q_proj_bias&encoder_layers_0_self_attn_v_proj_biasencoder_shape_output_0encoder_constant_output_0encoder_gather_output_0encoder_constant_1_output_0unsqueeze_43encoder_unsqueeze_output_0encoder_concat_output_0encoder_reshape_output_0$encoder_embed_tokens_gather_output_0&encoder_embed_tokens_constant_output_0!encoder_embed_tokens_mul_output_0&encoder_embed_positions_shape_output_0)encoder_embed_positions_constant_output_0'encoder_embed_positions_gather_output_0+encoder_embed_positions_constant_1_output_0%encoder_embed_positions_cast_output_0+encoder_embed_positions_constant_2_output_0&encoder_embed_positions_range_output_0+encoder_embed_positions_constant_3_output_0*encoder_embed_positions_unsqueeze_output_0+encoder_embed_positions_constant_4_output_0'encoder_embed_positions_concat_output_0+encoder_embed_positions_constant_5_output_0(encoder_embed_positions_reshape_output_0(encoder_embed_positions_shape_1_output_00encoder_embed_positions_constantofshape_output_0+encoder_embed_positions_constant_6_output_0$encoder_embed_positions_mul_output_0&encoder_embed_positions_equal_output_0&encoder_embed_positions_where_output_0'encoder_embed_positions_expand_output_0+encoder_embed_positions_constant_7_output_0$encoder_embed_positions_add_output_0)encoder_embed_positions_gather_1_output_0encoder_cast_output_0encoder_add_output_07encoder_layernorm_embedding_layernormalization_output_0)encoder_layers_0_self_attn_shape_output_0,encoder_layers_0_self_attn_constant_output_0*encoder_layers_0_self_attn_gather_output_0+encoder_layers_0_self_attn_shape_1_output_0.encoder_layers_0_self_attn_constant_1_output_0,encoder_layers_0_self_attn_gather_1_output_01encoder_layers_0_self_attn_q_proj_matmul_output_0.encoder_layers_0_self_attn_q_proj_add_output_0unsqueeze_88-encoder_layers_0_self_attn_unsqueeze_output_0.encoder_layers_0_self_attn_constant_2_output_0.encoder_layers_0_self_attn_constant_3_output_0.encoder_layers_0_self_attn_constant_4_output_0*encoder_layers_0_self_attn_concat_output_0unsqueeze_97/encoder_layers_0_self_attn_unsqueeze_1_output_0.encoder_layers_0_self_attn_constant_5_output_0.encoder_layers_0_self_attn_constant_6_output_0.encoder_layers_0_self_attn_constant_7_output_0,encoder_layers_0_self_attn_concat_1_output_0unsqueeze_106/encoder_layers_0_self_attn_unsqueeze_2_output_0.encoder_layers_0_self_attn_constant_8_output_0.encoder_layers_0_self_attn_constant_9_output_0/encoder_layers_0_self_attn_constant_10_output_0,encoder_layers_0_self_attn_concat_2_output_0+encoder_layers_0_self_attn_reshape_output_0-encoder_layers_0_self_attn_transpose_output_01encoder_layers_0_self_attn_k_proj_matmul_output_0.encoder_layers_0_self_attn_k_proj_add_output_01encoder_layers_0_self_attn_v_proj_matmul_output_0.encoder_layers_0_self_attn_v_proj_add_output_0-encoder_layers_0_self_attn_reshape_1_output_0-encoder_layers_0_self_attn_reshape_2_output_0/encoder_layers_0_self_attn_transpose_1_output_0+encoder_layers_0_self_attn_shape_2_output_0/encoder_layers_0_self_attn_constant_11_output_0/encoder_layers_0_self_attn_constant_12_output_0)encoder_layers_0_self_attn_slice_output_0(encoder_layers_0_self_attn_cast_output_0(encoder_layers_0_self_attn_sqrt_output_0/encoder_layers_0_self_attn_constant_13_output_0'encoder_layers_0_self_attn_div_output_0*encoder_layers_0_self_attn_cast_1_output_0/encoder_layers_0_self_attn_transpose_2_output_0*encoder_layers_0_self_attn_sqrt_1_output_0'encoder_layers_0_self_attn_mul_output_0*encoder_layers_0_self_attn_sqrt_2_output_0)encoder_layers_0_self_attn_mul_1_output_0*encoder_layers_0_self_attn_matmul_output_0+encoder_layers_0_self_attn_softmax_output_0,encoder_layers_0_self_attn_matmul_1_output_0/encoder_layers_0_self_attn_transpose_3_output_0unsqueeze_145/encoder_layers_0_self_attn_unsqueeze_3_output_0unsqueeze_147/encoder_layers_0_self_attn_unsqueeze_4_output_0/encoder_layers_0_self_attn_constant_14_output_0,encoder_layers_0_self_attn_concat_3_output_0-encoder_layers_0_self_attn_reshape_3_output_03encoder_layers_0_self_attn_out_proj_matmul_output_00encoder_layers_0_self_attn_out_proj_add_output_0encoder_layers_0_add_output_0Aencoder_layers_0_self_attn_layer_norm_layernormalization_output_0$encoder_layers_0_fc1_matmul_output_0!encoder_layers_0_fc1_add_output_0,encoder_layers_0_activation_fn_gelu_output_0$encoder_layers_0_fc2_matmul_output_0!encoder_layers_0_fc2_add_output_0encoder_layers_0_add_1_output_0=encoder_layers_0_final_layer_norm_layernormalization_output_0)encoder_layers_1_self_attn_shape_output_0,encoder_layers_1_self_attn_constant_output_0*encoder_layers_1_self_attn_gather_output_0+encoder_layers_1_self_attn_shape_1_output_0.encoder_layers_1_self_attn_constant_1_output_0,encoder_layers_1_self_attn_gather_1_output_01encoder_layers_1_self_attn_q_proj_matmul_output_0.encoder_layers_1_self_attn_q_proj_add_output_0unsqueeze_176-encoder_layers_1_self_attn_unsqueeze_output_0.encoder_layers_1_self_attn_constant_2_output_0.encoder_layers_1_self_attn_constant_3_output_0.encoder_layers_1_self_attn_constant_4_output_0*encoder_layers_1_self_attn_concat_output_0unsqueeze_185/encoder_layers_1_self_attn_unsqueeze_1_output_0.encoder_layers_1_self_attn_constant_5_output_0.encoder_layers_1_self_attn_constant_6_output_0.encoder_layers_1_self_attn_constant_7_output_0,encoder_layers_1_self_attn_concat_1_output_0unsqueeze_194/encoder_layers_1_self_attn_unsqueeze_2_output_0.encoder_layers_1_self_attn_constant_8_output_0.encoder_layers_1_self_attn_constant_9_output_0/encoder_layers_1_self_attn_constant_10_output_0,encoder_layers_1_self_attn_concat_2_output_0+encoder_layers_1_self_attn_reshape_output_0-encoder_layers_1_self_attn_transpose_output_01encoder_layers_1_self_attn_k_proj_matmul_output_0.encoder_layers_1_self_attn_k_proj_add_output_01encoder_layers_1_self_attn_v_proj_matmul_output_0.encoder_layers_1_self_attn_v_proj_add_output_0-encoder_layers_1_self_attn_reshape_1_output_0-encoder_layers_1_self_attn_reshape_2_output_0/encoder_layers_1_self_attn_transpose_1_output_0+encoder_layers_1_self_attn_shape_2_output_0/encoder_layers_1_self_attn_constant_11_output_0/encoder_layers_1_self_attn_constant_12_output_0)encoder_layers_1_self_attn_slice_output_0(encoder_layers_1_self_attn_cast_output_0(encoder_layers_1_self_attn_sqrt_output_0/encoder_layers_1_self_attn_constant_13_output_0'encoder_layers_1_self_attn_div_output_0*encoder_layers_1_self_attn_cast_1_output_0/encoder_layers_1_self_attn_transpose_2_output_0*encoder_layers_1_self_attn_sqrt_1_output_0'encoder_layers_1_self_attn_mul_output_0*encoder_layers_1_self_attn_sqrt_2_output_0)encoder_layers_1_self_attn_mul_1_output_0*encoder_layers_1_self_attn_matmul_output_0+encoder_layers_1_self_attn_softmax_output_0,encoder_layers_1_self_attn_matmul_1_output_0/encoder_layers_1_self_attn_transpose_3_output_0unsqueeze_232/encoder_layers_1_self_attn_unsqueeze_3_output_0unsqueeze_234/encoder_layers_1_self_attn_unsqueeze_4_output_0/encoder_layers_1_self_attn_constant_14_output_0,encoder_layers_1_self_attn_concat_3_output_0-encoder_layers_1_self_attn_reshape_3_output_03encoder_layers_1_self_attn_out_proj_matmul_output_00encoder_layers_1_self_attn_out_proj_add_output_0encoder_layers_1_add_output_0Aencoder_layers_1_self_attn_layer_norm_layernormalization_output_0$encoder_layers_1_fc1_matmul_output_0!encoder_layers_1_fc1_add_output_0,encoder_layers_1_activation_fn_gelu_output_0$encoder_layers_1_fc2_matmul_output_0!encoder_layers_1_fc2_add_output_0encoder_layers_1_add_1_output_0encoder_outputencoder_embed_positions_weightencoder_embed_tokens_weightencoder_layers_0_fc1_bias&encoder_layers_0_self_attn_k_proj_bias,encoder_layers_0_self_attn_layer_norm_weight
matmul_257
matmul_267
matmul_268
matmul_270
matmul_271
matmul_272
matmul_273
matmul_283
matmul_284
matmul_286
matmul_287
matmul_288 \/home/ubuntu/.local/lib/python3.10/site-packages/onnxscript/rewriter/models/_bart_encoder.py
main_graph$   s  




			zmake_model.<locals>.main_graph)r   r   r   to_model_proto)r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r   r  
make_model   s   @    ]r  c                  C   s  t jddt j} t jddt j}t jdt j}t jdt j}t jdt jd}t jddt j}t jddt j}t jddt j}t jddt j}t jddt j}	t jddt j}
t jddt j}t jddt j}t jddt j}t jddt j}t jddt j}t jddt j}tdi d|d| d|d	|d
|d|d|d|d|d|	d|
d|d|d|d|d|d|}|S )N   r	   f   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  )r&   randomrandastypefloat32zerosr  )r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  modelr  r  r  make_model_with_random_weights  sj   	
r  c                   @   s   e Zd Zdd Zdd ZdS )_BartEncoderTestc                 C   s(   t | dst }tj|}|| _| jS )N_onnx_model)hasattrr  r$   serdedeserialize_modelr  )selfmodel_protor  r  r  r  get_onnx_model  s
   
z_BartEncoderTest.get_onnx_modelc                 C   s2   t | dsdtjdddtji}|| _| jS )N_ort_inputsr   r   r  )r   r	   )r  r&   r  randintr  r(   r"  )r  inputsr  r  r  get_ort_inputs  s
   
z_BartEncoderTest.get_ort_inputsN)__name__
__module____qualname__r!  r%  r  r  r  r  r    s    r  c                   C   s   t  S )N)r  r  r  r  r  bart_encoder_test  s   r)  )__doc__numpyr&   onnxscript.irr$   
onnxscriptr   onnxscript.onnx_opsetr   onnxscript.onnx_typesr   r   r  r  r  r)  r  r  r  r  <module>   s       t*