§
    ‚Štj-E  ã                   ó  — d dl 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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 ddlmZ ddlmZ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'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z. dej/        de0fd„Z1ee G d„ de¦  «        ¦   «         ¦   «         Z2 G d„ de(¦  «        Z3 G d„ de'¦  «        Z4 G d „ d!e"¦  «        Z5 G d"„ d#e!¦  «        Z6 G d$„ d%e+¦  «        Z7 G d&„ d'e¦  «        Z8 G d(„ d)e¦  «        Z9 G d*„ d+e*¦  «        Z: G d,„ d-ej;        ¦  «        Z< G d.„ d/ej=        ¦  «        Z> G d0„ d1e¦  «        Z? G d2„ d3e?¦  «        Z@ G d4„ d5e%¦  «        ZAe G d6„ d7e$e¦  «        ¦   «         ZBg d8¢ZCdS )9é    N)Ú	dataclass)Únné   )Úinitialization)ÚCache)ÚGenerationMixin)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚAimv2AttentionÚAimv2EncoderLayer)Ú	AutoModel)ÚLlamaMLPÚLlamaRMSNorm)ÚLlavaForConditionalGenerationÚ
LlavaModel)ÚLlavaNextCausalLMOutputWithPastÚLlavaNextModelOutputWithPast)ÚSiglipEncoderÚSiglipVisionEmbeddingsé   )ÚOvis2ConfigÚOvis2VisionConfigÚlogitsÚdimc                 ó  — |                       |¦  «        }|                     |d¬¦  «        d         }t          j        | t          j        ¬¦  «                             ||d¦  «        }||                     ¦   «         z
  |z   }|S )NT)Úkeepdimr   )Úmemory_formatg      ð?)ÚsoftmaxÚmaxÚtorchÚ
zeros_likeÚlegacy_contiguous_formatÚscatter_Údetach)r!   r"   Úy_softÚindexÚy_hardÚrets         úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/ovis2/modular_ovis2.pyÚhard_softmaxr2   '   sv   € Ø�^Š^˜CÑ Ô €Fà�JŠJ�s DˆJÑ)Ô)¨!Ô,€EÝÔ˜fµEÔ4RÐSÑSÔS×\Ò\Ð]`ÐbgÐilÑmÔm€FØ
�6—=’=‘?”?Ñ
" VÑ
+€Cà€Jó    c                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )Ú*BaseModelOutputWithVisualIndicatorFeatureszâ
    visual_indicator_features (`torch.FloatTensor` of shape `(batch_size, visual_indicator_size)`):
        Visual indicator features extracted from the model, which can be used for auxiliary tasks or further processing.
    NÚvisual_indicator_features)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   r(   ÚFloatTensorÚ__annotations__© r3   r1   r5   r5   1   s7   € € € € € € ðð ð
 ;?Ð˜uÔ0°4Ñ7Ð>Ð>Ñ>Ð>Ð>r3   r5   c                   ó   — e Zd ZdS )ÚOvis2ModelOutputWithPastN©r7   r8   r9   r=   r3   r1   r?   r?   <   ó   € € € € € Ø€Dr3   r?   c                   ó   — e Zd ZdS )ÚOvis2CausalLMOutputWithPastNr@   r=   r3   r1   rC   rC   @   rA   r3   rC   c                   ó   — e Zd ZdS )ÚOvis2RMSNormNr@   r=   r3   r1   rE   rE   D   rA   r3   rE   c                   ó   — e Zd ZdS )ÚOvis2VisionMLPNr@   r=   r3   r1   rG   rG   H   rA   r3   rG   c                   óN   ‡ — e Zd Zdefˆ fd„Zd„ Zdej        dej        fd„Z	ˆ xZ
