+
    œ°³jƒb  ã                   ó8  € ^ RI t^ RI Ht ^ RIHt ^ RIt^ RIHt ^RIH	t
 ^RIHt ^RIHt ^RIHt ^RIHtHt ^R	IHtHt ^R
IHt ^RIHtHtHt ^RIHtHt ^RI H!t! ^RI"H#t# ^RI$H%t% ^RI&H't' ^RI(H)t)H*t*H+t+H,t,H-t- ^RI.H/t/H0t0 R9R R llt1 ! R R]'4      t2 ! R R]%4      t3]! RR7      ] ! R R]4      4       4       t4 ! R R]Pj                  4      t6 ! R R ]Pj                  4      t7 ! R! R"]#4      t8R#]Pr                  R$]2/t: ! R% R&]4      t; ! R' R(]Pj                  4      t<] ! R) R*]4      4       t=] ! R+ R,]=4      4       t> ! R- R.]-4      t?Rt@ ! R/ R0]Pj                  4      tA ! R1 R2],4      tB ! R3 R4]+4      tC ! R5 R6])4      tD ! R7 R8]*4      tE. R:OtFR# );é    N)ÚCallable)Ú	dataclass)Úinitialization)ÚACT2FN)ÚCache)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚCLIPMLP)ÚJanusVisionAttention)ÚLlamaRMSNorm)ÚLlavaCausalLMOutputWithPastÚLlavaForConditionalGenerationÚ
LlavaModelÚLlavaModelOutputWithPastÚLlavaPreTrainedModel)ÚInternVLConfigÚInternVLVisionConfigc                óô   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        \
        ,          /# )	é   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropout)ÚnnÚModuleÚtorchÚTensorÚfloatÚint)Úformats   "Ún/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/internvl/modular_internvl.pyÚ__annotate__r/   .   sk   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ”S�[ñ%ó    c                 ó†  € TpTp	\         P                  ! WP                  ^^4      4      V,          p
Ve	   W¤,           p
\        P                  P                  V
RR7      p
\        P                  P                  W¦V P                  R7      p
\         P                  ! W©4      pVP                  ^^4      P                  4       pWº3# )r   ©Údim)ÚpÚtrainingéÿÿÿÿ)	r)   ÚmatmulÚ	transposer'   Ú
functionalÚsoftmaxr&   r5   Ú
contiguous)r    r!   r"   r#   r$   r%   r&   ÚkwargsÚ
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r.   Úeager_attention_forwardrA   .   s¦   € ð €JØ€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ!Ø#Õ4ˆô —=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r0   c                   ó   € ] tR t^HtRtR# )ÚInternVLVisionRMSNorm© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__rD   r0   r.   rC   rC   H   ó   † Ûr0   rC   c                   óT   a a€ ] tR t^Lt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚInternVLVisionAttentionc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfig©r   )r-   Ú__classdict__s   "€r.   r/   Ú$InternVLVisionAttention.__annotate__M   s   ø€ ÷ 	Zñ 	ZÑ3ñ 	Zr0   c                ó:  <€ \         SV `  V4       V =R V n        VP                  pV'       d   \        V P                  4      M\        P                  ! 4       V n	        V'       d   \        V P                  4      V n
        R# \        P                  ! 4       V n
        R# ©FN)ÚsuperÚ__init__Únum_key_value_groupsÚ	is_causalÚuse_qk_normrC   Ú	embed_dimr'   ÚIdentityÚq_normÚk_norm)ÚselfrP   Úqk_normÚ	__class__s   && €r.   rW   Ú InternVLVisionAttention.__init__M   sd   ø€ Ü‰Ñ˜Ô ØÐ%ð ˆŒØ×$Ñ$ˆç?FÔ+¨D¯N©NÔ;ÌBÏKÊKËMˆŒß?FÔ+¨D¯N©NÓ;ˆŽÌBÏKÊKËMˆŽr0   c                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# )r   Úhidden_statesr$   Nr<   )r)   r*   r   r   )r-   rR   s   "€r.   r/   rS   X   s<   ø€ ÷ '$ñ '$á—|‘|ð'$ñ Ÿ™ tÕ+ð'$ñ Ñ+Õ,ñ	'$r0   c           	     óv  € VP                  4       w  rEpV P                  V4      pV P                  V4      pV P                  V4      p	V P	                  V4      pV P                  V4      pVP                  WEV P                  V P                  4      P                  ^^4      pVP                  WEV P                  V P                  4      P                  ^^4      pV	P                  WEV P                  V P                  4      P                  ^^4      p	\        P                  ! V P                  P                  \        4      p
