§
    ÎÐjy° ã                   óÀ  — d dl Z d dlmZ d dlmZmZmZ d dlZd dlZd dl	m
Z
 d dlm
c mZ e j                             dd¦  «        Zd dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z, d dl-m.Z. ddl/m0Z0m1Z1m2Z2 dZ3dZ4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d „ Z?d!„ Z@d"„ ZA G d#„ d$e
jB        ¦  «        ZC G d%„ d&e
jB        ¦  «        ZD G d'„ d(e
jB        ¦  «        ZE G d)„ d*e
jB        ¦  «        ZFd+ejG        d,ejG        d-ejG        d.ejG        d/eHejG        ejG        f         f
d0„ZI G d1„ d2e
jB        ¦  «        ZJ G d3„ d4e
jB        ¦  «        ZK G d5„ d6e
jB        ¦  «        ZL ed7¦  «         G d8„ d9e
jB        ¦  «        ¦   «         ZMdYd:„ZN G d;„ d<e
jB        ¦  «        ZO G d=„ d>e
jB        ¦  «        ZP G d?„ d@e
jB        ¦  «        ZQe e5dA¬B¦  «         G dC„ dDe"¦  «        ¦   «         ¦   «         ZRe5 G dE„ dFe'¦  «        ¦   «         ZS G dG„ dHeS¦  «        ZT e5dI¬B¦  «         G dJ„ dKeS¦  «        ¦   «         ZU G dL„ dMe
jB        ¦  «        ZV G dN„ dOe
jB        ¦  «        ZW G dP„ dQe
jB        ¦  «        ZXe5 G dR„ dSeS¦  «        ¦   «         ZYe e5dT¬B¦  «         G dU„ dVe"¦  «        ¦   «         ¦   «         ZZ G dW„ dXeSe¦  «        Z[dS )Zé    N)Ú	dataclass)ÚAnyÚOptionalÚUnionÚUSE_BF16_ROPEÚ0)Úpay_attention)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hub)Úcreate_causal_mask)ÚFlashAttentionKwargs)ÚBaseModelOutputWithPastÚModelOutput)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚis_torchdynamo_compiling)Úcheck_model_inputsé   )ÚQwen3VLConfigÚQwen3VLTextConfigÚQwen3VLVisionConfigFc                  ót   — | r2t          | ¦  «        dk    rt          | d         ¦  «        r
|s| d         S d„ }|S )Nr   r   c                 ó   — | S ©N© )Úobjs    úNC:\Users\johnn\OneDrive\Documents\AI\models\ideogram4\qwen3_vl_transformers.pyÚ	decoratorz!auto_docstring.<locals>.decorator9   s   € Øˆ
ó    )ÚlenÚcallable)ÚargsÚkwargsr$   s      r#   Úauto_docstringr*   5   sL   € Øð •�D‘	”	˜Q’�¥8¨D°¬GÑ#4Ô#4�¸V�Ø�AŒwˆðð ð ð Ðr%   c                 óz   — | dk    rdS | |z  t          |d¦  «        z  }t          dt          | |¦  «        ¦  «        S )Ni   r   r   é€   )ÚmaxÚmin)Úseq_lenÚhidden_sizeÚintermediate_sizeÚ
chunk_sizes       r#   Ú_ffn_chunk_sizer3   ?   sD   € Ø�$‚€ØˆqØ˜;Ñ&­#Ð.?ÀÑ*CÔ*CÑC€JÝˆs•C˜ Ñ,Ô,Ñ-Ô-Ð-r%   c                 ól   — t          | t          ¦  «        r| d         }|                      ¦   «          |S | S ©Nr   )Ú
isinstanceÚlistÚclear)ÚvalueÚtensors     r#   Ú_take_tensorr;   F   s4   € Ý�%�ÑÔð Ø�q”ˆØ�Š‰ŒˆØˆØ€Lr%   c                 óz   — t          j        | |¬¦  «        }t          | d¦  «        r|                      ¦   «          |S )N©Údimr8   )ÚtorchÚcatÚhasattrr8   )Útensorsr>   Úouts      r#   Ú_cat_tensorsrD   N   s:   € Ý
Œ)�G Ð
%Ñ
%Ô
%€CÝˆw˜Ñ Ô ð Ø�Š‰ŒˆØ€Jr%   c                 ó  — |                       ¦   «         } |rYt          j                             ¦   «         r;t          j        | j        | j        dd¬¦  «        }|                     | d¬¦  «         |S |                      dd¬¦  «        S )NÚcpuT)ÚdtypeÚdeviceÚ
pin_memoryF©Únon_blocking)rH   Úcopy)	Údetachr?   ÚcudaÚis_availableÚemptyÚshaperG   Úcopy_Úto)r:   ÚpinnedrC   s      r#   Ú_cache_tensor_cpurU   U   sz   € Ø�]Š]‰_Œ_€FØð •%”*×)Ò)Ñ+Ô+ð ÝŒk˜&œ,¨f¬lÀ5ÐUYÐZÑZÔZˆØ�	Š	�& uˆ	Ñ-Ô-Ð-Øˆ
Ø�9Š9˜E¨ˆ9Ñ-Ô-Ð-r%   c                 ón   — |                       |t          |o| j        j        dk    ¦  «        ¬¦  «         d S )NrN   rJ   )rR   ÚboolrH   Útype)ÚdstÚsrcrT   s      r#   Ú_copy_cached_prefixr[   ^   s4   € Ø‡I‚Iˆc¥ VÐ%I°´
´À6Ò0IÑ JÔ J€IÑKÔKÐKÐKÐKr%   c                 ó`  — |                       ¦   «         dk    r| d         n| } |                      ¦   «         }t          |                      ¦   «                              ¦   «         ¦  «        }|dk    rdS |d |…                              ¦   «         s||d …                               ¦   «         rdS |S )Nr   r   éÿÿÿÿ)r>   rW   ÚintÚsumÚitemÚany)Útoken_typesÚgen_positionsÚar_lens      r#   Ú_static_ar_prefix_lenre   b   s¯   € Ø$/§O¢OÑ$5Ô$5¸Ò$9Ð$9�+˜a”.�.¸{€KØ×$Ò$Ñ&Ô&€MÝ�=�.×%Ò%Ñ'Ô'×,Ò,Ñ.Ô.Ñ/Ô/€FØ�‚{€{ØˆqØ�W�f�WÔ×!Ò!Ñ#Ô#ð ¨°v°w°wÔ)?Ð(?×'DÒ'DÑ'FÔ'Fð ØˆrØ€Mr%   c                 ó
  — | €d S |                       ¦   «         dk    r”| j        d         |k    r'| j        d         |k    r|                      dd¦  «        S | j        d         d|fv r| j        d         |k    r| S | j        d         dk    r'| j        d         |k    r|                      dd¦  «        S |                       ¦   «         dk    r| d d …d d …d d d …f         S |                       ¦   «         dk    r| d d …d d d d …f         S | S )Né   r   é   é   )r>   rQ   Ú	transpose)Úattention_maskÚq_lenÚ	num_headss      r#   Ú!_attention_mask_for_pay_attentionrn   m   s9  € ØÐØˆtØ×ÒÑÔ˜qÒ Ð ØÔ Ô" iÒ/Ð/°NÔ4HÈÔ4KÈuÒ4TÐ4TØ!×+Ò+¨A¨qÑ1Ô1Ð1ØÔ Ô" q¨) nÐ4Ð4¸Ô9MÈaÔ9PÐTYÒ9YÐ9YØ!Ð!ØÔ Ô" aÒ'Ð'¨NÔ,@ÀÔ,CÀuÒ,LÐ,LØ!×+Ò+¨A¨qÑ1Ô1Ð1Ø×ÒÑÔ˜qÒ Ð Ø˜a˜a˜a    D¨!¨!¨!˜mÔ,Ð,Ø×ÒÑÔ˜qÒ Ð Ø˜a˜a˜a  t¨Q¨Q¨QÐ.Ô/Ð/ØÐr%   c                 ó  — t          j        ||t           j        |¬¦  «        }|                     ¦   «          |                     d|d|¦  «        }| d d …d d d |…f                              |t           j        ¬¦  «        }||z  S )N©rG   rH   r   ©rH   rG   )r?   ÚonesrW   Útril_ÚviewrS   )rk   Úquery_lengthrH   ÚcausalÚkey_masks        r#   Ú_build_explicit_text_maskrx   ~   s}   € ÝŒZ˜ l½%¼*ÈVÐTÑTÔT€FØ
‡L‚L�N„N€NØ�[Š[˜˜L¨!¨\Ñ:Ô:€FØ˜a˜a˜a  t¨]¨l¨]Ð:Ô;×>Ò>ÀfÕTYÔT^Ð>Ñ_Ô_€HØ�HÑÐr%   c                 óÖ   — t          | ¦  «        } |dk    r| S | j        \  }}}}| d d …d d …d d …d d d …f                              |||||¦  «        } |                      ||||z  |¦  «        S ©Nr   )r;   rQ   ÚexpandÚreshape)Úhidden_statesÚn_repÚbatchr/   Únum_key_value_headsÚhead_dims         r#   Ú_repeat_kv_for_pay_attentionr‚   †   sŽ   € Ý  Ñ/Ô/€MØ�‚z€zØÐØ4AÔ4GÑ1€Eˆ7Ð'¨Ø! ! ! ! Q Q Q¨¨¨¨4°°°Ð"2Ô3×:Ò:¸5À'ÐK^Ð`eÐgoÑpÔp€MØ× Ò  ¨Ð1DÀuÑ1LÈhÑWÔWÐWr%   c                 óv   — t          | ¦  «        }|                     ||¦  «                             ¦   «         }~|S r    )r;   rj   Ú
contiguous)Úx_listÚdim0Údim1ÚxrC   s        r#   Ú_transpose_contiguousr‰   �   s6   € Ý�VÑÔ€AØ
�+Š+�d˜DÑ
!Ô
!×
,Ò
,Ñ
.Ô
.€CØ	Ø€Jr%   c                 ó|  — |                      |¦  «        }|                      |¦  «        }| j        d         dz  }| dd |…f         }| d|d …f         }|                     ¦   «         }|                     |¦  «                             ||d¬¦  «         |                     |¦  «                             ||¦  «         ~| S )Nr]   rh   .©r9   )Ú	unsqueezerQ   ÚcloneÚmul_Úaddcmul_)rˆ   ÚcosÚsinÚunsqueeze_dimÚhalfÚx1Úx2Úscratchs           r#   Ú_apply_rotary_inplacer—   –   s°   € Ø
�-Š-˜Ñ
&Ô
&€CØ
�-Š-˜Ñ
&Ô
&€CØŒ7�2Œ;˜!Ñ€DØ	
ˆ3���ˆ:Œ€BØ	
ˆ3���ˆ:Œ€BØ�hŠh‰jŒj€GØ‡G‚GˆC�L„L×Ò˜"˜c¨ÐÑ,Ô,Ð,Ø‡G‚GˆC�L„L×Ò˜' 3Ñ'Ô'Ð'ØØ€Hr%   c                 óŽ  — | \  }}}|                       ¦   «          |j        d d…         \  }}|                     |j        ¦  «        }|                     ¦   «         dk    r|                     d¦  «        }|j        d         dk    r|dk    r|                     |d¦  «        }t          |¦  «        }||z
  }	|	dk    r|||g}
d x}x}}t          |
|ddd¬¦  «        S |dk    r|||g}
d x}x}}t          |
|dd¬	¦  «        S |}d }|d d …d |…f         }|d d …d |…f         }|d d …d |…f         }|||g}
d x}x}}t          |
|ddd¬¦  «        }|d d …d |…f          	                    |¦  «         ~
~|d d …|d …f         }|}|}|||g}
d x}x}}d x}}t          |
|dd¬	¦  «        }|d d …|d …f          	                    |¦  «         ~
~|S )
Nrh   r   r   r]   TÚsdpa)Úsoftmax_scalerv   Úforce_attentionÚ	recycle_qF©rš   rv   rœ   )
r8   rQ   rS   rH   r>   rŒ   r{   re   r	   rR   )Úqkv_listrb   rš   ÚqÚkÚvr   r/   rd   Úgen_lenÚattn_qkvrC   Úq_attnÚk_attnÚv_attnÚout_arÚout_gens                    r#   Ú_pay_attention_token_typesr©   £   sZ  € Ø�G€A€qˆ!Ø‡N‚NÑÔÐØ”W˜R˜a˜R”[�N€Eˆ7Ø—.’. ¤Ñ*Ô*€KØ‡‚ÑÔ˜AÒÐØ!×+Ò+¨AÑ.Ô.ˆØÔ˜Ô˜qÒ Ð  U¨Q¢Y YØ!×(Ò(¨°Ñ3Ô3ˆå" ;Ñ/Ô/€FØ˜Ñ€GØ�!‚|€|Ø�q˜!�9ˆØÐˆÐˆA�Ý˜X°]È4ÐagÐswÐxÑxÔxÐxà�‚{€{Ø�q˜!�9ˆØÐˆÐˆA�Ý˜X°]È5Ð\`ÐaÑaÔaÐaà
€CØ€AØ����G�V�G�Œ_€FØˆqˆqˆq�'�6�'ˆzŒ]€FØˆqˆqˆq�'�6�'ˆzŒ]€FØ˜ Ð'€HØ#Ð#€FÐ#ˆV�fÝ˜8°=ÈÐ_eÐquÐvÑvÔv€FØˆˆˆˆ7ˆFˆ7ˆ
„O×Ò˜&Ñ!Ô!Ð!Ø�&à����F�G�G�Œ_€FØ€FØ€FØ˜ Ð'€HØ#Ð#€FÐ#ˆV�fØ€L€AˆÝ˜H°MÈ%Ð[_Ð`Ñ`Ô`€GØˆˆˆˆ6ˆ7ˆ7ˆ
„O×Ò˜'Ñ"Ô"Ð"Ø�'à€Jr%   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚQwen3VLVisionMLPc                 ó>  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t	          j        | j        | j        d¬¦  «        | _        t	          j        | j        | j        d¬¦  «        | _        t          |j	                 | _
        d S ©NT©Úbias)ÚsuperÚ__init__r0   r1   ÚnnÚLinearÚ
linear_fc1Ú
linear_fc2r
   Ú
hidden_actÚact_fn©ÚselfÚconfigÚ	__class__s     €r#   r±   zQwen3VLVisionMLP.__init__Ò   s€   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔØ!'Ô!9ˆÔÝœ) DÔ$4°dÔ6LÐSWÐXÑXÔXˆŒÝœ) DÔ$:¸DÔ<LÐSWÐXÑXÔXˆŒÝ˜VÔ.Ô/ˆŒˆˆr%   c           
      óÖ  — t          |¦  «        }|j        dk    r|j        d         n|j        d         }t          || j        | j        ¦  «        }|dk    r@|                      |¦  «        }~|                      |¦  «        }|                      |¦  «        S  |j	        g |j        d d…         ¢| j        ‘R Ž }t          d||¦  «        D ] }|                     d|t          |||z
  ¦  «        ¦  «        }|                      |¦  «        }~|                      |¦  «        }|                      |¦  «        }|                     d||j        d         ¦  «                             |¦  «         ~Œ¡|S ©Nr   éþÿÿÿr   r]   )r;   ÚndimrQ   r3   r0   r1   r´   r·   rµ   Ú	new_emptyÚrangeÚnarrowr.   rR   )	r¹   Úhidden_stater/   r2   ÚhiddenrC   ÚstartÚchunkÚ	chunk_outs	            r#   ÚforwardzQwen3VLVisionMLP.forwardÚ   se  € Ý# LÑ1Ô1ˆØ,8Ô,=ÀÒ,AÐ,A�,Ô$ RÔ(Ð(À|ÔGYÐZ[ÔG\ˆÝ$ W¨dÔ.>ÀÔ@VÑWÔWˆ
Ø˜Š?ˆ?Ø—_’_ \Ñ2Ô2ˆFØØ—[’[ Ñ(Ô(ˆFØ—?’? 6Ñ*Ô*Ð*Ø$ˆlÔ$ÐP lÔ&8¸¸"¸Ô&=ÐP¸tÔ?OÐPÐPÐPˆÝ˜1˜g zÑ2Ô2ð 	ð 	ˆEØ ×'Ò'¨¨Eµ3°zÀ7ÈUÁ?Ñ3SÔ3SÑTÔTˆEØŸš¨Ñ.Ô.ˆIØØŸš IÑ.Ô.ˆIØŸš¨	Ñ2Ô2ˆIØ�JŠJ�r˜5 )¤/°"Ô"5Ñ6Ô6×<Ò<¸YÑGÔGÐGØ�	Øˆ
r%   )Ú__name__Ú
__module__Ú__qualname__r±   rÈ   Ú__classcell__©r»   s   @r#   r«   r«   Ñ   sG   ø€ € € € € ð0ð 0ð 0ð 0ð 0ðð ð ð ð ð ð r%   r«   c                   óD   ‡ — e Zd Zdˆ fd„Zdej        dej        fd„Zˆ xZS )ÚQwen3VLVisionPatchEmbedÚreturnNc                 ó   •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        | j        | j        | j        g}t          j        | j        | j        ||d¬¦  «        | _	        d S )NT)Úkernel_sizeÚstrider¯   )
r°   r±   Ú
patch_sizeÚtemporal_patch_sizeÚin_channelsr0   Ú	embed_dimr²   ÚConv3dÚproj)r¹   rº   rÒ   r»   s      €r#   r±   z Qwen3VLVisionPatchEmbed.__init__ð   s}   ø€ Ý‰Œ×ÒÑÔÐØ Ô+ˆŒØ#)Ô#=ˆÔ Ø!Ô-ˆÔØÔ+ˆŒàÔ/°´À$Ä/ÐRˆÝ”I˜dÔ.°´ÈKÐ`kÐrvÐwÑwÔwˆŒ	ˆ	ˆ	r%   r}   c                 ó*  — t          |¦  «        }| j        j        j        }|                     d| j        | j        | j        | j        ¦  «        }|                     |¬¦  «        }|                      |¦  «        }~|                     d| j	        ¦  «        S )Nr]   ©rG   )
r;   rÙ   ÚweightrG   rt   rÖ   rÕ   rÔ   rS   r×   )r¹   r}   Útarget_dtypeÚ	projecteds       r#   rÈ   zQwen3VLVisionPatchEmbed.forwardú   sˆ   € Ý$ ]Ñ3Ô3ˆØ”yÔ'Ô-ˆØ%×*Ò*Ø�Ô  $Ô":¸D¼OÈTÌ_ñ
ô 
ˆð &×(Ò(¨|Ð(Ñ<Ô<ˆØ—I’I˜mÑ,Ô,ˆ	ØØ�~Š~˜b $¤.Ñ1Ô1Ð1r%   ©rÐ   N)rÉ   rÊ   rË   r±   r?   ÚTensorrÈ   rÌ   rÍ   s   @r#   rÏ   rÏ   ï   si   ø€ € € € € ðxð xð xð xð xð xð	2 U¤\ð 	2°e´lð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2r%   rÏ   c                   óf   ‡ — e Zd ZU ej        ed<   ddededdfˆ fd„Zdd„Z	d	edej        fd
„Z
ˆ xZS )ÚQwen3VLVisionRotaryEmbeddingÚinv_freqç     ˆÃ@r>   ÚthetarÐ   Nc                 óê   •— t          ¦   «                              ¦   «          d|t          j        d|dt          j        ¬¦  «        |z  z  z  }|                      d|d¬¦  «         || _        || _        d S )Nç      ð?r   rh   rÛ   rã   F©Ú
persistent)r°   r±   r?   ÚarangeÚfloatÚregister_bufferr>   rå   )r¹   r>   rå   rã   r»   s       €r#   r±   z%Qwen3VLVisionRotaryEmbedding.__init__	  sp   ø€ Ý‰Œ×ÒÑÔÐØ˜%¥E¤L°°C¸Å%Ä+Ð$NÑ$NÔ$NÐQTÑ$TÑUÑVˆØ×Ò˜Z¨¸eÐÑDÔDÐDØˆŒØˆŒ
ˆ
ˆ
r%   c                 óˆ   — d| j         t          j        d| j        dt          j        ¬¦  «        | j        z  z  z  }|| _        d S )Nrç   r   rh   rÛ   )rå   r?   rê   r>   rë   rã   ©r¹   rã   s     r#   Úreset_inv_freqz+Qwen3VLVisionRotaryEmbedding.reset_inv_freq  s>   € Ø˜$œ*­¬°a¸¼À1ÍEÌKÐ)XÑ)XÔ)XÐ[_Ô[cÑ)cÑdÑeˆØ ˆŒˆˆr%   Úseqlenc                 ó�   — t          j        || j        j        | j        j        ¬¦  «        }t          j        || j        ¦  «        }|S )Nrq   )r?   rê   rã   rH   rG   Úouter)r¹   rð   ÚseqÚfreqss       r#   rÈ   z$Qwen3VLVisionRotaryEmbedding.forward  s:   € ÝŒl˜6¨$¬-Ô*>ÀdÄmÔFYÐZÑZÔZˆÝ”˜C ¤Ñ/Ô/ˆØˆr%   )rä   rß   )rÉ   rÊ   rË   r?   rà   Ú__annotations__r^   rë   r±   rï   rÈ   rÌ   rÍ   s   @r#   râ   râ     sŸ   ø€ € € € € € ØŒlÐÐÑðð ˜Cð ¨ð ¸Dð ð ð ð ð ð ð!ð !ð !ð !ð˜cð  e¤lð ð ð ð ð ð ð ð r%   râ   c                   óN   ‡ — e Zd Zddeddfˆ fd„Zdej        dej        fd„Zˆ xZS )	ÚQwen3VLVisionPatchMergerFrº   rÐ   Nc                 ó–  •— t          ¦   «                              ¦   «          |j        |j        dz  z  | _        || _        t          j        |r| j        n|j        d¬¦  «        | _        t          j        | j        | j        ¦  «        | _	        t          j
        ¦   «         | _        t          j        | j        |j        ¦  «        | _        d S )Nrh   ç�íµ ÷Æ°>©Úeps)r°   r±   r0   Úspatial_merge_sizeÚuse_postshuffle_normr²   Ú	LayerNormÚnormr³   r´   ÚGELUr·   Úout_hidden_sizerµ   )r¹   rº   rý   r»   s      €r#   r±   z!Qwen3VLVisionPatchMerger.__init__  s¤   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-°Ô1JÈAÑ1MÑNˆÔØ$8ˆÔ!Ý”LÐ5IÐ!a Ô!1Ð!1ÈvÔOaÐgkÐlÑlÔlˆŒ	Ýœ) DÔ$4°dÔ6FÑGÔGˆŒÝ”g‘i”iˆŒÝœ) DÔ$4°fÔ6LÑMÔMˆŒˆˆr%   rˆ   c                 ó@  — t          |¦  «        }|                      | j        r|                     d| j        ¦  «        n|¦  «                             d| j        ¦  «        }|                      |¦  «        }~|                      |¦  «        }|                      |¦  «        S )Nr]   )r;   rÿ   rý   rt   r0   r´   r·   rµ   ©r¹   rˆ   rÄ   s      r#   rÈ   z Qwen3VLVisionPatchMerger.forward$  s‰   € Ý˜‰OŒOˆØ�IŠI°dÔ6OÐV�a—f’f˜R Ô!1Ñ2Ô2Ð2ÐUVÑWÔW×\Ò\Ð]_ÐaeÔaqÑrÔrˆØ—’ Ñ#Ô#ˆØØ—’˜VÑ$Ô$ˆØ�Š˜vÑ&Ô&Ð&r%   ©F)	rÉ   rÊ   rË   r   r±   r?   rà   rÈ   rÌ   rÍ   s   @r#   r÷   r÷     s�   ø€ € € € € ðNð NÐ2ð NÐSWð Nð Nð Nð Nð Nð Nð'˜œð '¨%¬,ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r%   r÷   rŸ   r    r�   r‘   rÐ   c                 ó–  — t          | ¦  «        } t          |¦  «        }| j        }|j        }|                      ¦   «         |                     ¦   «         }} |                     ¦   «         |                     ¦   «         }}t          | ||d¦  «                             |¦  «        } t          |||d¦  «                             |¦  «        }| |fS )Nr¾   )r;   rG   rë   r—   rS   )rŸ   r    r�   r‘   Úorig_q_dtypeÚorig_k_dtypes         r#   Úapply_rotary_pos_emb_visionr  -  s¥   € õ 	�Q‰Œ€AÝ�Q‰Œ€AØ”7€LØ”7€LØ�7Š7‰9Œ9�a—g’g‘i”i€q€AØ�yŠy‰{Œ{˜CŸIšI™KœKˆ€CÝ˜a  c¨2Ñ.Ô.×1Ò1°,Ñ?Ô?€AÝ˜a  c¨2Ñ.Ô.×1Ò1°,Ñ?Ô?€AØˆaˆ4€Kr%   c                   ó®   ‡ — e Zd Zdeddfˆ fd„Z	 	 d