S )ÚOvis2VisionEmbeddingsÚconfigc                 óˆ   •— t          ¦   «                              |¦  «         t          |j        |j        ¦  «        | _        d S ©N)ÚsuperÚ__init__rE   Úhidden_sizeÚrms_norm_epsÚrms_norm©ÚselfrJ   Ú	__class__s     €r1   rN   zOvis2VisionEmbeddings.__init__M   s6   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý$ VÔ%7¸Ô9LÑMÔMˆŒˆˆr3   c                 ó    — t          d¦  «        ‚)NzNot needed for Ovis2)ÚNotImplementedError)rS   s    r1   Úinterpolate_pos_encodingz.Ovis2VisionEmbeddings.interpolate_pos_encodingQ   s   € Ý!Ð"8Ñ9Ô9Ð9r3   Úpixel_valuesÚreturnc                 ó0  — | j         j        j        }|                       |                     |¬¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }|                      |¦  «        }||                      | j        ¦  «        z   }|S )N©Údtyper   r   )	Úpatch_embeddingÚweightr\   ÚtoÚflattenÚ	transposerQ   Úposition_embeddingÚposition_ids)rS   rX   Útarget_dtypeÚpatch_embedsÚ
embeddingss        r1   ÚforwardzOvis2VisionEmbeddings.forwardT   s†   € ØÔ+Ô2Ô8ˆØ×+Ò+¨L¯OªOÀ,¨OÑ,OÔ,OÑPÔPˆØ!×)Ò)¨!Ñ,Ô,×6Ò6°q¸!Ñ<Ô<ˆ
Ø—]’] :Ñ.Ô.ˆ
à $×"9Ò"9¸$Ô:KÑ"LÔ"LÑLˆ
àÐr3   )r7   r8   r9   r    rN   rW   r(   r;   ÚTensorrg   Ú__classcell__©rT   s   @r1   rI   rI   L   s‚   ø€ € € € € ðNÐ0ð Nð Nð Nð Nð Nð Nð:ð :ð :ð EÔ$5ð ¸%¼,ð ð ð ð ð ð ð ð r3   rI   c                   ó   — e Zd ZdS )ÚOvis2VisionAttentionNr@   r=   r3   r1   rl   rl   _   rA   r3   rl   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚOvis2VisionEncoderLayerrJ   c                 óp   •— t          ¦   «                              ¦   «          t          |¦  «        | _        d S rL   )rM   rN   rl   Ú	attentionrR   s     €r1   rN   z Ovis2VisionEncoderLayer.__init__d   s,   ø€ Ý‰Œ×ÒÑÔÐÝ-¨fÑ5Ô5ˆŒˆˆr3   )r7   r8   r9   r    rN   ri   rj   s   @r1   rn   rn   c   sE   ø€ € € € € ð6Ð0ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r3   rn   c            	       óx   ‡ — e Zd Zdefˆ fd„Zee	 ddej        dz  de	e
         defd„¦   «         ¦   «         Zˆ xZS )	ÚOvis2VisionEncoderrJ   c                 óº   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r=   )rn   )Ú.0Ú_rJ   s     €r1   ú
<listcomp>z/Ovis2VisionEncoder.__init__.<locals>.<listcomp>l   s"   ø€ Ð$nÐ$nÐ$nÈÕ%<¸VÑ%DÔ%DÐ$nÐ$nÐ$nr3   )rM   rN   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersrR   s    `€r1   rN   zOvis2VisionEncoder.__init__j   sR   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mÐ$nÐ$nÐ$nÐ$nÍeÐTZÔTlÑNmÔNmÐ$nÑ$nÔ$nÑoÔoˆŒˆˆr3   NÚattention_maskÚkwargsrY   c                 óN   — |}| j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N©Úlast_hidden_state)r{   r	   )rS   Úinputs_embedsr|   r}   Úhidden_statesÚencoder_layers         r1   rg   zOvis2VisionEncoder.forwardn   sH   € ð &ˆØ!œ[ð 	Sð 	SˆMØ)˜M¨-¸ÐRÐRÈ6ÐRÐRˆMˆMå°Ð?Ñ?Ô?Ð?r3   rL   )r7   r8   r9   r    rN   r   r   r(   rh   r   r   r	   rg   ri   rj   s   @r1   rr   rr   i   s¸   ø€ € € € € ðpÐ0ð pð pð pð pð pð pð Øð /3ð
@ð 
@ð œ tÑ+ð
@ð Ð+Ô,ð	
@ð
 
