§
    ‚Štj+‘  ã                   óÆ  — d dl Zd dl mZ d dlmZ d dl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 dd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZ ddlmZ ddlmZm Z m!Z!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-  ed¦  «         G d„ dej.        ¦  «        ¦   «         Z/	 dGdej.        dej0        dej0        dej0        dej0        dz  de1de1e2z  fd „Z3 G d!„ d"ej.        ¦  «        Z4 e!d#¬$¦  «        e G d%„ d&e¦  «        ¦   «         ¦   «         Z5 G d'„ d(ej.        ¦  «        Z6 G d)„ d*ej.        ¦  «        Z7 G d+„ d,ej.        ¦  «        Z8ej9        e/d-œZ: G d.„ d/e¦  «        Z; G d0„ d1ej.        ¦  «        Z<e! G d2„ d3e¦  «        ¦   «         Z=e! G d4„ d5e=¦  «        ¦   «         Z>e! G d6„ d7e¦  «        ¦   «         Z? G d8„ d9ej.        ¦  «        Z@ e!d:¬$¦  «        e G d;„ d<e¦  «        ¦   «         ¦   «         ZA e!d=¬$¦  «         G d>„ d?e?¦  «        ¦   «         ZB e!d@¬$¦  «        e G dA„ dBe¦  «        ¦   «         ¦   «         ZC e!dC¬$¦  «         G dD„ dEe?e¦  «        ¦   «         ZDg dF¢ZEdS )Hé    N)ÚCallable)Ú	dataclassé   )Úinitialization)ÚACT2FN)ÚCache)ÚGenerationMixin)Úuse_kernel_forward_from_hub)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPastÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚtorch_compilable_checkÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )Ú	AutoModelé   )ÚInternVLConfigÚInternVLVisionConfigÚ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 )
ÚInternVLVisionRMSNormç�íµ ÷Æ°>ÚepsÚreturnNc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zD
        InternVLVisionRMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__ÚnnÚ	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer#   Ú	__class__s      €úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/internvl/modeling_internvl.pyr'   zInternVLVisionRMSNorm.__init__/   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    Úhidden_statesc                 ó  — |j         }|                     t          j        ¦  «        }|                     d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        |                     |¦  «        z  S )Nr   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor*   Úfloat32ÚpowÚmeanÚrsqrtr-   r,   )r.   r3   Úinput_dtypeÚvariances       r1   ÚforwardzInternVLVisionRMSNorm.forward7   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r2   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)Útupler,   Úshaper-   ©r.   s    r1   Ú
extra_reprz InternVLVisionRMSNorm.extra_repr>   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr2   )r"   )
Ú__name__Ú
__module__Ú__qualname__Úfloatr'   r*   ÚTensorr?   rD   Ú__classcell__©r0   s   @r1   r!   r!   -   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr2   r!   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutc                 ó‚  — |}|}	t          j        ||                     dd¦  «        ¦  «        |z  }
|�|
|z   }
t          j                             |
d¬¦  «        }
t          j                             |
|| j        ¬¦  «        }
t          j        |
|	¦  «        }|                     dd¦  «                             ¦   «         }||
fS )Nr   r   r5   ©Údim)ÚpÚtrainingr   )	r*   ÚmatmulÚ	transposer(   Ú
functionalÚsoftmaxrS   rX   Ú
contiguous)rM   rN   rO   rP   rQ   rR   rS   ÚkwargsÚ
key_statesÚvalue_statesÚattn_weightsÚattn_outputs               r1   Úeager_attention_forwardrc   B   s»   € ð €JØ€Lå”<  z×';Ò';¸A¸qÑ'AÔ'AÑBÔBÀWÑL€LØÐ!Ø# nÑ4ˆõ ”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€LÝ”,˜|¨\Ñ:Ô:€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r2   c                   óf   ‡ — e Zd ZdZdefˆ fd„Z	 d	dej        dej        dz  dee	         fd„Z
ˆ xZS )
ÚInternVLVisionAttentionz+Attention Class for InternVL Vision EncoderÚconfigc                 ó  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _
        |j        }|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        ¦  «        | _        |dk    rt          j        |¦  «        nt          j        ¦   «         | _        |rt/          | j        ¦  «        nt          j        ¦   «         | _        |rt/          | j        ¦  «        nt          j        ¦   «         | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿F©Úbiasr   )r&   r'   rf   r/   Ú	embed_dimÚnum_attention_headsÚ	num_headsÚhead_dimÚ
ValueErrorÚscaleÚattention_dropoutÚprojection_dropoutÚuse_qk_normÚ	is_causalr(   ÚLinearÚattention_biasÚq_projÚk_projÚv_projÚprojection_layerÚDropoutÚIdentityr!   Úq_normÚk_norm)r.   rf   Úproj_dropoutÚqk_normr0   s       €r1   r'   z InternVLVisionAttention.__init___   sÇ  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
Ø!'Ô!9ˆÔØÔ0ˆØÔ$ˆð ˆŒå”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ”i ¤°´ÀÄÑ0NÐU[ÔUjÐkÑkÔkˆŒÝ "¤	¨$¬.¸$¼.Ñ IÔ IˆÔØ>JÈQÒ>NÐ>N¥"¤*¨\Ñ":Ô":Ð":ÕTVÔT_ÑTaÔTaˆÔà?FÐYÕ+¨D¬NÑ;Ô;Ð;ÍBÌKÉMÌMˆŒØ?FÐYÕ+¨D¬NÑ;Ô;Ð;ÍBÌKÉMÌMˆŒˆˆr2   Nr3   rQ   r^   c                 ór  — |                      ¦   «         \  }}}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }	|                      |¦  «        }|                      |¦  «        }|                     ||| j        | j        ¦  «         	                    dd¦  «        }|                     ||| j        | j        ¦  «         	                    dd¦  «        }|	 
                    ||| j        | j        ¦  «         	                    dd¦  «        }	t          j        | j        j        t          ¦  «        }
 |
