+
    9iL0                     \    ^ RI Ht ^ RIHt  ! R R4      t ! R R]4      t ! R R4      tR	# )
    ArgumentParser)Enumc                   &    ] tR t^	t^ t^t^t^tRtR# )AttentionMaskFormat N)	__name__
__module____qualname____firstlineno__MaskIndexEndMaskIndexEndAndStartAttentionMaskNoMask__static_attributes__r       e/var/www/html/photoedit/myenv/lib/python3.14/site-packages/onnxruntime/transformers/fusion_options.pyr   r   	   s    L  M Fr   r   c                   B   a  ] tR t^t o RtRtRtRtR tR t	R t
RtV tR	# )
AttentionOpType	AttentionMultiHeadAttentionGroupQueryAttentionPagedAttentionc                    V P                   # Nvalueselfs   &r   __str__AttentionOpType.__str__   s    zzr   c                ,    \        V P                  4      # r   )hashr   r   s   &r   __hash__AttentionOpType.__hash__!   s    DJJr   c                4    VP                   V P                   8H  # r   r   )r   others   &&r   __eq__AttentionOpType.__eq__$   s    {{djj((r   r   N)r	   r
   r   r   r   r   r   r   r    r$   r(   r   __classdictcell____classdict__s   @r   r   r      s/     I-/%N ) )r   r   c                   x   a  ] tR t^(t o RtR tRR ltR tV 3R lR lt]	R 4       t
]	V 3R lR	 l4       tR
tV tR# )FusionOptionsz'Options of fusion in graph optimizationc                   R V n         R V n        R V n        R V n        RV n        RV n        R V n        R V n        R V n        R V n	        RV n
        R V n        R V n        RV n        R V n        VR8X  d   RV n        \        P                   V n        VR8X  d   \        P$                  V n        MVR8X  d   \        P&                  V n        RV n        VR9   d4   R V n        R V n        R V n        R V n        R V n        R V n        R V n        R# R# )TFclipbertvitNunetvaer0   )enable_geluenable_layer_normenable_attentionenable_rotary_embeddingsuse_multi_head_attention!disable_multi_head_attention_biasenable_skip_layer_normenable_embed_layer_normenable_bias_skip_layer_normenable_bias_geluenable_gelu_approximationenable_qordered_matmulenable_shape_inferenceenable_gemm_fast_gelugroup_norm_channels_lastr   r   attention_mask_formatr   r   attention_op_typeenable_nhwc_convenable_group_normenable_skip_group_normenable_bias_splitgeluenable_packed_qkvenable_packed_kvenable_bias_add)r   