ð
@ð 
@ð 
@ñ „^ñ Ôð
@ð 
@ð 
@ð 
@ð 
@r3   rr   c                   óT   ‡ — e Zd Zdefˆ fd„Ze	 ddej        dz  fd„¦   «         Zˆ xZ	S )ÚOvis2VisionTransformerrJ   c                 óò   •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¦  «        | _
        d| _        d S )NF)rM   rN   rJ   rI   rf   rr   ÚencoderrE   rO   rP   rQ   Úgradient_checkpointingrR   s     €r1   rN   zOvis2VisionTransformer.__init__~   sc   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ/°Ñ7Ô7ˆŒÝ)¨&Ñ1Ô1ˆŒÝ$ VÔ%7¸Ô9LÑMÔMˆŒØ&+ˆÔ#Ð#Ð#r3   Nr|   c                 ó¤   — |                       |¦  «        } | j        d||dœ|¤Ž}|j        }|                      |¦  «        }t	          |¬¦  «        S )N)r�   r|   r   r=   )rf   r‡   r€   rQ   r	   )rS   rX   r|   r}   r‚   Úencoder_outputsr€   s          r1   rg   zOvis2VisionTransformer.forward†   sr   € ð Ÿš¨Ñ5Ô5ˆà+7¨4¬<ð ,