dej        dej        deej                 deeej        ej        f                  dej        f
d	„Z	ˆ xZ
S )ÚQwen3VLVisionAttentionrº   rÐ   Nc                 ó�  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        | j        | j        z  | _        d| _        t          j        | j        | j        dz  d¬¦  «        | _	        t          j        | j        | j        ¦  «        | _
        | j        dz  | _        || _        d| _        d| _        d S )Nr   ri   Tr®   ç      à¿g        F)r°   r±   r0   r>   rm   r�   Únum_key_value_groupsr²   r³   ÚqkvrÙ   Úscalingrº   Úattention_dropoutÚ	is_causalr¸   s     €r#   r±   zQwen3VLVisionAttention.__init__<  s¤   ø€ Ý‰Œ×ÒÑÔÐØÔ%ˆŒØÔ)ˆŒØœ D¤NÑ2ˆŒØ$%ˆÔ!Ý”9˜TœX t¤x°!¡|¸$Ð?Ñ?Ô?ˆŒÝ”I˜dœh¨¬Ñ1Ô1ˆŒ	Ø”} dÑ*ˆŒØˆŒØ!$ˆÔØˆŒˆˆr%   r}   Ú
cu_seqlensÚrotary_pos_embÚposition_embeddingsc                 óâ  — t          |¦  «        }|j        d         }|                      |¦  «                             |d| j        d¦  «                             dddd¦  «        }~|                     d¦  «        \  }}	}
~|\  }}|g}|	g}d x}}	t          ||||¦  «        \  }}	|                     d¦  «        }|	                     d¦  «        }	|
                     d¦  «        }
|dd …         |d d…         z
   	                    ¦   «         }d}|D ]¢}||z   }|d d …||…f          
                    ¦   «         |	d d …||…f          
                    ¦   «         |
d d …||…f          
                    ¦   «         g}t          || j        dd¬¦  «        }|d d …||…f                              |¦  «         ~|}Œ£~	~
|                     |d¦  «         
                    ¦   «         }~|                      |¦  «        }|S )	Nr   ri   r]   r   rh   FTr�   )r;   rQ   r  r|   rm   ÚpermuteÚunbindr  rŒ   Útolistr„   r	   r  rR   rÙ   )r¹   r}   r  r  r  r)   Ú
seq_lengthr  Úquery_statesÚ
key_statesÚvalue_statesr�   r‘   Ú
query_listÚkey_listÚlengthsÚcursorÚlengthÚendrž   Úchunk_outputÚattn_outputs                         r#   rÈ   zQwen3VLVisionAttention.forwardI  s"  € õ % ]Ñ3Ô3ˆØ"Ô(¨Ô+ˆ
Ø�hŠh�}Ñ%Ô%×-Ò-¨j¸!¸T¼^ÈRÑPÔP×XÒXÐYZÐ\]Ð_`ÐbcÑdÔdˆØØ14·²¸A±´Ñ.ˆ�j ,ØØ&‰ˆˆSØ"�^ˆ
Ø�<ˆØ$(Ð(ˆ�zÝ#>¸zÈ8ÐUXÐZ]Ñ#^Ô#^Ñ ˆ�jà#×-Ò-¨aÑ0Ô0ˆØ×)Ò)¨!Ñ,Ô,ˆ
Ø#×-Ò-¨aÑ0Ô0ˆØ˜a˜b˜b”> J¨s°¨s¤OÑ3×;Ò;Ñ=Ô=ˆØˆØð 
	ð 
	ˆFØ˜6‘/ˆCà˜Q˜Q˜Q  s 
˜]Ô+×6Ò6Ñ8Ô8Ø˜1˜1˜1˜f S˜j˜=Ô)×4Ò4Ñ6Ô6Ø˜Q˜Q˜Q  s 
˜]Ô+×6Ò6Ñ8Ô8ðˆHõ
 )¨ÀÄÐV[ÐgkÐlÑlÔlˆLØ˜˜˜˜F 3˜J˜Ô'×-Ò-¨lÑ;Ô;Ð;ØØˆFˆFØ˜Ø"×*Ò*¨:°rÑ:Ô:×EÒEÑGÔGˆØØ—i’i Ñ,Ô,ˆØÐr%   ©NN)rÉ   rÊ   rË   r   r±   r?   rà   r   ÚtuplerÈ   rÌ   rÍ   s   @r#   r
  r
  ;  s½   ø€ € € € € ðÐ2ð °tð ð ð ð ð ð ð" 26ØKOð(ð (à”|ð(ð ”Lð(ð ! ¤Ô.ð	(ð
 & e¨E¬L¸%¼,Ð,FÔ&GÔHð(ð 
Œð(ð (ð (ð (ð (ð (ð (ð (r%   r
  c                   ó°   ‡ — e Zd Zddeddfˆ fd„Z	 	 ddej        dej        deej                 d	eeej        ej        f                  dej        f
d
„Z	ˆ xZ
S )ÚQwen3VLVisionBlockr™   Úattn_implementationrÐ   Nc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        d¬¦  «        | _        t          j        |j        d¬¦  «        | _        t          |¬¦  «        | _        t          |¬¦  «        | _
        d S )Nrù   rú   ©rº   )r°   r±   r²   rþ   r0   Únorm1Únorm2r
  Úattnr«   Úmlp)r¹   rº   r)  r»   s      €r#   r±   zQwen3VLVisionBlock.__init__u  ss   ø€ Ý‰Œ×ÒÑÔÐÝ”\ &Ô"4¸$Ð?Ñ?Ô?ˆŒ
Ý”\ &Ô"4¸$Ð?Ñ?Ô?ˆŒ
Ý*°&Ð9Ñ9Ô9ˆŒ	Ý#¨6Ð2Ñ2Ô2ˆŒˆˆr%   r}   r  r  r  c                 ó2  — t          |¦  «        }|                      |¦  «        }|g}d } | j        |f|||dœ|¤Ž}|                     |¦  «         ~|                      |¦  «        }|g}d }|                      |¦  «        }	|                     |	¦  «         ~	|S )N)r  r  r  )r;   r,  r.  Úadd_r-  r/  )
r¹   r}   r  r  r  r)   Únormed_statesÚnormed_states_listr$  Ú
mlp_outputs
             r#   rÈ   zQwen3VLVisionBlock.forward|  sÈ   € õ % ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆØ+˜_ÐØˆØ�d”iØð
à!Ø)Ø 3ð	
ð 
ð
 ð
ð 
ˆð 	×Ò˜;Ñ'Ô'Ð'ØØŸ
š
 =Ñ1Ô1ˆØ+˜_ÐØˆØ—X’XÐ0Ñ1Ô1ˆ
Ø×Ò˜:Ñ&Ô&Ð&ØØÐr%   )r™   r%  )rÉ   rÊ   rË   Ústrr±   r?   rà   r   r&  rÈ   rÌ   rÍ   s   @r#   r(  r(  t  sÁ   ø€ € € € € ð3ð 3°Cð 3ÀTð 3ð 3ð 3ð 3ð 3ð 3ð 26ØKOðð à”|ðð ”Lðð ! ¤Ô.ð	ð
 & e¨E¬L¸%¼,Ð,FÔ&GÔHðð 
Œðð ð ð ð ð ð ð r%   r(  c                   óŠ   ‡ — e Zd ZU ej        ed<   d	defˆ fd„Zd
d„Zd„ Z	 ej
        ¦   «         ed„ ¦   «         ¦   «         Zˆ xZS )ÚQwen3VLTextRotaryEmbeddingrã   Nrº   c                 ó  •— t          ¦   «                              ¦   «          t          |d¦  «        r(|j        �!|j                             dd¦  «        | _        nd| _        |j        | _        |j        | _        || _	        t          | j                 | _        |                      | j	        |¦  «        \  }| _        |                      d|d¬¦  «         | j        | _        |j        pi                      dg d¢¦  «        | _        d S )	NÚrope_scalingÚ	rope_typeÚdefaultrã   Frè   Úmrope_section)é   é   r>  )r°   r±   rA   r9  Úgetr:  Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrº   r   Úrope_init_fnÚattention_scalingrì   rã   Úoriginal_inv_freqr<  )r¹   rº   rH   rã   r»   s       €r#   r±   z#Qwen3VLTextRotaryEmbedding.__init__�  sò   ø€ Ý‰Œ×ÒÑÔÐÝ�6˜>Ñ*Ô*ð 	'¨vÔ/BÐ/NØ#Ô0×4Ò4°[À)ÑLÔLˆDŒNˆNà&ˆDŒNØ"(Ô"@ˆÔØ$*Ô$BˆÔ!àˆŒÝ/°´Ô?ˆÔà+/×+<Ò+<¸T¼[È&Ñ+QÔ+QÑ(ˆ�$Ô(Ø×Ò˜Z¨¸eÐÑDÔDÐDØ!%¤ˆÔð %Ô1Ð7°R×<Ò<¸_ÈlÈlÈlÑ[Ô[ˆÔÐÐr%   rÐ   c                 óh   — |                       | j        d ¦  «        \  }| _        || _        || _        d S r    )rC  rº   rD  rã   rE  rî   s     r#   rï   z)Qwen3VLTextRotaryEmbedding.reset_inv_freq°  s6   € Ø+/×+<Ò+<¸T¼[È$Ñ+OÔ+OÑ(ˆ�$Ô(Ø ˆŒØ!)ˆÔÐÐr%   c                 óÀ   — |d                               ¦   «         }t          dd¬¦  «        D ]1\  }}||         dz  }t          ||d¦  «        }||d|f         |d|f<   Œ2|S )ac  Apply interleaved MRoPE to 3D rotary embeddings.
        Reorganizes frequency layout from chunked [TTT...HHH...WWW] to
        interleaved [THTHWHTHW...TT], preserving frequency continuity.
        args:
            x: (3, bs, seq_len, head_dim // 2)
            mrope_section: (3,)
        returns:
            x_t: (bs, seq_len, head_dim // 2)
        r   )r   rh   r   )rÅ   ri   .)r�   Ú	enumerateÚslice)r¹   rô   r<  Úfreqs_tr>   Úoffsetr!  Úidxs           r#   Úapply_interleaved_mropez2Qwen3VLTextRotaryEmbedding.apply_interleaved_mropeµ  sx   € ð ˜”(—.’.Ñ"Ô"ˆÝ$ V°1Ð5Ñ5Ô5ð 	5ð 	5‰KˆC�Ø" 3Ô'¨!Ñ+ˆFÝ˜ ¨Ñ*Ô*ˆCØ % c¨3° mÔ 4ˆG�C˜�HÑÐØˆr%   c                 óú  — |j         dk    r(|d                              d|j        d         d¦  «        }t          dk    r`| j        d d d d …d f                              ¦   «                              |j        ¬¦  «                             d|j        d         dd¦  «        }n_| j        d d d d …d f                              ¦   «                              |j        ¬¦  «                             d|j        d         dd¦  «        }|d d …d d …d d d …f                              ¦   «         }t          |j        j
        t          ¦  «        r|j        j
        d	k    r|j        j
        nd
}t          j        |d¬¦  «        5  |                     ¦   «         |                     ¦   «         z                       dd¦  «        }~~|                      || j        ¦  «        }|                     ¦   «         }|                     ¦   «          |                     | j        ¦  «         |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |j        ¬¦  «        }|                     |j        ¬¦  «        }||fS )Nrh   ©N.ri   r   r]   Ú1©rH   r   ÚmpsrF   F)Údevice_typeÚenabledrÛ   )r¿   r{   rQ   r   rã   rë   rS   rH   rE  r6   rX   r5  r?   Úautocastrj   rM  r<  r�   Úsin_rŽ   rD  rG   )	r¹   rˆ   Úposition_idsÚinv_freq_expandedÚposition_ids_expandedrS  rô   r�   r‘   s	            r#   rÈ   z"Qwen3VLTextRotaryEmbedding.forwardÆ  s¸  € ð
 Ô Ò!Ð!Ø'¨	Ô2×9Ò9¸!¸\Ô=OÐPQÔ=RÐTVÑWÔWˆLÝ˜CÒÐØ $¤¨d°D¸!¸!¸!¸TÐ.AÔ B× HÒ HÑ JÔ J× MÒ MÐUVÔU]Ð MÑ ^Ô ^× eÒ eÐfgÐiuÔi{Ð|}Ôi~ð  ACð  EFñ  !Gô  !GÐÐà $Ô 6°t¸TÀ1À1À1ÀdÐ7JÔ K× QÒ QÑ SÔ S× VÒ VÐ^_Ô^fÐ VÑ gÔ g× nÒ nÐopÐr~ô  sEð  FGô  sHð  JLð  NOñ  !Pô  !PÐà ,¨Q¨Q¨Q°°°°4¸¸¸¨]Ô ;× AÒ AÑ CÔ CÐå'1°!´(´-ÅÑ'EÔ'EÐkÈ!Ì(Ì-Ð[`ÒJ`ÐJ`�a”h”m�mÐfkˆÝŒ^¨¸UÐCÑCÔCð 	/ð 	/Ø&×,Ò,Ñ.Ô.Ð1F×1LÒ1LÑ1NÔ1NÑN×YÒYÐZ[Ð]^Ñ_Ô_ˆEØ!Ð#8Ø×0Ò0°¸Ô8JÑKÔKˆEØ—)’)‘+”+ˆCØ�JŠJ‰LŒLˆLØ�HŠH�TÔ+Ñ,Ô,Ð,Ø�JŠJ�tÔ-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð �fŠf˜1œ7ˆfÑ#Ô#ˆØ�hŠh˜QœWˆhÑ%Ô%ˆØ�Cˆxˆs   Å5B7H8È8H<È?H<r    rß   )rÉ   rÊ   rË   r?   rà   rõ   r   r±   rï   rM  Úno_gradr   rÈ   rÌ   rÍ   s   @r#   r7  r7  š  s³   ø€ € € € € € ØŒlÐÐÑð\ð \Ð0ð \ð \ð \ð \ð \ð \ð&*ð *ð *ð *ð
ð ð ð" €U„]�_„_Øðð ñ Ôñ „_ðð ð ð ð r%   r7  ÚRMSNormc                   óT   ‡ — e Zd Zd	deddfˆ fd„Zdej        dej        fd„Zd„ Zˆ xZ	S )
ÚQwen3VLTextRMSNormrù   rû   rÐ   Nc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zA
        Qwen3VLTextRMSNorm is equivalent to T5LayerNorm
        N)r°   r±   r²   Ú	Parameterr?   rr   rÜ   Úvariance_epsilon)r¹   r0   rû   r»   s      €r#   r±   zQwen3VLTextRMSNorm.__init__å  sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐr%   r}   c                 óv   — t          |¦  «        }t          j        || j        j        | j        | j        ¦  «        S r    )r;   ÚFÚrms_normrÜ   rQ   r`  )r¹   r}   s     r#   rÈ   zQwen3VLTextRMSNorm.forwardí  s/   € Ý$ ]Ñ3Ô3ˆÝŒz˜-¨¬Ô):¸D¼KÈÔI^Ñ_Ô_Ð_r%   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)r&  rÜ   rQ   r`  ©r¹   s    r#   Ú
extra_reprzQwen3VLTextRMSNorm.extra_reprñ  s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr%   )rù   )
rÉ   rÊ   rË   rë   r±   r?   rà   rÈ   rf  rÌ   rÍ   s   @r#   r]  r]  ã  s’   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð` U¤\ð `°e´lð `ð `ð `ð `ðJð Jð Jð Jð Jð Jð Jr%   r]  c                 óŽ   — t          | ¦  «        } t          |¦  «        }t          | |||¦  «        } t          ||||¦  «        }| |fS )aÛ  Applies Rotary Position Embedding to the query and key tensors.

    Args:
        q (`torch.Tensor`): The query tensor.
        k (`torch.Tensor`): The key tensor.
        cos (`torch.Tensor`): The cosine part of the rotary embedding.
        sin (`torch.Tensor`): The sine part of the rotary embedding.
        position_ids (`torch.Tensor`, *optional*):
            Deprecated and unused.
        unsqueeze_dim (`int`, *optional*, defaults to 1):
            The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
            sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
            that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
            k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
            cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
            the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
    Returns:
        `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
    )r;   r—   )rŸ   r    r�   r‘   rW  r’   s         r#   Úapply_rotary_pos_embrh  õ  sI   € õ( 	�Q‰Œ€AÝ�Q‰Œ€AÝ˜a  c¨=Ñ9Ô9€AÝ˜a  c¨=Ñ9Ô9€AØˆaˆ4€Kr%   c                   óŽ  ‡ — e Zd ZdZdedefˆ fd„Z	 	 	 	 	 	 ddej        d	e	ej        ej        f         d
e
ej                 de
e         de
ej                 de
ej                 de
e         dededee         de	ej        e
ej                 f         fd„Z	 ddej        d	e	ej        ej        f         dedededej        fd„Zˆ xZS )ÚQwen3VLTextAttentionz=Multi-headed attention from 'Attention Is All You Need' paperrº   Ú	layer_idxc                 ó.  •— t          ¦   «                              ¦   «          || _        || _        t	          |d|j        |j        z  ¦  «        | _        |j        |j        z  | _	        | j        dz  | _
        |j        | _        d| _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        | j        z  |j        |j        ¬¦  «        | _        t)          | j        |j        ¬¦  «        | _        t)          | j        |j        ¬¦  «        | _        d S )Nr�   r  Tr®   rú   )r°   r±   rº   rk  Úgetattrr0   Únum_attention_headsr�   r€   r  r  r  r  r²   r³   Úattention_biasÚq_projÚk_projÚv_projÚo_projr]  Úrms_norm_epsÚq_normÚk_norm©r¹   rº   rk  r»   s      €r#   r±   zQwen3VLTextAttention.__init__  s}  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒÝ ¨
°FÔ4FÈ&ÔJdÑ4dÑeÔeˆŒØ$*Ô$>À&ÔB\Ñ$\ˆÔ!Ø”} dÑ*ˆŒØ!'Ô!9ˆÔØˆŒå”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ&¨¬Ñ6¸Ô8JÐQWÔQfð
ñ 
ô 
ˆŒõ )¨¬¸FÔ<OÐPÑPÔPˆŒÝ(ØŒM˜vÔ2ð
ñ 
ô 
ˆŒˆˆr%   NFr   r}   r  rk   Úpast_key_valuesÚcache_positionrb   Úar_cacheÚar_cache_pinnedrd   r)   rÐ   c
                 ó   — t          |¦  «        }|j        d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «        }|g}d }|                      |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «        }|g}d }|                      |¦  «                             dd¦  «        }|  	                    |¦  «                             |¦  «                             dd¦  «        }~|\  }}|g}|g}d x}}t          ||||¦  «        \  }}|�'|||dœ}|                     ||| j        |¦  «        \  }}~|g}d }t          |dd¦  «        }|g}d }t          |dd¦  «        }|g}d }t          |dd¦  «        }|g}d }t          || j        ¦  «        }|g}d }t          || j        ¦  «        }|�Z|	dk    rT|                     dd¦  «        s>t#          |d d …d |	…f         |¦  «        |d<   t#          |d d …d |	…f         |¦  «        |d	<   |||g}~~~|�t%          ||| j        ¦  «        }n>|d u }t)          ||d         | j        j        ¦  «        }t/          ||| j        |d
¬¦  «        }d } |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Nr]   r   rh   )r‘   r�   ry  r   ÚbuiltFr    r¡   T)rk   rš   rv   rœ   )r;   rQ   r�   rp  rt   ru  rj   rq  rv  rr  rh  Úupdaterk  r‰   r‚   r  r?  rU   r©   r  rn   rº   rn  r	   r|   r„   rs  )r¹   r}   r  rk   rx  ry  rb   rz  r{  rd   r)   Úinput_shapeÚhidden_shaper  r  r  r  r  r�   r‘   Úcache_kwargsÚ
value_listrž   r$  rv   Úattn_weightss                             r#   rÈ   zQwen3VLTextAttention.forward.  sF  € õ % ]Ñ3Ô3ˆØ#Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔDˆØ"�^ˆ
ØˆØ—{’{ :Ñ.Ô.×8Ò8¸¸AÑ>Ô>ˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔBˆ
Ø�<ˆØˆ
Ø—[’[ Ñ*Ô*×4Ò4°Q¸Ñ:Ô:ˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØà&‰ˆˆSØ"�^ˆ
Ø�<ˆØ$(Ð(ˆ�zÝ#7¸
ÀHÈcÐSVÑ#WÔ#WÑ ˆ�jàÐ&à#&¨sÀnÐUÐUˆLØ'6×'=Ò'=¸jÈ,ÐX\ÔXfÐhtÑ'uÔ'uÑ$ˆJ˜Øà"�^ˆ
ØˆÝ,¨Z¸¸AÑ>Ô>ˆØ�<ˆØˆ
Ý*¨8°Q¸Ñ:Ô:ˆ
Ø"�^ˆ
ØˆÝ,¨Z¸¸AÑ>Ô>ˆØ�<ˆØˆ
Ý1°(¸DÔ<UÑVÔVˆ
Ø"�^ˆ
ØˆÝ3°JÀÔ@YÑZÔZˆØÐ F¨Q¢J J°x·|²|ÀGÈUÑ7SÔ7S JÝ-¨j¸¸¸¸G¸V¸G¸Ô.DÀoÑVÔVˆH�S‰MÝ-¨l¸1¸1¸1¸g¸v¸g¸:Ô.FÈÑXÔXˆH�S‰MØ  *¨lÐ;ˆØ˜* lØÐ"Ý4°X¸{ÈDÌLÑYÔYˆKˆKà# tÐ+ˆFÝ>¸~È{Ð[]ÌÐ`dÔ`kÔ`ñ  Aô  AˆNÝ'¨ÀÐ_cÔ_kÐtzð  GKð  Lñ  Lô  LˆKàˆØ)�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r%   c                 ób  — t          |¦  «        }|j        d         }|j        d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «        }	|	g}
d }	|                      |
¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «        }|g}d }|                      |¦  «                             dd¦  «        }|  	                    |¦  «                             |¦  «                             dd¦  «        }~|\  }}|d d …|d …f         }|d d …|d …f         }|	g}
|g}d x}	}t          |
|||¦  «        \  }	}|	g}
d }	t          |
dd¦  «        }	|g}d }t          |dd¦  «        }|g}d }t          |dd¦  «        }|g}d }t          || j        ¦  «        }|g}d }t          || j        ¦  «        }||z   }|                     |j        d         ||j        d         |j        d         ¦  «        }|                     |j        d         ||j        d         |j        d         ¦  «        }t          |d d …d |…f         |d         |¦  «         t          |d d …d |…f         |d         |¦  «         |d d …|d …f                              |¦  «         |d d …|d …f                              |¦  «         ~~|	||g}~	~~t#          || j        dd	¬
¦  «        }~ |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        S )Nr   r]   rh   r   ri   r    r¡   FTr�   )r;   rQ   r�   rp  rt   ru  rj   rq  rv  rr  rh  r‰   r‚   r  rÀ   r[   rR   r	   r  r|   r„   rs  )r¹   r}   r  rz  rd   r{  Ú
suffix_lenr  r€  r  r  r  r  r  r�   r‘   r‚  Ú	total_lenÚkey_fullÚ
value_fullr£   r$  s                         r#   Úforward_with_ar_cachez*Qwen3VLTextAttention.forward_with_ar_cachev  s„  € õ % ]Ñ3Ô3ˆØ"Ô(¨Ô+ˆ
Ø#Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔDˆØ"�^ˆ
ØˆØ—{’{ :Ñ.Ô.×8Ò8¸¸AÑ>Ô>ˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔBˆ
Ø�<ˆØˆ
Ø—[’[ Ñ*Ô*×4Ò4°Q¸Ñ:Ô:ˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØØ&‰ˆˆSØ�!�!�!�V�W�W�*ŒoˆØ�!�!�!�V�W�W�*ŒoˆØ"�^ˆ
Ø�<ˆØ$(Ð(ˆ�zÝ#7¸
ÀHÈcÐSVÑ#WÔ#WÑ ˆ�jà"�^ˆ
ØˆÝ,¨Z¸¸AÑ>Ô>ˆØ�<ˆØˆ
Ý*¨8°Q¸Ñ:Ô:ˆ
Ø"�^ˆ
ØˆÝ,¨Z¸¸AÑ>Ô>ˆØ�<ˆØˆ
Ý1°(¸DÔ<UÑVÔVˆ
Ø"�^ˆ
ØˆÝ3°JÀÔ@YÑZÔZˆà˜ZÑ'ˆ	Ø×'Ò'¨
Ô(8¸Ô(;¸YÈ
ÔHXÐYZÔH[Ð]gÔ]mÐnoÔ]pÑqÔqˆØ!×+Ò+¨LÔ,>¸qÔ,AÀ9ÈlÔN`ÐabÔNcÐeqÔewÐxyÔezÑ{Ô{ˆ
Ý˜H Q Q Q¨¨¨ ZÔ0°(¸3´-ÀÑQÔQÐQÝ˜J q q q¨'¨6¨' zÔ2°H¸S´MÀ?ÑSÔSÐSØ����F�G�G�Ô×"Ò" :Ñ.Ô.Ð.Ø�1�1�1�f�g�g�:Ô×$Ò$ \Ñ2Ô2Ð2Ø˜à  (¨JÐ7ˆØ˜( JÝ# H¸D¼LÐQVÐbfÐgÑgÔgˆØØ)�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ�{Š{˜;Ñ'Ô'Ð'r%   )NNNNFr   r  )rÉ   rÊ   rË   Ú__doc__r   r^   r±   r?   rà   r&  r   r   Ú
LongTensorÚdictrW   r   r   rÈ   r‰  rÌ   rÍ   s   @r#   rj  rj    s®  ø€ € € € € ØGÐGð
Ð0ð 
¸Sð 
ð 
ð 
ð 
ð 
ð 
ð@ ,0Ø59Ø.2Ø#'Ø %ØðF)ð F)à”|ðF)ð # 5¤<°´Ð#=Ô>ðF)ð ! ¤Ô.ð	F)ð
 " %œðF)ð ! Ô!1Ô2ðF)ð ˜eœlÔ+ðF)ð ˜4”.ðF)ð ðF)ð ðF)ð Ð-Ô.ðF)ð 
ˆuŒ|˜X e¤lÔ3Ð3Ô	4ðF)ð F)ð F)ð F)ð\ !&ð=(ð =(à”|ð=(ð # 5¤<°´Ð#=Ô>ð=(ð ð	=(ð
 ð=(ð ð=(ð 
Œð=(ð =(ð =(ð =(ð =(ð =(ð =(ð =(r%   rj  c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚQwen3VLTextMLPc                 ó˜  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _        t          j        | j        | j        d¬¦  «        | _	        t          |j                 | _        d S ©NFr®   )r°   r±   rº   r0   r1   r²   r³   Ú	gate_projÚup_projÚ	down_projr
   r¶   r·   r¸   s     €r#   r±   zQwen3VLTextMLP.__init__·  s¦   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ!Ô-ˆÔØ!'Ô!9ˆÔÝœ 4Ô#3°TÔ5KÐRWÐXÑXÔXˆŒÝ”y Ô!1°4Ô3IÐPUÐVÑVÔVˆŒÝœ 4Ô#9¸4Ô;KÐRWÐXÑXÔXˆŒÝ˜VÔ.Ô/ˆŒˆˆr%   c                 óò   — t          |¦  «        }|                      |                      |¦  «        ¦  «        }|                      |¦  «        }~|                     |¦  «         ~|                      |¦  «        S r    )r;   r·   r‘  r’  rŽ   r“  )r¹   rˆ   rÄ   Úups       r#   Ú_forward_chunkzQwen3VLTextMLP._forward_chunkÁ  s`   € Ý˜‰OŒOˆØ—’˜TŸ^š^¨AÑ.Ô.Ñ/Ô/ˆØ�\Š\˜!‰_Œ_ˆØØ�Š�B‰ŒˆØØ�~Š~˜fÑ%Ô%Ð%r%   c           
      ó6  — t          |¦  «        }|j        dk    r|j        d         n|j        d         }t          || j        | j        ¦  «        }|dk    r|g}d }|                      |¦  «        S  |j        g |j        d d…         ¢| j        ‘R Ž }t          d||¦  «        D ]v}| 	                    d|t          |||z
  ¦  «        ¦  «        }|                      |¦  «        }| 	                    d||j        d         ¦  «                             |¦  «         ~~Œw|S r½   )r;   r¿   rQ   r3   r0   r1   r–  rÀ   rÁ   rÂ   r.   rR   )	r¹   rˆ   r/   r2   r…   rC   rÅ   rÆ   rÇ   s	            r#   rÈ   zQwen3VLTextMLP.forwardÊ  s  € Ý˜‰OŒOˆØ!"¤¨!¢ �!”'˜"”+�+°´¸´ˆÝ$ W¨dÔ.>ÀÔ@VÑWÔWˆ
