o
    Xí                     @   s  d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 i de	d de	d d	e	d
 de	d de	d de	d de	d de	d de	d
 de	d de	d de	d de	d de	d de	d de	d de
d i de
de
d d e
d!e
d d"e	d# d$e
d%e
d&e
d' d(e
d d)e
d* d+e	d,e
d d-e
d d.e
d/ d0e	d1 d2e
d3e
i d4e
d5 d6e
d/ d7e
d8 d9ed1 d:e	d1 d;e	d1 d<e
d d=e
d/ d>e	d? d@e
dAe
dBe
d dCe
dD dEe
dD dFe	dG dHe
dIe
d i dJe
d dKe
d dLe
d dMe
d dNe	dG dOe
d dPe
d/ dQe
dR dSe	dR dTe	dG dUe	dVedG dWe
d dXe
d dYe
d dZe
d d[e
d i d\e	dG d]e	d^e	dG d_e
dD d`e
dae
d dbe
dc dde	de dfe	de dge	de dhe
dD die
dje
d dke
dc dle	dm dne	dm doe	dm i dpe	dG dqe
dD dre
dse
d dte
dc due	dG dve
dw dxe	dw dye	dz d{e	d| d}e	d~ de	d~ de	d~ de	de	d# de
d de	d i de	de	d de	d de	d de	d# de	d# de	d de	d de
d de
d de
d de
d de	d# de
d de
d de
d de
d i de	d de
d de
d de
d de
d de	d de
d de
dD de	d de	d de
dD de	d de	d de
dD de	d de	d de	d i de	d de	d de
d de
d de
d de
d de	d de
d de
d de
d de
d de	d de	d de	d de	d de	d de	d i de
d de
d de
d de
d de	d de
d de
d de
d de
d de	d de	d de	d de	d de	d de	d de
d de
d i de
d de
d de
d de
d de	d de
d de
d de
d de
dD de	d de	d de
d de
d de
d de
d de	d de
d i de
d de
dD de	d de	d de	d de	de	d de
d de
d de
d de
d de
d de	dG de	d de	d de	d de	d i de
d de	d# de	d d e	d# de	d# de	de	d# de
d de	d de	d de	d de	d d	e	d# d
e	d# de	d de	d de	d i de	d de	d de	d de	d de	d de	d# de	d# de	de	d# de
d de	d de	d de	d de	d d e	d# d!e	d# d"e	d i d#e	d d$e
d d%e
d d&e
d d'e
d d(e	d# d)e
d d*e
d d+e
d d,e
d d-e	d d.e
d d/e
d d0e
d d1e
d d2e	d d3e
dD i d4e	d d5e	d d6e
dD d7e	d d8e	d d9e
dD d:e	d d;e	d d<e	d d=e	d d>e	d d?e
d d@e
d dAe
d dBe
d dCe	d dDe
d i dEe
d dFe
d dGe
d dHe	d dIe	d dJe	d dKe	d dLe	d dMe	d dNe
d dOe
d dPe
d dQe
d dRe	d dSe
d dTe
d dUe
d i dVe
d dWe	d dXe	d dYe	d dZe	d d[e	d d\e	d d]e
d d^e
d d_e
d d`e
d dae	d dbe
d dce
d dde
dD dee	d dfe	d i dge
d dhe
d die
d dje
d dke	d dle
d dme
d dne
dD doe	d dpe	d dqe	d dre	d dse
d dte
d due
d dve
d dwe
d i dxe	dG dye	d dze	d d{e	d d|e	d d}e
d d~e	d# de	d de	d# de	d# de	de	d# de
d de	d de	d de	d de	d i de	d# de	d# de	d de	d de	d de	d de	d de	d de	d de	d de	d# de	d# de	de	d# de
d de	d de	d e	d e	d e	d# e	d# e	d dZdd Zdd ZG dd dZdd ZdS (      N)script)opset18)BOOLFLOATINT64model_embed_tokens_weight)     &model_layers_0_self_attn_o_proj_weight)r	   r	   (model_layers_0_self_attn_qkv_proj_weight)   r	   &model_layers_0_mlp_gate_up_proj_weight)   r	   #model_layers_0_mlp_down_proj_weight)r	    F  %model_layers_0_input_layernorm_weightr	   .model_layers_0_post_attention_layernorm_weight&model_layers_1_self_attn_o_proj_weight(model_layers_1_self_attn_qkv_proj_weight&model_layers_1_mlp_gate_up_proj_weight#model_layers_1_mlp_down_proj_weight%model_layers_1_input_layernorm_weight.model_layers_1_post_attention_layernorm_weightmodel_norm_weightlm_head_weightexpand_2)   @   r   val_1r   sym_size_int_61val_5sym_size_int_67val_6	embedding)s34s16r	   add_4val_11aranger%   val_12	unsqueeze)r   r%   val_14val_17val_18val_19   full)r%   	s16 + s17val_22val_23arange_1r1   val_25view)r%   r   gtconvert_element_type_defaultmul_14val_26val_805unsqueeze_4)r   r   r%   r1   val_27val_35val_53val_54   val_56expand_1)r$   r   r%   r1   val_65val_76val_78val_79val_82val_83slice_8val_94val_806unsqueeze_6)r$   r   r   r1   convert_element_type_default_1add_86scalar_tensor_defaulteq_65val_123val_125val_126val_129val_130slice_14val_131masked_fillval_183val_184val_185val_190)Nr   val_191)r%   r   r$   r1   val_192val_193val_195val_196val_197val_202val_203)r   r$   r%   r1   val_204val_205slice_scatter_1val_207val_208val_209val_214slice_scatter_2unsqueeze_9)r   r   r%   _to_copymatmul)r   r   r%   	transpose)r   r%   r   cat)r   r%      cossinval_248pow_1val_250mean)r$   r%   r   val_251add_189val_252rsqrtmul_167mul_171val_253)r	   r   linear)r$   r%   r   val_256val_260val_263val_264slice_26val_267val_271val_274val_275slice_27)r$   r%   i   val_278val_281val_284val_285slice_28val_290val_291view_1)r$   r%   (   rs   transpose_1)r$   r   r%   rs   val_297view_2)r$   r%   
   rs   transpose_2)r$   r   r%   rs   val_303view_3transpose_3unsqueeze_10)r   r   r%   rs   unsqueeze_11mul_223val_328val_332val_335val_336slice_31)r$   r   r%   r   val_339val_342val_345val_346slice_32negcat_1mul_240add_304mul_252val_349val_352val_355val_356slice_33)r$   r   r%   r   val_359val_362val_365val_366slice_34neg_1cat_3mul_269add_345unsqueeze_12)r$   r   r   r1   rs   val_410val_411val_412val_413val_414   val_416expand_3)r$   r   rA   r1   rs   val_419val_420val_421val_422_unsafe_view)r$   r   r1   rs   unsqueeze_13val_466val_467val_468val_470expand_4val_473val_474val_475_unsafe_view_1transpose_4)r$   r   rs   r1   matmul_1)r$   r   r%   r1   val_477mul_433val_496val_498val_499val_502val_503slice_50add_491val_504matmul_2transpose_5val_509   view_4val_511linear_1add_534val_512pow_2val_514mean_1add_547val_515rsqrt_1mul_506mul_510val_516)r	   r   linear_2)r$   r%   r   split_split_0)r$   r%   r   split_split_1val_518silumul_526val_519)r   r	   linear_3add_592val_520pow_3val_522mean_2add_605val_523rsqrt_2mul_548mul_552val_524linear_4val_527val_530val_533val_534slice_51val_537val_540val_543val_544slice_52val_547val_550val_553val_554slice_53val_559view_5transpose_6val_565view_6transpose_7val_571view_7transpose_8unsqueeze_14unsqueeze_15mul_604val_595val_598val_601val_602slice_56val_605val_608val_611val_612slice_57neg_2cat_7mul_621add_720mul_633val_615val_618val_621val_622slice_58val_625val_628val_631val_632slice_59neg_3cat_9mul_650add_761unsqueeze_16val_675val_676val_677val_679expand_5val_682val_683val_684_unsafe_view_2unsqueeze_17val_728val_729val_730val_732expand_6val_735val_736val_737_unsafe_view_3transpose_9matmul_3mul_814val_757val_759val_760val_763val_764slice_75add_907val_765matmul_4transpose_10val_770view_8val_772linear_5add_950val_773pow_4val_775mean_3add_963val_776rsqrt_3mul_887mul_891val_777linear_6split_1_split_0split_1_split_1val_778silu_1mul_907val_779linear_7add_1008val_780pow_5val_782mean_4add_1021)r	   r   )val_783rsqrt_4mul_929mul_933val_804c                    s   t  dtd dtd dtd dtd dtd d	td d