| |||	|f| j        sdn| j        | j        ddœ|¤Ž\  }}|                     ||| j        ¦  «        }|                      |¦  «        }|                      |¦  «        }||fS )Nr   r   rL   F)rS   rR   rs   )Úsizerv   rw   rx   r|   r}   Úreshaperl   rm   rZ   Úviewr   Úget_interfacerf   Ú_attn_implementationrc   rX   rp   ro   rj   ry   rq   )r.   r3   rQ   r^   Ú
batch_sizeÚseq_lenÚ_Úquery_statesr_   r`   Úattention_interfacerb   ra   Úoutputs                 r1   r?   zInternVLVisionAttention.forward{   sÁ  € ð "/×!3Ò!3Ñ!5Ô!5Ñˆ
�G˜Qà—{’{ =Ñ1Ô1ˆØ—[’[ Ñ/Ô/ˆ
Ø—{’{ =Ñ1Ô1ˆà—{’{ <Ñ0Ô0ˆØ—[’[ Ñ,Ô,ˆ
à#×+Ò+¨J¸ÀÄÐQUÔQ^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆØ×'Ò'¨
°G¸T¼^ÈTÌ]Ñ[Ô[×eÒeÐfgÐijÑkÔkˆ
Ø#×(Ò(¨°W¸d¼nÈdÌmÑ\Ô\×fÒfÐghÐjkÑlÔlˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð  $œ}ÐH�C�C°$Ô2HØ”JØð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð "×)Ò)¨*°g¸t¼~ÑNÔNˆà×&Ò& {Ñ3Ô3ˆØ×(Ò(¨Ñ0Ô0ˆà�|Ð#Ð#r2   ©N)rE   rF   rG   Ú__doc__r   r'   r*   rI   r   r   r?   rJ   rK   s   @r1   re   re   \   s›   ø€ € € € € Ø5Ð5ðZÐ3ð Zð Zð Zð Zð Zð Zð> /3ð'$ð '$à”|ð'$ð œ tÑ+ð'$ð Ð+Ô,ð	'$ð '$ð '$ð '$ð '$ð '$ð '$ð '$r2   re   z7
    Class for outputs of [`InternVLVisionModel`].
    ©Úcustom_introc                   ó   — e Zd ZdZdS )Ú$InternVLVisionModelOutputWithPoolingaF  
    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.
    N)rE   rF   rG   r�   © r2   r1   r‘   r‘   ¥   s   € € € € € ðð ð ð r2   r‘   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )Ú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                 óŠ  •— t          ¦   «                              ¦   «          |j        |j        }}|j        |j        }}|d         |d         z  |d         |d         z  z  }|d         |d         z  |d         |d         z  f}|| _        || _        || _        || _        || _        t          j	        ||||¬¦  «        | _
        d S )Nr   r   )Úkernel_sizeÚstride)r&   r'   Ú
image_sizeÚ
patch_sizeÚnum_channelsr/   Únum_patchesÚpatch_shaper(   ÚConv2dÚ
projection)	r.   rf   r˜   r™   rš   r/   r›   rœ   r0   s	           €r1   r'   z&InternVLVisionPatchEmbeddings.__init__»   sÆ   ø€ Ý‰Œ×ÒÑÔÐØ!'Ô!2°FÔ4E�Jˆ
Ø$*Ô$7¸Ô9K�kˆà! !”}¨
°1¬Ñ5¸*ÀQ¼-È:ÐVWÌ=Ñ:XÑYˆØ! !”}¨
°1¬Ñ5°zÀ!´}È
ÐSTÌÑ7UÐVˆØ$ˆŒØ$ˆŒØ(ˆÔØ&ˆÔØ&ˆÔåœ) L°+È:Ð^hÐiÑiÔiˆŒˆˆr2   Úpixel_valuesr$   c                 ó  — |j         \  }}}}|| j        k    rt          d¦  «        ‚|                      |                     | j        j        j        ¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }|S )NzeMake sure that the channel dimension of the pixel values match with the one set in the configuration.r   r   )	rB   rš   rn   rž   r8   r,   r7   ÚflattenrZ   )r.   rŸ   r†   rš   ÚheightÚwidthÚ
embeddingss          r1   r?   z%InternVLVisionPatchEmbeddings.forwardÊ   s†   € Ø2>Ô2DÑ/ˆ
�L &¨%Ø˜4Ô,Ò,Ð,ÝØwñô ð ð —_’_ \§_¢_°T´_Ô5KÔ5QÑ%RÔ%RÑSÔSˆ
Ø×'Ò'¨Ñ*Ô*×4Ò4°Q¸Ñ:Ô:ˆ
àÐr2   )	rE   rF   rG   r�   r'   r*   rI   r?   rJ   rK   s   @r1   r”   r”   ´   sm   ø€ € € € € ðð ðjð jð jð jð jð
 E¤Lð 
°U´\ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r2   r”   c                   ó”   ‡ — e Zd ZdZdeddfˆ fd„Zdej        dededej        fd	„Z		 dd
ej        dej
        dz  dej        fd„Zˆ xZS )ÚInternVLVisionEmbeddingszc
    Construct the CLS token, position and patch embeddings. Optionally, also the mask token.

    rf   r$   Nc                 óÆ  •— t          ¦   «                              ¦   «          t          j        t	          j        dd|j        ¦  «        ¦  «        | _        |j        r3t          j        t	          j        dd|j        ¦  «        ¦  «        | _	        nd | _	        t          |¦  «        | _        |j        | _        t          |j        t          j        j        ¦  «        r|j        n|j        |j        f| _        | j        j        }|j        r6t          j        t	          j        d|dz   |j        ¦  «        ¦  «        | _        nd | _        t          j        |j        ¦  «        | _        d S )Nr   )r&   r'   r(   r)   r*   Úzerosr/   Ú	cls_tokenÚuse_mask_tokenÚ
mask_tokenr”   Úpatch_embeddingsr™   Ú
isinstancer˜   ÚcollectionsÚabcÚIterabler›   Ú use_absolute_position_embeddingsÚposition_embeddingsrz   Úhidden_dropout_probrS   )r.   rf   r›   r0   s      €r1   r'   z!InternVLVisionEmbeddings.__init__ß   s(  ø€ Ý‰Œ×ÒÑÔÐåœ¥e¤k°!°Q¸Ô8JÑ&KÔ&KÑLÔLˆŒØÔ ð 	#Ý œl­5¬;°q¸!¸VÔ=OÑ+PÔ+PÑQÔQˆDŒOˆOà"ˆDŒOÝ =¸fÑ EÔ EˆÔØ Ô+ˆŒõ ˜&Ô+­[¬_Ô-EÑFÔFð8ˆFÔÐàÔ# VÔ%6Ð7ð 	Œð
 Ô+Ô7ˆØÔ2ð 	,Ý')¤|µE´KÀÀ;ÐQRÁ?ÐTZÔTfÑ4gÔ4gÑ'hÔ'hˆDÔ$Ð$à'+ˆDÔ$Ý”z &Ô"<Ñ=Ô=ˆŒˆˆr2   r¤   r¢   r£   c                 ó¬  — |j         d         dz
  }| j        j         d         dz
  }t          j                             ¦   «         s||k    r||k    r| j        S | j        dd…dd…f         }| j        dd…dd…f         }|j         d         }|| j        d         z  }	|| j        d         z  }
t          |dz  ¦  «        }|                     d|||¦  «        }|                     dddd¦  «        }t          j
                             ||	|
fdd	¬
¦  «        }|                     dddd¦  «                             dd|¦  «        }t          j        ||fd¬¦  «        S )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
        r   Nr5   r   ç      à?r   r   ÚbicubicF)r�   ÚmodeÚalign_cornersrU   )rB   r²   r*   ÚjitÚ
is_tracingr™   r   r‚   Úpermuter(   r[   Úinterpolaterƒ   Úcat)r.   r¤   r¢   r£   r›   Únum_positionsÚclass_pos_embedÚpatch_pos_embedrV   Ú
new_heightÚ	new_widthÚsqrt_num_positionss               r1   Úinterpolate_pos_encodingz1InternVLVisionEmbeddings.interpolate_pos_encodingõ   s|  € ð !Ô& qÔ)¨AÑ-ˆØÔ0Ô6°qÔ9¸AÑ=ˆõ Œy×#Ò#Ñ%Ô%ð 	,¨+¸Ò*FÐ*FÈ6ÐUZÊ?È?ØÔ+Ð+àÔ2°1°1°1°b°q°b°5Ô9ˆØÔ2°1°1°1°a°b°b°5Ô9ˆàÔ˜rÔ"ˆà˜tœ¨qÔ1Ñ1ˆ
Ø˜Tœ_¨QÔ/Ñ/ˆ	å& }°cÑ'9Ñ:Ô:ÐØ)×1Ò1°!Ð5GÐI[Ð]`ÑaÔaˆØ)×1Ò1°!°Q¸¸1Ñ=Ô=ˆåœ-×3Ò3ØØ˜iÐ(ØØð	 4ñ 
ô 
ˆð *×1Ò1°!°Q¸¸1Ñ=Ô=×BÒBÀ1ÀbÈ#ÑNÔNˆåŒy˜/¨?Ð;ÀÐCÑCÔCÐCr2   rŸ   Úbool_masked_posc                 óô  — |j         \  }}}}|                      |¦  «        }|                     ¦   «         \  }}}|�R| j                             ||d¦  «        }	|                     d¦  «                             |	¦  «        }
|d|
z
  z  |	|
z  z   }| j                             |dd¦  «        }t          j	        ||fd¬¦  «        }| j
        �||                      |||¦  «        z   }|                      |¦  «        }|S )Nr5   r   rU   )rB   r¬   r�   r«   ÚexpandÚ	unsqueezeÚtype_asr©   r*   r½   r²   rÄ   rS   )r.   rŸ   rÅ   rˆ   r¢   r£   r¤   r†   r‡   Úmask_tokensÚwÚ