Ø˜Š?ˆ?Ø�SˆFØˆAØ×&Ò& vÑ.Ô.Ð.ØˆaŒkÐ:˜1œ7 3 B 3œ<Ð:¨Ô)9Ð:Ð:Ð:ˆÝ˜1˜g zÑ2Ô2ð 	!ð 	!ˆEØ—H’H˜R ­¨J¸À%¹Ñ(HÔ(HÑIÔIˆEØ×+Ò+¨EÑ2Ô2ˆIØ�JŠJ�r˜5 )¤/°"Ô"5Ñ6Ô6×<Ò<¸YÑGÔGÐGØ�y�yØˆ
r%   )rÉ   rÊ   rË   r±   r–  rÈ   rÌ   rÍ   s   @r#   rŽ  rŽ  ¶  sV   ø€ € € € € ð0ð 0ð 0ð 0ð 0ð&ð &ð &ðð ð ð ð ð ð r%   rŽ  c                   ó  ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 	 	 	 	 ddej        deej        ej        f         d	e	ej                 d
e	ej
                 de	e         de	e         de	ej
                 de	e         dededee         dej        fd„Zˆ xZS )ÚQwen3VLTextDecoderLayerrº   rk  c                 ó4  •— t          ¦   «                              ¦   «          |j        | _        t          ||¬¦  «        | _        t          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        t          |j        |j        ¬¦  «        | _
        d S )N)rº   rk  rú   )r°   r±   r0   rj  Ú	self_attnrŽ  r/  r]  rt  Úinput_layernormÚpost_attention_layernormrw  s      €r#   r±   z Qwen3VLTextDecoderLayer.__init__Ü  s„   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔå-°VÀyÐQÑQÔQˆŒå! &Ñ)Ô)ˆŒÝ1°&Ô2DÈ&ÔJ]Ð^Ñ^Ô^ˆÔÝ(:¸6Ô;MÐSYÔSfÐ(gÑ(gÔ(gˆÔ%Ð%Ð%r%   NFr   r}   r  rk   rW  rx  Ú	use_cachery  rz  r{  rd   r)   rÐ   c                 ó  — t          |¦  «        }|��%|
dk    �r|                     dd¦  «        �r|
|j        d         k    rt          ||d         |	¦  «         |S |d d …|
d …f         }|}|                      |g¦  «        }|g}d }| j                             ||||
|	¬¦  «        }|                     |¦  «         ~~|d d …|
d …f         }|}|                      |g¦  «        }|g}d }|  	                    |¦  «        }|                     |¦  «         ~~t          |d d …d |
…f         |d         |	¦  «         |S |}|                      |¦  «        }|g}d } | j        d	|||||||||	|
dœ
|¤Ž\  }}|                     |¦  «        }~|}|                      |¦  «        }|g}d }|  	                    |¦  «        }|                     |¦  «        }|�@|
dk    r:|                     dd¦  «        s$t          |d d …d |
…f         |	¦  «        |d<   d|d<   |S )
Nr   r}  Fr   rÄ   )r}   r  rz  rd   r{  )
r}   rk   rW  rx  rž  ry  r  rz  r{  rd   Tr!   )r;   r?  rQ   r[   rœ  r›  r‰  r1  r�  r/  rU   )r¹   r}   r  rk   rW  rx  rž  ry  rz  r{  rd   r)   ÚsuffixÚresidualÚsuffix_listÚhidden_states_listÚ_s                    r#   rÈ   zQwen3VLTextDecoderLayer.forwardæ  s—  € õ % ]Ñ3Ô3ˆØÑ F¨Q¢J¡J°8·<²<ÀÈÑ3OÔ3O¡JØ˜Ô,¨QÔ/Ò/Ð/Ý# M°8¸HÔ3EÀÑWÔWÐWØ$Ð$à" 1 1 1 f g g :Ô.ˆFØˆHØ×)Ò)¨6¨(Ñ3Ô3ˆFØ!˜(ˆKØˆFØ”^×9Ò9Ø)Ø$7Ø!ØØ /ð :ñ ô ˆFð �MŠM˜&Ñ!Ô!Ð!Ø˜&à" 1 1 1 f g g :Ô.ˆFØˆHØ×2Ò2°F°8Ñ<Ô<ˆFØ!˜(ˆKØˆFØ—X’X˜kÑ*Ô*ˆFØ�MŠM˜&Ñ!Ô!Ð!Ø˜&Ý ¨a¨a¨a°°&°¨jÔ 9¸8ÀHÔ;MÈÑ_Ô_Ð_Ø Ð à ˆØ×,Ò,¨]Ñ;Ô;ˆà+˜_ÐØˆØ)˜4œ>ð 
Ø,Ø)Ø%Ø+ØØ)Ø 3ØØ+Øð
ð 
ð ð
ð 
Ñˆ�qð !Ÿš mÑ4Ô4ˆØð !ˆØ×5Ò5°mÑDÔDˆØ+˜_ÐØˆØŸšÐ!3Ñ4Ô4ˆØ Ÿš mÑ4Ô4ˆØÐ F¨Q¢J J°x·|²|ÀGÈUÑ7SÔ7S JÝ!2°=ÀÀÀÀGÀVÀGÀÔ3LÈoÑ!^Ô!^ˆH�XÑØ $ˆH�WÑØÐr%   )NNNFNNFr   )rÉ   rÊ   rË   r   r^   r±   r?   rà   r&  r   r‹  r   rW   rŒ  r   r   rÈ   rÌ   rÍ   s   @r#   r™  r™  Û  sM  ø€ € € € € ðhÐ0ð h¸Sð hð hð hð hð hð hð 26Ø37Ø+/Ø$)Ø59Ø#'Ø %ØðMð Mà”|ðMð # 5¤<°´Ð#=Ô>ðMð ! ¤Ô.ð	Mð
 ˜uÔ/Ô0ðMð " %œðMð ˜D”>ðMð ! Ô!1Ô2ðMð ˜4”.ðMð ðMð ðMð Ð+Ô,ðMð 
ŒðMð Mð Mð Mð Mð Mð Mð Mr%   r™  zJ
    Base class for Llava outputs, with hidden states and attentions.
    )Úcustom_introc                   ó  — e Zd ZU dZdZeej                 ed<   dZ	ee
         ed<   dZeeej                          ed<   dZeeej                          ed<   dZeej                 ed<   dZeej                 ed<   dZee         ed	<   dS )
ÚQwen3VLModelOutputWithPasta[  
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    rope_deltas (`torch.LongTensor` of shape `(batch_size, )`, *optional*):
        The rope index difference between sequence length and multimodal rope.
    NÚlast_hidden_staterx  r}   Ú
attentionsÚrope_deltasÚx_predÚmid_results)rÉ   rÊ   rË   rŠ  r¨  r   r?   ÚFloatTensorrõ   rx  r   r}   r&  r©  rª  r‹  r«  r¬  r7   r!   r%   r#   r§  r§  6  sÉ   € € € € € € ðð ð 6:Ð�x Ô 1Ô2Ð9Ð9Ñ9Ø'+€O�X˜e”_Ð+Ð+Ñ+Ø8<€M�8˜E %Ô"3Ô4Ô5Ð<Ð<Ñ<Ø59€J�˜˜uÔ0Ô1Ô2Ð9Ð9Ñ9Ø.2€K�˜%Ô*Ô+Ð2Ð2Ñ2Ø*.€FˆH�UÔ&Ô'Ð.Ð.Ñ.Ø"&€K�˜$”Ð&Ð&Ñ&Ð&Ð&r%   r§  c                   óH   — e Zd ZU eed<   dZdZddgZdZdZ	dZ
dZdZeedœZd	S )
ÚQwen3VLPreTrainedModelrº   ÚmodelFr™  r(  rx  T)r}   r©  N)rÉ   rÊ   rË   r   rõ   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_attention_backendr™  rj  Ú_can_record_outputsr!   r%   r#   r¯  r¯  P  sf   € € € € € € àÐÐÑØÐØ&+Ð#Ø2Ð4HÐIÐØ"3ÐØ ÐØ€Nà!ÐØ"&Ðà0Ø*ðð ÐÐÐr%   r¯  c                   óŽ   ‡ — e Zd ZU eed<   dgZdˆ fd„Zdej        dej        fd„Z	d„ Z
d	ej        dej        dej        fd
„Zˆ xZS )ÚQwen3VLVisionModelrº   r(  rÐ   Nc                 óÚ  •‡—  t          ¦   «         j        ‰g|¢R i |¤Ž ‰j        | _        ‰j        | _        | j        | j        z  | _        t          ‰¬¦  «        | _        t          j        ‰j	        ‰j
        ¦  «        | _        t          ‰j	        dz  ¦  «        | _        ‰j
        ‰j        z  }t          |dz  ¦  «        | _        t          j        ˆfd„t%          ‰j        ¦  «        D ¦   «         ¦  «        | _        t+          ‰d¬¦  «        | _        ‰j        | _        t          j        ˆfd„t%          t1          ‰j        ¦  «        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nr+  g      à?rh   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r!   )r(  ©Ú.0r¤  rº   s     €r#   ú
<listcomp>z/Qwen3VLVisionModel.__init__.<locals>.<listcomp>v  s"   ø€ Ð$]Ð$]Ð$]ÀAÕ%7¸Ñ%?Ô%?Ð$]Ð$]Ð$]r%   F©rº   rý   c                 ó2   •— g | ]}t          ‰d ¬¦  «        ‘ŒS )TrÁ  )r÷   r¾  s     €r#   rÀ  z/Qwen3VLVisionModel.__init__.<locals>.<listcomp>~  s@   ø€ ð ð ð ð
 õ	 )Ø!Ø)-ðñ ô ðð ð r%   )r°   r±   rü   rÔ   Úspatial_merge_unitrÏ   Úpatch_embedr²   Ú	EmbeddingÚnum_position_embeddingsr0   Ú	pos_embedr^   Únum_grid_per_siderm   râ   r  Ú