T
! V VVV	V3RV P                   '       g   RMV P"                  RV P$                  RR/VB w  r¼VP                  WEV P&                  4      pV P)                  V4      pV P+                  V4      pWÜ3# )é   r&   ç        r%   rY   F)ÚsizeÚq_projÚk_projÚv_projr]   r^   ÚreshapeÚ	num_headsÚhead_dimr8   Úviewr   Úget_interfacerP   Ú_attn_implementationrA   r5   Úattention_dropoutÚscaler[   Úprojection_layerÚprojection_dropout)r_   rd   r$   r<   Ú
batch_sizeÚseq_lenÚ_Úquery_statesr=   r>   Úattention_interfacer@   r?   Úoutputs   &&&,          r.   ÚforwardÚInternVLVisionAttention.forwardX   s�  € ð "/×!3Ñ!3Ó!5Ñˆ
˜Qà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà—{‘{ <Ó0ˆØ—[‘[ Ó,ˆ
à#×+Ñ+¨JÀÇÁÐQU×Q^ÑQ^Ó_×iÑiÐjkÐmnÓoˆØ×'Ñ'¨
¸T¿^¹^ÈTÏ]É]Ó[×eÑeÐfgÐijÓkˆ
Ø#×(Ñ(¨¸d¿n¹nÈdÏmÉmÓ\×fÑfÐghÐjkÓlˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ
%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð
%
ð —J‘Jð
%
ð ð
%
ð ñ
%
Ñ!ˆð "×)Ñ)¨*¸t¿~¹~ÓNˆà×&Ñ& {Ó3ˆØ×(Ñ(¨Ó0ˆàÐ#Ð#r0   )rY   r^   r]   ©N©	rF   rG   rH   rI   rW   r|   rJ   Ú__classdictcell__Ú__classcell__©ra   rR   s   @@r.   rM   rM   L   s    ù‡ € ÷	Zó 	Z÷'$÷ '$ò '$r0   rM   z7
    Class for outputs of [`InternVLVisionModel`].
    ©Úcustom_introc                   ó   € ] tR t^‚tRtRtR# )Ú$InternVLVisionModelOutputWithPoolinga2  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`):
    Average of the last layer hidden states of the patch tokens (excluding the *[CLS]* token) if
    *config.use_mean_pooling* is set to True. If set to False, then the final hidden state of the *[CLS]* token
    will be returned.
rD   N)rF   rG   rH   rI   Ú__doc__rJ   rD   r0   r.   r†   r†   ‚   s   † õr0   r†   c                   óH   a a€ ] tR t^‘t oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚInternVLVisionPatchEmbeddingszÜ
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
Transformer.
c                ó¸  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rTV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pV^ ,          V^ ,          ,          V^,          V^,          ,          3pW n        W0n        W@n        W`n        Wpn        \        P                  ! WEW3R7      V n
        R# )rf   )Úkernel_sizeÚstrideN)rV   rW   Ú
image_sizeÚ
patch_sizeÚnum_channelsÚhidden_sizeÚnum_patchesÚpatch_shaper'   ÚConv2dÚ
projection)	r_   rP   r�   rŽ   r�   r�   r‘   r’   ra   s	   &&      €r.   rW   Ú&InternVLVisionPatchEmbeddings.__init__˜   s¬   ø€ Ü‰ÑÔØ!'×!2Ñ!2°F×4EÑ4E�JØ$*×$7Ñ$7¸×9KÑ9K�kà! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ! !•}¨
°1­Õ5°zÀ!µ}È
ÐSTÍÕ7UÐVˆØ$ŒØ$ŒØ(ÔØ&ÔØ&ÔäŸ)š) LÈ:ÔiˆŽr0   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úpixel_valuesÚreturn©r)   r*   )r-   rR   s   "€r.   r/   Ú*InternVLVisionPatchEmbeddings.__annotate__§   s#   ø€ ÷ 
ñ 
¡E§L¡Lð 
±U·\±\ñ 
r0   c                ó  € VP                   w  r#rEW0P                  8w  d   \        R 4      hV P                  VP	                  V P                  P
                  P                  4      4      pVP                  ^4      P                  ^^4      pV# )zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)	Úshaper�   Ú
ValueErrorr”   ÚtoÚweightÚdtypeÚflattenr8   )r_   r—   rv   r�   ÚheightÚwidthÚ
embeddingss   &&     r.   r|   Ú%InternVLVisionPatchEmbeddings.forward§   sz   € Ø2>×2DÑ2DÑ/ˆ
 &Ø×,Ñ,Ô,ÜØwóð ð —_‘_ \§_¡_°T·_±_×5KÑ5K×5QÑ5QÓ%RÓSˆ
Ø×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
àÐr0   )r�   r�   r‘   r’   rŽ   r”   ©
rF   rG   rH   rI   r‡   rW   r|   rJ   r€   r�   r‚   s   @@r.   r‰   r‰   ‘   s   ù‡ € ñõj÷
÷ 
ð 
r0   r‰   c                   ój   a a€ ] tR t^¶t oRtV3R lV 3R lltV3R lR ltR	V3R lR lltRtVt	V ;t
# )
ÚInternVLVisionEmbeddingsz[
Construct the CLS token, position and patch embeddings. Optionally, also the mask token.

c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   rP   r˜   NrQ   )r-   rR   s   "€r.   r/   Ú%InternVLVisionEmbeddings.__annotate__¼   s   ø€ ÷ >ñ >Ñ3ð >¸ñ >r0   c                ón  <€ \         SV `  4        \        P                  ! \        P
                  ! ^^VP                  4      4      V n        VP                  '       d=   \        P                  ! \        P
                  ! ^^VP                  4      4      V n	        MRV n	        \        V4      V n        VP                  V n        \        VP                  \        P                   P"                  4      '       d   VP                  MVP                  VP                  3V n        V P                  P$                  pVP&                  '       dD   \        P                  ! \        P
                  ! ^V^,           VP                  4      4      V n        MRV n        \        P*                  ! VP,                  4      V n        R# ©rf   N)rV   rW   r'   Ú	Parameterr)   Úzerosr�   Ú	cls_tokenÚuse_mask_tokenÚ
