§
    ‚ŠtjrN  ã                   ó¨  — 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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mZ ddlmZ ddlmZ  ed¦  «         G d„ dej        ¦  «        ¦   «         Z  G d„ dej        ¦  «        Z! G d„ dej        ¦  «        Z" ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z# ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z$e G d „ d!e¦  «        ¦   «         Z% ed"¬¦  «         G d#„ d$e%¦  «        ¦   «         Z& ed%¬¦  «         G d&„ d'e%e	¦  «        ¦   «         Z'g d(¢Z(dS ))é    )Ú	dataclassN)Únné   )ÚACT2FN)ÚCache)ÚGenerationMixin)Úuse_kernel_forward_from_hub)ÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚModelOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚtorch_compilable_check)Úcan_return_tupleÚmerge_with_config_defaultsé   )Ú	AutoModelé   )ÚMistral3ConfigÚ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 )
ÚMistral3RMSNormç�íµ ÷Æ°>ÚepsÚreturnNc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )z>
        Mistral3RMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	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/mistral3/modeling_mistral3.pyr    zMistral3RMSNorm.__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&   r+   Úinput_dtypeÚvariances       r)   ÚforwardzMistral3RMSNorm.forward2   s|   € Ø#Ô)ˆØ%×(Ò(­¬Ñ7Ô7ˆØ ×$Ò$ QÑ'Ô'×,Ò,¨R¸Ð,Ñ>Ô>ˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆØŒ{˜]×-Ò-¨kÑ:Ô:Ñ:Ð:r*   c                 óH   — t          | j        j        ¦  «        › d| j        › �S )Nz, eps=)Útupler$   Úshaper%   ©r&   s    r)   Ú
extra_reprzMistral3RMSNorm.extra_repr9   s&   € Ý˜œÔ)Ñ*Ô*ÐIÐI°$Ô2GÐIÐIÐIr*   )r   )
Ú__name__Ú
__module__Ú__qualname__Úfloatr    r"   ÚTensorr7   r<   Ú__classcell__©r(   s   @r)   r   r   (   sŒ   ø€ € € € € ð$ð $¨ð $¸$ð $ð $ð $ð $ð $ð $ð; U¤\ð ;°e´lð ;ð ;ð ;ð ;ðJð Jð Jð Jð Jð Jð Jr*   r   c                   óZ   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        dej        fd„Zˆ xZ	S )ÚMistral3PatchMergerz<
    Learned merging of spatial_merge_size ** 2 patches
    Úconfigc                 ó   •— t          ¦   «                              ¦   «          || _        |j        j        }|j        | _        | j        j        j        | _        t          j        || j        dz  z  |d¬¦  «        | _	        d S )Nr   F©Úbias)
r   r    rF   Úvision_configr'   Úspatial_merge_sizeÚ
patch_sizer   ÚLinearÚmerging_layer)r&   rF   r'   r(   s      €r)   r    zMistral3PatchMerger.__init__B   ss   ø€ Ý‰Œ×ÒÑÔÐØˆŒàÔ*Ô6ˆØ"(Ô";ˆÔØœ+Ô3Ô>ˆŒÝœY {°TÔ5LÈaÑ5OÑ'OÐQ\ÐchÐiÑiÔiˆÔÐÐr*   Úimage_featuresÚimage_sizesr   c                 ó†  ‡ — ˆ fd„|D ¦   «         }d„ |D ¦   «         }|j         d         }g }t          |                     |¦  «        ¦  «        D ]È\  }}||         \  }}	|                     ||	|¦  «                             ddd¦  «                             d¦  «        }
t          j        j         	                    |
‰ j
        ‰ j
        ¬¦  «        }|                     |‰ j
        dz  z  d¦  «                             ¦   «         }|                     |¦  «         ŒÉt          j        |d¬¦  «        }‰                      |¦  «        }|S )	Nc                 óP   •— g | ]"}|d          ‰j         z  |d         ‰j         z  f‘Œ#S )r   r   )rL   )Ú.0Ú