ModuleListrÁ   ÚdepthÚblocksr÷   ÚmergerÚdeepstack_visual_indexesr&   Údeepstack_merger_listÚgradient_checkpointing)r¹   rº   Úinputsr)   r�   r»   s    `   €r#   r±   zQwen3VLVisionModel.__init__f  s|  øø€ Ø�‰ŒÔ˜Ð3 &Ð3Ð3Ð3¨FÐ3Ð3Ð3Ø"(Ô";ˆÔØ Ô+ˆŒØ"&Ô"9¸DÔ<SÑ"SˆÔå2Øð
ñ 
ô 
ˆÔõ œ fÔ&DÀfÔFXÑYÔYˆŒÝ!$ VÔ%CÀSÑ%HÑ!IÔ!IˆÔàÔ%¨Ô)9Ñ9ˆÝ:¸8Àq¹=ÑIÔIˆÔå”mÐ$]Ð$]Ð$]Ð$]ÍÈvÌ|ÑI\ÔI\Ð$]Ñ$]Ô$]Ñ^Ô^ˆŒÝ.ØØ!&ð
ñ 
ô 
ˆŒð
 )/Ô(GˆÔ%Ý%'¤]ðð ð ð õ
 �s 6Ô#BÑCÔCÑDÔDðñ ô ñ&
ô &
ˆÔ"ð ',ˆÔ#Ð#Ð#r%   Úgrid_thwc                 ó�  — | j         }t          |d d …dd …f                              ¦   «                              ¦   «         ¦  «        }|                      |¦  «        }|j        }t          t          j        |d¬¦  «                             ¦   «                              ¦   «         ¦  «        }t          j	        |dft          j
        |¬¦  «        }d}|D �]V\  }	}
}|
|z  ||z  }}t          j        ||¬¦  «        }t          j        ||¬¦  «        }t          j        ||¬¦  «        }t          j        ||¬¦  «        }|d d …d d d f         |z  |d d d d …d f         z   }|d d d …d d f         |z  |d d d d d …f         z   }|                     ||||¦  «                             d¦  «        }|                     ||||¦  «                             d¦  «        }t          j        ||fd¬¦  «        }|	dk    r|                     |	d¦  «        }|j        d         }|||||z   …<   ||z  }~~~~~~~�ŒX||         }~~|                     d¦  «        S )Nr   r=   rh   rp   r   rQ  r]   )rü   r^   r-   r`   r  rH   r?   Úprodr_   rP   Úlongrê   r{   r|   ÚstackÚrepeatrQ   Úflatten)r¹   rÑ  Ú
merge_sizeÚmax_hwÚ
freq_tablerH   Útotal_tokensÚpos_idsrK  Ú
num_framesÚheightÚwidthÚmerged_hÚmerged_wÚ
block_rowsÚ
block_colsÚ	intra_rowÚ	intra_colÚrow_idxÚcol_idxÚcoordsÚ
num_tokensÚ
embeddingss                          r#   Úrot_pos_embzQwen3VLVisionModel.rot_pos_emb‰  s}  € ØÔ,ˆ
å�X˜a˜a˜a   ˜e”_×(Ò(Ñ*Ô*×/Ò/Ñ1Ô1Ñ2Ô2ˆØ×(Ò(¨Ñ0Ô0ˆ
ØÔ"ˆå�5œ: h°AÐ6Ñ6Ô6×:Ò:Ñ<Ô<×AÒAÑCÔCÑDÔDˆÝ”+˜|¨QÐ/µu´zÈ&ÐQÑQÔQˆàˆØ)1ð 	Wñ 	WÑ%ˆJ˜ Ø!'¨:Ñ!5°uÀ
Ñ7J�hˆHåœ h°vÐ>Ñ>Ô>ˆJÝœ h°vÐ>Ñ>Ô>ˆJÝœ Z¸Ð?Ñ?Ô?ˆIÝœ Z¸Ð?Ñ?Ô?ˆIð !    D¨$°Ð!4Ô5¸
ÑBÀYÈtÐUYÐ[\Ð[\Ð[\Ð^bÐObÔEcÑcˆGØ   q q q¨$°Ð!4Ô5¸
ÑBÀYÈtÐUYÐ[_ÐabÐabÐabÐObÔEcÑcˆGà—n’n X¨x¸ÀZÑPÔP×XÒXÐY[Ñ\Ô\ˆGØ—n’n X¨x¸ÀZÑPÔP×XÒXÐY[Ñ\Ô\ˆGå”[ '¨7Ð!3¸Ð<Ñ<Ô<ˆFà˜AŠ~ˆ~ØŸš z°1Ñ5Ô5�àœ aœˆJØ4:ˆG�F˜V jÑ0Ð0Ñ1Ø�jÑ ˆFØ˜J¨	°9¸gÀwÐPVÑPVà Ô(ˆ
Ø˜Ø×!Ò! !Ñ$Ô$Ð$r%   c           	      ó>
  — |d d …df         |d d …df         |d d …df         }}}d„ t          d¦  «        D ¦   «         }d„ t          d¦  «        D ¦   «         }t          |||¦  «        D �]Ñ\  }}}	t          j        d| j        dz
  || j        j        j        ¬¦  «        }
t          j        d| j        dz
  |	| j        j        j        ¬¦  «        }|
                     ¦   «         }|                     ¦   «         }|
                     ¦   «         dz    	                    | j        dz
  ¬¦  «        }|                     ¦   «         dz    	                    | j        dz
  ¬¦  «        }|
|z
  }||z
  }|| j        z  }|| j        z  }|d          j
        |d          z                        ¦   «         |d          j
        |d          z                        ¦   «         |d          j
        |d          z                        ¦   «         |d          j
        |d          z                        ¦   «         g}d|z
  d          j
        d|z
  d          z                       ¦   «         d|z
  d          j
        |d          z                       ¦   «         |d          j
        d|z
  d          z                       ¦   «         |d          j
        |d          z                       ¦   «         g}t          d¦  «        D ]h}||                              ||                              ¦   «         ¦  «         ||                              ||                              ¦   «         ¦  «         Œi�ŒÓt          j        |t          j        | j        j        j        ¬	¦  «        }t          j        || j        j        j        | j        j        j        ¬	¦  «        }|                      |¦  «        }~|                     |d d …d d …d f         ¦  «         ~|d                              ¦   «         }|                     |d         ¦  «                             |d         ¦  «                             |d
         ¦  «         ~|                     d„ t          ||¦  «        D ¦   «         ¦  «        }g }| j        j        }t          ||||¦  «        D ]~\  }}}}	|                     |d¦  «        }|                     |||z  ||	|z  |d¦  «                             ddd
ddd¦  «                             dd¦  «        }|                     |¦  «         Œ~t7          |d¬¦  «        S )Nr   r   rh   c                 ó   — g | ]}g ‘ŒS r!   r!   ©r¿  r¤  s     r#   rÀ  zAQwen3VLVisionModel.fast_pos_embed_interpolate.<locals>.<listcomp>´  s   € Ð)Ð)Ð)˜1�BÐ)Ð)Ð)r%   rg   c                 ó   — g | ]}g ‘ŒS r!   r!   rî  s     r#   rÀ  zAQwen3VLVisionModel.fast_pos_embed_interpolate.<locals>.<listcomp>µ  s   € Ð,Ð,Ð,˜a�rÐ,Ð,Ð,r%   rQ  )r-   rp   ri   c                 ó   — g | ]
\  }}||z  ‘ŒS r!   r!   )r¿  ÚhÚws      r#   rÀ  zAQwen3VLVisionModel.fast_pos_embed_interpolate.<locals>.<listcomp>ä  s    € Ð2[Ð2[Ð2[¹T¸QÀ°1°q±5Ð2[Ð2[Ð2[r%   r]   é   r=   )rÁ   Úzipr?   ÚlinspacerÈ  rÇ  rÜ   rH   r^   ÚclipÚTr×  Úextendr  r:   rÔ  rG   rŽ   r�   r1  Úsplitrº   rü   rÖ  rt   r  ÚappendrD   )r¹   rÑ  Úgrid_tsÚgrid_hsÚgrid_wsÚidx_listÚweight_listÚtrñ  rò  Úh_idxsÚw_idxsÚh_idxs_floorÚw_idxs_floorÚh_idxs_ceilÚw_idxs_ceilÚdhÚdwÚbase_hÚbase_h_ceilÚindicesÚweightsÚiÚ
idx_tensorÚweight_tensorÚ
pos_embedsÚpatch_pos_embedsÚpatch_pos_embeds_permuterØ  rÇ  s                                 r#   Úfast_pos_embed_interpolatez-Qwen3VLVisionModel.fast_pos_embed_interpolate±  sÙ  € Ø$,¨Q¨Q¨Q°¨T¤N°H¸Q¸Q¸QÀ¸T´NÀHÈQÈQÈQÐPQÈTÄN˜'�ˆà)Ð)¥ a¡¤Ð)Ñ)Ô)ˆØ,Ð,¥5¨¡8¤8Ð,Ñ,Ô,ˆå˜7 G¨WÑ5Ô5ð 	;ñ 	;‰GˆAˆq�!Ý”^ A tÔ'=ÀÑ'AÀ1ÈTÌ^ÔMbÔMiÐjÑjÔjˆFÝ”^ A tÔ'=ÀÑ'AÀ1ÈTÌ^ÔMbÔMiÐjÑjÔjˆFà!Ÿ:š:™<œ<ˆLØ!Ÿ:š:™<œ<ˆLØ!Ÿ:š:™<œ<¨!Ñ+×1Ò1°dÔ6LÈqÑ6PÐ1ÑQÔQˆKØ!Ÿ:š:™<œ<¨!Ñ+×1Ò1°dÔ6LÈqÑ6PÐ1ÑQÔQˆKà˜,Ñ&ˆBØ˜,Ñ&ˆBà! DÔ$:Ñ:ˆFØ%¨Ô(>Ñ>ˆKð ˜”” ,¨tÔ"4Ñ4×=Ò=Ñ?Ô?Ø˜”” +¨dÔ"3Ñ3×<Ò<Ñ>Ô>Ø˜TÔ"Ô$ |°DÔ'9Ñ9×BÒBÑDÔDØ˜TÔ"Ô$ {°4Ô'8Ñ8×AÒAÑCÔCð	ˆGð �b‘&˜$”Ô! Q¨¡V¨T¤NÑ2×;Ò;Ñ=Ô=Ø�b‘&˜$”Ô! B t¤HÑ,×5Ò5Ñ7Ô7Ø�D””˜q 2™v tœnÑ,×5Ò5Ñ7Ô7Ø�D””˜b œhÑ&×/Ò/Ñ1Ô1ð	ˆGõ ˜1‘X”Xð ;ð ;�Ø˜”×"Ò" 7¨1¤:×#4Ò#4Ñ#6Ô#6Ñ7Ô7Ð7Ø˜A”×%Ò% g¨a¤j×&7Ò&7Ñ&9Ô&9Ñ:Ô:Ð:Ð:ñ;õ ”\ (µ%´*ÀTÄ^ÔEZÔEaÐbÑbÔbˆ
ÝœØ˜tœ~Ô4Ô:À4Ä>ÔCXÔC_ð
ñ 
ô 
ˆð —^’^ JÑ/Ô/ˆ
ØØ�Š˜ a a a¨¨¨¨D jÔ1Ñ2Ô2Ð2ØØ% aœ=×.Ò.Ñ0Ô0ÐØ×Ò˜j¨œmÑ,Ô,×1Ò1°*¸Q´-Ñ@Ô@×EÒEÀjÐQRÄmÑTÔTÐTØà+×1Ò1Ð2[Ð2[ÅSÈÐRYÑEZÔEZÐ2[Ñ2[Ô2[Ñ\Ô\Ðà#%Ð Ø”[Ô3ˆ
Ý"%Ð&6¸ÀÈ'Ñ"RÔ"Rð 	7ð 	7ÑˆI�q˜!˜QØ!×(Ò(¨¨AÑ.Ô.ˆIà—’˜q ! z¡/°:¸qÀJ¹ÐPZÐ\^Ñ_Ô_ß’˜˜A˜q ! Q¨Ñ*Ô*ß’˜˜A‘”ð ð
 %×+Ò+¨IÑ6Ô6Ð6Ð6ØÝÐ4¸!Ð<Ñ<Ô<Ð<r%   r}   c                 ó`  — t          |¦  «        }|g}d}|                      |¦  «        }|                      |¦  «        }|                     |¦  «         ~|                      |¦  «        }|                     ¦   «         \  }}|                     |d¦  «        }|                     |d¦  «        }|                     ¦   «         }	|                     ¦   «          |	|f}
~	~t          j
        |dd…df         |dd…df         z  |dd…df         ¦  «        }|                     t          j                             ¦   «         r|j        nt          j        ¬¦  «        }|                     d¬¦  «         t#          j        |dd¬	¦  «        }g }t'          | j        ¦  «        D ]v\  }}|g}d} ||f||
d
œ|¤Ž}t+          | dd¦  «        r dS || j        v rC | j        | j                             |¦  «                 |¦  «        }|                     |¦  «         Œw~~
|g}d}|                      |¦  «        }||fS )az  
        Args:
            hidden_states (`torch.Tensor` of shape `(seq_len, hidden_size)`):
                The final hidden states of the model.
            grid_thw (`torch.Tensor` of shape `(num_images_or_videos, 3)`):
                The temporal, height and width of feature shape of each image in LLM.

        Returns:
            `torch.Tensor`: hidden_states.
        Nr]   r   rh   r   rÛ   r=   )r   r   r‹   )r  r  Ú
_interruptFr%  )r;   rÄ  r  r1  rë  Úsizer|   r�   rV  r?   Úrepeat_interleaverS   ÚjitÚ
is_tracingrG   Úint32Úcumsum_rb  ÚpadrH  rË  rm  rÍ  rÎ  Úindexrú  rÌ  )r¹   r}   rÑ  r)   r£  r  r  r/   r¤  Ú
rotary_cosr  r  Údeepstack_feature_listsÚ	layer_numÚblkÚdeepstack_features                   r#   rÈ   zQwen3VLVisionModel.forwardó  s�  € õ % ]Ñ3Ô3ˆØ+˜_ÐØˆØ×(Ò(Ð);Ñ<Ô<ˆà×4Ò4°XÑ>Ô>ˆ
Ø×Ò˜:Ñ&Ô&Ð&Øà×)Ò)¨(Ñ3Ô3ˆà"×'Ò'Ñ)Ô)‰
ˆ�Ø%×-Ò-¨g°rÑ:Ô:ˆØ'×/Ò/°¸Ñ<Ô<ˆØ#×'Ò'Ñ)Ô)ˆ
Ø×ÒÑÔÐØ)¨>Ð:ÐØ˜åÔ,¨X°a°a°a¸°d¬^¸hÀqÀqÀqÈ!Àt¼nÑ-LÈhÐWXÐWXÐWXÐZ[ÐW[ÌnÑ]Ô]ˆ
à—]’]½5¼9×;OÒ;OÑ;QÔ;QÐ)b¨¬¨ÕW\ÔWb�]ÑcÔcˆ
Ø×Ò˜qÐÑ!Ô!Ð!Ý”U˜: v°QÐ7Ñ7Ô7ˆ
à"$ÐÝ'¨¬Ñ4Ô4ð 	Bð 	B‰NˆI�sØ"/ ÐØ ˆMØ˜CØ"ðà%Ø$7ðð ð ð	ð ˆMõ �t˜\¨5Ñ1Ô1ð "Ø!�z�zØ˜DÔ9Ð9Ð9Ø$n DÔ$>¸tÔ?\×?bÒ?bÐclÑ?mÔ?mÔ$nØ!ñ%ô %Ð!ð (×.Ò.Ð/@ÑAÔAÐAøàÐ+Ø+˜_ÐØˆØŸšÐ$6Ñ7Ô7ˆàÐ5Ð5Ð5r%   rß   )rÉ   rÊ   rË   r   rõ   r³  r±   r?   rà   rë  r  rÈ   rÌ   rÍ   s   @r#   r»  r»  b  sÀ   ø€ € € € € € ØÐÐÑØ-Ð.Ðð!,ð !,ð !,ð !,ð !,ð !,ðF&% E¤Lð &%°U´\ð &%ð &%ð &%ð &%ðP@=ð @=ð @=ðD;6 U¤\ð ;6¸U¼\ð ;6ÐX]ÔXdð ;6ð ;6ð ;6ð ;6ð ;6ð ;6ð ;6ð ;6r%   r»  zwText part of Qwen3VL, not a pure text-only model, as DeepStack integrates visual features into the early hidden states.c                   óL  ‡ — e Zd ZU eed<   dgZdefˆ fd„Z	 	 ddeej	                 deej
                 deej                 dee         d	ee         d
ee         defd„Zee	 	 	 	 	 	 	 	 	 	 ddeej
                 deej                 deej
                 dee         deej	                 dee         deej
                 deej                 deeej                          dee         d
ee         deeef         fd„¦   «         ¦   «         Zdej        dej        dej        fd„Zˆ xZS )ÚQwen3VLTextModelrº   r™  c                 óÞ  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        t          j        ‰j        ‰j        | j        ¦  «        | _        t          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t!          ‰¬¦  «        | _        d| _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r!   )r™  )r¿  rk  rº   s     €r#   rÀ  z-Qwen3VLTextModel.__init__.<locals>.<listcomp>B  s$   ø€ ÐiÐiÐi¸IÕ$ V¨YÑ7Ô7ÐiÐiÐir%   rú   r+  F)r°   r±   Úpad_token_idÚpadding_idxÚ
vocab_sizer²   rÅ  r0   Úembed_tokensrÉ  rÁ   Únum_hidden_layersÚlayersr]  rt  rÿ   r7  Ú
rotary_embrÏ  Ú	post_initr¸   s    `€r#   r±   zQwen3VLTextModel.__init__;  sÔ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô.ˆÔØ Ô+ˆŒåœL¨Ô):¸FÔ<NÐPTÔP`ÑaÔaˆÔÝ”mØiÐiÐiÐiÍÈvÔOgÑIhÔIhÐiÑiÔiñ
ô 
ˆŒõ ' vÔ'9¸vÔ?RÐSÑSÔSˆŒ	Ý4¸FÐCÑCÔCˆŒØ&+ˆÔ#ð 	�ŠÑÔÐÐÐr%   NÚinputs_embedsrW  rb   Úreturn_mid_results_layersrz  r)   rÐ   c                 ó:  — t          |¦  «        }t          |d¦  «        r|                     ¦   «          t          |¦  «        }t          |d¦  «        r|                     ¦   «          t          |¦  «        }	t          |d¦  «        r|                     ¦   «          g }
g }|rg nd }|�|                     d¦  «        nd }|�|                     d¦  «        nd }|�#t	          |                     dd¦  «        ¦  «        nd}t          |¦  «        D ]Ø\  }}||         }|j        dk    r(|d                              d|j        d	         d
¦  «        }|j        dk    r$|j        d	         dk    r|d	         }|dd …         }n|d	         }|
 	                    |¦  «         | 	                    |  
                    ||¦  «        ¦  «         |	|                              |j        ¦  «        |	|<   ŒÙt          | j        ¦  «        D ]Ï\  }}t          |¦  «        D ]•\  }}|�||         |         nd }|�||         nd	}d ||<   t          |j        d¦  «        r|}n|g}d } ||fd |
|         d d ||         |	|         |||dœ	|¤Ž||<   d }t          | dd¦  «        rt!          d d ¬¦  «        c c S Œ–|�#||v r| 	                    d„ |D ¦   «         ¦  «         ŒÐ~~
~	t          |¦  «        D ]'\  }}d ||<   |g}d }|                      |¦  «        ||<   Œ(t!          |d ¬¦  «        }||_        |S )Nr8   r,  Úar_lensrT   Frh   rO  ri   r   r]   rg   r   Ú__wrapped__)	rk   rW  rx  ry  r  rb   rz  r{  rd   r  ©r¨  rx  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r!   )r�   )r¿  r}   s     r#   rÀ  z2Qwen3VLTextModel.forward_joint.<locals>.<listcomp>�  s$   € Ð#bÐ#bÐ#b¸m M×$7Ò$7Ñ$9Ô$9Ð#bÐ#bÐ#br%   )r7   rA   r8   r?  rW   rH  r¿   r{   rQ   rú  r-  rS   rH   r,  rÈ   rm  r   rÿ   r¬  )r¹   r/  rW  rb   r0  rz  r)   r£  Úposition_ids_listÚtoken_types_listÚtext_position_ids_listÚposition_embeddings_listr¬  Úar_cache_layersr2  r{  rL  r}   Úcur_position_idsÚtext_position_idsrk  Údecoder_layerÚlayer_cacherd   Úlayer_inputÚ	norm_listÚoutputs                              r#   Úforward_jointzQwen3VLTextModel.forward_jointK  sý  € õ " -Ñ0Ô0ÐÝ�= 'Ñ*Ô*ð 	"Ø×ÒÑ!Ô!Ð!Ý  Ñ.Ô.ÐÝ�< Ñ)Ô)ð 	!Ø×ÒÑ Ô Ð Ý Ñ,Ô,ÐÝ�; Ñ(Ô(ð 	 Ø×ÒÑÔÐØ!#ÐØ#%Ð Ø5Ð?�b�b¸4ˆØ4<Ð4H˜(Ÿ,š, xÑ0Ô0Ð0ÈdˆØ-5Ð-A�(—,’,˜yÑ)Ô)Ð)ÀtˆØAIÐAU�$˜xŸ|š|¨H°eÑ<Ô<Ñ=Ô=Ð=Ð[`ˆå"+Ð,>Ñ"?Ô"?ð 	Sð 	SÑˆC�Ø0°Ô5ÐØÔ$¨Ò)Ð)Ø#3°IÔ#>×#EÒ#EÀaÐIYÔI_Ð`aÔIbÐdfÑ#gÔ#gÐ ØÔ$¨Ò)Ð)Ð.>Ô.DÀQÔ.GÈ1Ò.LÐ.LØ$4°QÔ$7Ð!Ø#3°A°B°BÔ#7Ð Ð à$4°QÔ$7Ð!Ø"×)Ò)Ð*;Ñ<Ô<Ð<Ø$×+Ò+¨D¯OªO¸MÐK[Ñ,\Ô,\Ñ]Ô]Ð]Ø$4°SÔ$9×$<Ò$<¸]Ô=QÑ$RÔ$RÐ˜SÑ!Ð!å(1°$´+Ñ(>Ô(>ð 	dð 	dÑ$ˆI�}Ý&/Ð0BÑ&CÔ&Cð að aÑ"��]ØAPÐA\˜o¨cÔ2°9Ô=Ð=Ðbf�Ø)0Ð)<˜ œ˜À!�Ø*.Ð" 3Ñ'Ý˜=Ô0°-Ñ@Ô@ð )Ø"/�K�Kà#0 /�KØ$(�MØ*7¨-Øð+à#'Ø!7¸Ô!<Ø$(Ø#'Ø(@ÀÔ(EØ 0°Ô 5Ø(Ø$3Ø!ð+ð +ð ð+ð +Ð" 3Ñ'ð !%�Ý˜4 ¨uÑ5Ô5ð aÝ2ÀTÐ[_Ð`Ñ`Ô`Ð`Ð`Ð`Ð`Ð`ðað )Ð4¸ÐF_Ð9_Ð9_Ø×"Ò"Ð#bÐ#bÐOaÐ#bÑ#bÔ#bÑcÔcÐcøà$Ð&<Ð>NÝ"+Ð,>Ñ"?Ô"?ð 	;ð 	;ÑˆC�Ø&*Ð˜sÑ#Ø&˜ˆIØ ˆMØ&*§i¢i°	Ñ&:Ô&:Ð˜sÑ#Ð#å(Ð;MÐ_cÐdÑdÔdˆØ(ˆÔØˆr%   Ú	input_idsrk   rx  rž  ry  Úvisual_pos_masksÚdeepstack_visual_embedsc                 óX  — |                      dd¦  «        }|du |duz  rt          d¦  «        ‚|r5|€3t          j                             ¦   «         st          | j        ¬¦  «        }|€|                      |¦  «        }nt          |¦  «        }d}|€B|�| 	                    ¦   «         nd}t          j
        |||j        d         z   |j        ¬¦  «        }|€8|                     ddd¦  «                             d	|j        d         d¦  «        }n3|j        d