mask_tokenr‰   Úpatch_embeddingsrŽ   Ú
isinstancer�   ÚcollectionsÚabcÚIterabler‘   Ú use_absolute_position_embeddingsÚposition_embeddingsÚDropoutÚhidden_dropout_probr&   )r_   rP   r‘   ra   s   && €r.   rW   Ú!InternVLVisionEmbeddings.__init__¼   s-  ø€ Ü‰ÑÔäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒØ× × Ð Ü Ÿlšl¬5¯;ª;°q¸!¸V×=OÑ=OÓ+PÓQˆD�Oà"ˆDŒOÜ =¸fÓ EˆÔØ ×+Ñ+ˆŒô ˜&×+Ñ+¬[¯_©_×-EÑ-E×FÒFð ×Òà×#Ñ# V×%6Ñ%6Ð7ð 	Œð
 ×+Ñ+×7Ñ7ˆØ×2×2Ð2Ü')§|¢|´E·K²KÀÀ;ÐQRÅ?ÐTZ×TfÑTfÓ4gÓ'hˆDÕ$à'+ˆDÔ$Ü—z’z &×"<Ñ"<Ó=ˆŽr0   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   r¤   r¢   r£   r˜   )r)   r*   r,   )r-   rR   s   "€r.   r/   r«   Ò   s;   ø€ ÷ &Dñ &D±5·<±<ð &DÉð &DÑUXð &DÑ]b×]iÑ]iñ &Dr0   c                ó  € VP                   ^,          ^,
          pV P                  P                   ^,          ^,
          p\        P                  P	                  4       '       g   WE8X  d   W#8X  d   V P                  # V P                  R,          pV P                  R,          pVP                   R,          pW P
                  ^ ,          ,          p	W0P
                  ^,          ,          p