cls_tokenss               r1   r?   z InternVLVisionEmbeddings.forward  s  € ð
 +Ô0Ñˆˆ1ˆf�eØ×*Ò*¨<Ñ8Ô8ˆ
Ø!+§¢Ñ!2Ô!2Ñˆ
�G˜QàÐ&Øœ/×0Ò0°¸WÀbÑIÔIˆKà×)Ò)¨"Ñ-Ô-×5Ò5°kÑBÔBˆAØ# q¨1¡uÑ-°¸a±Ñ?ˆJà”^×*Ò*¨:°r¸2Ñ>Ô>ˆ
Ý”Y 
¨JÐ7¸QÐ?Ñ?Ô?ˆ
àÔ#Ð/Ø# d×&CÒ&CÀJÐPVÐX]Ñ&^Ô&^Ñ^ˆJà—\’\ *Ñ-Ô-ˆ
àÐr2   rŒ   )rE   rF   rG   r�   r   r'   r*   rI   ÚintrÄ   Ú
BoolTensorr?   rJ   rK   s   @r1   r¦   r¦   Ù   sÜ   ø€ € € € € ðð ð
>Ð3ð >¸ð >ð >ð >ð >ð >ð >ð,&D°5´<ð &DÈð &DÐUXð &DÐ]bÔ]ið &Dð &Dð &Dð &DðV 48ðð à”lðð Ô)¨DÑ0ðð 
Œð	ð ð ð ð ð ð ð r2   r¦   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚInternVLVisionMLPc                 ó  •— t          ¦   «                              ¦   «          || _        t          |j                 | _        t          j        |j        |j	        ¦  «        | _
        t          j        |j	        |j        ¦  «        | _        d S rŒ   )r&   r'   rf   r   Ú