k    r(|d                              d	|j        d         d¦  «        }|j        d	k    r$|j        d         dk    r|d         }|dd…         }n|d         }|€A|€$|�!t!          ||j        d         |j        ¦  «        }n7t#          | j        |||||¬¦  «        }n|                     |j        ¦  «        }d}|}d}|
rg nd}|                      ||¦  «        }t)          | j        ¦  «        D ]Ç\  }}t-          |j        d¦  «        r|}n|g}d} ||f||||||dœ|¤Ž}|	�B|t1          t3          |	¦  «        ¦  «        v r$|	|         }d|	|<   |                      |||¦  «        }|
�+||
v r'|                     |                     ¦   «         ¦  «         t;          | dd¦  «        rt=          d|¬¦  «        c S ŒÈt-          |	d¦  «        r|	                     ¦   «          ~~|g}d}|                       |¦  «        }t=          ||¬¦  «        }||_!        |S )aö  
        visual_pos_masks (`torch.Tensor` of shape `(batch_size, seqlen)`, *optional*):
            The mask of the visual positions.
        deepstack_visual_embeds (`list[torch.Tensor]`, *optional*):
            The deepstack visual embeddings. The shape is (num_layers, visual_seqlen, embed_dim).
            The feature is extracted from the different visual encoder layers, and fed to the decoder
            hidden states. It's from the paper DeepStack(https://arxiv.org/abs/2406.04334).
        rb   Nú:You must specify exactly one of input_ids or inputs_embedsr+  r   r   rQ  r]   ri   rh   rO  rg   )rº   Úinput_embedsrk   ry  rx  rW  r3  )rk   rW  rx  ry  r  rb   r  Fr4  r8   )"ÚpopÚ
ValueErrorr?   r  r  r   rº   r*  r;   Úget_seq_lengthrê   rQ   rH   rt   r{   r¿   rx   r   rS   r-  rH  r,  rA   rÈ   rÁ   r&   Ú_deepstack_processrú  r�   rm  r   r8   rÿ   r¬  )r¹   rC  rk   rW  rx  r/  rž  ry  rD  rE  r0  r)   rb   Úpast_seen_tokensr<  r}   r¬  r  rk  r=  r?  Úvisual_embedsr£  rA  s                           r#   rÈ   zQwen3VLTextModel.forwardš  s  € ð2 —j’j °Ñ5Ô5ˆØ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZð ð 	?˜Ð0½¼×9MÒ9MÑ9OÔ9OÐ0Ý*°$´+Ð>Ñ>Ô>ˆOàÐ Ø ×-Ò-¨iÑ8Ô8ˆMˆMå(¨Ñ7Ô7ˆMØˆ	àÐ!ØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ"œ\Ø Ð"2°]Ô5HÈÔ5KÑ"KÐTaÔThðñ ô ˆNð
 ÐØ)×.Ò.¨q°!°RÑ8Ô8×?Ò?ÀÀ=ÔCVÐWXÔCYÐ[]Ñ^Ô^ˆLˆLØÔ !Ò#Ð#Ø'¨	Ô2×9Ò9¸!¸\Ô=OÐPQÔ=RÐTVÑWÔWˆLàÔ Ò!Ð! lÔ&8¸Ô&;¸qÒ&@Ð&@Ø ,¨Q¤ÐØ'¨¨¨Ô+ˆLˆLà ,¨Q¤ÐàÐØÐ&Ø!Ð-Ý%>¸~È}ÔObÐcdÔOeÐgtÔg{Ñ%|Ô%|�Nøå!3Øœ;Ø!.Ø#1Ø#1Ø$3Ø!2ð"ñ "ô "��ð &Ÿ.š.¨Ô)=Ñ>Ô>ˆKØ!ˆNà%ˆØˆØ5Ð?�b�b¸4ˆð #Ÿošo¨m¸\ÑJÔJÐõ )2°$´+Ñ(>Ô(>ð 	hð 	hÑ$ˆI�}Ý�}Ô,¨mÑ<Ô<ð %Ø+��à,˜o�Ø $�Ø)˜MØð	à-Ø.Ø /Ø-Ø$7Ø'ð	ð 	ð ð	ð 	ˆMð 'Ð2°yÅEÍ#ÐNeÑJfÔJfÑDgÔDgÐ7gÐ7gØ 7¸	Ô B�Ø59Ð'¨	Ñ2Ø $× 7Ò 7Ø!Ø$Ø!ñ!ô !�ð )Ð4¸ÐF_Ð9_Ð9_Ø×"Ò" =×#6Ò#6Ñ#8Ô#8Ñ9Ô9Ð9å�t˜\¨5Ñ1Ô1ð hÝ.ÀÐWfÐgÑgÔgÐgÐgÐgðhõ Ð*¨GÑ4Ô4ð 	,Ø#×)Ò)Ñ+Ô+Ð+ØÐ/Ø+˜_ÐØˆØŸ	š	Ð"4Ñ5Ô5ˆå(Ø+Ø+ð
ñ 
ô 
ˆð )ˆÔØˆr%   r}   rN  c                 óö   — |                      |j        ¦  «        }|                      |j        |j        ¦  «        }||d d …f                              ¦   «         }|                     |¦  «         ~|||d d …f<   ~|S r    )rS   rH   rG   r�   r1  )r¹   r}   rD  rN  Ú
local_thiss        r#   rL  z#Qwen3VLTextModel._deepstack_process  sˆ   € ð ,×.Ò.¨}Ô/CÑDÔDÐØ%×(Ò(¨Ô)=¸}Ô?RÑSÔSˆØ"Ð#3°Q°Q°QÐ#6Ô7×=Ò=Ñ?Ô?ˆ
Ø�Š˜Ñ&Ô&Ð&ØØ-7ˆÐ&¨¨¨Ð)Ñ*ØØÐr%   r%  )
NNNNNNNNNN)rÉ   rÊ   rË   r   rõ   r³  r±   r7   r?   r­  r‹  rà   r   rŒ  r   r   r   rB  r   r*   r   rW   r   r&  rÈ   rL  rÌ   rÍ   s   @r#   r$  r$  1  sW  ø€ € € € € € ð ÐÐÑØ2Ð3ÐðÐ0ð ð ð ð ð ð ð* 59Ø#'ðMð Mà˜EÔ-Ô.ðMð ˜5Ô+Ô,ðMð ˜%œ,Ô'ð	Mð
 $,¨D¤>ðMð ˜4”.ðMð Ð-Ô.ðMð 
!ðMð Mð Mð Mð^ Øð 15Ø15Ø37Ø+/Ø59Ø$(Ø59à37Ø@DØ48ð}ð }à˜EÔ,Ô-ð}ð ! ¤Ô.ð}ð ˜uÔ/Ô0ð	}ð
 " %œð}ð   Ô 1Ô2ð}ð ˜D”>ð}ð ! Ô!1Ô2ð}ð # 5¤<Ô0ð}ð "*¨$¨u¬|Ô*<Ô!=ð}ð $,¨D¤>ð}ð Ð-Ô.ð}ð 
ˆuÐ-Ð-Ô	.ð}ð }ð }ñ „^ñ Ôð}ð~
Ø"œ\ð
Ø=B¼\ð
ØZ_ÔZfð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r%   r$  c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )	ÚBottleneckPatchEmbedé   ri   é   Tc                 óì   •— t          ¦   «                              ¦   «          t          j        ||z  |z  |d¬¦  «        | _        t          j        |||¬¦  «        | _        |                      ¦   «          d S r�  )r°   r±   r²   r³   Úproj1Úproj2Úinitialize_weights)r¹   rº   rÔ   Úin_chansÚpca_dimr×   r¯   r»   s          €r#   r±   zBottleneckPatchEmbed.__init__(  sk   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜z¨*Ñ4°XÑ=¸wÈUÐSÑSÔSˆŒ
Ý”Y˜w¨	¸Ð=Ñ=Ô=ˆŒ
Ø×ÒÑ!Ô!Ð!Ð!Ð!r%   c                 óš  — | j         j        j        }t          j                             |                     |j        d         dg¦  «        ¦  «         | j        j        j        }t          j                             |                     |j        d         dg¦  «        ¦  «         t          j         	                    | j        j
        d¦  «         d S )Nr   r]   )rV  rÜ   Údatar²   ÚinitÚxavier_uniform_rt   rQ   rW  Ú	constant_r¯   )r¹   Úw1Úw2s      r#   rX  z'BottleneckPatchEmbed.initialize_weights.  s˜   € ØŒZÔÔ#ˆÝ
Œ×Ò §¢¨¬°!¬°bÐ(9Ñ :Ô :Ñ;Ô;Ð;ØŒZÔÔ#ˆÝ
Œ×Ò §¢¨¬°!¬°bÐ(9Ñ :Ô :Ñ;Ô;Ð;Ý
Œ×Ò˜$œ*œ/¨1Ñ-Ô-Ð-Ð-Ð-r%   c                 óv   — t          |¦  «        }|                      |¦  «        }~|                      |¦  «        S r    )r;   rV  rW  r  s      r#   rÈ   zBottleneckPatchEmbed.forward5  s1   € Ý˜‰OŒOˆØ—’˜A‘”ˆØØ�zŠz˜&Ñ!Ô!Ð!r%   )rS  ri   rT  rT  T)rÉ   rÊ   rË   r±   rX  rÈ   rÌ   rÍ   s   @r#   rR  rR  '  s[   ø€ € € € € ð"ð "ð "ð "ð "ð "ð.ð .ð .ð"ð "ð "ð "ð "ð "ð "r%   rR  c                   ó,   ‡ — e Zd Zˆ fd„Zd„ Zdd„Zˆ xZS )Ú
FinalLayerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |||z  |z  d¬¦  «        | _        |                      | j        ¦  «         d S r­   )r°   r±   r²   r³   ÚlinearÚapplyÚ_init_weights)r¹   rº   r0   rÔ   Úout_channelsr»   s        €r#   r±   zFinalLayer.__init__<  sW   ø€ Ý‰Œ×ÒÑÔÐÝ”i ¨Z¸*Ñ-DÀ|Ñ-SÐZ^Ð_Ñ_Ô_ˆŒØ�
Š
�4Ô%Ñ&Ô&Ð&Ð&Ð&r%   c                 óâ   — t          |t          j        ¦  «        rRt          j                             |j        ¦  «         |j        �)t          j                             |j        d¦  «         d S d S d S r5   )r6   r²   r³   r]  Úzeros_rÜ   r¯   r_  )r¹   Úms     r#   rh  zFinalLayer._init_weightsA  sd   € Ý�a�œÑ#Ô#ð 	-ÝŒG�NŠN˜1œ8Ñ$Ô$Ð$ØŒvÐ!Ý”×!Ò! !¤&¨!Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-à!Ð!r%   Nc                 óJ   — t          |¦  «        }|                      |¦  «        S r    )r;   rf  )r¹   rˆ   Úadaln_inputs      r#   rÈ   zFinalLayer.forwardG  s   € Ý˜‰OŒOˆØ�{Š{˜1‰~Œ~Ðr%   r    )rÉ   rÊ   rË   r±   rh  rÈ   rÌ   rÍ   s   @r#   rd  rd  ;  s[   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð
-ð -ð -ðð ð ð ð ð ð ð r%   rd  c                   óB   ‡ — e Zd ZdZdˆ fd„	Zedd„¦   «         Zd„ Zˆ xZS )	ÚTimestepEmbedderz>
    Embeds scalar timesteps into vector representations.
    é   c           	      óÆ  •— t          ¦   «                              ¦   «          t          j        t          j        ||d¬¦  «        t          j        ¦   «         t          j        ||d¬¦  «        ¦  «        | _        t          j                             | j        d         j	        d¬¦  «         t          j                             | j        d         j	        d¬¦  «         || _
        d S )NTr®   r   g{®Gáz”?)Ústdrh   )r°   r±   r²   Ú
Sequentialr³   ÚSiLUr/  r]  Únormal_rÜ   Úfrequency_embedding_size)r¹   rº   r0   rw  r»   s       €r#   r±   zTimestepEmbedder.__init__Q  s°   ø€ Ý‰Œ×ÒÑÔÐÝ”=ÝŒIÐ.°À$ÐGÑGÔGÝŒG‰IŒIÝŒI�k ;°TÐ:Ñ:Ô:ñ
ô 
ˆŒõ
 	Œ�Š˜œ œÔ*°ˆÑ5Ô5Ð5Ý
Œ�Š˜œ œÔ*°ˆÑ5Ô5Ð5Ø(@ˆÔ%Ð%Ð%r%   é'  c           	      ó  — |dz  }t          j        t          j        |¦  «         t          j        d|t           j        ¬¦  «        z  |z  ¦  «                             | j        ¬¦  «        }| dd…df                              ¦   «         |d         z  }t          j	        t          j
        |¦  «        t          j        |¦  «        gd¬¦  «        }|dz  r6t          j	        |t          j        |dd…dd…f         ¦  «        gd¬¦  «        }|S )	ai  
        Create sinusoidal timestep embeddings.
        :param t: a 1-D Tensor of N indices, one per batch element.
                          These may be fractional.
        :param dim: the dimension of the output.
        :param max_period: controls the minimum frequency of the embeddings.
        :return: an (N, D) Tensor of positional embeddings.
        rh   r   )rÅ   r"  rG   rQ  Nr]   r=   r   )r?   ÚexpÚmathÚlogrê   Úfloat32rS   rH   rë   r@   r�   r‘   Ú
zeros_like)r   r>   Ú
max_periodr“   rô   r(   Ú	embeddings          r#   Útimestep_embeddingz#TimestepEmbedder.timestep_embedding\  sú   € ð �a‰xˆÝ”	ÝŒX�jÑ!Ô!Ð!¥E¤L°q¸dÍ%Ì-Ð$XÑ$XÔ$XÑXÐ[_Ñ_ñ
ô 
ç
Š"�A”Hˆ"Ñ
Ô
ð 	ð ����D�Œz×ÒÑ!Ô! E¨$¤KÑ/ˆÝ”I�uœy¨™œµ´	¸$±´Ð@ÀbÐIÑIÔIˆ	Ø�‰7ð 	[Ýœ	 9­eÔ.>¸yÈÈÈÈBÈQÈBÈÔ?OÑ.PÔ.PÐ"QÐWYÐZÑZÔZˆIØÐr%   c                 ó¼   — |                       |dz  | j        ¦  «        }|                      |                     | j        d         j        j        ¦  «        ¦  «        }|S )Niè  r   )r�  rw  r/  rS   rÜ   rG   )r¹   r   Út_freqÚt_embs       r#   rÈ   zTimestepEmbedder.forwardq  sL   € Ø×(Ò(¨¨T©°4Ô3PÑQÔQˆØ—’˜Ÿš 4¤8¨A¤;Ô#5Ô#;Ñ<Ô<Ñ=Ô=ˆØˆr%   )rq  )rx  )	rÉ   rÊ   rË   rŠ  r±   Ústaticmethodr�  rÈ   rÌ   rÍ   s   @r#   rp  rp  M  s|   ø€ € € € € ðð ð	Að 	Að 	Að 	Að 	Að 	Að ðð ð ñ „\ðð(ð ð ð ð ð ð r%   rp  c            +       óâ  ‡ — e Zd ZU dZi ZdZeed<   ddgZˆ fd„Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Z	 	 	 	 d)deej                 deej                 deej                 deej                 deej        ej        f         f
d„Z	 d*dej        deej                 fd„Zd*dej        deej                 fd„Z	 	 d+dej        dej        deej                 deej                 fd„Z	 	 	 	 d,d„Zee	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-dej        deej                 deej                 dee         deej                 deej                 deej                 deej                 deej                 deej                 d eej                 d!eej                 d"eej                 d#eej                 d$eej                 d%eej                 d&ee         d'ee          de!ee"f         f&d(„¦   «         ¦   «         Z#ˆ xZ$S ).ÚQwen3VLModelÚ Frº   r™  r(  c                 óL  •— t          ¦   «                              |¦  «         t                               |j        ¦  «        | _        t                               |j        ¦  «        | _        d | _	        d | _
        d| _        d| _        |j        j        }|dz  }t          | j        |¦  «        | _        t#          | j        | j        | j        ||d¬¦  «        | _        d | _        t)          | j        || j        | j        ¬¦  «        | _        d| _        |                      ¦   «          d S )Né    ri   rg   T)rÔ   rY  rZ  r×   r¯   )r0   rÔ   ri  iyP )r°   r±   r»  Ú_from_configÚvision_configÚvisualr$  Útext_configÚlanguage_modelrª  Ú	_ar_cacherÔ   rÖ   r0   rp  rº   Út_embedder1rR  Ú
x_embedderÚt_embedder2rd  Úfinal_layer2Útms_token_idr.  )r¹   rº   r0   Úbottleneck_dimr»   s       €r#   r±   zQwen3VLModel.__init__  s-  ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý(×5Ò5°fÔ6JÑKÔKˆŒÝ.×;Ò;¸FÔ<NÑOÔOˆÔØˆÔØˆŒàˆŒØˆÔØÔ(Ô4ˆØ$¨Ñ)ˆå+¨D¬K¸ÑEÔEˆÔÝ.¨t¬{È$Ì/ÐfjÔfvð  CQð  _jð  quð  vñ  vô  vˆŒð  ˆÔÝ& t¤{À+Ð\`Ô\kð  }Aô  }Mð  Nñ  Nô  NˆÔØ"ˆÔð 	�ŠÑÔÐÐÐr%   c                 ó"   — d | _         d | _        d S r    )rª  r�  re  s    r#   Úclear_runtime_cachesz!Qwen3VLModel.clear_runtime_caches–  s   € ØˆÔØˆŒˆˆr%   c                 ó  ‡— |‰t          |¦  «        t          |¦  «        f}| j        �| j                             d¦  «        |k    r?|t	          |¦  «        t          |¦  «        ˆfd„t          |¦  «        D ¦   «         dœ| _        | j        S )NÚ	signaturec                 óB   •— g | ]}d „ t          ‰¦  «        D ¦   «         ‘ŒS )c                 ó   — g | ]}i ‘ŒS r!   r!   rî  s     r#   rÀ  z9Qwen3VLModel._get_ar_cache.<locals>.<listcomp>.<listcomp>¡  s   € Ð;Ð;Ð; 1˜BÐ;Ð;Ð;r%   )rÁ   )r¿  r¤  Úlayer_counts     €r#   rÀ  z.Qwen3VLModel._get_ar_cache.<locals>.<listcomp>¡  s0   ø€ ÐYÐYÐYÀÐ;Ð;­¨kÑ(:Ô(:Ð;Ñ;Ô;ÐYÐYÐYr%   )rš  r2  rT   r,  )r&  rW   r�  r?  r7   rÁ   )r¹   Úsample_countr�  r2  rT   rš  s     `   r#   Ú_get_ar_cachezQwen3VLModel._get_ar_cacheš  s‹   ø€ Ø! ;µ°g±´ÅÀVÁÄÐMˆ	ØŒ>Ð! T¤^×%7Ò%7¸Ñ%DÔ%DÈ	Ò%QÐ%Qà&Ý ™=œ=Ý˜v™,œ,ØYÐYÐYÐYÅUÈ<ÑEXÔEXÐYÑYÔYð	ð ˆDŒNð Œ~Ðr%   c                 ó4   — | j                              ¦   «         S r    )r�  Úget_input_embeddingsre  s    r#   r¡  z!Qwen3VLModel.get_input_embeddings¥  s   € ØÔ"×7Ò7Ñ9Ô9Ð9r%   c                 ó:   — | j                              |¦  «         d S r    )r�  Úset_input_embeddings©r¹   r9   s     r#   r£  z!Qwen3VLModel.set_input_embeddings¨  s   € ØÔ×0Ò0°Ñ7Ô7Ð7Ð7Ð7r%   c                 ó   — || _         d S r    ©r�  ©r¹   Údecoders     r#   Úset_decoderzQwen3VLModel.set_decoder«  s   € Ø%ˆÔÐÐr%   c                 ó   — | j         S r    r¦  re  s    r#   Úget_decoderzQwen3VLModel.get_decoder®  s   € ØÔ"Ð"r%   NrC  Úimage_grid_thwÚvideo_grid_thwrk   rÐ   c           	      ó¾  — |�*t          j        ||dd…df         d¬¦  «        }d|dd…df<   | j        j        j        }| j        j        }| j        j        }| j        j        }g }	|��…|€|��€|}
|€t          j        |
¦  «        }t          j	        d|j
        d         |j
        d         |j        |j        ¬¦  «        }d\  }}|                     |
j        ¦  «        }t          |
¦  «        D �]Í\  }}|||         dk             }d\  }}t          j        ||k    ¦  «                             d¦  «        }||dz            }||k                         ¦   «         }||k                         ¦   «         }|                     ¦   «         }g }d}||}}t'          ||z   ¦  «        D �]Û}||v r|dk    r|                     ||¦  «        }nt+          |¦  «        dz   }||v r|dk    r|                     ||¦  «        }nt+          |¦  «        dz   }||k     r7||         d         ||         d         ||         d         }}}|dz  }|dz  }|}n6||         d         ||         d         ||         d         }}}|dz  }|dz  }|}|                     ¦   «         |                     ¦   «         |z  |                     ¦   «         |z  }!} }||z
  }"t+          |¦  «        dk    r|d	                              ¦   «         dz   nd}#|                     t          j        |"d
¬¦  «                             dd	¦  «                             dd	¦  «        |#z   ¦  «         t          j        |d
¬¦  «                             d	d¦  «                             d	| |!z  ¦  «                             ¦   «         }$t          j        | d
¬¦  «                             dd	d¦  «                             |d	|!¦  «                             ¦   «         }%t          j        |!d
¬¦  «                             ddd	¦  «                             || d	¦  «                             ¦   «         }&|                     t          j        |$|%|&g¦  «        |"z   |#z   ¦  «         ||| z  |!z  z   }�ŒÝ|t+          |¦  «        k     r˜t+          |¦  «        dk    r|d	                              ¦   «         dz   nd}#t+          |¦  «        |z
  }"|                     t          j        |"d