\        VR,          4      pVP                  ^W»V4      pVP                  ^ ^^^4      p\        P                  P                  VWš3RRR7      pVP                  ^ ^^^4      P                  ^RV4      p\        P                  ! Wg3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
ç      à?ÚbicubicF)rh   ÚmodeÚalign_cornersr2   )ºNNN:Nrf   N)rÃ   ºrf   NNr6   )rœ   r¹   r)   ÚjitÚ
is_tracingrŽ   r   rl   Úpermuter'   r9   Úinterpolatero   Úcat)r_   r¤   r¢   r£   r‘   Únum_positionsÚclass_pos_embedÚpatch_pos_embedr3   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&        r.   Úinterpolate_pos_encodingÚ1InternVLVisionEmbeddings.interpolate_pos_encodingÒ   sO  € ð !×&Ñ& qÕ)¨AÕ-ˆØ×0Ñ0×6Ñ6°qÕ9¸AÕ=ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×2Ñ2°5Õ9ˆØ×2Ñ2°5Õ9ˆà×Ñ˜rÕ"ˆàŸ™¨qÕ1Õ1ˆ
ØŸ_™_¨QÕ/Õ/ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr0   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# ©r   r—   Úbool_masked_posNr˜   )r)   r*   Ú
BoolTensor)r-   rR   s   "€r.   r/   r«   ú   s<   ø€ ÷ ñ á—l‘lðñ ×)Ñ)¨DÕ0ðñ 
�‰ñ	r0   c                ó  € VP                   w   r4pV P                  V4      pVP                  4       w  rxpVeZ   V P                  P	                  WxR4      p	VP                  R4      P                  V	4      p
V^V
,
          ,          Wš,          ,           pV P                  P	                  VRR4      p\        P                  ! W¶3^R7      pV P                  e   W`P                  WdV4      ,           pV P                  V4      pV# )Nr2   r6   )rœ   r³   rh   r²   ÚexpandÚ	unsqueezeÚtype_asr°   r)   rÉ   r¹   rÐ   r&   )r_   r—   rÔ   rx   r¢   r£   r¤   rv   rw   Úmask_tokensÚwÚ
cls_tokenss   &&&         r.   r|   Ú InternVLVisionEmbeddings.forwardú   sä   € ð
 +×0Ñ0Ñˆˆ1�eØ×*Ñ*¨<Ó8ˆ
Ø!+§¡Ó!2Ñˆ
˜QàÒ&ØŸ/™/×0Ñ0°ÀbÓIˆKà×)Ñ)¨"Ó-×5Ñ5°kÓBˆAØ# q¨1¥uÕ-°µÕ?ˆJà—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
à×#Ñ#Ò/Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJà—\‘\ *Ó-ˆ
àÐr0   )r°   r&   r�   r²   r³   rŽ   r¹   r~   )rF   rG   rH   rI   r‡   rW   rÐ   r|   rJ   r€   r�   r‚   s   @@r.   r¨   r¨   ¶   s0   ù‡ € ñ÷
>ó >÷,&Dð &D÷P÷ ò r0   r¨   c                   ó   € ] tR tRtRtR# )ÚInternVLVisionMLPi  rD   NrE   rD   r0   r.   rß   rß     rK   r0   rß   Ú
layer_normÚrms_normc                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚInternVLVisionLayeri  z?This corresponds to the Block class in the timm implementation.c                ó$   <€ V ^8„  d   QhRS[ RR/# rª   rQ   )r-   rR   s   "€r.   r/   Ú InternVLVisionLayer.__annotate__  s   ø€ ÷ >ñ >Ñ3ð >¸ñ >r0   c                óÞ  <€ \         SV `  4        VP                  V n        ^V n        \	        V4      V n        \        V4      V n        \        VP                  ,          ! VP                  VP                  R7      V n        \        VP                  ,          ! VP                  VP                  R7      V n        VP                  p\        P                   ! V\"        P$                  ! VP                  4      ,          RR7      V n        \        P                   ! V\"        P$                  ! VP                  4      ,          RR7      V n        \        P*                  ! VP,                  4      V n        R# )rf   ©ÚepsT)Úrequires_gradN)rV   rW   Úchunk_size_feed_forwardÚseq_len_dimrM   Ú	attentionrß   ÚmlpÚNORM2FNÚ	norm_typer�   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterÚlayer_scale_init_valuer'   r®   r)   ÚonesÚlambda_1Úlambda_2rº   r»   r&   )r_   rP   Úinit_valuesra   s   && €r.   rW   ÚInternVLVisionLayer.__init__  sù   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ0°Ó8ˆŒÜ$ VÓ,ˆŒä '¨×(8Ñ(8Ö 9¸&×:LÑ:LÐRX×RgÑRgÔ hˆÔÜ& v×'7Ñ'7Ö8¸×9KÑ9KÐQW×QfÑQfÔgˆÔà×3Ñ3ˆÜŸš [´5·:²:¸f×>PÑ>PÓ3QÕ%QÐaeÔfˆŒÜŸš [´5·:²:¸f×>PÑ>PÓ3QÕ%QÐaeÔfˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr0   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   rd   r˜   r™   )r-   rR   s   "€r.   r/   rå   -  s'   ø€ ÷ ñ á—|‘|ðñ 
�‰ñr0   c                ó8  € V P                  V P                  V4      4      w  r#V P                  V,          pW!,           pV P                  V4      pV P	                  V4      pV P                  V4      pV P                  e   V P                  V,          pWA,           pV# r~   )rì   rñ   rõ   rò   rí   r&   rö   )r_   rd   Úattention_outputrx   Úlayer_outputs   &&   r.   r|   ÚInternVLVisionLayer.forward-  s–   € ð #Ÿn™nØ×!Ñ! -Ó0ó
ÑÐð  Ÿ=™=Ð+;Õ;Ðð )Õ8ˆð ×+Ñ+¨MÓ:ˆà—x‘x Ó-ˆØ—|‘| LÓ1ˆà�=‰=Ò$ØŸ=™=¨<Õ7ˆLð $Õ3ˆàÐr0   )	rì   rê   r&   rõ   rö   rò   rñ   rí   rë   r¦   r‚   s   @@r.   rã   rã     s!   ù‡ € ÙI÷>ó >÷÷ ð r0   rã   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚInternVLVisionEncoderiI  c                ó$   <€ V ^8„  d   QhRS[ RR/# rª   rQ   )r-   rR   s   "€r.   r/   Ú"InternVLVisionEncoder.__annotate__J  s   ø€ ÷ ,ñ ,Ñ3ð ,¸ñ ,r0   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi rU   )
rV   rW   rP   r'   Ú
ModuleListÚrangeÚnum_hidden_layersrã   ÚlayerÚgradient_checkpointing)r_   rP   Úira   s   && €r.   rW   ÚInternVLVisionEncoder.__init__J  sS   ø€ Ü‰ÑÔØŒÜ—]’]ÌÈv×OgÑOgÔIhÓ#iÑIhÀAÔ$7¸Ö$?ÑIhÑ#iÓjˆŒ
Ø&+ˆÖ#ùò $js   ½A&c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# rú   )r)   r*   Útupler	   )r-   rR   s   "€r.   r/   r  P  s(   ø€ ÷ 	
ñ 	
á—|‘|ð	
ñ 
‘Õ	 ñ	
r0   c                óP   € V P                    F  pV! V4      pK  	  \        VR 7      # ))Úlast_hidden_state)r  r	   )r_   rd   Úlayer_modules   && r.   r|   ÚInternVLVisionEncoder.forwardP  s.   € ð !ŸJœJˆLÙ(¨Ó7ŠMñ 'ô Ø+ô
ð 	
r0   )rP   r  r  r   r‚   s   @@r.   r   r   I  s   ù‡ € ÷,ó ,÷	
÷ 	
ð 	
r0   r   c                   ó˜   a a€ ] tR tRt oRtRtRtRtR.tRt	Rt
RtRtR]R]/t]P"                  ! 4       V 3R l4       tV3R	 ltR
tVtV ;t# )ÚInternVLVisionPreTrainedModeli\  Úinternvl_visionr—   Trã   rd   Ú
attentionsc                óV  <€ \         SV `  V4       \        V\        4      '       d�   \        P
                  ! VP                  4       VP                  e!   \        P
                  ! VP                  4       VP                  e#   \        P
                  ! VP                  4       R# R# \        V\        4      '       dm   \        P                  ! VP                  V P                  P                  4       \        P                  ! VP                  V P                  P                  4       R# R# )zInitialize the weightsN)rV   Ú_init_weightsr´   r¨   ÚinitÚzeros_r°   r²   r¹   rã   Ú	constant_rõ   rP   ró   rö   )r_   r    ra   s   &&€r.   r  Ú+InternVLVisionPreTrainedModel._init_weightsn  s¾   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ6×7Ò7Ü�KŠK˜×(Ñ(Ô)Ø× Ñ Ò,Ü—’˜F×-Ñ-Ô.Ø×)Ñ)Ò5Ü—’˜F×6Ñ6Ö7ñ 6ä˜Ô 3×4Ò4Ü�NŠN˜6Ÿ?™?¨D¯K©K×,NÑ,NÔOÜ�NŠN˜6Ÿ?™?¨D¯K©K×,NÑ,NÖOñ 5r0   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rO   rQ   )r-   rR   s   "€r.   r/   Ú*InternVLVisionPreTrainedModel.__annotate__\  s   ø‡ ‚ á Ñ ò r0   rD   )ÚimageÚvideo)rF   rG   rH   rI   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendrã   rM   Ú_can_record_outputsr)   Úno_gradr  Ú__annotate_func__rJ   r€   r�   r‚   s   @@r.   r  r  \  sw   ù‡ € ð *ÐØ$€OØ)ÐØ&*Ð#Ø.Ð/ÐØ€NØÐØÐØ"&Ðð 	Ð,ØÐ-ðÐð
 ‡]‚]ƒ_ôPó ðP÷' … r0   r  c                   ó†   a a€ ] tR tRt oV3R lV 3R lltR t]]! RR7      ]R
V3R lR ll4       4       4       t	R	t
VtV ;t# )ÚInternVLVisionModeli}  c                ó$   <€ V ^8„  d   QhRS[ RR/# rª   rQ   )r-   rR   s   "€r.   r/   Ú InternVLVisionModel.__annotate__  s   ø€ ÷ ñ Ñ3ð ¸ñ r0   c                óB  <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        VP                  '       d   \        P                  ! 4       M+\        P                  ! VP                  VP                  R 7      V n        V P                  4        R# )rç   N)rV   rW   rP   r¨   r¤   r   ÚencoderÚuse_mean_poolingr'   r\   Ú	LayerNormr�   rð   Ú	layernormÚ	post_init©r_   rP   ra   s   &&€r.   rW   ÚInternVLVisionModel.__init__  sp   ø€ Ü‰Ñ˜Ô ØŒä2°6Ó:ˆŒÜ,¨VÓ4ˆŒð $×4×4Ð4ŒB�KŠKŒM¼"¿,º,Àv×GYÑGYÐ_e×_tÑ_tÔ:uð 	Œð
 	�‰Ör0   c                ó.   € V P                   P                  # r~   )r¤   r³   )r_   s   &r.   Úget_input_embeddingsÚ(InternVLVisionModel.get_input_embeddings�  s   € Ø�‰×/Ñ/Ð/r0   F)Útie_last_hidden_statesc                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# rÓ   )r)   r*   rÕ   r  r†   )r-   rR   s   "€r.   r/   r.  “  s:   ø€ ÷ 
ñ 
Ù!ŸL™Lð
Ù;@×;KÑ;KÈdÕ;Rð
á	Ñ5Õ	5ñ
r0   c                óÀ   € V P                  WR7      pV P                  V4      pV^ ,          pV P                  V4      p\        VVP                  VP
                  R7      # )z³
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, num_patches)`, *optional*):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0).
)rÔ   )r  rd   r  )r¤   r0  r3  r†   rd   r  )r_   r—   rÔ   r<   Úembedding_outputÚencoder_outputsÚsequence_outputs   &&&,   r.   r|   ÚInternVLVisionModel.forward�  s^   € ð  Ÿ?™?¨<˜?ÓYÐàŸ,™,Ð'7Ó8ˆØ)¨!Õ,ˆØŸ.™.¨Ó9ˆä3Ø-Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
r0   )rP   r¤   r0  r3  r~   )rF   rG   rH   rI   rW   r8  r   r   r   r|   rJ   r€   r�   r‚   s   @@r.   r,  r,  }  sG   ù‡ € ÷ó ò0ð  Ù¨EÔ2Ø÷
ñ 
ó ó 3ó  ÷
ð 
r0   r,  c                   ó   € ] tR tRtRtRtR# )ÚInternVLPreTrainedModeli§  rD   N)r  Útextr  )rF   rG   rH   rI   r!  rJ   rD   r0   r.   rB  rB  §  s   † Ø1Ôr0   rB  c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )ÚInternVLMultiModalProjectori®  c                ó    <€ V ^8„  d   QhRS[ /# rO   )r   )r-   rR   s   "€r.   r/   Ú(InternVLMultiModalProjector.__annotate__¯  s   ø€ ÷ bñ b™~ñ br0   c                ój  <€ \         SV `  4        \        P                  ! VP                  P
                  \        ^VP                  ,          4      ^,          ,          4      V n        \        P                  ! VP                  P
                  \        ^VP                  ,          4      ^,          ,          VP                  P
                  4      V n        \        VP                  ,          V n        \        P                  ! VP                  P
                  VP                  P
                  4      V n        R# r­   )rV   rW   r'   r2  Úvision_configr�   r,   Údownsample_ratiorà   ÚLinearÚtext_configÚlinear_1r   Úprojector_hidden_actÚactÚlinear_2r5  s   &&€r.   rW   Ú$InternVLMultiModalProjector.__init__¯  sÍ   ø€ Ü‰ÑÔÜŸ,š, v×';Ñ';×'GÑ'GÌ#ÈaÐRX×RiÑRiÕNiÓJjÐnoÕJoÕ'oÓpˆŒÜŸ	š	Ø× Ñ ×,Ñ,¬s°1°v×7NÑ7NÕ3NÓ/OÐSTÕ/TÕTÐV\×VhÑVh×VtÑVtó