Ø'Ø)ð,
ð ,
ð ð,
ð ,
ˆð ,Ô=ÐØ ŸMšMÐ*;Ñ<Ô<ÐåÐ1BÐCÑCÔCÐCr3   rL   )
r7   r8   r9   r    rN   r   r(   rh   rg   ri   rj   s   @r1   r…   r…   }   s‹   ø€ € € € € ð,Ð0ð ,ð ,ð ,ð ,ð ,ð ,ð ð /3ðDð Dð œ tÑ+ðDð Dð Dñ ÔðDð Dð Dð Dð Dr3   r…   c                   ó<   ‡ — e Zd Zdej        dej        fˆ fd„Zˆ xZS )ÚOvis2VisualEmbeddingTableÚvisual_tokensrY   c                 óú   •— |j         t          j        t          j        t          j        t          j        t          j        fv r!t          ¦   «                              |¦  «        S t          j	        || j
        ¦  «        S rL   )r\   r(   Úint8Úint16Úint32Úint64ÚlongrM   rg   Úmatmulr^   )rS   r�   rT   s     €r1   rg   z!Ovis2VisualEmbeddingTable.forwardœ   sR   ø€ ØÔ¥5¤:­u¬{½E¼KÍÌÕV[ÔV`Ð"aÐaÐaÝ‘7”7—?’? =Ñ1Ô1Ð1ÝŒ|˜M¨4¬;Ñ7Ô7Ð7r3   )r7   r8   r9   r(   rh   rg   ri   rj   s   @r1   rŒ   rŒ   ›   sO   ø€ € € € € ð8 U¤\ð 8°e´lð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r3   rŒ   c                   óZ   ‡ — e Zd ZU eed<   dZdZdZdgZdgZ	dZ
dZdZdZdZdZˆ fd„Zˆ xZS )ÚOvis2PreTrainedModelrJ   Úmodel)ÚimageÚtextTrl   Úpast_key_valuesc                 ó  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rQt	          j        |j        t          j        |j        j	        d         ¦  «         
                    d¦  «        ¦  «         d S d S )Néÿÿÿÿ)r   rœ   )rM   Ú_init_weightsÚ
isinstancerI   ÚinitÚcopy_rc   r(   ÚarangeÚshapeÚexpand)rS   ÚmodulerT   s     €r1   r�   z"Ovis2PreTrainedModel._init_weights±   s{   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ3Ñ4Ô4ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir3   )r7   r8   r9   r   r<   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_cache_classÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_attention_backendr�   ri   rj   s   @r1   r–   r–   ¢   s–   ø€ € € € € € ØÐÐÑØÐØ(ÐØ&*Ð#Ø/Ð0ÐØ#4Ð"5ÐØ ÐØÐØÐØ€Nà!ÐØ"&Ððið ið ið ið ið ið ið ið ir3   r–   c            	       óŠ   ‡ — e Zd ZU eed<   eedœZdefˆ fd„Ze	e
dej        dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚOvis2VisionModelrJ   )r‚   Ú
attentionsc                 ó   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        |j        | _        |j        | _        t          j        |j	        |j
        z  |j
        z  | j        | j        z
  d¬¦  «        | _        t          j        | j        | j        z
  ¦  «        | _        |                      ¦   «          d S ©NF)Úbias)rM   rN   rJ   r…   ÚtransformerÚnum_visual_indicator_tokensÚ
vocab_sizer   ÚLinearrO   Úhidden_strideÚhead_linearÚ	LayerNormÚ	head_normÚ	post_initrR   s     €r1   rN   zOvis2VisionModel.__init__¾   s¹   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ1°&Ñ9Ô9ˆÔØ+1Ô+MˆÔ(Ø Ô+ˆŒÝœ9ØÔ Ô!5Ñ5¸Ô8LÑLØŒO˜dÔ>Ñ>Øð
ñ 
ô 
ˆÔõ
 œ d¤o¸Ô8XÑ&XÑYÔYˆŒà�ŠÑÔÐÐÐr3   rX   r}   rY   c           	      óŽ  —  | j         |fi |¤Ž}|d         }| j        j        dk    rß|j        \  }}}| j        j        }t	          t          j        |¦  «        ¦  «        }	|	|	z  |k    rt          d¦  «        ‚||	|z  z
  |z  }
t          j	         
                    |ddd|
d|
fdd¦  «        }|	|
z  }	|                     ||	|z  ||	|z  ||¦  «        }|                     dddddd¦  «        }|                     |d	||z  |z  ¦  «        }|                      |¦  «        }|                      |¦  «        }| j        j        d
k    r#t          j	                             |d	d¬¦  «        }nS| j        j        dk    rt#          |d	¬¦  «        }n1| j        j        dk    r!t          j	                             |d	¬¦  «        }t'          ||¬¦  «        S )Nr   r   z.Token sequence length must be a perfect squareÚconstantr   r   é   é   rœ   Úgumbel_argmaxT)r"   ÚhardÚ	st_argmax©r"   r&   )r€   Úpooler_output)r¶   rJ   rº   r¢   ÚintÚmathÚsqrtÚ
ValueErrorr   Ú
functionalÚpadÚreshapeÚpermuter»   r½   Útokenize_functionÚgumbel_softmaxr2   r&   r5   )rS   rX   r}   Úoutputsr€   Ú
num_imagesÚseq_lenÚ
hidden_dimrº   Úsqrt_lÚpad_sizer!   Ú
prob_tokens                r1   rg   zOvis2VisionModel.forwardÍ   s  € ð
 #�$Ô" <Ð:Ð:°6Ð:Ð:ˆØ# AœJÐØŒ;Ô$ qÒ(Ð(Ø.?Ô.EÑ+ˆJ˜ Ø œKÔ5ˆMå�œ 7Ñ+Ô+Ñ,Ô,ˆFØ˜‰ 'Ò)Ð)Ý Ð!QÑRÔRÐRà%¨°-Ñ)?Ñ@ÀMÑQˆHÝ "¤× 1Ò 1Ð2CÀaÈÈAÈxÐYZÐ\dÐEeÐgqÐstÑ uÔ uÐØ�hÑˆFà 1× 9Ò 9Ø˜F mÑ3°]ÀFÈmÑD[Ð]jÐlvñ!ô !Ðð !2× 9Ò 9¸!¸QÀÀ1ÀaÈÑ KÔ KÐØ 1× 9Ò 9Ø˜B °Ñ =À
Ñ Jñ!ô !Ðð ×!Ò!Ð"3Ñ4Ô4ˆØ—’ Ñ'Ô'ˆàŒ;Ô(¨OÒ;Ð;Ýœ×5Ò5°fÀ"È4Ð5ÑPÔPˆJˆJØŒ[Ô*¨kÒ9Ð9Ý% f°"Ð5Ñ5Ô5ˆJˆJØŒ[Ô*¨iÒ7Ð7Ýœ×.Ò.¨v¸2Ð.Ñ>Ô>ˆJå9Ø/Ø$ð
ñ 
ô 
ð 	
r3   )r7   r8   r9   r    r<   rn   rl   Ú_can_record_outputsrN   r   r   r(   r;   r   r   Útupler5   rg   ri   rj   s   @r1   r±   r±   ·   s¸   ø€ € € € € € ØÐÐÑà0Ø*ðð Ðð
Ð0ð ð ð ð ð ð ð  Øð&
Ø!Ô-ð&
Ø9?Ð@RÔ9Sð&
à	Ð;Ñ	;ð&
ð &
ð &
ñ „_ñ  Ôð&
ð &
ð &
ð &
ð &
r3   r±   c                   ón  ‡ — e Zd Zdefˆ fd„Ze ed¬¦  «        dej        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j        d	z  ded	z  deej        z  deez  fd„¦   «         ¦   «         Zˆ xZS )Ú
Ovis2ModelrJ   c                 óV  •— t          ¦   «                              |¦  «         t          |j        ¦  «        | _        t          |j        j        |j        ¦  «        | _        |j        j        | _	        |j        | _        |j
        | _
        t          j        |j        ¦  «        | _        | `d S rL   )rM   rN   r±   Úvision_configÚvision_towerrŒ   r¸   rO   Úvisual_embeddings_tableÚvisual_vocab_sizeÚvisual_indicator_token_idsr   Úfrom_configÚtext_configÚlanguage_modelÚmulti_modal_projectorrR   s     €r1   rN   zOvis2Model.__init__ù   s�   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý,¨VÔ-AÑBÔBˆÔÝ'@ÀÔAUÔA`ÐbhÔbtÑ'uÔ'uˆÔ$à!'Ô!5Ô!@ˆÔØ Ô+ˆŒØ*0Ô*KˆÔ'Ý'Ô3°FÔ4FÑGÔGˆÔØÐ&Ð&Ð&r3   zWObtains image last hidden states from the vision tower and apply multimodal projection.)Úcustom_introrX   r}   rY   c                 óð  —  | j         |fddi|¤Ž}|j        }|j        \  }}}t          j        ||| j         j        f|j        |j        d|j        ¬¦  «        }t          j	        ||gd¬¦  «        }|  
                    |¦  «        }t          j        | j        | j         j        z
  | j        t          j        ¬¦  «                             |j        ¦  «        }	||_        |  
                    |	¦  «        |_        |S )NÚreturn_dictTF)r\   ÚdeviceÚrequires_gradÚlayoutr   rÆ   r[   )rß   rÇ   r¢   r(   Úzerosr·   r\   rê   rì   Úcatrà   r¡   rá   r“   r_   r6   )