image_sizer&   s     €r)   ú
<listcomp>z/Mistral3PatchMerger.forward.<locals>.<listcomp>L   sA   ø€ ð 
ð 
ð 
ØU_ˆZ˜Œ]˜dœoÑ-¨z¸!¬}ÀÄÑ/OÐPð
ð 
ð 
r*   c                 ó   — g | ]
\  }}||z  ‘ŒS © rW   )rS   ÚhÚws      r)   rU   z/Mistral3PatchMerger.forward.<locals>.<listcomp>P   s    € Ð:Ð:Ð:¡d a¨˜A ™EÐ:Ð:Ð:r*   r-   r   r   r   )Úkernel_sizeÚstride©Údim)r:   Ú	enumerateÚsplitÚviewÚpermuteÚ	unsqueezer"   r   Ú
functionalÚunfoldrK   ÚtÚappendÚcatrN   )r&   rO   rP   Útokens_per_imageÚdÚpermuted_tensorÚimage_indexÚimage_tokensrX   rY   Ú
image_gridÚgrids   `           r)   r7   zMistral3PatchMerger.forwardK   sa  ø€ ð
ð 
ð 
ð 
Øcnð
ñ 
ô 
ˆð ;Ð:¨kÐ:Ñ:Ô:ÐØÔ  Ô$ˆàˆÝ)2°>×3GÒ3GÐHXÑ3YÔ3YÑ)ZÔ)Zð 	)ð 	)Ñ%ˆK˜à˜{Ô+‰DˆAˆqØ%×*Ò*¨1¨a°Ñ3Ô3×;Ò;¸A¸qÀ!ÑDÔD×NÒNÈqÑQÔQˆJÝ”8Ô&×-Ò-Ø¨Ô(?ÈÔH_ð .ñ ô ˆDð —9’9˜Q Ô!8¸!Ñ!;Ñ;¸RÑ@Ô@×BÒBÑDÔDˆDØ×"Ò" 4Ñ(Ô(Ð(Ð(åœ ?¸Ð:Ñ:Ô:ˆØ×+Ò+¨NÑ;Ô;ˆØÐr*   )
r=   r>   r?   Ú__doc__r   r    r"   rA   r7   rB   rC   s   @r)   rE   rE   =   s†   ø€ € € € € ðð ðj˜~ð jð jð jð jð jð jð e¤lð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r*   rE   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMistral3MultiModalProjectorrF   c                 ó@  •— t          ¦   «                              ¦   «          t          |j        j        |j        j        ¬¦  «        | _        t          |¦  «        | _	        t          |j        t          ¦  «        rdnt          |j        ¦  «        | _        t          j        |j        j        | j        z  |j        j        |j        ¬¦  «        | _        t&          |j                 | _        t          j        |j        j        |j        j        |j        ¬¦  «        | _        d S )N)r   r   rH   )r   r    r   rJ   r'   Útext_configÚrms_norm_epsÚnormrE   Úpatch_mergerÚ
isinstanceÚvision_feature_layerÚintÚlenÚnum_feature_layersr   rM   Úmultimodal_projector_biasÚlinear_1r   Úprojector_hidden_actÚactÚlinear_2©r&   rF   r(   s     €r)   r    z$Mistral3MultiModalProjector.__init__d   sõ   ø€ Ý‰Œ×ÒÑÔÐÝ# FÔ$8Ô$DÈ&ÔJ\ÔJiÐjÑjÔjˆŒ	Ý/°Ñ7Ô7ˆÔõ ˜FÔ7½Ñ=Ô=ÐcˆAˆAÅ3ÀvÔGbÑCcÔCcð 	Ôõ œ	ØÔ Ô,¨tÔ/FÑFØÔÔ*ØÔ1ð
ñ 
ô 
ˆŒõ
 ˜&Ô5Ô6ˆŒÝœ	ØÔÔ*¨FÔ,>Ô,JÐQWÔQqð
ñ 
ô 
ˆŒˆˆr*   rO   rP   c                 óÚ   — |                       |¦  «        }|                      ||¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S ©N)ru   rv   r}   r   r€   )r&   rO   rP   r+   s       r)   r7   z#Mistral3MultiModalProjector.forwardv   sa   € ØŸš >Ñ2Ô2ˆØ×*Ò*¨>¸;ÑGÔGˆØŸš nÑ5Ô5ˆØŸš Ñ/Ô/ˆØŸš mÑ4Ô4ˆØÐr*   )	r=   r>   r?   r   r    r"   rA   r7   rB   rC   s   @r)   rq   rq   c   sj   ø€ € € € € ð
˜~ð 
ð 
ð 
ð 
ð 
ð 
ð$ e¤lð ÀÄð ð ð ð ð ð ð ð r*   rq   zT
    Base class for Mistral3 causal language model (or autoregressive) outputs.
    ©Úcustom_introc                   óÖ   — 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 )	ÚMistral3CausalLMOutputWithPasta4  
    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ÚlogitsÚpast_key_valuesr+   Ú
attentionsÚimage_hidden_states)r=   r>   r?   ro   rˆ   r"   ÚFloatTensorÚ__annotations__r‰   rŠ   r   r+   r9   r‹   rŒ   rW   r*   r)   r‡   r‡      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Ð8r*   r‡   zM
    Base class for Mistral3 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 )ÚMistral3ModelOutputWithPastaÏ  
    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.
    NrŒ   )r=   r>   r?   ro   rŒ   r"   r�   rŽ   rW   r*   r)   r�   r�   �   s7   € € € € € € ð	ð 	ð 59Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ð8Ð8r*   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 )ÚMistral3PreTrainedModelrF   Úmodel)ÚimageÚtextTrŠ   N)r=   r>   r?   r   rŽ   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphÚ_supports_flex_attnÚ_supports_attention_backendrW   r*   r)   r’   r’   ²   sV   € € € € € € àÐÐÑØÐØ(ÐØ&*Ð#Ø#4Ð"5ÐàÐØ€Nà!ÐØÐØ"&ÐÐÐr*   r’   zx
    The Mistral3 model which consists of a vision backbone and a language model, without a language modeling head.
    c                   ó6  ‡ — e Zd Zdefˆ fd„Zee ed¬¦  «        	 	 ddej	        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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         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚMistral3ModelrF   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _	        |  
                    ¦   «          d S rƒ   )r   r    r   Úfrom_configrJ   Úvision_towerrq   Úmulti_modal_projectorrs   Úlanguage_modelÚ	post_initr�   s     €r)   r    zMistral3Model.__init__È   sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý%Ô1°&Ô2FÑGÔGˆÔå%@ÀÑ%HÔ%HˆÔ"Ý'Ô3°FÔ4FÑGÔGˆÔØ�ŠÑÔÐÐÐr*   zWObtains image last hidden states from the vision tower and apply multimodal projection.r„   NÚpixel_valuesrP   rx   Úoutput_hidden_statesÚkwargsr   c                 ó`  ‡— d„ |                      ¦   «         D ¦   «         } | j        |f|dddœ|¤ŽŠt          |t          ¦  «        r‰j        |         }n$ˆfd„|D ¦   «         }t          j        |d¬¦  «        }|                      |                     d¦  «        |¦  «        }| j        j	        | j
        j        z  }	t          j        ||j        ¬¦  «        |	z                       d¬¦  «                             ¦   «         }
