+
    G-jb0  ã                   ó\   € ^ 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   ó    Úx/Volumes/fast/ai/experiments/nudenet-smoke/.venv/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   € Ø�z‰zÐr   c                ó,   € \        V P                  4      # r   )Úhashr   r   s   &r   Ú__hash__ÚAttentionOpType.__hash__!   s   € Ü�D—J‘JÓÐr   c                ó4   € VP                   V P                   8H  # r   r   )r   Úothers   &&r   Ú__eq__ÚAttentionOpType.__eq__$   s   € Ø�{‰{˜dŸj™jÑ(Ð(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9   d   RV n        \        P                   V n        VR8X  d   \        P$                  V n        MVR9   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ÚbertN)ÚclipÚqwen3)Úvitr2   ©ÚunetÚvaer1   )Ú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ˆÔ.à&*ˆÔ#Ø'+ˆÔ$Ø+/ˆÔ(Ø $ˆÔØ).ˆÔ&Ø&*ˆÔ#à&*ˆÔ#Ø%*ˆÔ"Ø(,ˆÔ%àÐ*Ô*Ø+0ˆDÔ(ô &9×%FÑ%FˆÔ"Ø˜ÔÜ)<×)IÑ)IˆDÕ&ØÐ+Ô+Ü)<×)CÑ)CˆDÔ&à!%ˆÔð Ð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   rF   r   )r   Úuse_raw_masks   &&r   Úuse_raw_attention_maskÚ$FusionOptions.use_raw_attention_maskZ   s!   € ßÜ)<×)JÑ)JˆDÖ&ä)<×)IÑ)IˆDÖ&r   c                ó0   € \         P                  V n        R # r   )r   r   rF   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   )rG   )r   r[   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# )FTr4   )+r.   rO   Údisable_gelur7   Údisable_layer_normr8   Údisable_rotary_embeddingsr:   Údisable_attentionr9   r;   Údisable_skip_layer_normr=   Údisable_embed_layer_normr>   Údisable_bias_skip_layer_normr?   Údisable_bias_gelur@   rA   Údisable_shape_inferencerC   rD   Úuse_mask_indexrT   Úno_attention_maskrW   Úuse_group_norm_channels_firstrE   Údisable_nhwc_convrH   Údisable_group_normrI   Údisable_skip_group_normrJ   Údisable_bias_splitgelurK   Údisable_packed_qkvrL   Údisable_packed_kvrM   Údisable_bias_addrN   )ÚargsÚoptionss   & r   ÚparseÚFusionOptions.parsef   sþ  € ä §¡Ó0ˆØ××ÐØ"'ˆGÔØ×"×"Ð"Ø(-ˆGÔ%Ø×)×)Ð)Ø/4ˆGÔ,Ø×!×!Ð!Ø',ˆGÔ$Ø×(×(Ð(Ø/3ˆGÔ,Ø×'×'Ð'Ø-2ˆGÔ*Ø×(×(Ð(Ø.3ˆGÔ+Ø×,×,Ð,Ø27ˆGÔ/Ø×!×!Ð!Ø',ˆGÔ$Ø×)×)Ð)Ø04ˆGÔ-Ø×'×'Ð'Ø-2ˆGÔ*Ø×%×%Ð%Ø,0ˆGÔ)Ø××ÐØ×*Ñ*¨5Ô1Ø×&×&Ð&Ø×*Ñ*¨4Ô0Ø×!×!Ð!Ø×*Ñ*Ô,à�?‰?Ð5Ô5Ø×1×1Ð1Ø38�Ô0Ø×%×%Ð%Ø+0�Ô(Ø×&×&Ð&Ø,1�Ô)Ø×+×+Ð+Ø16�Ô.Ø×*×*Ð*Ø05�Ô-Ø×&×&Ð&Ø,1�Ô)Ø×%×%Ð%Ø+0�Ô(Ø×$×$Ð$Ø*/�Ô'àˆr   c                ó    <€ V ^8„  d   QhRS[ /# )rZ   Ú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)rf   z--disable_skip_layer_normz%disable SkipLayerNormalization fusion)rg   z--disable_embed_layer_normz&disable EmbedLayerNormalization fusion)rh   z--disable_bias_skip_layer_normz2disable Add Bias and SkipLayerNormalization fusion)ri   z--disable_bias_geluz)disable Add Bias and Gelu/FastGelu fusion)rj   z--disable_layer_normz!disable LayerNormalization fusion)rd   z--disable_geluzdisable Gelu fusion)rc   z--enable_gelu_approximationz+enable Gelu/BiasGelu to FastGelu conversion)rA   z--disable_shape_inferencez disable symbolic shape inference)rk   z--enable_gemm_fast_geluzenable GemmfastGelu fusion)rD   z--use_mask_indexzWuse mask index to activate fused attention to speed up. It requires right-side padding!)rl   z--use_raw_attention_maskz‘use raw attention mask. Use this option if your input is not right-side padding. This might deactivate fused attention and get worse performance.)rT   z--no_attention_maskz1no attention mask. Only works for model_type=bert)rm   z--use_multi_head_attentionzŸUse 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)rp   z--disable_skip_group_normzPnot fuse Add + GroupNorm to SkipGroupNorm. Only works for model_type=unet or vae)rq   z--disable_packed_kvz[not use packed kv for cross attention in MultiHeadAttention. Only works for model_type=unet)rt   z--disable_packed_qkvz[not use packed qkv for self attention in MultiHeadAttention. Only works for model_type=unet)rs   z--disable_bias_addz0not fuse BiasAdd. Only works for model_type=unet)ru   z--disable_bias_splitgeluz6not fuse BiasSplitGelu. Only works for model_type=unet)rr   z--disable_nhwc_convz:Do not use NhwcConv. Only works for model_type=unet or vae)ro   z--use_group_norm_channels_firstznUse channels_first (NCHW) instead of channels_last (NHWC) for GroupNorm. Only works for model_type=unet or vae)rn   z--disable_rotary_embeddingsz5Do not fuse rotary embeddings into RotaryEmbedding opN)Úadd_argumentÚset_defaults)r{   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   )rF   rG   r<   r9   rN   r@   r?   rK   r>   r7   rA   rD   rI   r8   rH   rM   rL   rB   r:   rC   rJ   r=   rE   r;   N)T)r	   r
   r   r   Ú__doc__rP   rT   rW   r`   Ústaticmethodrx   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   