rS   rX   r}   Úimage_outputsÚimage_featuresÚ
batch_sizeÚimg_seq_lenrv   Úpadding_tensorÚvisual_indicators
             r1   Úget_image_featureszOvis2Model.get_image_features  s  € ð *˜Ô)¨,ÐSÐSÀDÐSÈFÐSÐSˆØ&Ô4ˆØ%3Ô%9Ñ"ˆ
�K ÝœØ˜ dÔ&7Ô&SÐTØ Ô&Ø!Ô(ØØ!Ô(ð
ñ 
ô 
ˆõ œ N°NÐ#CÈÐKÑKÔKˆØ×5Ò5°nÑEÔEˆå œ<ØÔ" TÔ%6Ô%RÑRØÔ"Ý”*ð
ñ 
ô 
÷ Š"ˆ^Ô"Ñ
#Ô
#ð	 	ð
 '5ˆÔ#Ø26×2NÒ2NÐO_Ñ2`Ô2`ˆÔ/àÐr3   Nr   Ú	input_idsr|   rc   rš   r�   ÚlabelsÚ	use_cacheÚlogits_to_keepc
           
      ó€  — |d u |d uz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|��E|                      |d¬¦  «        }|j        }|j        }|                      |||¬¦  «        }|                     |j        |j        ¦  «        }| 	                    ||¦  «        }t          | j        ¦  «        D ]½\  }}|€[| |                      ¦   «         t          j        |t          j        |j        ¬¦  «        ¦  «        k    }|                     d¦  «        }n||k                         |j        ¦  «        }|                     ¦   «         r)||                              |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)rX   ré   )r�   rð   )r\   rê   rœ   )r|   rc   rš   r�   rø   rù   )r€   rš   r‚   r²   Úimage_hidden_statesr=   )rË   Úget_input_embeddingsrõ   rÇ   r6   Úget_placeholder_maskr_   rê   r\   Úmasked_scatterÚ	enumeraterâ   r(   Útensorr“   ÚallÚanyrå   r?   r€   rš   r‚   r²   )rS   rö   rX   r|   rc   rš   r�   r÷   rø   rù   r}   rï   rð   r6   Úspecial_image_maskÚiÚvisual_indicator_idÚmaskrÒ   s                      r1   rg   zOvis2Model.forward$  s  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÑ#Ø ×3Ò3ÀÐ[_Ð3Ñ`Ô`ˆMØ*Ô8ˆNØ(5Ô(OÐ%à!%×!:Ò!:ØØ+Ø-ð ";ñ "ô "Ðð
 ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ)×8Ò8Ð9KÈ^Ñ\Ô\ˆMå*3°DÔ4SÑ*TÔ*Tð 