hidden_actÚactivation_fnr(   rt   r/   Úintermediate_sizeÚfc1Úfc2©r.   rf   r0   s     €r1   r'   zInternVLVisionMLP.__init__8  sf   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ# FÔ$5Ô6ˆÔÝ”9˜VÔ/°Ô1IÑJÔJˆŒÝ”9˜VÔ5°vÔ7IÑJÔJˆŒˆˆr2   r3   r$   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rŒ   )rÕ   rÓ   rÖ   )r.   r3   s     r1   r?   zInternVLVisionMLP.forward?  s=   € ØŸš Ñ/Ô/ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš Ñ/Ô/ˆØÐr2   )rE   rF   rG   r'   r*   rI   r?   rJ   rK   s   @r1   rÐ   rÐ   7  sc   ø€ € € € € ðKð Kð Kð Kð Kð U¤\ð °e´lð ð ð ð ð ð ð ð r2   rÐ   )Ú
layer_normÚrms_normc                   ó†   ‡ — e Zd ZdZdeddfˆ fd„Zdej        deej                 eej        ej        f         z  fd„Z	ˆ xZ
S )ÚInternVLVisionLayerz?This corresponds to the Block class in the timm implementation.rf   r$   Nc                 óˆ  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |j	                 |j
        |j        ¬¦  «        | _        t          |j	                 |j
        |j        ¬¦  «        | _        |j        }t          j        |t#          j        |j
        ¦  «        z  d¬¦  «        | _        t          j        |t#          j        |j
        ¦  «        z  d¬¦  «        | _        t          j        |j        ¦  «        | _        d S )Nr   ©r#   T)Úrequires_grad)r&   r'   Úchunk_size_feed_forwardÚseq_len_dimre   Ú	attentionrÐ   ÚmlpÚNORM2FNÚ	norm_typer/   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterÚlayer_scale_init_valuer(   r)   r*   r+   Úlambda_1Úlambda_2rz   r³   rS   )r.   rf   Úinit_valuesr0   s      €r1   r'   zInternVLVisionLayer.__init__L  s  ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ0°Ñ8Ô8ˆŒÝ$ VÑ,Ô,ˆŒå '¨Ô(8Ô 9¸&Ô:LÐRXÔRgÐ hÑ hÔ hˆÔÝ& vÔ'7Ô8¸Ô9KÐQWÔQfÐgÑgÔgˆÔàÔ3ˆÝœ [µ5´:¸fÔ>PÑ3QÔ3QÑ%QÐaeÐfÑfÔfˆŒÝœ [µ5´:¸fÔ>PÑ3QÔ3QÑ%QÐaeÐfÑfÔfˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr2   r3   c                 ó$  — |                       |                      |¦  «        ¦  «        \  }}| j        |z  }||z   }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }| j        �
| j        |z  }||z   }|S rŒ   )râ   rç   rê   rè   rã   rS   rë   )r.   r3   Úattention_outputrˆ   Úlayer_outputs        r1   r?   zInternVLVisionLayer.forward[  s§   € ð #ŸnšnØ×!Ò! -Ñ0Ô0ñ
ô 
ÑÐ˜!ð  œ=Ð+;Ñ;Ðð )¨=Ñ8ˆð ×+Ò+¨MÑ:Ô:ˆà—x’x Ñ-Ô-ˆØ—|’| LÑ1Ô1ˆàŒ=Ð$Øœ=¨<Ñ7ˆLð $ mÑ3ˆàÐr2   )rE   rF   rG   r�   r   r'   r*   rI   rA   r?   rJ   rK   s   @r1   rÜ   rÜ   I  s”   ø€ € € € € ØIÐIð>Ð3ð >¸ð >ð >ð >ð >ð >ð >ðà”|ðð 
ˆuŒ|Ô	˜u U¤\°5´<Ð%?Ô@Ñ	@ðð ð ð ð ð ð ð r2   rÜ   c                   óH   ‡ — e Zd Zdeddfˆ fd„Zdej        deez  fd„Z	ˆ xZ
S )ÚInternVLVisionEncoderrf   r$   Nc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r’   )rÜ   )Ú.0Úirf   s     €r1   ú
<listcomp>z2InternVLVisionEncoder.__init__.<locals>.<listcomp>{  s"   ø€ Ð#iÐ#iÐ#iÀAÕ$7¸Ñ$?Ô$?Ð#iÐ#iÐ#ir2   F)	r&   r'   rf   r(   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerÚgradient_checkpointingr×   s    `€r1   r'   zInternVLVisionEncoder.__init__x  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#iÐ#iÐ#iÐ#iÍÈvÔOgÑIhÔIhÐ#iÑ#iÔ#iÑjÔjˆŒ
Ø&+ˆÔ#Ð#Ð#r2   r3   c                 óL   — | j         D ]} ||¦  «        }Œt          |¬¦  «        S )N)Úlast_hidden_state)rú   r   )r.   r3   Úlayer_modules      r1   r?   zInternVLVisionEncoder.forward~  s@   € ð !œJð 	8ð 	8ˆLØ(˜L¨Ñ7Ô7ˆMˆMåØ+ð
ñ 
ô 
ð 	
r2   )rE   rF   rG   r   r'   r*   rI   rA   r   r?   rJ   rK   s   @r1   rñ   rñ   w  sy   ø€ € € € € ð,Ð3ð ,¸ð ,ð ,ð ,ð ,ð ,ð ,ð	
à”|ð	
ð 
�Ñ	 ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r2   rñ   c                   ó„   ‡ — e Zd ZU eed<   dZdZdZdZdgZ	dZ
dZdZdZeedœZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )	ÚInternVLVisionPreTrainedModelrf   Úinternvl_visionrŸ   )ÚimageÚvideoTrÜ   )r3   Ú
attentionsc                 óì  •— t          ¦   «                              |¦  «         t          |t          ¦  «        r]t	          j        |j        ¦  «         |j        �t	          j        |j        ¦  «         |j        �t	          j        |j        ¦  «         dS dS t          |t          ¦  «        rJt	          j
        |j        | j        j        ¦  «         t	          j
        |j        | j        j        ¦  «         dS dS )zInitialize the weightsN)r&   Ú_init_weightsr­   r¦   ÚinitÚzeros_r©   r«   r²   rÜ   Ú	constant_rê   rf   ré   rë   )r.   rM   r0   s     €r1   r  z+InternVLVisionPreTrainedModel._init_weightsœ  sâ   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ6Ñ7Ô7ð 	PÝŒK˜Ô(Ñ)Ô)Ð)ØÔ Ð,Ý”˜FÔ-Ñ.Ô.Ð.ØÔ)Ð5Ý”˜FÔ6Ñ7Ô7Ð7Ð7Ð7ð 6Ð5å˜Õ 3Ñ4Ô4ð 	PÝŒN˜6œ?¨D¬KÔ,NÑOÔOÐOÝŒN˜6œ?¨D¬KÔ,NÑOÔOÐOÐOÐOð	Pð 	Pr2   )rE   rF   rG   r   Ú__annotations__Ú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Ü   re   Ú_can_record_outputsr*   Úno_gradr  rJ   rK   s   @r1   r   r   Š  s¯   ø€ € € € € € à Ð Ð Ñ Ø)ÐØ$€OØ)ÐØ&*Ð#Ø.Ð/ÐØ€NØÐØÐØ"&Ðð -Ø-ðð Ðð
 €U„]�_„_ðPð Pð Pð Pñ „_ðPð Pð Pð Pð Pr2   r   c                   óª   ‡ — e Zd Zdeddfˆ fd„Zd„ Ze ed¬¦  «        e	 dde	j
        d	e	j        dz  deez  fd
