+
    9i                     v    ^ RI Ht ^ RIHt ^ RIHt ^ RIt^ RIt^ RIH	t	 ^ RI
Ht ]! ]4      t ! R R4      tR# )	    )Sequence)	getLogger)AnyN)helper)	OnnxModelc                      a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
RV 3R lR lltRV 3R lR lltV 3R lR lt]V 3R lR l4       tRtV tR# )DynamoOnnxHelperzC
Helper class for processing ONNX models exported by Torch Dynamo.
c                4   < V ^8  d   QhRS[ P                  /# )   model)onnx
ModelProto)format__classdict__s   "i/var/www/html/photoedit/myenv/lib/python3.14/site-packages/onnxruntime/transformers/dynamo_onnx_helper.py__annotate__DynamoOnnxHelper.__annotate__   s     & &doo &    c                &    \        V4      V n        R # )N)r   r   )selfr   s   &&r   __init__DynamoOnnxHelper.__init__   s    u%
r   c                $   < V ^8  d   QhRS[ RR/# )r   edge_mappingreturnN)dict)r   r   s   "r   r   r      s     D D D$ Dr   c                h   V P                   P                   P                  P                   F  p\        \	        VP
                  4      4       FC  pVP
                  V,          V9   g   K  WP
                  V,          ,          VP
                  V&   KE  	  \        \	        VP                  4      4       FC  pVP                  V,          V9   g   K  WP                  V,          ,          VP                  V&   KE  	  K  	  V P                   P                   P                  P
                   F-  pVP                  V9   g   K  WP                  ,          Vn        K/  	  V P                   P                   P                  P                   F-  pVP                  V9   g   K  WP                  ,          Vn        K/  	  R# )z@
Updates the edges in the model according to the given mapping.
N)r   graphnoderangeleninputoutputname)r   r   r   igraph_inputgraph_outputs   &&    r   update_edgesDynamoOnnxHelper.update_edges   s'    JJ$$**//D3tzz?+::a=L0$0A$?DJJqM , 3t{{+,;;q>\1%1++a.%ADKKN -	 0  ::++1177K</#/0@0@#A  8 !JJ,,2299L  L0$01B1B$C! :r   c                $   < V ^8  d   QhRS[ RR/# )r   	func_namer   N)str)r   r   s   "r   r   r   ,   s     %/ %/ %/ %/r   c                   \         P                  RV R24       . p. p. p. pV P                  P                  P                  P                   Fe  pVP
                  V8X  g   K  VP                  V4       VP                  \        VP                  4      \        VP                  4      ,           4       Kg  	  RpV P                  P                  P                   Fz  pVP                  V8X  g   K  VP                  \        VP                  4      4       VP                  \        VP                  4      \        VP                  4      ,           4       TpK|  	  \        V4      \        V4      8X  g   Q hV F<  pV P                  P                  P                  P                  P                  V4       K>  	  V F<  pV P                  P                  P                  P                  P                  V4       K>  	  Ve0   V P                  P                  P                  P                  V4       / p	\        \        V4      4       F  p
WJ,          pWZ,          pW8w  g   K  WV&   K!  	  V P!                  V	4      # )z8
Unrolls the function with the given name in the model.
zUnrolling function z...N)loggerdebugr   r   r   op_typeappendextendlistr"   r#   	functionsr$   r!   remover    r(   )r   r+   nodes_to_removenodes_to_addedges_to_removeedges_to_addr   func_to_removefr   r%   kvs   &&           r   unroll_function DynamoOnnxHelper.unroll_function,   s    	*9+S9:JJ$$**//D||y(&&t,&&tDJJ'7$t{{:K'KL 0
 !!++Avv"##DL1##DMDN$BC!"	 , ?#s<'8888#DJJ""''..t4 $ DJJ""''..t4 !%JJ&&--n=s?+,A"AAv"#Q	 -   ..r   c                0   < V ^8  d   QhRS[ RS[RS[RR/# )r   r+   input_id	output_idr   N)r,   int)r   r   s   "r   r   r   S   s*     ( ( ( ( (PT (r   c                   / p. pV P                   P                   P                  P                   F\  pVP                  P	                  V4      R8w  g   K%  VP
                  V,          WFP                  V,          &   VP                  V4       K^  	  V F<  pV P                   P                   P                  P                  P                  V4       K>  	  V P                  V4       R# )z$