t          j        |                     d¦  «        |
¦  «        }|‰_        ‰S )	Nc                 ó   — i | ]
\  }}|®||“ŒS rƒ   rW   )rS   ÚkÚvs      r)   ú
<dictcomp>z4Mistral3Model.get_image_features.<locals>.<dictcomp>Ý   s   € ÐCÐCÐC™4˜1˜a°Q°]�!�Q°]°]°]r*   T)rP   r¨   Úreturn_dictc                 ó*   •— g | ]}‰j         |         ‘ŒS rW   )r+   )rS   Ú	layer_idxÚimage_outputss     €r)   rU   z4Mistral3Model.get_image_features.<locals>.<listcomp>ë   s!   ø€ ÐdÐdÐdÀ)�}Ô2°9Ô=ÐdÐdÐdr*   r-   r\   r   )Údevice)Úitemsr£   rw   ry   r+   r"   rg   r¤   ÚsqueezerL   rF   rK   Ú	as_tensorr³   ÚprodÚtolistr_   Úpooler_output)r&   r§   rP   rx   r¨   r©   Úselected_image_featureÚhs_poolrO   Údownsample_ratioÚsplit_sizesr²   s              @r)   Úget_image_featuresz Mistral3Model.get_image_featuresÐ   sU  ø€ ð DÐC 6§<¢<¡>¤>ÐCÑCÔCˆà)˜Ô)Øð
à#Ø!%Øð	
ð 
ð
 ð