„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚInternVLVisionModelrf   r$   Nc                 óN  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |j        rt          j	        ¦   «         nt          j
        |j        |j        ¬¦  «        | _        |                      ¦   «          d S )NrÞ   )r&   r'   rf   r¦   r¤   rñ   ÚencoderÚuse_mean_poolingr(   r{   Ú	LayerNormr/   ræ   Ú	layernormÚ	post_initr×   s     €r1   r'   zInternVLVisionModel.__init__­  sŒ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå2°6Ñ:Ô:ˆŒÝ,¨VÑ4Ô4ˆŒð $Ô4Ðu�BŒK‰MŒMˆM½"¼,ÀvÔGYÐ_eÔ_tÐ:uÑ:uÔ:uð 	Œð
 	�ŠÑÔÐÐÐr2   c                 ó   — | j         j        S rŒ   )r¤   r¬   rC   s    r1   Úget_input_embeddingsz(InternVLVisionModel.get_input_embeddings»  s   € ØŒÔ/Ð/r2   F)Útie_last_hidden_statesrŸ   rÅ   c                 óÌ   — |                       ||¬¦  «        }|                      |¦  «        }|d         }|                      |¦  «        }t          ||j        |j        ¬¦  «        S )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   )rý   r3   r  )r¤   r  r  r‘   r3   r  )r.   rŸ   rÅ   r^   Úembedding_outputÚencoder_outputsÚsequence_outputs          r1   r?   zInternVLVisionModel.forward¾  sm   € ð  Ÿ?š?¨<È˜?ÑYÔYÐàŸ,š,Ð'7Ñ8Ô8ˆØ)¨!Ô,ˆØŸ.š.¨Ñ9Ô9ˆå3Ø-Ø)Ô7Ø&Ô1ð
ñ 
ô 
ð 	
r2   rŒ   )rE   rF   rG   r   r'   r  r   r   r   r*   rI   rÎ   rA   r‘   r?   rJ   rK   s   @r1   r  r  «  sÎ   ø€ € € € € ðÐ3ð ¸ð ð ð ð ð ð ð0ð 0ð 0ð  Ø€_¨EÐ2Ñ2Ô2ØàUYð
ð 
Ø!œLð
Ø;@Ô;KÈdÑ;Rð
à	Ð5Ñ	5ð
ð 
ð 
ñ „^ñ 3Ô2ñ  Ôð
ð 
ð 
ð 
ð 
r2   r  c                   ó@   — e Zd ZU eed<   dZdZdZdgZdZ	dZ
dZdZdZdS )ÚInternVLPreTrainedModelrf   Úmodel)r  Útextr  TÚpast_key_valuesN)rE   rF   rG   r   r
  r  r  r  Ú_skip_keys_device_placementr  r  Ú_can_compile_fullgraphr  r  r’   r2   r1   r&  r&  Õ  sV   € € € € € € àÐÐÑØÐØ1ÐØ&*Ð#Ø#4Ð"5ÐàÐØ€Nà!ÐØÐØ"&ÐÐÐr2   r&  c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚInternVLMultiModalProjectorrf   c                 óà  •— t          ¦   «                              ¦   «          t          j        |j        j        t          d|j        z  ¦  «        dz  z  ¦  «        | _        t          j	        |j        j        t          d|j        z  ¦  «        dz  z  |j
        j        ¦  «        | _        t          |j                 | _        t          j	        |j
        j        |j
        j        ¦  «        | _        d S )Nr   r   )r&   r'   r(   r  Úvision_configr/   rÍ   Údownsample_ratiorÙ   rt   Útext_configÚlinear_1r   Úprojector_hidden_actÚactÚlinear_2r×   s     €r1   r'   z$InternVLMultiModalProjector.__init__æ  sÀ   ø€ Ý‰Œ×ÒÑÔÐÝœ, vÔ';Ô'GÍ#ÈaÐRXÔRiÑNiÑJjÔJjÐnoÑJoÑ'oÑpÔpˆŒÝœ	ØÔ Ô,­s°1°vÔ7NÑ3NÑ/OÔ/OÐSTÑ/TÑTÐV\ÔVhÔVtñ