Removes the function in the model.
N)
r   r   r   r0   findr#   r"   r1   r5   r(   )r   r+   rA   rB   r   r6   r   s   &&&&   r   remove_function DynamoOnnxHelper.remove_functionS   s     JJ$$**//D||  +r159[[5KZZ12&&t, 0 $DJJ""''..t4 $ 	,'r   c                   < V ^8  d   QhRR/# r   r   N )r   r   s   "r   r   r   b   s     . .d .r   c                V    \         P                  R4       V P                  R^ ^ 4       R# )z)
Removes the dropout layer in the model.
zRemoving dropout layer...DropoutNr.   r/   rG   r   s   &r   remove_dropout_layer%DynamoOnnxHelper.remove_dropout_layerb   s#     	01Y1-r   c                   < V ^8  d   QhRR/# rJ   rK   )r   r   s   "r   r   r   i   s     5 5d 5r   c                V    \         P                  R4       V P                  R^^ 4       R# )z)
Removes the LM head layer in the model.
zRemoving LM head layer...Linear_lm_headNrN   rO   s   &r   remove_lm_head_layer%DynamoOnnxHelper.remove_lm_head_layeri   s$     	01-q!4r   c          
      H   < V ^8  d   QhRS[ RS[RS[S[,          RS[RS[/# )r   r$   	data_typedimsvalsraw)r,   rC   r   r   bool)r   r   s   "r   r   r   q   s6      C C x} TW ^b r   c                   V'       d   \         P                  ! V4      p\        V\        P                  4      '       g'   \        P
                  ! WFR 7      P                  4       pMVP                  V4      P                  4       p\         P                  ! VVVVRR7      pM\         P                  ! VVVVRR7      pV P                  P                  V4       V# ))dtypeT)r$   rX   rY   rZ   r[   F)r   tensor_dtype_to_np_dtype
isinstancenpndarrayarraytobytesastypemake_tensorr   add_initializer)	r   r$   rX   rY   rZ   r[   np_typebytestensors	   &&&&&&   r   rg    DynamoOnnxHelper.add_initializerq   s    55i@GdBJJ//5==?G,446''#F ''#F 	

""6*r   c                $   < V ^8  d   QhRS[ RR/# )r   min_sizer   N)rC   )r   r   s   "r   r   r      s     1 1# 1d 1r   c           	     H   \         P                  RV R24       V P                  P                  R4      p. pV F  pV P                  P	                  VP
                  ^ ,          4      pVe   VP                  V8  d   KF  VP                   Fc  pVP                  R8X  g   K  V P                  VP
                  ^ ,          VP                  P                  \        VP                  4      VR7        M	  VP                  V4       K  	  V P                  P                  V4       R# )zD
Converts Constant ops of size [min_size] or higher to initializers
z'Converting constants greater than size z to initializersConstantNvalue)r$   rX   rY   rZ   )r.   r/   r   get_nodes_by_op_typeget_constant_valuer#   size	attributer$   rg   trX   r3   shaper1   remove_nodes)r   rm   constant_nodesr6   r   np_dataatts   &&     r   !convert_constants_to_initializers2DynamoOnnxHelper.convert_constants_to_initializers   s     	>xjHXYZ88D"Djj33DKKNCG ',,"9 ~~88w&((![[^"%%%//!'--0$	 )   & ""4(' #, 	

0r   c                   < V ^8  d   QhRR/# rJ   rK   )r   r   s   "r   r   r      s     . . .r   c                    V P                   P                  4        F  pVP                  R4       K  	  V P                   P                  4        F  pVP                  R4       K  	  R# )z$
Clear metadata fields in all nodes
metadata_propsN)r   graphs
ClearFieldnodes)r   r   r   s   &  r   clear_metadataDynamoOnnxHelper.clear_metadata   sN     ZZ&&(E-. )JJ$$&DOO,- 'r   c                   < V ^8  d   QhRR/# rJ   rK   )r   r   s   "r   r   r      s     G Gd Gr   c                |   ^ RI Hp V P                  P                  P	                  4        EF  w  r#VP                  4       p\        V4      ^8X  g   K(  V^ ,          P                  R8X  g   KB  V^ ,          pVP                  P                  R4      pVf9   VP                  VP                  P                  4       P                  4       4      pMFVP                  VP                  P                  4       P                  VP                  4       4      4      pVP                  VP                   VP"                  VP%                  VP&                  4      VR7      pVP(                  P+                  VP,                  ^ ,          V4       WP                  P                  V&   VP                  P/                  VRR7       EK  	  R# )zM
Constant fold Transpose initializers without changing the initializer names
)ir	TransposepermN)r$   rv   typeconst_valueT)safe)
onnxscriptr   r   initializersitems	consumersr!   r0   
attributesgetrj   r   numpy	transposeas_intsValuer$   rv   
TensorTyper^   conveniencereplace_all_uses_withoutputsr5   )	r   r   r$   initializer
user_nodestranspose_noder   transposed_tensornew_initializers	   &        r   fold_transpose_initializers,DynamoOnnxHelper.fold_transpose_initializers   sY   
 	"!&!9!9!?!?!AD$..0J:!#
1(=(=(L!+A%0044V<<(*		+2I2I2O2O2Q2[2[2](^%(*		+2I2I2O2O2Q2[2[\`\h\h\j2k(l%"$(($))+11'8'>'>? 1	 #+ # 44^5K5KA5NP_`1@((.$$++N+F# "Br   )r   N)T)   )__name__
__module____qualname____firstlineno____doc__r   r(   r>   rG   rP   rU   rg   r{   r   staticmethodr   __static_attributes____classdictcell__)r   s   @r   r	   r	      s~     & &D D&%/ %/N( (. .5 5 41 1B. . G Gr   r	   )collections.abcr   loggingr   typingr   r   ra   r   r   
onnx_modelr   r   r.   r	   rK   r   r   <module>r      s4   
 %       	8	|G |Gr   