ð 
ˆõ Ð*­CÑ0Ô0ð 	@Ø%2Ô%@ÐAUÔ%VÐ"Ð"àdÐdÐdÐdÐOcÐdÑdÔdˆGÝ%*¤Y¨w¸BÐ%?Ñ%?Ô%?Ð"à×3Ò3Ð4J×4RÒ4RÐSTÑ4UÔ4UÐWbÑcÔcˆØÔ,Ô7¸$¼+Ô:XÑXÐåŒ_˜[°Ô1FÐGÑGÔGÐK[Ñ[×aÒaÐfhÐaÑiÔi×pÒpÑrÔrð 	õ œ ^×%;Ò%;¸AÑ%>Ô%>ÀÑLÔLˆØ&4ˆÔ#àÐr*   Ú	input_idsÚinputs_embedsrO   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)r/   r³   r-   r   r   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr"   ÚtensorrF   Úimage_token_idÚlongr³   ÚallÚsumr:   rb   r0   r   Únumel)r&   r¿   rÀ   rO   Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r)   Úget_placeholder_maskz"Mistral3Model.get_placeholder_maskø   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ñ	
ô 	
ð 	
ð "Ð!r*   Úattention_maskÚposition_idsrŠ   Ú	use_cachec
           	      óò  — |d u |d uz  rt          d¦  «        ‚|€ |                      ¦   «         |¦  «        }|�€|                      |||	d¬¦  «        j        }t	          j        |d¬¦  «                             |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§   rx   rP   r¯   r   r\   )rÀ   rO   )rÍ   rÎ   rŠ   rÀ   rÏ   )Úlast_hidden_staterŠ   r+   r‹   rŒ   rW   )Ú
ValueErrorrÂ   r¾   r¹   r"   rg   r0   r³   r/   rÌ   Úmasked_scatterr¥   r�   rÑ   rŠ   r+   r‹   )r&   r¿   r§   rÍ   rÎ   rŠ   rÀ   rx   rÏ   rP   r©   rO   rÉ   Úoutputss                 r)   r7   zMistral3Model.forward  s\  € ð  ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMàÐ#Ø!×4Ò4Ø)Ø%9Ø'Ø ð	 5ñ ô ô
 ð õ #œY ~¸1Ð=Ñ=Ô=×@Ò@ÀÔAUÐWdÔWjÑkÔkˆNØ!%×!:Ò!:Ø¨À~ð ";ñ "ô "Ðð *×8Ò8Ð9KÈ^Ñ\Ô\ˆMà%�$Ô%ð 