ô 
ˆŒõ ˜&Ô5Ô6ˆŒÝœ	 &Ô"4Ô"@À&ÔBTÔB`ÑaÔaˆŒˆˆr2   c                 ó®   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rŒ   )rÙ   r2  r4  r5  )r.   Úimage_featuresr3   s      r1   r?   z#InternVLMultiModalProjector.forwardï  sL   € ØŸš¨Ñ7Ô7ˆØŸš mÑ4Ô4ˆØŸš Ñ/Ô/ˆØŸš mÑ4Ô4ˆØÐr2   )rE   rF   rG   r   r'   r?   rJ   rK   s   @r1   r-  r-  å  sZ   ø€ € € € € ðb˜~ð bð bð bð bð bð bðð ð ð ð ð ð r2   r-  zM
    Base class for InternVL outputs, with hidden states and attentions.
    c                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚInternVLModelOutputWithPastaÏ  
    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.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚimage_hidden_states)rE   rF   rG   r�   r:  r*   ÚFloatTensorr
  r’   r2   r1   r9  r9  ÷  s7   € € € € € € ð	ð 	ð 59Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r2   r9  zx
    The InternVL model which consists of a vision backbone and a language model, without a language modeling head.
    c                   ó  ‡ — e Zd Zdefˆ fd„Zee ed¬¦  «        	 	 ddej	        de
ee
         z  ee
         z  dz  dedz  d	ee         d
eez  f
d„¦   «         ¦   «         ¦   «         Zdej        dej	        dej	        fd„Zee	 	 	 	 	 	 	 	 ddej        dz  dej	        dz  dej        dz  dej        dz  dedz  dej	        dz  de
ee
         z  ee
         z  dz  dedz  d	ee         d
eez  fd„¦   «         ¦   «         Zddej        defd„Zˆ xZS )ÚInternVLModelrf   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _	        |  
                    ¦   «          d S rŒ   )r&   r'   r   Úfrom_configr/  Úvision_towerr-  Úmulti_modal_projectorr1  Úlanguage_modelr  r×   s     €r1   r'   zInternVLModel.__init__  sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý%Ô1°&Ô2FÑGÔGˆÔå%@ÀÑ%HÔ%HˆÔ"Ý'Ô3°FÔ4FÑGÔGˆÔØ�ŠÑÔÐÐÐr2   zWObtains image last hidden states from the vision tower and apply multimodal projection.rŽ   NrŸ   Úvision_feature_layerÚvision_feature_select_strategyr^   r$   c                 ó   — |                      | j        ¬¦  «        }| j        j        }|dk    rd|d<    | j        d|ddœ|¤Ž}|dk    r|j        }n|j        |         }|dk    r|dd…dd…dd…f         }|j        d         }t          |d	z  ¦  «        }	|j        d
         }
| 	                    |
|	|	d¦  «        }|  
                    ||¬¦  «        }| 	                    |
d|j        d         ¦  «        }|                      |¦  «        }||_        |S )a!  
        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.
        )r7   r5   TÚoutput_hidden_states)rŸ   Úreturn_dictÚdefaultNr   rµ   r   )Úscale_factorr’   )r8   r7   rf   r0  r@  rý   r3   rB   rÍ   r‚   Úpixel_shufflerA  Úpooler_output)r.   rŸ   rC  rD  r^   r0  Úvision_outputsÚvision_featuresÚchannelsÚfeature_sizer†   s              r1   Úget_image_featuresz InternVLModel.get_image_features  sN  € ð$ $—’¨T¬Z�Ñ8Ô8ˆàœ;Ô7ÐØ 2Ò%Ð%Ø-1ˆFÐ)Ñ*Ø*˜Ô*Ða¸ÐRVÐaÐaÐZ`ÐaÐaˆØ 2Ò%Ð%Ø,Ô>ˆOˆOà,Ô:Ð;OÔPˆOØ)¨YÒ6Ð6Ø-¨a¨a¨a°°°°Q°Q°Q¨hÔ7ˆOð #Ô(¨Ô+ˆÝ˜8 S™=Ñ)Ô)ˆØ$Ô*¨1Ô-ˆ
ð *×1Ò1°*¸lÈLÐZ\Ñ]Ô]ˆð ×,Ò,¨_ÐK[Ð,Ñ\Ô\ˆð *×1Ò1°*¸bÀ/ÔBWÐXZÔB[Ñ\Ô\ˆð ×4Ò4°_ÑEÔEˆØ'6ˆÔ$àÐr2   Ú	input_idsÚinputs_embedsr7  c                 ó   — |€e| |                       ¦   «         t          j        | j        j        t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n|| j        j        k    }|                     ¦   «         }|j	        d         |j	        d         z  }| 
                    d¦  «                             |j        ¦  «        }t          ||j	        d         z  |                     ¦   «         k    d|› d|› �¦  «         |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.
        N)r7   Údevicer5   r   r   z6Image features and image tokens do not match, tokens: z, features: )r  r*   Útensorrf   Úimage_token_idÚlongrT  ÚallÚsumrB   rÈ   r8   r   Únumel)r.   rQ  rR  r7  Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r1   Úget_placeholder_maskz"InternVLModel.get_placeholder_maskM  s  € ð ÐØ!.Ð2M°$×2KÒ2KÑ2MÔ2MÝ”˜Tœ[Ô7½u¼zÐR_ÔRfÐgÑgÔgñ3ô 3ò "Ðð "4×!7Ò!7¸Ñ!;Ô!;ÐÐà!*¨d¬kÔ.HÒ!HÐà+×/Ò/Ñ1Ô1ˆØ)Ô/°Ô2°^Ô5IÈ!Ô5LÑLÐØ/×9Ò9¸"Ñ=Ô=×@Ò@ÀÔAUÑVÔVÐÝØ˜]Ô0°Ô4Ñ4¸×8LÒ8LÑ8NÔ8NÒNØsÀ^ÐsÐsÐaqÐsÐsñ	
ô 	
ð 	
ð "Ð!r2   rQ   Úposition_idsr)  c	                 óÈ  — |d u |d uz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|�l|                      |||d¬¦  «        j        }
|
                     |j        |j        ¦  «        }
