Ë
    �…jb0  ã                   óZ   — d dl mZ d dlmZ  G d„ d«      Z G d„ de«      Z G d„ d«      Zy	)
é    )ÚArgumentParser)ÚEnumc                   ó   — e Zd ZdZdZdZdZy)ÚAttentionMaskFormatr   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚMaskIndexEndÚMaskIndexEndAndStartÚAttentionMaskÚNoMask© ó    úh/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/onnxruntime/transformers/fusion_options.pyr   r   	   s   „ à€Lð Ðð €Mð �Fr   r   c                   ó.   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	y)	ÚAttentionOpTypeÚ	AttentionÚMultiHeadAttentionÚGroupQueryAttentionÚPagedAttentionc                 ó   — | j                   S ©N©Úvalue©Úselfs    r   Ú__str__zAttentionOpType.__str__   s   € Ø�z‰zÐr   c                 ó,   — t        | j                  «      S r   )Úhashr   r   s    r   Ú__hash__zAttentionOpType.__hash__!   s   € Ü�D—J‘JÓÐr   c                 ó4   — |j                   | j                   k(  S r   r   )r   Úothers     r   Ú__eq__zAttentionOpType.__eq__$   s   € Ø�{‰{˜dŸj™jÑ(Ð(r   N)
r
   r   r   r   r   r   r   r    r#   r&   r   r   r   r   r      s'   „ Ø€IØ-ÐØ/ÐØ%€Nòò ó)r   r   c                   óV   — e Zd ZdZd„ Zdd„Zd„ Zdefd„Ze	d„ «       Z
e	defd	„«       Zy
)ÚFusionOptionsz'Options of fusion in graph optimizationc                 óø  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        |dv rd| _        t        j                   | _        |dk(  rt        j$                  | _        n|dv rt        j&                  | _        d | _        |dv r2d| _        d| _        d| _        d| _        d| _        d| _        d| _        y y )NTF)ÚclipÚqwen3Úbert)Úvitr+   ©ÚunetÚvaer*   )Ú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__z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                 ó^   — |rt         j                  | _        y t         j                  | _        y r   )r   r   r@   r   )r   Úuse_raw_masks     r   Úuse_raw_attention_maskz$FusionOptions.use_raw_attention_maskZ   s!   € ÙÜ)<×)JÑ)JˆDÕ&ä)<×)IÑ)IˆDÕ&r   c                 ó.   — t         j                  | _        y r   )r   r   r@   r   s    r   Údisable_attention_maskz$FusionOptions.disable_attention_mask`   s   € Ü%8×%?Ñ%?ˆÕ"r   Úattn_op_typec                 ó   — || _         y r   )rA   )r   rP   s     r   Úset_attention_op_typez#FusionOptions.set_attention_op_typec   s
   € Ø!-ˆÕr   c                 óð  — t        | j                  «      }| j                  rd|_        | j                  rd|_        | j                  rd|_        | j                  rd|_	        | j                  rd|_
        | j                  rd|_        | j                  rd|_        | j                  rd|_        | j"                  rd|_        | j&                  rd|_        | j(                  rd|_        | j,                  rd|_        | j.                  r|j1                  d«       | j0                  r|j1                  d«       | j2                  r|j5                  «        | j                  dv r˜| j6                  rd|_        | j:                  rd|_        | j>                  rd|_         | jB                  rd|_"        | jF                  rd|_$        | jJ                  rd|_&        | jN                  rd|_(        | jR                  rd|_*        |S )NFTr.   )+r(   rI   Údisable_gelur1   Údisable_layer_normr2   Údisable_rotary_embeddingsr4   Údisable_attentionr3   r5   Údisable_skip_layer_normr7   Údisable_embed_layer_normr8   Údisable_bias_skip_layer_normr9   Údisable_bias_gelur:   r;   Údisable_shape_inferencer=   r>   Úuse_mask_indexrM   Úno_attention_maskrO   Úuse_group_norm_channels_firstr?   Údisable_nhwc_convrB   Údisable_group_normrC   Údisable_skip_group_normrD   Údisable_bias_splitgelurE   Údisable_packed_qkvrF   Údisable_packed_kvrG   Údisable_bias_addrH   )ÚargsÚoptionss     r   Úparsez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Ø38�Ô0Ø×%Ò%Ø+0�Ô(Ø×&Ò&Ø,1�Ô)Ø×+Ò+Ø16�Ô.Ø×*Ò*Ø05�Ô-Ø×&Ò&Ø,1�Ô)Ø×%Ò%Ø+0�Ô(Ø×$Ò$Ø*/�Ô'àˆr   Úparserc                 óâ  — | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬	«       | j                  d
ddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd¬«       | j                  d¬«       | j                  dddd ¬«       | j                  d¬!«       | j                  d"ddd#¬«       | j                  d¬$«       | j                  d%ddd&¬«       | j                  d¬'«       | j                  d(ddd)¬«       | j                  d¬*«       | j                  d+ddd,¬«       | j                  d¬-«       | j                  d.ddd/¬«       | j                  d¬0«       | j                  d1ddd2¬«       | j                  d¬3«       | j                  d4ddd5¬«       | j                  d¬6«       | j                  d7ddd8¬«       | j                  d¬9«       | j                  d:ddd;¬«       | j                  d¬<«       | j                  d=ddd>¬«       | j                  d¬?«       | j                  d@dddA¬«       | j                  d¬B«       | j                  dCdddD¬«       | j                  d¬E«       | j                  dFdddG¬«       y )HNz--disable_attentionFÚ
store_truezdisable Attention fusion)ÚrequiredÚactionÚhelp)rW   z--disable_skip_layer_normz%disable SkipLayerNormalization fusion)rX   z--disable_embed_layer_normz&disable EmbedLayerNormalization fusion)rY   z--disable_bias_skip_layer_normz2disable Add Bias and SkipLayerNormalization fusion)rZ   z--disable_bias_geluz)disable Add Bias and Gelu/FastGelu fusion)r[   z--disable_layer_normz!disable LayerNormalization fusion)rU   z--disable_geluzdisable Gelu fusion)rT   z--enable_gelu_approximationz+enable Gelu/BiasGelu to FastGelu conversion)r;   z--disable_shape_inferencez disable symbolic shape inference)r\   z--enable_gemm_fast_geluzenable GemmfastGelu fusion)r>   z--use_mask_indexzWuse mask index to activate fused attention to speed up. It requires right-side padding!)r]   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.)rM   z--no_attention_maskz1no attention mask. Only works for model_type=bert)r^   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. )r5   z--disable_group_normz9not fuse GroupNorm. Only works for model_type=unet or vae)ra   z--disable_skip_group_normzPnot fuse Add + GroupNorm to SkipGroupNorm. Only works for model_type=unet or vae)rb   z--disable_packed_kvz[not use packed kv for cross attention in MultiHeadAttention. Only works for model_type=unet)re   z--disable_packed_qkvz[not use packed qkv for self attention in MultiHeadAttention. Only works for model_type=unet)rd   z--disable_bias_addz0not fuse BiasAdd. Only works for model_type=unet)rf   z--disable_bias_splitgeluz6not fuse BiasSplitGelu. Only works for model_type=unet)rc   z--disable_nhwc_convz:Do not use NhwcConv. Only works for model_type=unet or vae)r`   z--use_group_norm_channels_firstznUse channels_first (NCHW) instead of channels_last (NHWC) for GroupNorm. Only works for model_type=unet or vae)r_   z--disable_rotary_embeddingsz5Do not fuse rotary embeddings into RotaryEmbedding op)Úadd_argumentÚset_defaults)rj   s    r   Úadd_argumentsz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   N)T)r
   r   r   Ú__doc__rJ   rM   rO   r   rR   Ústaticmethodri   r   rr   r   r   r   r(   r(   (   sV   „ Ù1ò-(ó^Jò@ð.°/ó .ð ñ3ó ð3ðj ðw
˜nò w
ó ñw
r   r(   N)Úargparser   Úenumr   r   r   r(   r   r   r   ú<module>rw      s/   ðõ
 $Ý ÷ñ ô)�dô )÷"l
ò l
r   