td td td td td ff 	
fdd}|jtd}|S )N	input_ids)r$   r%   attention_mask)r$   r1   past_key_values_key_cache_0)r$   r   s17rs   past_key_values_key_cache_1past_key_values_value_cache_0past_key_values_value_cache_1return)r$   r%   r   )r$   r   r1   rs   c                   s  t j| ddd}t |}t j|ddd}t |}	t j|ddd}
t j| dd}t |	|}t |	|d}t |dg}t j|dgdd}t j||dd}t 	d	|}t d|d}t j|ddgdd}t 
||}t j|dd
}t ||}t |ddg}t j|
dgdgdgdd}t |}t 	||}t jdgd}t jdgd}t j||dd}t jdgd}t |||dg|}t |ddg} t j| dd
}!t ||!}"t |"d}#t jdgd}$t jdgd}%t j||%dd}&t jdgd}'t ||$|&dg|'}(t |#d	|(})t j|dd}*t j|*ddd}+t d|+d},t |,dg}-t j|)g dd}.t j|g dd}/t j|/|-|.dd}0t j|dd}1t j|1ddd}2t d|2d}3t |3dg}4t j|0g dd}5t j|g dd}6t j|6|4|5dd}7t j|7g dd}8t j|dd}9t j|9ddd}:t d|:d};t |;dg}<t j||<|8dd}=t |dg}>t j|>dd
}?t  |?}@t j|@g dd}At j|A|Add}Bt |B}Ct |B}Dt |d}Et j|Edgddd}Ft |Fd}Gt |G}Ht |H}It ||I}Jt |J}Kt jddgd}Lt |K|L}Mt jdgd}Nt |Mdgdgdg|N}Ot jdgd}Pt |Mdgdgdg|P}Qt jdgd}Rt |Mdgdgdg|R}St j|
|dgdgdd}Tt j|O|Tdd}Ut j|Ug dd}Vt j|
|dgdgdd}Wt j|Q|Wdd}Xt j|Xg dd}Yt j|
|dgdgdd}Zt j|S|Zdd}[t j|[g dd}\t |Cdg}]t |Ddg}^t |V|]}_t jdgd}`t |Vdgdgdg|`}at jdgd}bt |Vdgdgdg|b}ct |c}dt j|d|add}et |e|^}ft |_|f}gt |Y|]}ht jdgd}it |Ydgdgdg|i}jt jdgd}kt |Ydgdgdg|k}lt |l}mt j|m|jdd}nt |n|^}ot |h|o}pt j||pdd}qt j||\dd}rt |qdg}st j|dgdd}tt j|
dgd g|tdgdd}ut |u}vt 	|s|v}wt j|dgdd}xt j|
d!g|xdgdd}yt j|w|ydd}zt |rdg}{t j|dgdd}|t j|
dgd g||dgdd}}t |}}~t 	|{|~}t j|dgdd}t j|
d!g|dgdd}t j||dd}t j|zg d"d}t |g|}t |d#}t jdgd}t jdgd}t j||dd}t jdgd}t |=||dg|}t ||}t j|dd}t ||}t j|g dd}t j|
|dgdd}t j||dd}t jddgd}t ||}t ||}t |d}t j|dgddd}t |d}t |}t |}t ||}t |}t jddgd}t ||}t j|ddd$\}}t |}t ||}t ||}t jddgd}t ||}t ||}t |d}t j|dgddd}t |d}t |}t |}t ||}t 	|}t jddgd}t ||}t jdgd}t |dgdgdg|}t jdgd}t |dgdgdg|}t jdgd}t |dgdgdg|}t j|
|dgdgdd}t j||dd}t j|g dd}t j|
|dgdgdd}t j||dd}t j|g dd}t j|
|dgdgdd}t j||dd}t j|g dd}t |Cdg}t |Ddg}t ||}t jdgd}t |dgdgdg|}t jdgd}t |dgdgdg|¡}t |á}t j||dd}t ||}t ||ơ}t ||}t jdgd}t |dgdgdg|ɡ}t jdgd}t |dgdgdg|ˡ}t |̡}t j||dd}t ||}t ||ϡ}t j||dd}t j||dd}t |dg}t j|dgdd}t j|
dgd g|dgdd}t |ա}t 	||֡}t j|dgdd}t j|
d!g|dgdd}t j||dd}t |dg}t j|dgdd}t j|
dgd g|dgdd}t |ݡ}t 	||ޡ}t j|dgdd}t j|
d!g|dgdd}t j||dd}t j|g d"d}t ||}t |d#}t jdgd}t jdgd}t j||dd}t jdgd}t |=||dg|}t ||}t j|dd}t ||}t j|g dd}t j|
|dgdd}t j||dd}t jddgd}t ||}t ||}t |d}t j|dgddd}t |d}t |}t |}t ||}t |}t jddgd}t ||}t j|ddd$\}}t |}t ||} t || }t j
ddgd}t ||}t ||}t |d}t j|dgddd}t |d}t |}t |}	t ||	}
t |
}t jddgd}t ||}||q||r|fS )%Nr/   r   )endstartr   r   )axis)	allowzerogM)to)
value_intsg        )r  )r/   r   r   r   )permnone)	reduction)r   r/   r   r   )r   r   r/   r   )r   r/   r   g       @)noop_with_empty_axeskeepdimsgh㈵>r	   i   l    rs   )r   r/   r   r   r   r   rA   r   )r   r   r   r/   ghj_?)r  num_outputs)r   ShapeSqueezeGatherAddRange	UnsqueezeReshapeConcatExpandGreaterCastMulAbsConstantSliceEqualWhere	Transpose	ScatterNDMatMulCosSinPow
ReduceMeanSqrt
ReciprocalNegSoftmaxSplitSigmoid(  r  r  r  r  r  r  r   r   r    r!   r"   r#   r&   r(   r*   r-   r.   r0   r4   r6   r7   r8   r9   r<   r@   rB   rC   rE   rF   rG   rI   rJ   rM   rN   rO   rQ   rR   rS   rT   rV   rW   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rt   ru   rw   ry   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   cat_5cat_6r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r%  r&  r*  r+  r,  r-  r.  r/  r0  r4  r5  r9  r:  r;  r<  r=  r>  cat_11cat_12r?  rA  rB  rC  rD  rF  rG  rH  rI  rK  rL  rM  rN  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  rf  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  ry  r{  r|  r}  r~  r  r  r  linear_8r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r    V/home/ubuntu/.local/lib/python3.10/site-packages/onnxscript/rewriter/models/_phi4lm.py
main_graph  s  






















zmake_model.<locals>.main_graph)value_infos)r   r   r   to_model_protor  )r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  modelr  r  r  
make_model|  s2   .  r  c                  C   s  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t j}t j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t j}t jdt j}t jdt j}t jddt j}t jdddt j}t| |||||||||	|
|||||}|S )Nr   r	   r   r   r   r   r   )numpyrandomrandastypefloat32r  )r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  make_model_with_random_weights  sf   r  c                   @   s   e Zd Zdd ZdS )_Phi4LMTestc                 C   s(   t | dst }tj|}|| _| jS )N_onnx_model)hasattrr  irserdedeserialize_modelr  )selfmodel_protor  r  r  r  get_onnx_model  s
   