|                      |||
¬¦  «        }|                     ||
¦  «        } | j	        d||||dœ|	¤Ž}t          |j        |j        |j        |j        |�|
nd ¬¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embedsT)rŸ   rC  rD  rG  )rR  r7  )rQ   r_  r)  rR  )rý   r)  r3   r  r:  r’   )rn   r  rP  rK  r8   rT  r7   r^  Úmasked_scatterrB  r9  rý   r)  r3   r  )r.   rQ  rŸ   rQ   r_  r)  rR  rC  rD  r^   r7  r[  Úoutputss                r1   r?   zInternVLModel.forwarde  sI  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÐ#Ø!×4Ò4Ø)Ø%9Ø/MØ ð	 5ñ ô ô
 ð ð ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ!%×!:Ò!:Ø¨À~ð ";ñ "ô "Ðð *×8Ò8Ð9KÈ^Ñ\Ô\ˆMà%�$Ô%ð 
Ø)Ø%Ø+Ø'ð	
ð 
ð
 ð
ð 
ˆõ +Ø%Ô7Ø#Ô3Ø!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
r2   rµ   rM  rI  c           
      ó(  — |                      ¦   «         \  }}}}||z  dk    s	||z  dk    rt          d¦  «        ‚|                     ||t          ||z  ¦  «        t          ||z  ¦  «        ¦  «        }|                     dddd¦  «                             ¦   «         }|                     |t          ||z  ¦  «        t          ||z  ¦  «        t          ||dz  z  ¦  «        ¦  «        }|                     dddd¦  «                             ¦   «         }|S )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)).
        r   zKHeight and width must be divisible by scale_factor for proper downsampling.r   r   r   )r�   rn   rƒ   rÍ   r»   r]   )r.   rM  rI  r†   r£   r¢   rN  s          r1   rJ  zInternVLModel.pixel_shuffle–  s)  € ð />×.BÒ.BÑ.DÔ.DÑ+ˆ
�E˜6 8à�LÑ  AÒ%Ð%¨°Ñ)=ÀÒ)BÐ)BÝÐjÑkÔkÐkð *×.Ò.Ø˜�s 6¨LÑ#8Ñ9Ô9½3¸xÈ,Ñ?VÑ;WÔ;Wñ
ô 
ˆð *×1Ò1°!°Q¸¸1Ñ=Ô=×HÒHÑJÔJˆð *×.Ò.Ø�˜F \Ñ1Ñ2Ô2µC¸ÀÑ8LÑ4MÔ4MÍsÐS[Ð_kÐmnÑ_nÑSoÑOpÔOpñ
ô 
ˆð
 *×1Ò1°!°Q¸¸1Ñ=Ô=×HÒHÑJÔJˆàÐr2   ©NN)NNNNNNNN)rµ   )rE   rF   rG   r   r'   r   r   r   r*   r;  rÍ   ÚlistÚstrr   r   rA   r   rP  Ú
LongTensorr^  rI   r   r9  r?   rH   rJ  rJ   rK   s   @r1   r=  r=    sV  ø€ € € € € ð˜~ð ð ð ð ð ð ð  ØØ€^Ønðñ ô ð DHØ59ð	,ð ,àÔ'ð,ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð,ð ),¨d©
ð	,ð
 Ð+Ô,ð,ð 
Ð+Ñ	+ð,ð ,ð ,ñô ñ Ôñ  Ôð
,ð\"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0 Øð .2Ø15Ø.2Ø04Ø(,Ø26ØCGØ59ð-
ð -
àÔ# dÑ*ð-
ð Ô'¨$Ñ.ð-
ð œ tÑ+ð	-
ð
 Ô&¨Ñ-ð-
ð  ™ð-
ð Ô(¨4Ñ/ð-
ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð-
ð ),¨d©
ð-
ð Ð+Ô,ð-
ð 
Ð,Ñ	,ð-
ð -
ð -
ñ „^ñ Ôð-
ð^!ð !¨U¬\ð !Èð !ð !ð !ð !ð !ð !ð !ð !r2   r=  zT
    Base class for InternVL causal language model (or autoregressive) outputs.
    c                   óÖ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dZej        dz  ed<   dS )	ÚInternVLCausalLMOutputWithPasta4  
    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.
    image_hidden_states (`torch.FloatTensor`, *optional*):
        A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
        image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
    NÚlossÚlogitsr)  r3   r  r:  )rE   rF   rG   r�   rj  r*   r;  r
  rk  r)  r   r3   rA   r  r:  r’   r2   r1   ri  ri  º  sµ   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø$(€O�U˜T‘\Ð(Ð(Ñ(Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ø48Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r2   ri  zV
    The INTERNVL model which consists of a vision backbone and a language model.
    c                   ó  ‡ — e Zd ZddiZdefˆ fd„Zdej        fd„Ze		 	 dde
j        d	eee         z  ee         z  dz  d
edz  dee         deez  f
d„¦   «         Zee		 	 	 	 	 	 	 	 	 	 	 dde
j        dz  de
j        dz  de
j        dz  de
j        dz  dedz  de
j        dz  d	eee         z  ee         z  dz  d
edz  de
j        dz  dee
j        z  de
j        dz  dee         deez  fd„¦   «         ¦   «         Z	 	 	 	 	 	 dˆ fd„	Zˆ xZS )Ú InternVLForConditionalGenerationzlm_head.weightz(model.language_model.embed_tokens.weightrf   c                 óú   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        j        |j        j        d¬¦  «        | _	        |  
                    ¦   «          d S )NFrh   )r&   r'   r=  r'  r(   rt   r1  r/   Ú
vocab_sizeÚlm_headr  r×   s     €r1   r'   z)InternVLForConditionalGeneration.__init__à  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6Ñ*Ô*ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒØ�ŠÑÔÐÐÐr2   r$   c                 ó   — | j         S rŒ   )rp  rC   s    r1   Úget_output_embeddingsz6InternVLForConditionalGeneration.get_output_embeddingsæ  s
   € ØŒ|Ðr2   NrŸ   rC  rD  r^   c                 ó.   —  | j         j        d|||dœ|¤ŽS )N)rŸ   rC  rD  r’   )r'  rP  )r.   rŸ   rC  rD  r^   s        r1   rP  z3InternVLForConditionalGeneration.get_image_featuresé  s:   € ð -ˆtŒzÔ,ð 