uð 
uÑ&�Ð&ØÐ$Ø(Ð,G¨D×,EÒ,EÑ,GÔ,GÝœÐ%8ÅÄ
ÐS`ÔSgÐhÑhÔhñ-ô -ò �Dð  Ÿ8š8 B™<œ<�D�Dà%Ð)<Ò<×@Ò@ÀÔAUÑVÔV�Dà—8’8‘:”:ð uØ*CÀAÔ*F×*IÒ*IÈ-ÔJ^Ð`mÔ`sÑ*tÔ*t�M $Ñ'øà%�$Ô%ð 
Ø)Ø%Ø+Ø'ØØ)ð
ð 
ð ð
ð 
ˆõ (Ø%Ô7Ø#Ô3Ø!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
r3   ©	NNNNNNNNr   )r7   r8   r9   r   rN   r   r   r(   r;   r   r   rÚ   r5   rõ   Ú
LongTensorrh   r   ÚboolrÈ   r?   rg   ri   rj   s   @r1   rÜ   rÜ   ø   s¤  ø€ € € € € ð	'˜{ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð Ø€^Ønðñ ô ðàÔ'ðð Ð+Ô,ðð 
Ð;Ñ	;ð	ð ð ñô ñ Ôðð8 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ð<
ð <
àÔ# dÑ*ð<
ð Ô'¨$Ñ.ð<
ð œ tÑ+ð	<
ð
 Ô&¨Ñ-ð<
ð  ™ð<
ð Ô(¨4Ñ/ð<
ð Ô  4Ñ'ð<
ð ˜$‘;ð<
ð ˜eœlÑ*ð<
ð 
Ð)Ñ	)ð<
ð <
ð <
ñ „^ñ Ôð<
ð <
ð <
ð <
ð <
r3   rÜ   c                   óJ  ‡ — e Zd Zdefˆ fd„Zedej        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j        dz  dedz  deej        z  de
ez  fd„¦   «         ¦   «         Zˆ xZS )ÚOvis2ForConditionalGenerationrJ   c                 ó–   •— t          ¦   «                              |¦  «         t          j        |j        |j        d¬¦  «        | _        d S r´   )rM   rN   r   r¹   rO   r¸   Úlm_headrR   s     €r1   rN   z&Ovis2ForConditionalGeneration.__init__g  s=   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒˆˆr3   rX   r}   rY   c                 ó*   —  | j         j        dd|i|¤ŽS )NrX   r=   )r—   rõ   )rS   rX   r}   s      r1   rõ   z0Ovis2ForConditionalGeneration.get_image_featuresk  s$   € ð -ˆtŒzÔ,ÐQÐQ¸,ÐQÈ&ÐQÐQÐQr3   Nr   rö   r|   rc   rš   r�   r÷   rø   rù   c
                 ój  —  | 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 )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]`.

        Example:

        ```python
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, Ovis2ForConditionalGeneration

        >>> model = Ovis2ForConditionalGeneration.from_pretrained("thisisiron/Ovis2-2B-hf")
        >>> processor = AutoProcessor.from_pretrained("thisisiron/Ovis2-2B-hf")

        >>> prompt = "<|im_start|>user\n<image>\nDescribe the image.<|im_end|>\n<|im_start|>assistant\n"
        >>> url = "http://images.cocodataset.org/val2014/COCO_val2014_000000537955.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(images=image, text=prompt, return_tensors="pt")

        >>> # Generate
        >>> generate_ids = model.generate(**inputs, max_new_tokens=15)
        >>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
        "user\n\nDescribe the image.\nassistant\nThe image features a brown dog standing on a wooden floor, looking up with"
        ```)rö   rX   r|   rc   rš   r�   rø   r   N)r!   r÷   r¸   )Úlossr!   rš   r‚   r²   rû   r=   )r—   rž   rÈ   Úslicer  Úloss_functionrJ   rä   r¸   rC   rš   r‚   r²   rû   )rS   rö   rX   r|   rc   rš   r�   r÷   rø   rù   r}   rÒ   r‚   Úslice_indicesr!   r  s                   r1   rg   z%Ovis2ForConditionalGeneration.forwardq  s  € ðX �$”*ð 	