¬¦  «                             dd	¦  «                             dd	¦  «        |#z   ¦  «         t          j        |d¬¦  «                             dd	¦  «        }'|'                     |j        ¦  «        |d|||         dk    f<   |	                     |'                     ¦   «         dz   t+          |
|         ¦  «        z
  ¦  «         �ŒÏt          j         |	|j        ¬¦  «         !                    d¦  «        }	||	fS |�ä| "                    ¦   «          #                    d	¦  «        }| $                    d¦  «         | %                    |dk    d¦  «         | !                    d¦  «                             dd	d	¦  «                             |j        ¦  «        }|                     dd¬¦  «        d                              d	d¬¦  «        d         }(|(dz   |j
        d	         z
  }	n‰t          j        |j
        d         |j        ¬¦  «                             ddd	¦  «                             d|j
        d         d	¦  «        }t          j&        |j
        d         dg|j        |j        ¬¦  «        }	||	fS )zjDifferent from the original implementation, Qwen3VL use timestamps rather than absolute time position ids.Nr   r=   r   ri   rp   )r   r   rh   r]   rF   rQ  .F)ÚkeepdimTrq   )'r?   r  rº   rŒ  rü   Úimage_token_idÚvideo_token_idÚvision_start_token_idÚ	ones_likerr   rQ   rG   rH   rS   rH  ÚargwhereÚsqueezer_   r  rÁ   r  r&   r`   r-   rú  rê   rt   r{   r×  rÕ  r@   r|   r:   rŒ   rÔ  ÚcumsumÚsub_Úmasked_fill_Úzeros))r¹   rC  r¬  r­  rk   rü   r°  r±  r²  Úmrope_position_deltasÚtotal_input_idsrW  Úimage_indexÚvideo_indexr  Ú
image_numsÚ
video_numsÚvision_start_indicesÚvision_tokensÚinput_tokensÚllm_pos_ids_listÚstÚremain_imagesÚremain_videosr¤  Úed_imageÚed_videor   rñ  rò  ÚedÚ
llm_grid_tÚ
llm_grid_hÚ
llm_grid_wÚtext_lenÚst_idxÚt_indexÚh_indexÚw_indexÚllm_positionsÚmax_position_idss)                                            r#   Úget_rope_indexzQwen3VLModel.get_rope_index±  sÀ  € ð Ð%Ý"Ô4°^À^ÐTUÐTUÐTUÐWXÐTXÔEYÐ_`ÐaÑaÔaˆNØ#$ˆN˜1˜1˜1˜a˜4Ñ à!œ[Ô6ÔIÐØœÔ3ˆØœÔ3ˆØ $¤Ô AÐØ "ÐØÑ  nÐ&@ÀNÑD^Ø'ˆOØÐ%Ý!&¤°Ñ!AÔ!A�Ý œ:ØØ” Ô"Ø” Ô"Ø”oØ Ô'ðñ ô ˆLð (,Ñ$ˆK˜Ø+×.Ò.¨Ô/EÑFÔFˆNÝ )¨/Ñ :Ô :ð ?`ñ ?`‘��9Ø% n°QÔ&7¸1Ò&<Ô=�	Ø)-Ñ&�
˜JÝ',¤~°iÐCXÒ6XÑ'YÔ'Y×'aÒ'aÐbcÑ'dÔ'dÐ$Ø )Ð*>ÀÑ*BÔ C�Ø+¨~Ò=×BÒBÑDÔD�
Ø+¨~Ò=×BÒBÑDÔD�
Ø(×/Ò/Ñ1Ô1�Ø)+Ð Ø�Ø/9¸:˜}�Ý˜z¨JÑ6Ñ7Ô7ð +Cñ +C�AØ%¨Ð5Ð5¸-È!Ò:KÐ:KØ#/×#5Ò#5°nÀbÑ#IÔ#I˜˜å#& |Ñ#4Ô#4°qÑ#8˜Ø%¨Ð5Ð5¸-È!Ò:KÐ:KØ#/×#5Ò#5°nÀbÑ#IÔ#I˜˜å#& |Ñ#4Ô#4°qÑ#8˜Ø (Ò*Ð*à*¨;Ô7¸Ô:Ø*¨;Ô7¸Ô:Ø*¨;Ô7¸Ô:ð  ˜1˜ð
 $ qÑ(˜Ø%¨Ñ*˜Ø%˜˜ð +¨;Ô7¸Ô:Ø*¨;Ô7¸Ô:Ø*¨;Ô7¸Ô:ð  ˜1˜ð
 $ qÑ(˜Ø%¨Ñ*˜Ø%˜àŸš™œØŸš™œÐ$6Ñ6ØŸš™œÐ$6Ñ6ð -7 
�Jð
  " B™w�Hå?BÐCSÑ?TÔ?TÐWXÒ?XÐ?XÐ-¨bÔ1×5Ò5Ñ7Ô7¸!Ñ;Ð;Ð^_�FØ$×+Ò+­E¬L¸È%Ð,PÑ,PÔ,P×,UÒ,UÐVWÐY[Ñ,\Ô,\×,cÒ,cÐdeÐgiÑ,jÔ,jÐmsÑ,sÑtÔtÐtõ $œl¨:¸eÐDÑDÔD×IÒIÈ"ÈaÑPÔP×WÒWÐXZÐ\fÐisÑ\sÑtÔt×|Ò|Ñ~Ô~�GÝ#œl¨:¸eÐDÑDÔD×IÒIÈ!ÈRÐQRÑSÔS×ZÒZÐ[eÐgiÐkuÑvÔv×~Ò~ñ  Aô  A�GÝ#œl¨:¸eÐDÑDÔD×IÒIÈ!ÈQÐPRÑSÔS×ZÒZÐ[eÐgqÐsuÑvÔv×~Ò~ñ  Aô  A�GØ$×+Ò+­E¬K¸À'È7Ð8SÑ,TÔ,TÐW_Ñ,_ÐbhÑ,hÑiÔiÐiØ˜j¨:Ñ5¸
ÑBÑB�B‘Bà�˜LÑ)Ô)Ò)Ð)Ý?BÐCSÑ?TÔ?TÐWXÒ?XÐ?XÐ-¨bÔ1×5Ò5Ñ7Ô7¸!Ñ;Ð;Ð^_�FÝ" <Ñ0Ô0°2Ñ5�HØ$×+Ò+­E¬L¸È%Ð,PÑ,PÔ,P×,UÒ,UÐVWÐY[Ñ,\Ô,\×,cÒ,cÐdeÐgiÑ,jÔ,jÐmsÑ,sÑtÔtÐtå %¤	Ð*:ÀÐ BÑ BÔ B× JÒ JÈ1ÈbÑ QÔ Q�Ø?L×?OÒ?OÐP\ÔPcÑ?dÔ?d�˜S ! ^°AÔ%6¸!Ò%;Ð;Ñ<Ø%×,Ò,¨]×->Ò->Ñ-@Ô-@À1Ñ-DÅsÈ?Ð[\ÔK]ÑG^ÔG^Ñ-^Ñ_Ô_Ð_Ñ_Ý$)¤LÐ1FÈyÔO_Ð$`Ñ$`Ô$`×$jÒ$jÐklÑ$mÔ$mÐ!ØÐ!6Ð6Ð6àÐ)Ø-×2Ò2Ñ4Ô4×;Ò;¸BÑ?Ô?�Ø×!Ò! !Ñ$Ô$Ð$Ø×)Ò)¨.¸AÒ*=¸qÑAÔAÐAØ+×5Ò5°aÑ8Ô8×?Ò?ÀÀ2ÀrÑJÔJ×MÒMÈnÔNcÑdÔd�Ø#/×#3Ò#3°A¸uÐ#3Ñ#EÔ#EÀaÔ#H×#LÒ#LÈRÐY]Ð#LÑ#^Ô#^Ð_`Ô#aÐ Ø(8¸1Ñ(<¸~Ô?SÐTVÔ?WÑ(WÐ%Ð%õ ”L ¤°Ô!3¸IÔ<LÐMÑMÔMß’T˜!˜Q ‘^”^ß’V˜A˜yœ¨qÔ1°2Ñ6Ô6ð õ
 ).¬Ø”_ QÔ'¨Ð+Ø$Ô+Ø#œ/ð)ñ )ô )Ð%ð  Ð!6Ð6Ð6r%   Úpixel_values_videosc                 ó.   — |                       ||¦  «        S )a
  
        Encodes videos into continuous embeddings that can be forwarded to the language model. The deepstack visual features are also returned.

        Args:
            pixel_values_videos (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
                The tensors corresponding to the input videos.
            video_grid_thw (`torch.LongTensor` of shape `(num_videos, 3)`, *optional*):
                The temporal, height and width of feature shape of each video in LLM.
        )Úget_image_features©r¹   rÕ  r­  s      r#   Úget_video_featureszQwen3VLModel.get_video_features)  s   € ð ×&Ò&Ð':¸NÑKÔKÐKr%   Úpixel_valuesc                 ó&  — |                      | j        j        ¦  «        }|g}d}|                      ||¬¦  «        \  }}|€dS |                     d¦  «        | j        j        dz  z                       ¦   «         }t          j        ||¦  «        }||fS )a  
        Encodes images into continuous embeddings that can be forwarded to the language model. The deepstack visual features are also returned.

        Args:
            pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
                The tensors corresponding to the input images.
            image_grid_thw (`torch.LongTensor` of shape `(num_images, 3)`, *optional*):
                The temporal, height and width of feature shape of each image in LLM.
        N)rÑ  r%  r]   rh   )rX   r�  rG   rÓ  rü   r  r?   rù  )r¹   rÚ  r¬  Úpixel_values_listÚimage_embedsÚdeepstack_image_embedsÚsplit_sizess          r#   r×  zQwen3VLModel.get_image_features8  s�   € ð $×(Ò(¨¬Ô):Ñ;Ô;ˆØ)˜NÐØˆØ/3¯{ª{Ð;LÐWe¨{Ñ/fÔ/fÑ,ˆÐ,ØÐØ�:Ø%×*Ò*¨2Ñ.Ô.°$´+Ô2PÐRSÑ2SÑS×[Ò[Ñ]Ô]ˆÝ”{ <°Ñ=Ô=ˆØÐ3Ð3Ð3r%   r/  Úimage_featuresÚvideo_featuresc                 óP  — |€É| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n || j        j        k    }|| j        j        k    }| 	                    ¦   «         }| 
                    d¦  «                             |¦  «                             |j        ¦  «        }|�F||j        d         z  |                     ¦   «         k    r t          d|› d|j        d         › �¦  «        ‚| 	                    ¦   «         }| 
                    d¦  «                             |¦  «                             |j        ¦  «        }|�F||j        d         z  |                     ¦   «         k    r t          d|› d|j        d         › �¦  «        ‚||fS )zï
        Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
        equal to the length of multimodal features. If the lengths are different, an error is raised.
        Nrp   r]   z6Image features and image tokens do not match: tokens: z, features r   z7Videos features and video tokens do not match: tokens: )r¡  r?   r:   rº   r°  rÔ  rH   Úallr±  r_   rŒ   Ú	expand_asrS   rQ   ÚnumelrJ  )	r¹   rC  r/  rà  rá  Úspecial_image_maskÚspecial_video_maskÚn_image_tokensÚn_video_tokenss	            r#   Úget_placeholder_maskz!Qwen3VLModel.get_placeholder_maskL  s/  € ð ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐÐà!*¨d¬kÔ.HÒ!HÐØ!*¨d¬kÔ.HÒ!HÐà+×/Ò/Ñ1Ô1ˆØ/×9Ò9¸"Ñ=Ô=×GÒGÈÑVÔV×YÒYÐZgÔZnÑoÔoÐØÐ%¨.¸=Ô;NÈrÔ;RÑ*RÐVd×VjÒVjÑVlÔVlÒ*lÐ*lÝØ}ÈÐ}Ð}ÐdrÔdxÐyzÔd{Ð}Ð}ñô ð ð ,×/Ò/Ñ1Ô1ˆØ/×9Ò9¸"Ñ=Ô=×GÒGÈÑVÔV×YÒYÐZgÔZnÑoÔoÐØÐ%¨.¸=Ô;NÈrÔ;RÑ*RÐVd×VjÒVjÑVlÔVlÒ*lÐ*lÝØ~È.Ð~Ð~ÐesÔeyÐz{Ôe|Ð~Ð~ñô ð ð "Ð#5Ð5Ð5r%   c                 ó@  ‡ ‡‡‡‡‡‡‡‡	‡