ˆŒô ˜&×5Ñ5Õ6ˆŒÜŸ	š	 &×"4Ñ"4×"@Ñ"@À&×BTÑBT×B`ÑB`ÓaˆŽr0   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# r~   )rà   rM  rO  rP  )r_   Úimage_featuresrd   s   && r.   r|   Ú#InternVLMultiModalProjector.forward¸  s@   € ØŸ™¨Ó7ˆØŸ™ mÓ4ˆØŸ™ Ó/ˆØŸ™ mÓ4ˆØÐr0   )rO  rà   rM  rP  r   r‚   s   @@r.   rE  rE  ®  s   ù‡ € ÷bó b÷ò r0   rE  c                   ó   € ] tR tRtRtR# )ÚInternVLModelOutputWithPastiÀ  rD   NrE   rD   r0   r.   rV  rV  À  rK   r0   rV  c                   ó¢   a € ] tR tRt o RV 3R lR llt]]]! RR7      RV 3R lR ll4       4       4       t]]RV 3R	 lR
 ll4       4       t	Rt
V tR# )ÚInternVLModeliÄ  c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r   Úvision_featuresÚscale_factor)r)   r*   r+   )r-   rR   s   "€r.   r/   ÚInternVLModel.__annotate__Å  s   ø€ ÷ !ñ !©U¯\©\ð !Éñ !r0   c           
     óð  € VP                  4       w  r4rVWR,          ^ 8w  g   WB,          ^ 8w  d   \        R4      hVP                  W4\        WR,          4      \        Wb,          4      4      pVP	                  ^ ^^^4      P                  4       pVP                  V\        WR,          4      \        WB,          4      \        Wb^,          ,          4      4      pVP	                  ^ ^^^4      P                  4       pV# )aÞ  Perform pixel shuffle downsampling on vision features.