Ø)Ø%Ø+Ø'Øð
ð 
ð ð
ð 
ˆõ +Ø%Ô7Ø#Ô3Ø!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
r*   )NN)	NNNNNNNNN)r=   r>   r?   r   r    r   r   r   r"   r�   rA   ry   ÚlistÚboolr   r   r9   r   r¾   Ú
LongTensorrÌ   r   r�   r7   rB   rC   s   @r)   r    r    Â   sW  ø€ € € € € ð˜~ð ð ð ð ð ð ð  ØØ€^Ønðñ ô ð DHØ,0ð!ð !àÔ'ð!ð ”\ð!ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð	!ð
 # T™kð!ð Ð+Ô,ð!ð 
Ð+Ñ	+ð!ð !ð !ñô ñ Ôñ  Ôð
!ðF"ØÔ)ð"Ø:?Ô:Kð"Ø]bÔ]nð"ð "ð "ð "ð0  ØØð .2Ø15Ø.2Ø04Ø(,Ø26ØCGØ!%Ø+/ð/
ð /
àÔ# dÑ*ð/
ð Ô'¨$Ñ.ð/
ð œ tÑ+ð	/
ð
 Ô&¨Ñ-ð/
ð  ™ð/
ð Ô(¨4Ñ/ð/
ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð/
ð ˜$‘;ð/
ð ”\ DÑ(ð/
ð Ð+Ô,ð/
ð 
Ð,Ñ	,ð/
ð /
ð /
ñ „^ñ Ôñ  Ôð/
ð /
ð /
ð /
ð /
r*   r    zV
    The MISTRAL3 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	e
e	 ddej        d	ej        d
eee         z  ee         z  dz  dee         deez  f
d„¦   «         ¦   «         ¦   «         Ze	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j        dz  dee         deez  fd„¦   «         ¦   «         ¦   «         Z	 	 	 	 	 	 dˆ fd„	Zˆ xZS )Ú Mistral3ForConditionalGenerationz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   rM   rs   r'   Ú
vocab_sizeÚlm_headr¦   r�   s     €r)   r    z)Mistral3ForConditionalGeneration.__init__M  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6Ñ*Ô*ˆŒ
Ý”y Ô!3Ô!?ÀÔASÔA^ÐejÐkÑkÔkˆŒØ�ŠÑÔÐÐÐr*   r   c                 ó   — | j         S rƒ   )rÜ   r;   s    r)   Úget_output_embeddingsz6Mistral3ForConditionalGeneration.get_output_embeddingsS  s
   € ØŒ|Ðr*   Nr§   rP   rx   r©   c                 ó.   —  | j         j        d|||dœ|¤ŽS )N)r§   rP   rx   rW   )r“   r¾   )r&   r§   rP   rx   r©   s        r)   r¾   z3Mistral3ForConditionalGeneration.get_image_featuresV  s:   € ð -ˆtŒzÔ,ð 