‡‡‡‡$‡%— t          ‰t          t          f¦  «        }|rt          ‰¦  «        nd}dd„Š$ˆˆ	ˆˆ$ˆˆˆˆˆ ˆˆˆˆ
ˆfd„Š%ˆ%fd„t	          |¦  «        D ¦   «         }t          d„ |D ¦   «         ¦  «        rt          ddd¬¦  «        S d}t          rt|€rd	„ |D ¦   «         }t          d
„ |D ¦   «         ¦  «        rMt          d„ |D ¦   «         ¦  «        r4‰  	                    |t          ‰ j
        j        ¦  «        |t          ¦  «        }|s|��Âd„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }|                     ¦   «          d} ‰ j
        j        d|||||dœ|¤Ž}|j        }t!          |dd¦  «        }d}|€t          dd|¬¦  «        S g }t#          t%          ||¦  «        ¦  «        D ]ê\  }\  }}d||<   d||<   |j        d         } |�œ|                     |j        ¦  «        }|                     ¦   «         dk    r|                     d¦  «        }|j        d         dk    r| dk    r|                     | d¦  «        }||                              | d|j        d         ¦  «        }|g}!d}|                     ‰                      |!¦  «        ¦  «         Œë|st          d|d         |¬¦  «        S t          d||¬¦  «        S |                     ¦   «         \  }"ŠŠŠd}|"g}d}"‰  
                    d‰d|d|‰¬¦  «        }|j        }t!          |dd¦  «        }d}|€t          dd|¬¦  «        S |j        d         } ‰�œ‰                     |j        ¦  «        Š‰                     ¦   «         dk    r‰                     d¦  «        Š‰j        d         dk    r| dk    r‰                     | d¦  «        Š|‰                              | d|j        d         ¦  «        }|g}d}‰                      |¦  «        }#t          d|#|¬¦  «        S )au  Forward pass for image generation (denoising step).

        Args:
            input_ids: [batch, txt_seq_len] - text token IDs (without image tokens)
            position_ids: [3, batch, total_seq_len] - 3D RoPE positions covering text+image
            vinputs: [batch, img_tokens, patch_dim] - patchified noise input
            timestep: [batch] - timestep values (scalar per sample)
            token_types: [batch, total_seq_len] or [total_seq_len, 1] - 0=AR, >0=gen
            attention_mask: ignored (created internally for non-flash path)
            pixel_values: optional image pixel values for conditioned generation
            pixel_values_videos: optional video pixel values
            image_grid_thw: optional image grid info
            video_grid_thw: optional video grid info

        Returns:
            Qwen3VLModelOutputWithPast with x_pred field set.
        r   Fc                 óŠ   — t          | t          t          f¦  «        s| S | |         }|rt          | t          ¦  «        rd | |<   |S r    )r6   r7   r&  )r9   rL  Úconsumer`   s       r#   Úpickz.Qwen3VLModel._forward_generation.<locals>.pickŽ  sM   € Ý˜e¥d­E ]Ñ3Ô3ð Ø�Ø˜”:ˆDØð "�: e­TÑ2Ô2ð "Ø!��c‘
ØˆKr%   c                 óL  •—  ‰‰| ¦  «        } ‰‰| d¬¦  «        } ‰‰| d¬¦  «        } ‰‰| ¦  «        } ‰‰&| ¦  «        } ‰‰| d¬¦  «        } ‰‰%| d¬¦  «        } ‰‰#| ¦  «        } ‰‰'| d¬¦  «        }	 ‰‰$| ¦  «        }
 ‰‰!| ¦  «        } ‰"                      ¦   «         |¦  «        }|€C|�A‰"                     ||¦  «        \  }}d }|€d S t          |¦  «        }d }t          |d¬¦  «        }|�S|                     |j        |j        ¦  «        }‰"                     |||¬¦  «        \  }}|                     ||¦  «         ~~|€C|�A‰" 	                    ||¦  «        \  }}d }|€d S t          |¦  «        }d }t          |d¬¦  «        }|�S|                     |j        |j        ¦  «        }‰"                     |||¬¦  «        \  }}|                     ||¦  «         ~~|	j
        d         }|j
        d         dk    r/|dk    r)|                     |dd¦  «                             ¦   «         }|                     |j        ¦  «        }‰"                     |¦  «        }d }|‰"j        k    }d }|j
        d         dk    r|dk    r|                     |d¦  «        }|                     d¦  «                             |¦  «        }||         ||<   ~~~|	                     |j        ¦  «        }	|	g}d }	‰"                     |¦  «                             |j        ¦  «        }||g}d x}}t          |d¬¦  «        }|j
        \  }}}|
                     |j        ¦  «        }
|
                     ¦   «         dk    r|
                     d¦  «        }
nb|
                     ¦   «         d	k    rJ|
j
        d         dk    r9|
j
        d         |k    r(|
                     d¦  «                             d¦  «        }
|
j
        d         dk    r|dk    r|
                     |d¦  «        }
| ‰‰ | ¦  «        |
|fS )
NT)rí  r   r=   ©r/  rà  ©r/  rá  r   r]   rh   )r¡  r×  r7   rD   rS   rH   rG   rê  Úmasked_scatter_rÙ  rQ   r{   r�   r‘  r•  rŒ   rä  r’  r>   rµ  )(rL  Úcur_input_idsÚcur_pixel_valuesÚcur_pixel_values_videosÚcur_image_grid_thwÚcur_video_grid_thwÚcur_image_embedsÚcur_video_embedsÚcur_timestepÚcur_vinputsÚcur_token_typesÚcur_prediction_maskr/  r¤  Úimage_embed_listÚ
image_maskÚvideo_embed_listÚ
video_maskÚ
batch_sizer„  Útms_maskÚt_emb_expandedÚcur_vinputs_listÚvinputs_embeddedÚ
embed_listÚtotal_seq_lenrÝ  r¬  rC  rî  rÚ  rÕ  rW  Úprediction_maskr¹   Útimesteprb   Úvideo_embedsr­  Úvinputss(                             €€€€€€€€€€€€€€r#   Úprepare_samplez8Qwen3VLModel._forward_generation.<locals>.prepare_sample–  sæ  ø€ Ø ˜D ¨CÑ0Ô0ˆMØ#˜t L°#¸tÐDÑDÔDÐØ&* dÐ+>ÀÈTÐ&RÑ&RÔ&RÐ#Ø!%  n°cÑ!:Ô!:ÐØ!%  n°cÑ!:Ô!:ÐØ#˜t L°#¸tÐDÑDÔDÐØ#˜t L°#¸tÐDÑDÔDÐØ˜4 ¨#Ñ.Ô.ˆLØ˜$˜w¨°TÐ:Ñ:Ô:ˆKØ"˜d ;°Ñ4Ô4ˆOØ"& $ ¸Ñ"<Ô"<Ðà7˜D×5Ò5Ñ7Ô7¸ÑFÔFˆMØÐ'Ð,<Ð,HØ&*×&=Ò&=Ð>NÐPbÑ&cÔ&cÑ#Ð  !Ø#'Ð Ø#Ð+Ø˜4Ý#'Ð(8Ñ#9Ô#9Ð Ø#'Ð Ý#/Ð0@ÀaÐ#HÑ#HÔ#HÐ ØÐ+Ø#3×#6Ò#6°}Ô7KÈ]ÔM`Ñ#aÔ#aÐ Ø $× 9Ò 9¸-ÐWdð  vFÐ 9ñ  !Gô  !G‘�
˜AØ×-Ò-¨jÐ:JÑKÔKÐKØÐ 0àÐ'Ð,CÐ,OØ&*×&=Ò&=Ð>UÐWiÑ&jÔ&jÑ#Ð  !Ø*.Ð'Ø#Ð+Ø˜4Ý#'Ð(8Ñ#9Ô#9Ð Ø#'Ð Ý#/Ð0@ÀaÐ#HÑ#HÔ#HÐ ØÐ+Ø#3×#6Ò#6°}Ô7KÈ]ÔM`Ñ#aÔ#aÐ Ø $× 9Ò 9¸-ÐWdð  vFÐ 9ñ  !Gô  !G‘��:Ø×-Ò-¨jÐ:JÑKÔKÐKØÐ 0à$Ô*¨1Ô-ˆJØÔ" 1Ô%¨Ò*Ð*¨z¸Aª~¨~Ø -× 4Ò 4°ZÀÀRÑ HÔ H× NÒ NÑ PÔ P�Ø'Ÿ?š?¨=Ô+?Ñ@Ô@ˆLØ×$Ò$ \Ñ2Ô2ˆEØˆLØ$¨Ô(9Ò9ˆHØ ˆMØŒ~˜aÔ  AÒ%Ð%¨*°qª.¨.Ø#Ÿ?š?¨:°rÑ:Ô:�Ø"Ÿ_š_¨QÑ/Ô/×9Ò9¸-ÑHÔHˆNØ&4°XÔ&>ˆM˜(Ñ#Ø�x à%Ÿ.š.¨Ô)=Ñ>Ô>ˆKØ +˜}ÐØˆKØ#ŸšÐ/?Ñ@Ô@×CÒCÀMÔDWÑXÔXÐØ'Ð)9Ð:ˆJØ/3Ð3ˆMÐ,Ý(¨¸Ð;Ñ;Ô;ˆMØ+8Ô+>Ñ(ˆJ˜ qà-×0Ò0°Ô1EÑFÔFˆOØ×"Ò"Ñ$Ô$¨Ò)Ð)Ø"1×";Ò";¸AÑ">Ô">��Ø ×$Ò$Ñ&Ô&¨!Ò+Ð+°Ô0EÀbÔ0IÈQÒ0NÐ0NÐSbÔShÐijÔSkÐo|ÒS|ÐS|Ø"1×"9Ò"9¸"Ñ"=Ô"=×"GÒ"GÈÑ"JÔ"J�ØÔ$ QÔ'¨1Ò,Ð,°¸a²°Ø"1×"8Ò"8¸ÀRÑ"HÔ"H�Ø  $ $ |°SÑ"9Ô"9¸?ÐL_Ð_Ð_r%   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r!   r!   )r¿  r  r  s     €r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>à  s#   ø€ ÐCÐCÐC¨!�N�N 1Ñ%Ô%ÐCÐCÐCr%   c              3   ó   K  — | ]}|d u V — Œ	d S r    r!   ©r¿  r`   s     r#   ú	<genexpr>z3Qwen3VLModel._forward_generation.<locals>.<genexpr>á  s&   è è € Ð1Ð1 ˆt�tˆ|Ð1Ð1Ð1Ð1Ð1Ð1r%   N)r¨  r«  r¬  c                 ó8   — g | ]}t          |d          ¦  «        ‘ŒS ©rh   )re   r  s     r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>æ  s%   € ÐKÐKÐK¸$Õ,¨T°!¬WÑ5Ô5ÐKÐKÐKr%   c              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr!   ©r¿  rd   s     r#   r  z3Qwen3VLModel._forward_generation.<locals>.<genexpr>ç  s&   è è € Ð4Ð4 &�6˜A’:Ð4Ð4Ð4Ð4Ð4Ð4r%   c              3   ó"   K  — | ]
}|d k    V — ŒdS r  r!   r  s     r#   r  z3Qwen3VLModel._forward_generation.<locals>.<genexpr>ç  s&   è è € Ð<_Ð<_ÈV¸VÀqº[Ð<_Ð<_Ð<_Ð<_Ð<_Ð<_r%   c                 ó   — g | ]
}|d          ‘ŒS )r   r!   r  s     r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>ë  s   € Ð!?Ð!?Ð!?¨d $ q¤'Ð!?Ð!?Ð!?r%   c                 ó   — g | ]
}|d          ‘ŒS )r   r!   r  s     r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>ì  s   € Ð >Ð >Ð >¨T  a¤Ð >Ð >Ð >r%   c                 ó   — g | ]
}|d          ‘ŒS r  r!   r  s     r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>í  s   € Ð=Ð=Ð=¨D  Q¤Ð=Ð=Ð=r%   c                 ó   — g | ]
}|d          ‘ŒS )ri   r!   r  s     r#   rÀ  z4Qwen3VLModel._forward_generation.<locals>.<listcomp>î  s   € Ð#AÐ#AÐ#A° D¨¤GÐ#AÐ#AÐ#Ar%   )r/  rW  r0  rb   rz  r¬  r   r]   )rC  rW  rk   r/  rž  r0  rb   r  r!   )r6   r7   r&  r&   rÁ   ra   r§  ÚHIDREAM_AR_CACHErã  rŸ  r�  r,  ÚHIDREAM_AR_CACHE_PINNEDr8   rB  r¨  rm  rH  rô  rQ   rS   rH   r>   rŒ   r{   rt   rú  r”  rI  )&r¹   rC  rW  r  r
  rb   rk   rÚ  rÕ  r¬  r­  rÝ  r  r	  r0  r)   Úis_jointrž  Úpreparedrz  r2  Úinputs_embeds_listr6  r7  Úprediction_mask_listÚoutputsr£  r¬  Úx_pred_listrL  r}   rý  r  Úhidden_states_list_for_headr/  r«  rî  r  s&   `````` ```````                      @@r#   Ú_forward_generationz Qwen3VLModel._forward_generationt  s~  øøøøøøøøøøøøøøø€ õ. ˜i­$µ¨Ñ7Ô7ˆØ)1Ð8•s˜9‘~”~�~°qˆð	ð 	ð 	ð 	ðH	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ð H	`ðT DÐCÐCÐC­u°\Ñ/BÔ/BÐCÑCÔCˆÝÐ1Ð1¨Ð1Ñ1Ô1Ñ1Ô1ð 	eÝ-ÀÈTÐ_cÐdÑdÔdÐdàˆÝð 	Ð 9Ð AØKÐKÀ(ÐKÑKÔKˆGÝÐ4Ð4¨GÐ4Ñ4Ô4Ñ4Ô4ð ½Ð<_Ð<_ÐW^Ð<_Ñ<_Ô<_Ñ9_Ô9_ð Ø×-Ò-¨l½CÀÔ@SÔ@ZÑ<[Ô<[Ð]dÕf}Ñ~Ô~�àð %	s�xÑ+Ø!?Ð!?°hÐ!?Ñ!?Ô!?ÐØ >Ð >°XÐ >Ñ >Ô >ÐØ=Ð=°HÐ=Ñ=Ô=ÐØ#AÐ#A¸Ð#AÑ#AÔ#AÐ Ø�NŠNÑÔÐØˆHØ7�dÔ)Ô7ð Ø0Ø.Ø*CØ,Ø!ðð ð ðð ˆGð ")Ô!:ÐÝ! '¨=¸$Ñ?Ô?ˆKØˆGØ!Ð)Ý1ÀDÐQUÐcnÐoÑoÔoÐoØˆKÝ=FÅsÐK]Ð_sÑGtÔGtÑ=uÔ=uð Sð SÑ9�Ñ9�mÐ%8Ø*.Ð" 3Ñ'Ø,0Ð$ SÑ)Ø*Ô0°Ô3�
Ø&Ð2Ø*=×*@Ò*@ÀÔAUÑ*VÔ*VÐ'Ø*×.Ò.Ñ0Ô0°AÒ5Ð5Ø.A×.KÒ.KÈAÑ.NÔ.NÐ+Ø*Ô0°Ô3°qÒ8Ð8¸ZÈ!º^¸^Ø.A×.HÒ.HÈÐUWÑ.XÔ.XÐ+Ø$1Ð2EÔ$F×$KÒ$KÈJÐXZÐ\iÔ\oÐprÔ\sÑ$tÔ$t�MØ/<¨oÐ+Ø $�Ø×"Ò" 4×#4Ò#4Ð5PÑ#QÔ#QÑRÔRÐRÐRØð zÝ1ÀDÐQ\Ð]^ÔQ_ÐmxÐyÑyÔyÐyÝ-ÀÈ[ÐfqÐrÑrÔrÐràDLÇLÂLÁNÄNÑAˆ�| [°/ØˆØ+˜_ÐØˆØ×%Ò%ØØ%ØØ,ØØ&?Ø#ð &ñ 
ô 
ˆð  Ô1ˆÝ˜g }°dÑ;Ô;ˆØˆØÐ Ý-ÀÈTÐ_jÐkÑkÔkÐkà"Ô(¨Ô+ˆ
ØÐ&Ø-×0Ò0°Ô1EÑFÔFˆOØ×"Ò"Ñ$Ô$¨Ò)Ð)Ø"1×";Ò";¸AÑ">Ô">�ØÔ$ QÔ'¨1Ò,Ð,°¸a²°Ø"1×"8Ò"8¸ÀRÑ"HÔ"H�Ø)¨/Ô:×?Ò?À
ÈBÐP]ÔPcÐdfÔPgÑhÔhˆMØ+˜_ÐØˆØ×"Ò"Ð#5Ñ6Ô6ˆå)¸DÈÐ]hÐiÑiÔiÐir%   rW  rx  ry  r  r
  rb   rÝ  r  r	  r0  r)   c                 ó"
  — |� | j         d||||||||||	||||dœ|¤ŽS t          |¦  «        }t          |¦  «        }|du |duz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }nt          |¦  «        }d}d}|�Ž|                      ||¦  «        \  }}d}t          |¦  «        }d}t          |d¬¦  «                             |j        |j	        ¦  «        }|  
                    |||¬¦  «        \  }}|                     ||¦  «         d}|�Ž|                      ||	¦  «        \  }}d}t          |¦  «        }d}t          |d¬¦  «                             |j        |j	        ¦  «        }|  
                    |||¬¦  «        \  }}|                     ||¦  «         d}d}d}|�ž|�œ|d         }|d         }||z  }g }||         }||         }t          ||¦  «        D ]_\  }}|                     |                     ¦   «         |j        d	         ¦  «        } || |dd…f<   || |dd…f<   |                     | ¦  «         Œ`~~~~n|�|d         }|}|}n|�|d         }|}|}dx}}|�€]t%          |t&          ¦  «        s|n|d
         }!|!�¶|!j        dk    r«t+          j        |!dd…df         dd¬¦  «        }!|!j	        j        r~|!                     ¦   «         }!|!                     t+          j        |!j	        ¦  «        j        ¦  «                             ¦   «                              d¦  «         |!                     ¦   «         }!t?          ¦   «         o)|dur|j        d         dk    p|duo|j        d         dk    }"t?          ¦   «          o+|
dur|
d         dk    p|du p|                      ¦   «         dk    }#|"s	|#s| j!        €$|  "                    |||	|!¬¦  «        \  }}$|$| _!        nâ|j        \  }%}&}|
�(|
d         | j!        z                        |j        ¦  «        nd}'t+          j#        |&|j        ¬¦  «        }| $                    dd	¦  «         %                    |%d	¦  «        }|
�%|' &                    |%|'j        d         z  d¬¦  «        }'| '                    |'¦  «        }| (                    d¦  «         %                    dd	d	¦  «        }d}!d}|g}(d} | j)        dd||||(|
||dœ|¤Ž})|)j*        }*|)j+        }+d})tY          |*|+| j!        ¬¦  «        S )aU  
        image_grid_thw (`torch.LongTensor` of shape `(num_images, 3)`, *optional*):
            The temporal, height and width of feature shape of each image in LLM.
        video_grid_thw (`torch.LongTensor` of shape `(num_videos, 3)`, *optional*):
            The temporal, height and width of feature shape of each video in LLM.
        N)rC  rW  r  r
  rb   rk   rÚ  rÕ  r¬  r­  rÝ  r  r	  r0  rG  r   r=   rð  rñ  ©.r   r]   Úfull_attentionrg   r   rh   )r‡   Údim2rç   )rk   rQ  ri   )rC  rW  rk   rx  r/  ry  rD  rE  )r¨  rx  rª  r!   )-r%  r;   rJ  r¡  r×  r7   rD   rS   rH   rG   rê  rò  rÙ  rô  Ú	new_zerosr_   rQ   rú  r6   rŒ  r¿   r?   ÚdiagonalÚis_floating_pointr�   Údiv_Úfinfor.   Úneg_r1  r^   r   rK  rª  rÔ  rê   rt   r{   r  ÚaddrŒ   r�  r¨  rx  r§  ),r¹   rC  rk   rW  rx  r/  rÚ  rÕ  r¬  r­  ry  r  r
  rb   rÝ  r  r	  r0  r)   rÿ  r  rÞ  rþ  r¤  Údeepstack_video_embedsr   rD  rE  Úimage_mask_jointÚvideo_mask_jointÚ	img_embedÚ	vid_embedÚembed_jointÚattention_mask_tensorÚprefill_compiled_stageÚprefill_noncompiled_stagerª  r  r  Údeltar   r"  r¨  Úoutput_past_key_valuess,                                               r#   rÈ   zQwen3VLModel.forward2  s¤  € ð< ÐØ+�4Ô+ð 	Ø#°,Ø¨(ÀØ-Ø)Ð?RØ-¸nØ)¸Ø /Ø*Cð	ð 	ð ð	ð 	ð 	õ $ LÑ1Ô1ˆÝ*Ð+>Ñ?Ô?ÐØ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMˆMå(¨Ñ7Ô7ˆMàˆ
Øˆ
àÐ#Ø37×3JÒ3JÈ<ÐYgÑ3hÔ3hÑ0ˆLÐ0ØˆLÝ# LÑ1Ô1ÐØˆLÝ'Ð(8¸aÐ@Ñ@Ô@×CÒCÀMÔDXÐZgÔZmÑnÔnˆLØ ×5Ò5Ø¨À|ð 6ñ ô ‰MˆJ˜ð ×)Ò)¨*°lÑCÔCÐCØˆLàÐ*Ø37×3JÒ3JÐK^Ð`nÑ3oÔ3oÑ0ˆLÐ0Ø"&ÐÝ# LÑ1Ô1ÐØˆLÝ'Ð(8¸aÐ@Ñ@Ô@×CÒCÀMÔDXÐZgÔZmÑnÔnˆLØ ×5Ò5Ø¨À|ð 6ñ ô ‰MˆAˆzð ×)Ò)¨*°lÑCÔCÐCØˆLàÐØ"&ÐØÐ! jÐ&<à# FÔ+ˆJØ# FÔ+ˆJØ)¨JÑ6ÐØ&(Ð#Ø)Ð*:Ô;ÐØ)Ð*:Ô;ÐÝ(+Ð,BÐDZÑ([Ô([ð <ð <Ñ$�	˜9Ø'×1Ò1Ð2B×2FÒ2FÑ2HÔ2HÈ)Ì/ÐZ\ÔJ]Ñ^Ô^�Ø3<�Ð,¨a¨a¨aÐ/Ñ0Ø3<�Ð,¨a¨a¨aÐ/Ñ0Ø'×.Ò.¨{Ñ;Ô;Ð;Ð;Ø&Ð(>Ð@PÐRbÐRbØÐ#Ø# FÔ+ˆJØ)ÐØ&<Ð#Ð#ØÐ#Ø# FÔ+ˆJØ)ÐØ&<Ð#Ø"&Ð&ˆ
�ZàÑå&0°ÅÑ&FÔ&FÐl��ÈNÐ[kÔLlð "ð %Ð0Ð5JÔ5OÐSTÒ5TÐ5TÝ(-¬Ð7LÈQÈQÈQÐPQÈTÔ7RÐYZÐabÐ(cÑ(cÔ(cÐ%à(Ô.Ô@ð HØ,A×,GÒ,GÑ,IÔ,IÐ)Ø)×.Ò.­u¬{Ð;PÔ;VÑ/WÔ/WÔ/[Ñ\Ô\×aÒaÑcÔc×hÒhÐilÑmÔmÐmØ,A×,EÒ,EÑ,GÔ,GÐ)õ &>Ñ%?Ô%?ð &Ø $Ð&ÐB¨9¬?¸1Ô+=ÀÒ+Bð OØ!¨Ð-ÐM°-Ô2EÀaÔ2HÈAÒ2Mð #õ -EÑ,FÔ,FÐ(Fð )Ø tÐ+ÐF°¸qÔ0AÀQÒ0Fð VØ# tÐ+ÐT¨×/MÒ/MÑ/OÔ/OÐSTÒ/Tð &ð 'ð KÐ*Cð KÈÔHXÐH`Ø,0×,?Ò,?ØØ"Ø"Ø#8ð	 -@ñ -ô -Ñ)�˜kð $/�Ô Ð ð -:Ô,?Ñ)�
˜J¨ð &Ð1ð $ AÔ&¨Ô)9Ñ9×=Ò=¸mÔ>RÑSÔSÐSàð õ
  %œ|¨J¸}Ô?SÐTÑTÔT�Ø+×0Ò0°°BÑ7Ô7×>Ò>¸zÈ2ÑNÔN�Ø!Ð-Ø!×3Ò3°JÀ%Ä+ÈaÄ.Ñ4PÐVWÐ3ÑXÔX�EØ+×/Ò/°Ñ6Ô6�Ø+×5Ò5°aÑ8Ô8×?Ò?ÀÀ2ÀrÑJÔJ�Ø$(Ð!àˆ	Ø+˜_ÐØˆØ%�$Ô%ð 

ØØ%Ø)Ø+Ø,Ø)Ø-Ø$;ð

ð 

ð ð

ð 

ˆð $Ô5ÐØ!(Ô!8ÐØˆÝ)Ø/Ø2ØÔ(ð
ñ 
ô 
ð 	
r%   )NNNNr    r%  )	NNNNNNNNN)NNNNNNNNNNNNNNNNN)%rÉ   rÊ   rË   r±  Ú_checkpoint_conversion_mappingÚaccepts_loss_kwargsr   rõ   r³  r±   r˜  rŸ  r¡  r£  r©  r«  r   r?   r‹  rà   r&  rÔ  r­  rÙ  r×  rê  r%  r*   r   r   r7   r   r   r   r§  rÈ   rÌ   rÍ   s   @r#   r‡  r‡  v  s  ø€ € € € € € àÐØ%'Ð"àÐØÐÐÑØ2Ð4HÐIÐðð ð ð ð ð.ð ð ð	ð 	ð 	ð:ð :ð :ð8ð 8ð 8ð&ð &ð &ð#ð #ð #ð
 15Ø59Ø59Ø15ðv7ð v7à˜EÔ,Ô-ðv7ð ! Ô!1Ô2ðv7ð ! Ô!1Ô2ð	v7ð
 ! ¤Ô.ðv7ð 
ˆuŒ|˜Uœ\Ð)Ô	*ðv7ð v7ð v7ð v7ðr dhðLð LØ#(Ô#4ðLØFNÈuÔO_ÔF`ðLð Lð Lð Lð4ð 4¨uÔ/@ð 4ÐRZÐ[`Ô[kÔRlð 4ð 4ð 4ð 4ð0 7;Ø6:ð&6ð &6àÔ#ð&6ð Ô(ð&6ð ! Ô!2Ô3ð	&6ð
 ! Ô!2Ô3ð&6ð &6ð &6ð &6ðR Z^ØgkØ-1Ø7;ð	|jð |jð |jð |jð| Øð '+Ø15Ø37Ø+/Ø59Ø/3Ø;?Ø59Ø59Ø59Ø*.Ø+/Ø.2Ø/3Ø/3Ø26Ø48ð%m
ð m
àÔ#ðm
ð ! ¤Ô.ðm
ð ˜uÔ/Ô0ð	m
ð
 " %œðm
ð   Ô 1Ô2ðm
ð ˜uœ|Ô,ðm
ð & eÔ&7Ô8ðm
ð ! Ô!1Ô2ðm
ð ! Ô!1Ô2ðm
ð ! Ô!1Ô2ðm
ð ˜%œ,Ô'ðm
ð ˜5œ<Ô(ðm
ð ˜eœlÔ+ðm
ð ˜uœ|Ô,ðm
ð  ˜uœ|Ô,ð!m
ð" " %¤,Ô/ð#m
ð$ $,¨D¤>ð%m
ð& Ð+Ô,ð'm
ð( 
ˆuÐ0Ð0Ô	1ð)m
ð m
ð m
ñ Ôñ „^ðm
ð m
ð m
ð m
ð m
r%   r‡  zS
    Base class for Qwen3VL causal language model (or autoregressive) outputs.
    c                   ó8  — e Zd ZU dZdZeej                 ed<   dZ	eej                 ed<   dZ
ee         ed<   dZeeej                          ed<   dZeeej                          ed<   dZeej                 ed<   dZeej                 ed	<   dZee         ed
<   dS )ÚQwen3VLCausalLMOutputWithPastaÀ  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Language modeling loss (for next-token prediction).
    logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
        Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
    past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
        It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

        Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
        `past_key_values` input) to speed up sequential decoding.
    rope_deltas (`torch.LongTensor` of shape `(batch_size, )`, *optional*):
        The rope index difference between sequence length and multimodal rope.
    NÚlossÚlogitsrx  r}   r©  rª  r«  r¬  )rÉ   rÊ   rË   rŠ  r@  r   r?   r­  rõ   rA  rx  r   r}   r&  r©  rª  r‹  r«  r¬  r7   r!   r%   r#   r?  r?  ä  sà   € € € € € € ðð ð )-€Dˆ(�5Ô$Ô
%Ð,Ð,Ñ,Ø*.€FˆH�UÔ&Ô'Ð.Ð.Ñ.Ø'+€O�X˜e”_Ð+Ð+Ñ+Ø8<€M�8˜E %Ô"3Ô4Ô5Ð<Ð<Ñ<Ø59€J�˜˜uÔ0Ô1Ô2Ð9Ð9Ñ9Ø.2€K�˜%Ô*Ô+Ð2Ð2Ñ2Ø*.€FˆH�UÔ&Ô'Ð.Ð.Ñ.Ø"&€K�˜$”Ð&Ð&Ñ&Ð&Ð&r%   r?  c            .       ó  ‡ — e Zd ZU i ZdgZdZeed<   ˆ fd„Zd„ Z	d„ Z
d„ Zd„ Z	 d-d
ej        deej                 fd„Zd-dej        deej                 fd„Zed„ ¦   «         Zed„ ¦   «         Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.dej        deej                 deej                 dee         deej                 deej                 deej                 d
eej                 deej                 deej                 deej                 deeej        f         deej                 deej                 deej                 deej                 d eej                 d!eej                 d"ee         d#ee         d$eee f         f*d%„¦   «         Z!	 	 	 	 	 	 	 	 	 	 d/ˆ fd'„	Z"	 d-deej                 deej                 d$eej        ej        f         fd(„Z#	 	 	 d0d*ed+e$deej                 d$eej        e%e&e'f         f         fd,„Z(ˆ xZ)S )1ÚQwen3VLForConditionalGenerationzlm_head.weightFrº   c                 óú   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        j        |j        j        d¬¦  «        | _	        |  
                    ¦   «          d S r�  )r°   r±   r‡  r°  r²   r³   rŽ  r0   r)  Úlm_headr.  r¸   s     €r#   r±   z(Qwen3VLForConditionalGeneration.__init__	  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý! &Ñ)Ô)ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒà�ŠÑÔÐÐÐr%   c                 ó4   — | j                              ¦   «         S r    )r°  r¡  re  s    r#   r¡  z4Qwen3VLForConditionalGeneration.get_input_embeddings  s   € ØŒz×.Ò.Ñ0Ô0Ð0r%   c                 ó:   — | j                              |¦  «         d S r    )r°  r£  r¤  s     r#   r£  z4Qwen3VLForConditionalGeneration.set_input_embeddings  s   € ØŒ