model_types   &&r   __init__FusionOptions.__init__+   s   !% $(,% ).%16.&*#'+$+/( $).&&*#&*#%*"(,%+0D( &9%F%F")<)I)ID&5 )<)C)CD&!% 00$(D!%)D"*.D')-D&%)D"$(D!#'D  1r   c                n    V'       d   \         P                  V n        R # \         P                  V n        R # r   )r   r   rE   r   )r   use_raw_masks   &&r   use_raw_attention_mask$FusionOptions.use_raw_attention_maskZ   s!    )<)J)JD&)<)I)ID&r   c                0    \         P                  V n        R # r   )r   r   rE   r   s   &r   disable_attention_mask$FusionOptions.disable_attention_mask`   s    %8%?%?"r   c                    < V ^8  d   QhRS[ /# )   attn_op_type)r   )formatr,   s   "r   __annotate__FusionOptions.__annotate__c   s     . ./ .r   c                    Wn         R # r   )rF   )r   rZ   s   &&r   set_attention_op_type#FusionOptions.set_attention_op_typec   s    !-r   c                
   \        V P                  4      pV P                  '       d   R Vn        V P                  '       d   R Vn        V P                  '       d   R Vn        V P                  '       d   R Vn	        V P                  '       d   RVn
        V P                  '       d   R Vn        V P                  '       d   R Vn        V P                  '       d   R Vn        V P"                  '       d   R Vn        V P&                  '       d   RVn        V P(                  '       d   R Vn        V P,                  '       d   RVn        V P.                  '       d   VP1                  R 4       V P0                  '       d   VP1                  R4       V P2                  '       d   VP5                  4        V P                  R9   d   V P6                  '       d   R Vn        V P:                  '       d   R Vn        V P>                  '       d   R Vn         V PB                  '       d   R Vn"        V PF                  '       d   R Vn$        V PJ                  '       d   R Vn&        V PN                  '       d   R Vn(        V PR                  '       d   R Vn*        V# )FTr3   )+r.   rN   disable_gelur6   disable_layer_normr7   disable_rotary_embeddingsr9   disable_attentionr8   r:   disable_skip_layer_normr<   disable_embed_layer_normr=   disable_bias_skip_layer_normr>   disable_bias_gelur?   r@   disable_shape_inferencerB   rC   use_mask_indexrS   no_attention_maskrV   use_group_norm_channels_firstrD   disable_nhwc_convrG   disable_group_normrH   disable_skip_group_normrI   disable_bias_splitgelurJ   disable_packed_qkvrK   disable_packed_kvrL   disable_bias_addrM   )argsoptionss   & r   parseFusionOptions.parsef   s   0"'G"""(-G%)))/4G,!!!',G$(((/3G,'''-2G*(((.3G+,,,27G/!!!',G$)))04G-'''-2G*%%%,0G)**51&&&**40!!!**,??55111380%%%+0(&&&,1)+++16.***05-&&&,1)%%%+0($$$*/'r   c                    < V ^8  d   QhRS[ /# )rY   parserr   )r[   r,   s   "r   r\   r]      s     w
 w
n w
r   c                   V P                  R RRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  R	RRR
R7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR7       V P                  RRRRR7       V P                  RR 7       V P                  R!RRR"R7       V P                  RR#7       V P                  R$RRR%R7       V P                  RR&7       V P                  R'RRR(R7       V P                  RR)7       V P                  R*RRR+R7       V P                  RR,7       V P                  R-RRR.R7       V P                  RR/7       V P                  R0RRR1R7       V P                  RR27       V P                  R3RRR4R7       V P                  RR57       V P                  R6RRR7R7       V P                  RR87       V P                  R9RRR:R7       V P                  RR;7       V P                  R<RRR=R7       V P                  RR>7       V P                  R?RRR@R7       V P                  RRA7       V P                  RBRRRCR7       V P                  RRD7       V P                  RERRRFR7       RG# )Hz--disable_attentionF
store_truezdisable Attention fusion)requiredactionhelp)re   z--disable_skip_layer_normz%disable SkipLayerNormalization fusion)rf   z--disable_embed_layer_normz&disable EmbedLayerNormalization fusion)rg   z--disable_bias_skip_layer_normz2disable Add Bias and SkipLayerNormalization fusion)rh   z--disable_bias_geluz)disable Add Bias and Gelu/FastGelu fusion)ri   z--disable_layer_normz!disable LayerNormalization fusion)rc   z--disable_geluzdisable Gelu fusion)rb   z--enable_gelu_approximationz+enable Gelu/BiasGelu to FastGelu conversion)r@   z--disable_shape_inferencez disable symbolic shape inference)rj   z--enable_gemm_fast_geluzenable GemmfastGelu fusion)rC   z--use_mask_indexzWuse mask index to activate fused attention to speed up. It requires right-side padding!)rk   z--use_raw_attention_maskzuse raw attention mask. Use this option if your input is not right-side padding. This might deactivate fused attention and get worse performance.)rS   z--no_attention_maskz1no attention mask. Only works for model_type=bert)rl   z--use_multi_head_attentionzUse MultiHeadAttention instead of Attention operator for testing purpose. Note that MultiHeadAttention might be slower than Attention when qkv are not packed. )r:   z--disable_group_normz9not fuse GroupNorm. Only works for model_type=unet or vae)ro   z--disable_skip_group_normzPnot fuse Add + GroupNorm to SkipGroupNorm. Only works for model_type=unet or vae)rp   z--disable_packed_kvz[not use packed kv for cross attention in MultiHeadAttention. Only works for model_type=unet)rs   z--disable_packed_qkvz[not use packed qkv for self attention in MultiHeadAttention. Only works for model_type=unet)rr   z--disable_bias_addz0not fuse BiasAdd. Only works for model_type=unet)rt   z--disable_bias_splitgeluz6not fuse BiasSplitGelu. Only works for model_type=unet)rq   z--disable_nhwc_convz:Do not use NhwcConv. Only works for model_type=unet or vae)rn   z--use_group_norm_channels_firstznUse channels_first (NCHW) instead of channels_last (NHWC) for GroupNorm. Only works for model_type=unet or vae)rm   z--disable_rotary_embeddingsz5Do not fuse rotary embeddings into RotaryEmbedding opN)add_argumentset_defaults)rz   s   &r   add_argumentsFusionOptions.add_arguments   sv   !+	 	 	
 	e4'8	 	 	
 	E:(9	 	 	
 	U;,E	 	 	
 	?!<	 	 	
 	e4"4	 	 	
 	u5&	 	 	
 	/)>	 	 	
 	e<'3	 	 	
 	E:%-	 	 	
 	%8j	 	 	
 	51& e	 	 	
 	59!D	 	 	
 	e4(d	 	 	
 	U;"L	 	 	
 	u5'c	 	 	
 	E:!n	 	 	
 	e4"n	 	 	
 	u5 C	 	 	
 	U3&I	 	 	
 	59!M	 	 	
 	e4- B	 	 	
 	%@)H	 	 	
r   )rE   rF   r;   r8   rM   r?   r>   rJ   r=   r6   r@   rC   rH   r7   rG   rL   rK   rA   r9   rB   rI   r<   rD   r:   N)T)r	   r
   r   r   __doc__rO   rS   rV   r_   staticmethodrw   r   r   r*   r+   s   @r   r.   r.   (   sO     1-(^J@. . 3 3j w
 w
r   r.   N)argparser   enumr   r   r   r.   r   r   r   <module>r      s/   
 $  )d )"l
 l
r   