Ø%Ø#Ø!5ð
ð 
ð ð	
ð 
ð 	
r*   r   r¿   rÍ   rÎ   rŠ   rÀ   ÚlabelsrÏ   Úlogits_to_keepc                 ól  —  | 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 )a1  
        Example:

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

        >>> model = Mistral3ForConditionalGeneration.from_pretrained("mistralai/Mistral-Small-3.1-24B-Instruct-2503")
        >>> processor = AutoProcessor.from_pretrained("mistralai/Mistral-Small-3.1-24B-Instruct-2503")

        >>> prompt = "<s>[INST][IMG]What is the image?[/INST]"
        >>> url = "http://images.cocodataset.org/val2017/000000039769.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, clean_up_tokenization_spaces=False)[0]
        "What is the image?The image depicts two cats lying on a pink blanket."
        ```)r¿   r§   rÍ   rÎ   rŠ   rÀ   rÏ   rP   r   N)r‰   rà   rÛ   )rˆ   r‰   rŠ   r+   r‹   rŒ   rW   )r“   rw   ry   ÚslicerÜ   Úloss_functionrF   rs   rÛ   r‡   rŠ   r+   r‹   rŒ   )r&   r¿   r§   rÍ   rÎ   rŠ   rÀ   rà   rÏ   rá   rP   r©   rÔ   r+   Úslice_indicesr‰   rˆ   s                    r)   r7   z(Mistral3ForConditionalGeneration.forwardg  s  € ðR �$”*ð 

ØØ%Ø)Ø%Ø+Ø'ØØ#ð

ð 

ð ð

ð 

ˆð   œ
ˆÝ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Ø!Ô/ØÔ)Ø 'Ô ;ð
ñ 
ô 
ð 	
r*   Fc           	      ó‚   •—  t          ¦   «         j        |f|||||dœ|¤Ž}	|s|                     dd¦  «        s||	d<   |	S )N)rŠ   rÀ   rÍ   rá   Úis_first_iterationrÏ   Tr§   )r   Úprepare_inputs_for_generationÚget)r&   r¿   rŠ   rÀ   r§   rÍ   rá   rç   r©   Úmodel_inputsr(   s             €r)   rè   z>Mistral3ForConditionalGeneration.prepare_inputs_for_generation¯  st   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	8 V§Z¢Z°¸TÑ%BÔ%Bð 	8ð
 ,8ˆL˜Ñ(àÐr*   rƒ   )
NNNNNNNNr   N)NNNNNF)r=   r>   r?   Ú_tied_weights_keysr   r    r   ÚModulerÞ   r   r   r   r"   r�   rA   ry   rÕ   r   r   r9   r   r¾   r×   r   rÖ   r‡   r7   rè   rB   rC   s   @r)   rÙ   rÙ   E  sn  ø€ € € € € ð +Ð,VÐWÐð˜~ð ð ð ð ð ð ð r¤yð ð ð ð ð  ØØð
 DHð	
ð 
àÔ'ð
ð ”\ð
ð " D¨¤I™o°°S´	Ñ9¸DÑ@ð	
ð
 Ð+Ô,ð
ð 
Ð+Ñ	+ð
ð 
ð 
ñ „^ñ Ôñ  Ôð
ð  ØØð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.Ø+/ðC
ð C
àÔ# dÑ*ðC
ð Ô'¨$Ñ.ðC
ð œ tÑ+ð	C
ð
 Ô&¨Ñ-ðC
ð  ™ðC
ð Ô(¨4Ñ/ðC
ð Ô  4Ñ'ðC
ð ˜$‘;ðC
ð ˜eœlÑ*ðC
ð ”\ DÑ(ðC
ð Ð+Ô,ðC
ð 
Ð/Ñ	/ðC
ð C
ð C
ñ „^ñ Ôñ  ÔðC
ðP ØØØØØ ðð ð ð ð ð ð ð ð ð r*   rÙ   )r    r’   rÙ   ))Údataclassesr   r"   r   Úactivationsr   Úcache_utilsr   Ú
generationr   Úintegrationsr	   Úmodeling_outputsr
   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úautor   Úconfiguration_mistral3r   rì   r   rE   rq   r‡   r�   r’   r    rÙ   Ú__all__rW   r*   r)   ú<module>rú      sp  ðð, "Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð Ð˜YÑ'Ô'ðJð Jð Jð Jð J�b”iñ Jô Jñ (Ô'ðJð(#ð #ð #ð #ð #˜"œ)ñ #ô #ð #ðLð ð ð ð  "¤)ñ ô ð ð8 €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9 [ñ 9ô 9ñ „ñô ð9ð0 €ððñ ô ð
 ð9ð 9ð 9ð 9ð 9Ð"9ñ 9ô 9ñ „ñô ð9ð ð'ð 'ð 'ð 'ð '˜oñ 'ô 'ñ „ð'ð €ððñ ô ð
{
ð {
ð {
ð {
ð {
Ð+ñ {
ô {
ñô ð
{
ð| €ððñ ô ð
Cð Cð Cð Cð CÐ'>Àñ Cô Cñô ð
CðL [Ð
ZÐ
Z€€€r*   