×'Ò'¨Ñ.Ô.Ð.Ð.Ð.r%   c                 ó:   — | j                              |¦  «         d S r    )r°  r©  r§  s     r#   r©  z+Qwen3VLForConditionalGeneration.set_decoder  s   € ØŒ
×Ò˜wÑ'Ô'Ð'Ð'Ð'r%   c                 ó4   — | j                              ¦   «         S r    )r°  r«  re  s    r#   r«  z+Qwen3VLForConditionalGeneration.get_decoder  s   € ØŒz×%Ò%Ñ'Ô'Ð'r%   NrÕ  r­  c                 ó8   — | j                              ||¦  «        S r    )r°  rÙ  rØ  s      r#   rÙ  z2Qwen3VLForConditionalGeneration.get_video_features  s   € ð Œz×,Ò,Ð-@À.ÑQÔQÐQr%   rÚ  r¬  c                 ó8   — | j                              ||¦  «        S r    )r°  r×  )r¹   rÚ  r¬  s      r#   r×  z2Qwen3VLForConditionalGeneration.get_image_features!  s   € ØŒz×,Ò,¨\¸>ÑJÔJÐJr%   c                 ó   — | j         j        S r    )r°  r�  re  s    r#   r�  z.Qwen3VLForConditionalGeneration.language_model%  s   € àŒzÔ(Ð(r%   c                 ó   — | j         j        S r    )r°  r�  re  s    r#   r�  z&Qwen3VLForConditionalGeneration.visual)  s   € àŒzÔ Ð r%   c                 ó8   — | j                              ¦   «          d S r    )r°  r˜  re  s    r#   r˜  z4Qwen3VLForConditionalGeneration.clear_runtime_caches-  s   € ØŒ
×'Ò'Ñ)Ô)Ð)Ð)Ð)r%   r   rC  rk   rW  rx  r/  Úlabelsry  Úlogits_to_keepr  r
  rb   rÝ  r  r	  r0  r)   rÐ   c                 ó¾  — |du}|s|�|gnd}|�|gnd}|�|gnd}dx}x}}d}n£|}t          |t          j        ¦  «        r|gn|}t          |t          j        ¦  «        r|gn|}t          |t          j        ¦  «        r|gn|}t          |t          j        ¦  «        r|gn|}t          |t          j        ¦  «        r|gn|}dx}x}} | j        di d|“d|“d|“d|	“d|
“d|“d|“d	|“d
|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž}|r1t	          |�|j        ndt          |d¦  «        r|j        nd¬¦  «        S |d         }|j        }|j	        }d}t          |t          ¦  «        rt          | d¦  «        n|}|dd…|dd…f         }|                      |¦  «        } ~~d}!|�'|                      | || j        j        j        ¬¦  «        }!t	          |!| ||¬¦  «        S )a)  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
        image_grid_thw (`torch.LongTensor` of shape `(num_images, 3)`, *optional*):
            The temporal, height and width of feature shape of each image in LLM.
        video_grid_thw (`torch.LongTensor` of shape `(num_videos, 3)`, *optional*):
            The temporal, height and width of feature shape of each video in LLM.

        Example:
            TODO: Add example
        NrC  rÚ  rÕ  r¬  r­  rW  rk   rx  r/  ry  r  r
  rb   rÝ  r  r	  r0  r¬  )r«  r¬  r   )rA  rO  r)  )r@  rA  rx  rª  r!   )r6   r?   rà   r°  r?  r«  rA   r¬  rx  rª  r^   rI  rE  Úloss_functionrº   rŽ  r)  )"r¹   rC  rk   rW  rx  r/  rO  rÚ  rÕ  r¬  r­  ry  rP  r  r
  rb   rÝ  r  r	  r0  r)   Úis_generationÚinputs_embeds_for_modelÚpixel_values_for_modelÚpixel_values_videos_for_modelÚvinputs_for_modelr"  r}   r;  Úoutput_rope_deltasÚslice_indicesÚselected_hidden_statesrA  r@  s"                                     r#   rÈ   z'Qwen3VLForConditionalGeneration.forward0  s#  € ðJ   tÐ+ˆØð 	@Ø9FÐ9R } o oÐX\Ð#Ø7CÐ7O l ^ ^ÐUYÐ"ØEXÐEdÐ-@Ð,AÐ,AÐjnÐ)ØAEÐEˆMÐE˜LÐ+>Ø $ÐÐà&3Ð#Ý7AÀ,ÕPUÔP\Ñ7]Ô7]Ð%o l ^ ^ÐcoÐ"å)3Ð4GÍÌÑ)VÔ)VÐoÐ$Ð%Ð%Ð\oð *õ .8¸ÅÄÑ-NÔ-NÐ [  	 	ÐT[ÐÝ-7¸ÅeÄlÑ-SÔ-SÐe˜L˜>˜>ÐYeˆLÝ-7¸ÅeÄlÑ-SÔ-SÐe˜L˜>˜>ÐYeˆLØ;?Ð?ˆLÐ?Ð.°Ø�$”*ð 
ð 
ð 
Ø�ið
à/Ð/ð
ð !>Ð =ð
ð *˜>ð	
ð
 *˜>ð
ð &˜ð
ð *˜>ð
ð ,˜Oð
ð 2Ð1ð
ð *˜>ð
ð &Ð%ð
ð �Xð
ð $˜ð
ð &˜ð
ð &˜ð
ð  ,˜Oð!
ð" '@Ð&?Øð%
ð 
ˆð, ð 	Ý0Ø)0Ð)<�w”~�~À$Ý3:¸7ÀMÑ3RÔ3RÐ\˜GÔ/Ð/ÐX\ðñ ô ð ð
   œ
ˆØ!(Ô!8ÐØ$Ô0ÐØˆõ 9CÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ!.¨q¨q¨q°-ÀÀÀÐ/BÔ!CÐØ—’Ð4Ñ5Ô5ˆØ" MàˆØÐØ×%Ò%¨V¸FÈtÌ{ÔOfÔOqÐ%ÑrÔrˆDå,ØØØ2Ø*ð	
ñ 
ô 
ð 	
r%   Tc                 óˆ   •—  t          ¦   «         j        |f|||||||	|
||dœ
|¤Ž}d |d<   |d         dk    r
d |d<   d |d<   |S )N)
rx  rk   r/  ry  rW  rÚ  rÕ  r¬  r­  rž  rW  r   rÚ  rÕ  )r°   Úprepare_inputs_for_generation)r¹   rC  rx  rk   r/  ry  rW  rž  rÚ  rÕ  r¬  r­  r)   Úmodel_inputsr»   s                 €r#   r\  z=Qwen3VLForConditionalGeneration.prepare_inputs_for_generation˜  s‰   ø€ ð" =•u‘w”wÔ<Øð
à+Ø)Ø'Ø)Ø%Ø%Ø 3Ø)Ø)Øð
ð 
ð ð
ð 
ˆð  (,ˆ�^Ñ$à˜!Ô Ò!Ð!Ø+/ˆL˜Ñ(Ø26ˆLÐ.Ñ/àÐr%   c                 óì  — | j         j        }| j         j        }| j         j        }|�ð|d         } |                      ¦   «         t          j        |t
          j        |j        ¬¦  «        ¦  «        d         } |                      ¦   «         t          j        |t
          j        |j        ¬¦  «        ¦  «        d         } |                      ¦   «         t          j        |t
          j        |j        ¬¦  «        ¦  «        d         }	||k    }
||k    }||	k    }n||k    }
||k    }||k    }t          j	        |
dd¬¦  «        }t          j
        ||z  d¬¦  «        }t          j
        ||z  d¬¦  «        }||fS )aa  
        Get the number of images and videos for each sample to calculate the separation length of the sample tensor.
        These parameters are not passed through the processor to avoid unpredictable impacts from interface modifications.

        Args:
            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Indices of input sequence tokens in the vocabulary.

        Returns:
            image_nums (`torch.LongTensor` of shape `(batch_size, num_images_sample)`)
            video_nums (`torch.LongTensor` of shape `(batch_size, num_videos_sample)`)
        Nr'  rp   r   r   )ÚshiftsÚdimsr=   )rº   r°  r±  r²  r¡  r?   r:   rÔ  rH   Úrollr_   )r¹   rC  r/  r°  r±  r²  Úfirst_channelÚvision_start_valueÚimage_valueÚvideo_valueÚvision_start_maskrÿ  r  Úvision_first_maskr¾  r¿  s                   r#   Ú_get_image_nums_and_video_numsz>Qwen3VLForConditionalGeneration._get_image_nums_and_video_numsÁ  sŽ  € ð" œÔ3ˆØœÔ3ˆØ $¤Ô AÐàÐ$Ø)¨&Ô1ˆMØ!< ×!:Ò!:Ñ!<Ô!<Ý”Ð2½%¼*È]ÔMaÐbÑbÔbñ"ô "àô"Ðð 6˜$×3Ò3Ñ5Ô5Ý”˜^µ5´:ÀmÔFZÐ[Ñ[Ô[ñô àôˆKð 6˜$×3Ò3Ñ5Ô5Ý”˜^µ5´:ÀmÔFZÐ[Ñ[Ô[ñô àôˆKð !.Ð1CÒ CÐØ&¨+Ò5ˆJØ&¨+Ò5ˆJˆJà )Ð-BÒ BÐØ" nÒ4ˆJØ" nÒ4ˆJå!œJÐ'8ÀÈÐKÑKÔKÐÝ”YÐ0°:Ñ=À1ÐEÑEÔEˆ
Ý”YÐ0°:Ñ=À1ÐEÑEÔEˆ
à˜:Ð%Ð%r%   r   Úexpand_sizeÚis_encoder_decoderc                 ó  ‡ ‡‡‡‡— ‰dk    r‰‰fS g d¢Šˆˆˆˆ fd„}ˆˆfd„} |‰¦  «        Š‰�‰                      ‰d¬¦  «        Š |‰¦  «        Š|r8‰                     d¦  «        €t          d¦  «        ‚ |‰d         ¦  «        ‰d<   ‰‰fS )	Nr   )rÚ  r¬  rÕ  r­  Úsecond_per_grid_tsc                 ó  •— ‰                      dd ¦  «        }‰                      dd ¦  «        }‰                     ‰
‰                      dd ¦  «        ¬¦  «        \  }}d„ }| D �]}|dk    rFt          j        |t	          |¦  «        ¦  «        }d„ |D ¦   «         } || |         |‰	¬¦  «        | |<   ŒO|dk    r't	          |¦  «        } || |         |‰	¬¦  «        | |<   Œ||d	k    rFt          j        |t	          |¦  «        ¦  «        }d
„ |D ¦   «         } || |         |‰	¬¦  «        | |<   ŒÈ|dk    r't	          |¦  «        } || |         |‰	¬¦  «        | |<   Œõ|dk    r$ || |         t	          |¦  «        ‰	¬¦  «        | |<   �Œ!| S )Nr¬  r­  r/  )r/  c                 ó´   ‡— t          j        | |¦  «        }|gdg|                      ¦   «         dz
  z  z   Št          j        ˆfd„|D ¦   «         d¬¦  «        }|S )Nr   c                 ó$   •— g | ]} |j         ‰Ž ‘ŒS r!   )rÖ  )r¿  ÚsampleÚrepeat_argss     €r#   rÀ  z¡Qwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation_visual.<locals>._repeat_interleave_samples.<locals>.<listcomp>
	  s"   ø€ Ð#VÐ#VÐ#VÀF M F¤M°;Ð$?Ð#VÐ#VÐ#Vr%   r   r=   )r?   rù  r>   r@   )rˆ   r  Úrepeat_timesÚsamplesÚresultrq  s        @r#   Ú_repeat_interleave_samplesz�Qwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation_visual.<locals>._repeat_interleave_samples	  sb   ø€ Ýœ+ a¨Ñ1Ô1�Ø+˜n°¨s°a·e²e±g´gÀ±kÑ/BÑB�ÝœÐ#VÐ#VÐ#VÐ#VÈgÐ#VÑ#VÔ#VÐ\]Ð^Ñ^Ô^�Ø�r%   rÚ  c                 ó^   — g | ]*}t          j        |d ¬¦  «                             ¦   «         ‘Œ+S ©r   r=   ©r?   rÓ  r_   ©r¿  rp  s     r#   rÀ  z}Qwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation_visual.<locals>.<listcomp>	  ó3   € ÐUÐUÐUÀ6�uœz¨&°aÐ8Ñ8Ô8×<Ò<Ñ>Ô>ÐUÐUÐUr%   )r  rr  rÕ  c                 ó^   — g | ]*}t          j        |d ¬¦  «                             ¦   «         ‘Œ+S rw  rx  ry  s     r#   rÀ  z}Qwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation_visual.<locals>.<listcomp>	  rz  r%   rl  )r?  rh  r?   rù  r7   )Údict_to_expandr¬  r­  r¾  r¿  ru  Úkeyrs  r  ri  rC  Úmodel_kwargsr¹   s            €€€€r#   Ú"_expand_dict_for_generation_visualziQwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation_visual 	  s  ø€ Ø)×-Ò-Ð.>ÀÑEÔEˆNØ)×-Ò-Ð.>ÀÑEÔEˆNØ%)×%HÒ%HØ¨×)9Ò)9¸/È4Ñ)PÔ)Pð &Iñ &ô &Ñ"ˆJ˜
ðð ð ð &ð ñ �Ø˜.Ò(Ð(å#œk¨.½$¸zÑ:JÔ:JÑKÔK�GàUÐUÈWÐUÑUÔU�GØ*DÐ*DØ& sÔ+°WÈ;ð+ñ +ô +�N 3Ñ'Ð'ð Ð,Ò,Ð,å" :Ñ.Ô.�GØ*DÐ*DØ& sÔ+°WÈ;ð+ñ +ô +�N 3Ñ'Ð'ð Ð1Ò1Ð1Ý#œk¨.½$¸zÑ:JÔ:JÑKÔK�GØUÐUÈWÐUÑUÔU�GØ*DÐ*DØ& sÔ+°WÈ;ð+ñ +ô +�N 3Ñ'Ð'ð Ð,Ò,Ð,Ý" :Ñ.Ô.�GØ*DÐ*DØ& sÔ+°WÈ;ð+ñ +ô +�N 3Ñ'Ð'ð Ð0Ò0Ð0Ø*DÐ*DØ& sÔ+µT¸*Ñ5EÔ5EÐT_ð+ñ +ô +�N 3Ñ'ùð "Ð!r%   c                 ó¶   •— | D ]T}|dk    rL| |         �Dt          | |         t          j        ¦  «        r$|‰vr | |                              ‰d¬¦  «        | |<   ŒU| S )Nry  r   r=   )r6   r?   rà   r  )r|  r}  ri  Úvisual_keyss     €€r#   Ú_expand_dict_for_generationzbQwen3VLForConditionalGeneration._expand_inputs_for_generation.<locals>._expand_dict_for_generation-	  sz   ø€ Ø%ð dð d�àÐ+Ò+Ð+Ø& sÔ+Ð7Ý" >°#Ô#6½¼ÑEÔEð 8à ;Ð.Ð.à*8¸Ô*=×*OÒ*OÐP[ÐabÐ*OÑ*cÔ*c�N 3Ñ'øØ!Ð!r%   r   r=   Úencoder_outputszMIf `is_encoder_decoder` is True, make sure that `encoder_outputs` is defined.)r  r?  rJ  )r¹   ri  rj  rC  r~  r  r‚  r�  s   `` ``  @r#   Ú_expand_inputs_for_generationz=Qwen3VLForConditionalGeneration._expand_inputs_for_generationï  s  øøøøø€ ð ˜!ÒÐØ˜lÐ*Ð*àwÐwÐwˆð+	"ð +	"ð +	"ð +	"ð +	"ð +	"ð +	"ð +	"ðZ		"ð 		"ð 		"ð 		"ð 		"ð 		"ð :Ð9¸,ÑGÔGˆàÐ Ø!×3Ò3°KÀQÐ3ÑGÔGˆIà2Ð2°<Ñ@Ô@ˆàð 	kØ×ÒÐ 1Ñ2Ô2Ð:Ý Ð!pÑqÔqÐqØ.IÐ.IÈ,ÐWhÔJiÑ.jÔ.jˆLÐ*Ñ+à˜,Ð&Ð&r%   r    )NNNNNNNNNNNr   NNNNNNN)
NNNNNTNNNN)r   FN)*rÉ   rÊ   rË   r<  Ú_tied_weights_keysr=  r   rõ   r±   r¡  r£  r©  r«  r?   r­  r   r‹  rÙ  r×  Úpropertyr�  r�  r˜  r   rà   r   r   r^   r7   r   r   r&  r?  rÈ   r\  rh  rW   rŒ  r5  r   r„  rÌ   rÍ   s   @r#   rC  rC    sH  ø€ € € € € € Ø%'Ð"Ø*Ð+ÐàÐØÐÐÑðð ð ð ð ð1ð 1ð 1ð/ð /ð /ð(ð (ð (ð(ð (ð (ð dhðRð RØ#(Ô#4ðRØFNÈuÔO_ÔF`ðRð Rð Rð Rð
Kð K¨uÔ/@ð KÐRZÐ[`Ô[kÔRlð Kð Kð Kð Kð ð)ð )ñ „Xð)ð ð!ð !ñ „Xð!ð*ð *ð *ð ð '+Ø15Ø37Ø+/Ø59Ø-1Ø/3Ø;?Ø59Ø59Ø59Ø34Ø*.Ø+/Ø.2Ø/3Ø/3Ø26Ø48ð)e
ð e
àÔ#ðe
ð ! ¤Ô.ðe
ð ˜uÔ/Ô0ð	e
ð
 " %œðe
ð   Ô 1Ô2ðe
ð ˜Ô)Ô*ðe
ð ˜uœ|Ô,ðe
ð & eÔ&7Ô8ðe
ð ! Ô!1Ô2ðe
ð ! Ô!1Ô2ðe
ð ! Ô!1Ô2ðe
ð ˜c 5¤<Ð/Ô0ðe
ð ˜%œ,Ô'ðe
ð ˜5œ<Ô(ðe
ð  ˜eœlÔ+ð!e
ð" ˜uœ|Ô,ð#e
ð$ ˜uœ|Ô,ð%e
ð& " %¤,Ô/ð'e
ð( $,¨D¤>ð)e
ð* Ð+Ô,ð+e
ð, 
ˆuÐ3Ð3Ô	4ð-e
ð e
ð e
ñ Ôðe
ðT ØØØØØØØ ØØð'ð 'ð 'ð 'ð 'ð 'ðX 15ð,&ð ,&à˜EÔ,Ô-ð,&ð   ¤Ô-ð,&ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð	,&ð ,&ð ,&ð ,&ð` Ø#(Ø04ð	U'ð U'àðU'ð !ðU'ð ˜EÔ,Ô-ð	U'ð 
ˆuÔ  c¨3 h¤Ð/Ô	0ðU'ð U'ð U'ð U'ð U'ð U'ð U'ð U'r%   rC  rz   )\ÚosÚdataclassesr   Útypingr   r   r   r{  r?   Útorch.nnr²   Útorch.nn.functionalÚ
functionalrb  Úenvironr?  r   Úshared.attentionr	   Útransformers.activationsr
   Útransformers.cache_utilsr   r   Útransformers.generationr   Útransformers.integrationsr   Útransformers.masking_utilsr   Ú+transformers.modeling_flash_attention_utilsr   Útransformers.modeling_outputsr   r   Ú transformers.modeling_rope_utilsr   r   Útransformers.modeling_utilsr   Útransformers.processing_utilsr   Útransformers.utilsr   r   Útransformers.utils.genericr   Úqwen3_vl_configurationr   r   r   r  r  r*   r3   r;   rD   rU   r[   re   rn   rx   r‚   r‰   r—   r©   ÚModuler«   rÏ   râ   r÷   rà   r&  r  r
  r(  r7  r]  rh  rj  rŽ  r™  r§  r¯  r»  r$  rR  rd  rp  r‡  r?  rC  r!   r%   r#   ú<module>r�     s�  ðð, 
€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø”
—’˜°Ñ4Ô4€Ø *Ð *Ð *Ð *Ð *Ð *Ø +Ð +Ð +Ð +Ð +Ð +Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø AÐ AÐ AÐ AÐ AÐ AØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø LÐ LÐ LÐ LÐ LÐ LØ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ Yð
 Ð ØÐ ðð ð ð.ð .ð .ðð ð ðð ð ð.ð .ð .ðLð Lð Lðð ð ðð ð ð"ð ð ðXð Xð Xðð ð ð
ð 
ð 
ð+ð +ð +ð\ð ð ð ð �r”yñ ô ð ð<2ð 2ð 2ð 2ð 2˜bœiñ 2ô 2ð 2ð.ð ð ð ð  2¤9ñ ô ð ð('ð 'ð 'ð 'ð '˜rœyñ 'ô 'ð 'ð&Ø„|ðØœðØ+0¬<ðØ>C¼lðà
ˆ5Œ<˜œÐ%Ô&ðð ð ð ð6ð 6ð 6ð 6ð 6˜RœYñ 6ô 6ð 6ðr#ð #ð #ð #ð #˜œñ #ô #ð #ðLFð Fð Fð Fð F ¤ñ Fô Fð FðR Ð˜YÑ'Ô'ðJð Jð Jð Jð J˜œñ Jô Jñ (Ô'ðJð"ð ð ð ð6c(ð c(ð c(ð c(ð c(˜2œ9ñ c(ô c(ð c(ðL"ð "ð "ð "ð "�R”Yñ "ô "ð "ðJXð Xð Xð Xð X˜bœiñ Xô Xð Xðv Ø€ððñ ô ð
'ð 'ð 'ð 'ð ' ñ 'ô 'ñô ñ „ð'ð( ðð ð ð ð ˜_ñ ô ñ „ðð"L6ð L6ð L6ð L6ð L6Ð/ñ L6ô L6ð L6ð^ €ð	lðñ ô ðnð nð nð nð nÐ-ñ nô nñô ðnð`"ð "ð "ð "ð "˜2œ9ñ "ô "ð "ð(ð ð ð ð �”ñ ô ð ð$'ð 'ð 'ð 'ð '�r”yñ 'ô 'ð 'ðR ðj	
ð j	
ð j	
ð j	
ð j	
Ð)ñ j	
ô j	
ñ „ðj	
ðZ Ø€ððñ ô ð
'ð 'ð 'ð 'ð ' Kñ 'ô 'ñô ñ „ð'ð0B'ð B'ð B'ð B'ð B'Ð&<¸oñ B'ô B'ð B'ð B'ð B'r%   