Ø%Ø!5Ø+Ið
ð 
ð ð	
ð 
ð 	
r2   r   rQ  rQ   r_  r)  rR  ÚlabelsÚlogits_to_keepÚimage_sizesc                 ón  —  | j         d|||||||||dœ	|¤Ž}|d         }t          |
t          ¦  «        rt          |
 d¦  «        n|
}|                      |dd…|dd…f         ¦  «        }d}|	�  | j        d||	| j        j        j        dœ|¤Ž}t          |||j
        |j        |j        |j        ¬¦  «        S )ac  
        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.
        ```)	rQ  rŸ   rQ   r_  r)  rR  rC  rD  rv  r   N)rk  rt  ro  )rj  rk  r)  r3   r  r:  r’   )r'  r­   rÍ   Úslicerp  Úloss_functionrf   r1  ro  ri  r)  r3   r  r:  )r.   rQ  rŸ   rQ   r_  r)  rR  rC  rD  rt  ru  rv  r^   rb  r3   Úslice_indicesrk  rj  s                     r1   r?   z(InternVLForConditionalGeneration.forwardø  s  € ðh �$”*ð 
ØØ%Ø)Ø%Ø+Ø'Ø!5Ø+IØ#ð
ð 
ð ð
ð 
ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%ð Ø f¸¼Ô9PÔ9[ðð Ø_eðð ˆDõ .ØØØ#Ô3Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
r2   Fc           	      ó‚   •—  t          ¦   «         j        |f|||||dœ|¤Ž}	|s|                     dd¦  «        s||	d<   |	S )N)r)  rR  rQ   ru  Úis_first_iterationÚ	use_cacheTrŸ   )r&   Úprepare_inputs_for_generationÚget)r.   rQ  r)  rR  rŸ   rQ   ru  r|  r^   Úmodel_inputsr0   s             €r1   r~  z>InternVLForConditionalGeneration.prepare_inputs_for_generationM  st   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	8 V§Z¢Z°¸TÑ%BÔ%Bð 	8ð
 ,8ˆL˜Ñ(àÐr2   rd  )NNNNNNNNNr   N)NNNNNF)rE   rF   rG   Ú_tied_weights_keysr   r'   r(   ÚModulerr  r   r*   r;  rÍ   re  rf  r   r   rA   r   rP  r   rg  rI   r   ri  r?   r~  rJ   rK   s   @r1   rm  rm  Ø  sv  ø€ € € € € ð +Ð,VÐWÐð˜~ð ð ð ð ð ð ð r¤yð ð ð ð ð ð DHØ59ð	
ð 
àÔ'ð
ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð
ð ),¨d©
ð	
ð
 Ð+Ô,ð
ð 
Ð+Ñ	+ð
ð 
ð 
ñ „^ð
ð Øð .2Ø15Ø.2Ø04Ø(,Ø26ØCGØ59Ø*.Ø-.Ø+/ðQ
ð Q
àÔ# dÑ*ðQ
ð Ô'¨$Ñ.ðQ
ð œ tÑ+ð	Q
ð
 Ô&¨Ñ-ðQ
ð  ™ðQ
ð Ô(¨4Ñ/ðQ
ð " D¨¤I™o°°S´	Ñ9¸DÑ@ðQ
ð ),¨d©
ðQ
ð Ô  4Ñ'ðQ
ð ˜eœlÑ*ðQ
ð ”\ DÑ(ðQ
ð Ð+Ô,ðQ
ð 
Ð/Ñ	/ðQ
ð Q
ð Q
ñ „^ñ ÔðQ
ðl ØØØØØ ðð ð ð ð ð ð ð ð ð r2   rm  )r   r  r&  r=  rm  )rL   )FÚcollections.abcr®   r   Údataclassesr   r*   Útorch.nnr(   Ú r   r  Úactivationsr   Úcache_utilsr   Ú
generationr	   Úintegrationsr
   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úautor   Úconfiguration_internvlr   r   r‚  r!   rI   rH   rÍ   rc   re   r‘   r”   r¦   rÐ   r  rä   rÜ   rñ   r   r  r&  r-  r9  r=  ri  rm  Ú__all__r’   r2   r1   ú<module>r•     s%  ðð, Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hð Ð˜YÑ'Ô'ðJð Jð Jð Jð J˜BœIñ Jô Jñ (Ô'ðJð6 ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð �S‰[ð%ð %ð %ð %ð4F$ð F$ð F$ð F$ð F$˜bœiñ F$ô F$ð F$ðR €ððñ ô ð
 ðð ð ð ð Ð+Eñ ô ñ „ñô ðð ð  ð  ð  ð   B¤Iñ  ô  ð  ðJ[ð [ð [ð [ð [˜rœyñ [ô [ð [ð|ð ð ð ð ˜œ	ñ ô ð ð œÐ3HÐ
IÐ
I€ð+ð +ð +ð +ð +Ð4ñ +ô +ð +ð\
ð 
ð 
ð 
ð 
˜BœIñ 
ô 
ð 
ð& ðPð Pð Pð Pð P Oñ Pô Pñ „ðPð@ ð&
ð &
ð &
ð &
ð &
Ð7ñ &
ô &
ñ „ð&
ðR ð'ð 'ð 'ð 'ð '˜oñ 'ô 'ñ „ð'ðð ð ð ð  "¤)ñ ô ð ð$ €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9Ð"9ñ 9ô 9ñ „ñô ð9ð €ððñ ô ð
fð fð fð fð fÐ+ñ fô fñô ð
fðR €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9 [ñ 9ô 9ñ „ñô ð9ð0 €ððñ ô ð
Nð Nð Nð Nð NÐ'>Àñ Nô Nñô ð
Nðbð ð €€€r2   