Args:
    vision_features (`torch.Tensor`):
        Input tensor of shape (batch_size, width, height, channels).
    scale_factor (`float`, *optional*, defaults to `0.5`):
        Factor by which to downsample. Default is 0.5, which halves the dimensions.

Returns:
    vision_features (`torch.Tensor`):
        Downsampled tensor of shape (batch_size, height*scale_factor, width*scale_factor, channels/(scale_factor^2)).
zKHeight and width must be divisible by scale_factor for proper downsampling.)rh   r�   ro   r,   rÇ   r;   )r_   rZ  r[  rv   r£   r¢   Úchannelss   &&&    r.   Úpixel_shuffleÚInternVLModel.pixel_shuffleÅ  sã   € ð />×.BÑ.BÓ.DÑ+ˆ
˜6àÕ  AÔ%¨Õ)=ÀÔ)BÜÐjÓkÐkð *×.Ñ.Øœs 6Õ#8Ó9¼3¸xÕ?VÓ;Wó
ˆð *×1Ñ1°!°Q¸¸1Ó=×HÑHÓJˆð *×.Ñ.Øœ˜FÕ1Ó2´C¸Õ8LÓ4MÌsÐS[ÐmnÕ_nÕSoÓOpó
ˆð
 *×1Ñ1°!°Q¸¸1Ó=×HÑHÓJˆàÐr0   zWObtains image last hidden states from the vision tower and apply multimodal projection.rƒ   Nc                óÈ   <€ V ^8„  d   QhRS[ P                  RS[S[S[,          ,          S[S[,          ,          R,          RS[R,          RS[S[,          RS[S[,          /# )r   r—   Úvision_feature_layerNÚvision_feature_select_strategyr<   r˜   )	r)   ÚFloatTensorr,   ÚlistÚstrr   r   r  r
   )r-   rR   s   "€r.   r/   r\  í  si   ø€ ÷ ,ñ ,á×'Ñ'ð,ñ "¡D©¥I�o±±Sµ	Õ9¸DÕ@ð,ñ ),¨d­
ð	,ñ
 Ñ+Õ,ð,ñ 
Ñ+Õ	+ñ,r0   c                óL  € VP                  V P                  R7      pV P                  P                  pVR	8w  d   RVR&   V P                  ! R
RVRR/VB pVR	8X  d   VP
                  pMVP                  V,          pVR8X  d
   VR,          pVP                  ^,          p\        VR,          4      p	VP                  ^ ,          p
VP                  W©V	R	4      pV P                  WuR7      pVP                  V
R	VP                  R	,          4      pV P                  V4      pWvn        V# )zø
pixel_values (`torch.FloatTensor` of shape `(batch_size, channels, height, width)`)
    The tensors corresponding to the input images.
vision_feature_layer (`int` or `list[int]`):
    Layer index or list of layer indices to extract features from.
)r    TÚoutput_hidden_statesr—   Úreturn_dictÚdefaultr¿   )r[  r6   rD   )rÃ   rÄ   rÃ   )rž   r    rP   rJ  Úvision_towerr  rd   rœ   r,   rl   r_  Úmulti_modal_projectorÚpooler_output)r_   r—   rb  rc  r<   rJ  Úvision_outputsrZ  r^  Úfeature_sizerv   s   &&&&,      r.   Úget_image_featuresÚ InternVLModel.get_image_featuresè  s,  € ð$ $—‘¨T¯Z©Z�Ó8ˆàŸ;™;×7Ñ7ÐØ 2Ô%Ø-1ˆFÐ)Ñ*Ø×*Ò*Ña¸ÐaÐRVÐaÐZ`ÑaˆØ 2Ô%Ø,×>Ñ>‰Oà,×:Ñ:Ð;OÕPˆOØ)¨YÔ6Ø-¨hÕ7ˆOð #×(Ñ(¨Õ+ˆÜ˜8 S�=Ó)ˆØ$×*Ñ*¨1Õ-ˆ
ð *×1Ñ1°*ÈLÐZ\Ó]ˆð ×,Ñ,¨_Ð,Ó\ˆð *×1Ñ1°*¸bÀ/×BWÑBWÐXZÕB[Ó\ˆð ×4Ñ4°_ÓEˆØ'6Ô$àÐr0   c                óŠ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[S[S[,          ,          S[S[,          ,          R,          R	S[R,          R
S[S[	,          RS[
S[,          /
# )r   Ú	input_idsNr—   r$   Úposition_idsÚpast_key_valuesÚinputs_embedsrb  rc  r<   r˜   )r)   Ú
LongTensorrd  r*   r   r,   re  rf  r   r   r  rV  )r-   rR   s   "€r.   r/   r\    sÎ   ø€ ÷ -
ñ -
á×#Ñ# dÕ*ð-
ñ ×'Ñ'¨$Õ.ð-
ñ Ÿ™ tÕ+ð	-
ñ
 ×&Ñ&¨Õ-ð-
ñ  �ð-
ñ ×(Ñ(¨4Õ/ð-
ñ "¡D©¥I�o±±Sµ	Õ9¸DÕ@ð-
ñ ),¨d­
ð-
ñ Ñ+Õ,ð-
ñ 
Ñ,Õ	,ñ-
r0   c	                ó  € VR J VR J,          '       d   \        R4      hVf   V P                  4       ! V4      pVej   V P                  VVVRR7      P                  p
V
P	                  VP
                  VP                  4      p
V P                  WV
R7      pVP                  Wº4      pV P                  ! R
RVRVRVRV/V	B p\        VP                  VP                  VP                  VP                  Ve   X
R	7      # R R	7      # )Nz:You must specify exactly one of input_ids or inputs_embedsT)r—   rb  rc  ri  )rv  rS  r$   rt  ru  rv  )r  ru  rd   r  Úimage_hidden_statesrD   )r�   r8  rp  rm  rž   Údevicer    Úget_placeholder_maskÚmasked_scatterÚlanguage_modelrV  r  ru  rd   r  )r_   rs  r—   r$   rt  ru  rv  rb  rc  r<   rS  Úspecial_image_maskÚoutputss   &&&&&&&&&,   r.   r|   ÚInternVLModel.forward  sG  € ð ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×5Ñ5Ô7¸	ÓBˆMàÒ#Ø!×4Ñ4Ø)Ø%9Ø/MØ ð	 5ó ÷
 ‰mð ð ,×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNØ!%×!:Ñ!:ØÀ~ð ";ó "Ðð *×8Ñ8Ð9KÓ\ˆMà×%Ò%ñ 
Ø)ð
à%ð
ð ,ð
ð (ð	
ð
 ñ
ˆô +Ø%×7Ñ7Ø#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø2>Ò2J ô
ð 	
ð
 QUô
ð 	
r0   rD   )r¿   )NN)NNNNNNNN)rF   rG   rH   rI   r_  r   r   r   rp  r|   rJ   r€   )rR   s   @r.   rX  rX  Ä  sc   ø‡ € ÷!ò !ðF  ØÙØnô÷,ñ ,óó ó  ð
,ð\ Ø÷-
ñ -
ó ó ö-
r0   rX  c                   ó   € ] tR tRtRtR# )ÚInternVLCausalLMOutputWithPastiM  rD   NrE   rD   r0   r.   r‚  r‚  M  rK   r0   r‚  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú InternVLForConditionalGenerationiQ  c                 ó<   <€ \        4       P                  ! R/ V B  R# )as  
Example:

```python
>>> import torch
>>> from transformers import AutoProcessor, AutoModelForImageTextToText

>>> torch_device = "cuda"
>>> processor = AutoProcessor.from_pretrained("OpenGVLab/InternVL3-1B-hf")
>>> model = AutoModelForImageTextToText.from_pretrained(
...     "OpenGVLab/InternVL3-1B-hf", dtype=torch.bfloat16, device_map=torch_device
... )

>>> messages = [
...     {
...         "role": "user",
...         "content": [
...             {
...                 "type": "image",
...                 "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg",
...             },
...             {
...                 "type": "image",
...                 "url": "https://thumbs.dreamstime.com/b/golden-gate-bridge-san-francisco-purple-flowers-california-echium-candicans-36805947.jpg",
...             },
...             {"type": "text", "text": "These images depict two different landmarks. Can you identify them?"},
...         ],
...     },
... ]

>>> inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt").to(torch_device)
>>> generate_ids = model.generate(**inputs, max_new_tokens=200)
>>> print(processor.decode(generate_ids[0, inputs["input_ids"].shape[1] :], skip_special_tokens=True))
The images depict the Statue of Liberty and the Golden Gate Bridge.
```NrD   )rV   r|   )Úsuper_kwargsra   s   ,€r.   r|   Ú(InternVLForConditionalGeneration.forwardR  s   ø€ ôH 	‹�ŠÑ'˜,Ô'r0   rD   )rF   rG   rH   rI   r|   rJ   r€   r�   r‚   s   @@r.   r„  r„  Q  s   ù‡ € ÷$(õ $(r0   r„  )rg   )r  r,  rB  rX  r„  )GÚcollections.abcrµ   r   Údataclassesr   r)   Útorch.nnr'   Ú r   r  Úactivationsr   Úcache_utilsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úclip.modeling_clipr   Újanus.modeling_janusr   Úllama.modeling_llamar   Úllava.modeling_llavar   r   r   r   r   Úconfiguration_internvlr   r   rA   rC   rM   r†   r(   r‰   r¨   rß   r2  rî   rã   r   r  r,  rB  ÚINTERNVL_INPUTS_DOCSTRINGrE  rV  rX  r‚  r„  Ú__all__rD   r0   r.   Ú<module>rœ     s¡  ðó  Ý $Ý !ã Ý å &Ý !Ý  Ý 9ß Kß FÝ &ß BÑ Bß IÝ 5Ý (Ý 7Ý /÷õ ÷ I÷%ô4	˜Lô 	ô3$Ð2ô 3$ñl ðôð
 ôÐ+Eó ó óðô  B§I¡Iô  ôJ[˜rŸy™yô [ô|	˜ô 	ð ˜Ÿ™ zÐ3HÐ
I€ô+Ð4ô +ô\
˜BŸI™Iô 
ð& ôP Oó Pó ðPð@ ô&
Ð7ó &
ó ð&
ôR2Ð2ô 2ð !Ð ô "§)¡)ô ô$	Ð":ô 	ôF
�Jô F
ôR	Ð%@ô 	ô%(Ð'Dô %(òP‚r0   