z_Phi4LMTest.get_onnx_modelN)__name__
__module____qualname__r  r  r  r  r  r    s    r  c                   C   s   t  S )N)r  r  r  r  r  phi4lm_test  s   r  )r  onnx_irr  
onnxscriptr   onnxscript.onnx_opsetr   onnxscript.onnx_typesr   r   r   r  r  r  r  r  r  r  r  r  <module>   s
  	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  
Q  
R  S  
T  
U  
V  
W  
X  
Y  
Z  
[  \  ]  ^  _  `  a  b  c  
d  
e  f  
g  
h  
i  
j  
k  
l  
m  
n  
o  
p  
q  
r  
s  
t  
u  
v  
w  
x  
y  
z  
{  
|  
}  
~  
   
    
    
    
    
    
    
    
    
	    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     
!    
"    
#    
$    
%    
&    
'    
(    
)    
*    
+    
,    
-    
.    
/    
0    
1    
2    
3    
4    
5    
6    
7    
8    
9    
:    
;    
<    
=    
>    
?    
@    
A    
B    
C    
D    
E    
F    
G    
H    
I    
J    
K    
L    
M    
N    
O    P    
Q    
R    
S    
T    
U    
V    
W    
X    Y    Z    [    \    ]    ^    _    `    
a    
b    c    
d    
e    
f    
g    h  
  p  16	