ØØ%Ø)Ø%Ø+Ø'Øð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆå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Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
r3   r  )r7   r8   r9   r   rN   r   r(   r;   r   r   rÚ   r5   rõ   r   r  rh   r   r	  rÈ   rC   rg   ri   rj   s   @r1   r  r  e  sŸ  ø€ € € € € ðT˜{ð Tð Tð Tð Tð Tð Tð ðRØ!Ô-ðRØ9?Ð@RÔ9SðRà	Ð;Ñ	;ðRð Rð Rñ „^ðRð
 Øð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ðG
ð G
àÔ# dÑ*ðG
ð Ô'¨$Ñ.ðG
ð œ tÑ+ð	G
ð
 Ô&¨Ñ-ðG
ð  ™ðG
ð Ô(¨4Ñ/ðG
ð Ô  4Ñ'ðG
ð ˜$‘;ðG
ð ˜eœlÑ*ðG
ð 
Ð,Ñ	,ðG
ð G
ð G
ñ „^ñ ÔðG
ð G
ð G
ð G
ð G
r3   r  )r–   rÜ   r  )DrÉ   Údataclassesr   r(   r   Ú r   rŸ   Úcache_utilsr   Ú
generationr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úaimv2.modeling_aimv2r   r   Úautor   Úllama.modeling_llamar   r   Úllava.modeling_llavar   r   Úllava_next.modeling_llava_nextr   r   Úsiglip.modeling_siglipr   r   Úconfiguration_ovis2r   r    rh   rÈ   r2   r5   r?   rC   rE   rG   rI   rl   rn   rr   ÚModuler…   Ú	EmbeddingrŒ   r–   r±   rÜ   r  Ú__all__r=   r3   r1   ú<module>r(     s™  ðð €€€Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð˜œð ¨Cð ð ð ð ð Ø
ð?ð ?ð ?ð ?ð ?Ð1Kñ ?ô ?ñ „ñ „ð?ð	ð 	ð 	ð 	ð 	Ð;ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð"Añ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�<ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�Xñ 	ô 	ð 	ðð ð ð ð Ð2ñ ô ð ð&	ð 	ð 	ð 	ð 	˜>ñ 	ô 	ð 	ð6ð 6ð 6ð 6ð 6Ð/ñ 6ô 6ð 6ð@ð @ð @ð @ð @˜ñ @ô @ð @ð(Dð Dð Dð Dð D˜RœYñ Dô Dð Dð<8ð 8ð 8ð 8ð 8 ¤ñ 8ô 8ð 8ðið ið ið ið i˜?ñ iô ið ið*>
ð >
ð >
ð >
ð >
Ð+ñ >
ô >
ð >
ðBj
ð j
ð j
ð j
ð j
�ñ j
ô j
ð j
ðZ ðT
ð T
ð T
ð T
ð T
Ð$AÀ?ñ T
ô T
ñ „ðT
ðn RÐ
QÐ
Q€€€r3   