Ë
    ÜÓ^jrN  ã                   óF  — 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(y))é    )Ú	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                   óh   ‡ — 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
                  |«      «      | _        || _        y)z>
        Mistral3RMSNorm is equivalent to T5LayerNorm
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer   Ú	__class__s      €úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/mistral3/modeling_mistral3.pyr   zMistral3RMSNorm.__init__*   s1   ø€ ô 	‰ÑÔÜ—l‘l¤5§:¡:¨kÓ#:Ó;ˆŒØ #ˆÕó    Úhidden_statesc                 ó"  — |j                   }|j                  t        j                  «      }|j	                  d«      j                  dd¬«      }|t        j                  || j                  z   «      z  }| j                  |j                  |«      z  S )Nr   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor!   Úfloat32ÚpowÚmeanÚrsqrtr$   r#   )r%   r*   Úinput_dtypeÚvariances       r(   ÚforwardzMistral3RMSNorm.forward2   sy   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯©°H¸t×?TÑ?TÑ4TÓ(UÑUˆØ�{‰{˜]×-Ñ-¨kÓ:Ñ:Ð:r)   c                 ó^   — t        | j                  j                  «      › d| j                  › �S )Nz, eps=)Útupler#   Úshaper$   ©r%   s    r(   Ú
extra_reprzMistral3RMSNorm.extra_repr9   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr)   )g�íµ ÷Æ°>)
Ú__name__Ú
__module__Ú__qualname__Úfloatr   r!   ÚTensorr6   r;   Ú__classcell__©r'   s   @r(   r   r   (   s7   ø„ ñ$¨ð $¸$õ $ð; U§\¡\ð ;°e·l±ló ;öJr)   r   c                   óx   ‡ — 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¬«      | _	        y )Nr   F©Úbias)
r   r   rE   Úvision_configr&   Úspatial_merge_sizeÚ
patch_sizer   ÚLinearÚmerging_layer)r%   rE   r&   r'   s      €r(   r   zMistral3PatchMerger.__init__B   sr   ø€ Ü‰ÑÔØˆŒà×*Ñ*×6Ñ6ˆØ"(×";Ñ";ˆÔØŸ+™+×3Ñ3×>Ñ>ˆŒÜŸY™Y {°T×5LÑ5LÈaÑ5OÑ'OÐQ\ÐchÔiˆÕr)   Úimage_featuresÚimage_sizesr   c                 óÚ  — |D �cg c]&  }|d   | j                   z  |d   | j                   z  f‘Œ( }}|D ��cg c]
  \  }}||z  ‘Œ }}}|j                  d   }g }t        |j                  |«      «      D ]Á  \  }	}
||	   \  }}|
j	                  |||«      j                  ddd«      j                  d«      }t        j                  j                  j                  || j                  | j                  ¬«      }|j	                  || j                  dz  z  d«      j                  «       }|j                  |«       ŒÃ t        j                  |d¬«      }| j                  |«      }|S c c}w c c}}w )Nr   r   r,   r   )Úkernel_sizeÚstride©Údim)rK   r9   Ú	enumerateÚsplitÚviewÚpermuteÚ	unsqueezer!   r   Ú
functionalÚunfoldrJ   ÚtÚappendÚcatrM   )r%   rN   rO   Ú
image_sizeÚhÚwÚtokens_per_imageÚdÚpermuted_tensorÚimage_indexÚimage_tokensÚ
image_gridÚgrids                r(   r6   zMistral3PatchMerger.forwardK   sl  € àcnö
ØU_ˆZ˜‰]˜dŸo™oÑ-¨z¸!©}ÀÇÁÑ/OÒPð
ˆð 
ð /:×:¡d a¨˜A ›EÐ:ÐÑ:Ø× Ñ  Ñ$ˆàˆÜ)2°>×3GÑ3GÐHXÓ3YÓ)Zò 	)Ñ%ˆK˜à˜{Ñ+‰DˆAˆqØ%×*Ñ*¨1¨a°Ó3×;Ñ;¸A¸qÀ!ÓD×NÑNÈqÓQˆJÜ—8‘8×&Ñ&×-Ñ-Ø¨×(?Ñ(?È×H_ÑH_ð .ó ˆDð —9‘9˜Q ×!8Ñ!8¸!Ñ!;Ñ;¸RÓ@×BÑBÓDˆDØ×"Ñ" 4Õ(ð	)ô Ÿ™ ?¸Ô:ˆØ×+Ñ+¨NÓ;ˆØÐùò)
ùó ;s
   …+E"·E')
r<   r=   r>   Ú__doc__r   r   r!   r@   r6   rA   rB   s   @r(   rD   rD   =   s?   ø„ ñðj˜~õ jð e§l¡lð ÀÇÁð ÐRW×R^ÑR^÷ r)   rD   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚMistral3MultiModalProjectorrE   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"                  ¬«      | _        y )N)r   r   rG   )r   r   r   rI   r&   Útext_configÚrms_norm_epsÚnormrD   Úpatch_mergerÚ
isinstanceÚvision_feature_layerÚintÚlenÚnum_feature_layersr   rL   Úmultimodal_projector_biasÚlinear_1r   Úprojector_hidden_actÚactÚlinear_2©r%   rE   r'   s     €r(   r   z$Mistral3MultiModalProjector.__init__d   sø   ø€ Ü‰ÑÔÜ# F×$8Ñ$8×$DÑ$DÈ&×J\ÑJ\×JiÑJiÔjˆŒ	Ü/°Ó7ˆÔô ˜F×7Ñ7¼Ô=‰AÄ3Àv×GbÑGbÓCcð 	Ôô Ÿ	™	Ø× Ñ ×,Ñ,¨t×/FÑ/FÑFØ×Ñ×*Ñ*Ø×1Ñ1ô
ˆŒô
 ˜&×5Ñ5Ñ6ˆŒÜŸ	™	Ø×Ñ×*Ñ*¨F×,>Ñ,>×,JÑ,JÐQW×QqÑQqô
ˆ�r)   rN   rO   c                 ó²   — | j                  |«      }| j                  ||«      }| j                  |«      }| j                  |«      }| j	                  |«      }|S ©N)ro   rp   rw   ry   rz   )r%   rN   rO   r*   s       r(   r6   z#Mistral3MultiModalProjector.forwardv   sR   € ØŸ™ >Ó2ˆØ×*Ñ*¨>¸;ÓGˆØŸ™ nÓ5ˆØŸ™ Ó/ˆØŸ™ mÓ4ˆØÐr)   )	r<   r=   r>   r   r   r!   r@   r6   rA   rB   s   @r(   rk   rk   c   s*   ø„ ð
˜~õ 
ð$ e§l¡lð ÀÇÁ÷ r)   rk   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<   y)	Ú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>   ri   r‚   r!   ÚFloatTensorÚ__annotations__rƒ   r„   r   r*   r8   r…   r†   © r)   r(   r�   r�      s‹   … ñð &*€Dˆ%×
Ñ
˜dÑ
"Ó)Ø'+€FˆE×Ñ Ñ$Ó+Ø$(€O�U˜T‘\Ó(Ø59€M�5˜×*Ñ*Ñ+¨dÑ2Ó9Ø26€J��e×'Ñ'Ñ(¨4Ñ/Ó6Ø48Ð˜×*Ñ*¨TÑ1Ô8r)   r�   zM
    Base class for Mistral3 outputs, with hidden states and attentions.
    c                   ó:   — e Zd ZU dZdZej                  dz  ed<   y)Ú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>   ri   r†   r!   r‡   rˆ   r‰   r)   r(   r‹   r‹   �   s   … ñ	ð 59Ð˜×*Ñ*¨TÑ1Ô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y)ÚMistral3PreTrainedModelrE   Ú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_backendr‰   r)   r(   r�   r�   ²   s@   … àÓØÐØ(ÐØ&*Ð#Ø#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                   óV  ‡ — 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 )ÚMistral3ModelrE   c                 óô   •— t         ‰| �  |«       t        j                  |j                  «      | _        t        |«      | _        t        j                  |j                  «      | _	        | j                  «        y r}   )r   r   r   Úfrom_configrI   Úvision_towerrk   Úmulti_modal_projectorrm   Úlanguage_modelÚ	post_initr{   s     €r(   r   zMistral3Model.__init__È   sY   ø€ Ü‰Ñ˜Ô Ü%×1Ñ1°&×2FÑ2FÓGˆÔä%@ÀÓ%HˆÔ"Ü'×3Ñ3°F×4FÑ4FÓGˆÔØ�‰Õr)   zWObtains image last hidden states from the vision tower and apply multimodal projection.r~   NÚpixel_valuesrO   rr   Úoutput_hidden_statesÚkwargsr   c                 ó´  — |j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}} | j                  |f|dddœ|¤Ž}t        |t        «      r|j                  |   }	n3|D �
cg c]  }
|j                  |
   ‘Œ }}
t        j                  |d¬«      }	| j                  |	j                  d«      |«      }| j                  j                  | j                  j                  z  }t        j                  ||j                  ¬«      |z  j                  d¬«      j                  «       }t        j                   |j                  d«      |«      }||_        |S c c}}w c c}
w )NT)rO   r£   Úreturn_dictr,   rS   r   )Údevice)Úitemsrž   rq   rs   r*   r!   r^   rŸ   ÚsqueezerK   rE   rJ   Ú	as_tensorr§   ÚprodÚtolistrV   Úpooler_output)r%   r¢   rO   rr   r£   r¤   ÚkÚvÚimage_outputsÚselected_image_featureÚ	layer_idxÚhs_poolrN   Údownsample_ratioÚsplit_sizess                  r(   Úget_image_featuresz Mistral3Model.get_image_featuresÐ   sS  € ð $*§<¡<£>×C™4˜1˜a°Q±]�!�Q‘$ÐCˆÑCà)˜×)Ñ)Øð
à#Ø!%Øñ	
ð
 ñ
ˆô Ð*¬CÔ0Ø%2×%@Ñ%@ÐAUÑ%VÑ"àOcÖdÀ)�}×2Ñ2°9Ó=ÐdˆGÐdÜ%*§Y¡Y¨w¸BÔ%?Ð"à×3Ñ3Ð4J×4RÑ4RÐSTÓ4UÐWbÓcˆØ×,Ñ,×7Ñ7¸$¿+¹+×:XÑ:XÑXÐä�_‰_˜[°×1FÑ1FÔGÐK[Ñ[×aÑaÐfhÐaÓi×pÑpÓrð 	ô Ÿ™ ^×%;Ñ%;¸AÓ%>ÀÓLˆØ&4ˆÔ#àÐùó3 Dùò es   ”
EŸEÁ"EÚ	input_idsÚinputs_embedsrN   c                 ó.  — |€m| | j                  «       t        j                  | j                  j                  t        j
                  |j                  ¬«      «      k(  }|j                  d«      }n|| j                  j                  k(  }|j                  «       }|j                  d   |j                  d   z  }|j                  d«      j                  |j                  «      }t        ||j                  d   z  |j                  «       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.
        )r.   r§   r,   r   r   z6Image features and image tokens do not match, tokens: z, features: )Úget_input_embeddingsr!   ÚtensorrE   Úimage_token_idÚlongr§   ÚallÚsumr9   rY   r/   r   Únumel)r%   r·   r¸   rN   Úspecial_image_maskÚn_image_tokensÚn_image_featuress          r(   Úget_placeholder_maskz"Mistral3Model.get_placeholder_maskø   s  € ð ÐØ!.Ð2M°$×2KÑ2KÓ2MÜ—‘˜TŸ[™[×7Ñ7¼u¿z¹zÐR_×RfÑRfÔgó3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*¨d¯k©k×.HÑ.HÑ!HÐà+×/Ñ/Ó1ˆØ)×/Ñ/°Ñ2°^×5IÑ5IÈ!Ñ5LÑLÐØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐÜØ˜]×0Ñ0°Ñ4Ñ4¸×8LÑ8LÓ8NÑNØDÀ^ÐDTÐT`ÐaqÐ`rÐsô	
ð "Ð!r)   Úattention_maskÚposition_idsr„   Ú	use_cachec
           	      ó  — |d u |d uz  rt        d«      ‚|€ | j                  «       |«      }|�€| j                  |||	d¬«      j                  }t	        j
                  |d¬«      j                  |j                  |j                  «      }| j                  |||¬«      }|j                  ||«      } | j                  d	|||||dœ|
¤Ž}t        |j                  |j                  |j                  |j                   |�¬«      S d ¬«      S )
Nz:You must specify exactly one of input_ids or inputs_embedsT)r¢   rr   rO   r¦   r   rS   )r¸   rN   )rÅ   rÆ   r„   r¸   rÇ   )Úlast_hidden_stater„   r*   r…   r†   r‰   )Ú
ValueErrorrº   r¶   r­   r!   r^   r/   r§   r.   rÄ   Úmasked_scatterr    r‹   rÉ   r„   r*   r…   )r%   r·   r¢   rÅ   rÆ   r„   r¸   rr   rÇ   rO   r¤   rN   rÁ   Úoutputss                 r(   r6   zMistral3Model.forward  sH  € ð  ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø7˜D×5Ñ5Ó7¸	ÓBˆMàÐ#Ø!×4Ñ4Ø)Ø%9Ø'Ø ð	 5ó ÷
 ‰mð ô #ŸY™Y ~¸1Ô=×@Ñ@À×AUÑAUÐWd×WjÑWjÓkˆNØ!%×!:Ñ!:Ø¨À~ð ";ó "Ðð *×8Ñ8Ð9KÈ^Ó\ˆMà%�$×%Ñ%ð 
Ø)Ø%Ø+Ø'Øñ
ð ñ
ˆô +Ø%×7Ñ7Ø#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø2>Ð2J ô
ð 	
ð
 QUô
ð 	
r)   )NN)	NNNNNNNNN)r<   r=   r>   r   r   r   r   r   r!   r‡   r@   rs   ÚlistÚboolr   r   r8   r   r¶   Ú
LongTensorrÄ   r   r‹   r6   rA   rB   s   @r(   r›   r›   Â   sô  ø„ ð˜~õ ð  ØÙØnôð DHØ,0ñ!à×'Ñ'ð!ð —\‘\ð!ð " D¨¡I™o°°S±	Ñ9¸DÑ@ð	!ð
 # T™kð!ð Ð+Ñ,ð!ð 
Ð+Ñ	+ò!óó ó  ð
!ðF"Ø×)Ñ)ð"Ø:?×:KÑ:Kð"Ø]b×]nÑ]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                   óH  ‡ — 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.weightrE   c                 óî   •— t         ‰| �  |«       t        |«      | _        t	        j
                  |j                  j                  |j                  j                  d¬«      | _	        | j                  «        y )NFrG   )r   r   r›   rŽ   r   rL   rm   r&   Ú
vocab_sizeÚlm_headr¡   r{   s     €r(   r   z)Mistral3ForConditionalGeneration.__init__M  sS   ø€ Ü‰Ñ˜Ô Ü" 6Ó*ˆŒ
Ü—y‘y ×!3Ñ!3×!?Ñ!?À×ASÑAS×A^ÑA^ÐejÔkˆŒØ�‰Õr)   r   c                 ó   — | j                   S r}   )rÔ   r:   s    r(   Úget_output_embeddingsz6Mistral3ForConditionalGeneration.get_output_embeddingsS  s   € Ø�|‰|Ðr)   Nr¢   rO   rr   r¤   c                 óB   —  | j                   j                  d|||dœ|¤ŽS )N)r¢   rO   rr   r‰   )rŽ   r¶   )r%   r¢   rO   rr   r¤   s        r(   r¶   z3Mistral3ForConditionalGeneration.get_image_featuresV  s5   € ð -ˆt�z‰z×,Ñ,ð 
Ø%Ø#Ø!5ñ
ð ñ	
ð 	
r)   r·   rÅ   rÆ   r„   r¸   ÚlabelsrÇ   Úlogits_to_keepc                 ó˜  —  | j                   d||||||||
dœ|¤Ž}|d   }t        |	t        «      rt        |	 d«      n|	}| j	                  |dd…|dd…f   «      }d}|�4 | 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Ç   rO   r   N)rƒ   rØ   rÓ   )r‚   rƒ   r„   r*   r…   r†   r‰   )rŽ   rq   rs   ÚslicerÔ   Úloss_functionrE   rm   rÓ   r�   r„   r*   r…   r†   )r%   r·   r¢   rÅ   rÆ   r„   r¸   rØ   rÇ   rÙ   rO   r¤   rÌ   r*   Úslice_indicesrƒ   r‚   s                    r(   r6   z(Mistral3ForConditionalGeneration.forwardg  sö   € ðR �$—*‘*ð 

ØØ%Ø)Ø%Ø+Ø'ØØ#ñ

ð ñ

ˆð   ™
ˆÜ8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÐØ%�4×%Ñ%ð Ø f¸¿¹×9PÑ9P×9[Ñ9[ñØ_eñˆDô .ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø '× ;Ñ ;ô
ð 	
r)   c           	      óf   •— t        ‰
| �  |f|||||dœ|¤Ž}	|s|j                  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¯  sY   ø€ ô ‘wÑ<Øð
à+Ø'Ø)Ø)Ø1ñ
ð ñ
ˆñ  V§Z¡Z°¸TÔ%Bð
 ,8ˆL˜Ñ(àÐr)   r}   )
NNNNNNNNr   N)NNNNNF)r<   r=   r>   Ú_tied_weights_keysr   r   r   ÚModulerÖ   r   r   r   r!   r‡   r@   rs   rÍ   r   r   r8   r   r¶   rÏ   r   rÎ   r�   r6   rà   rA   rB   s   @r(   rÑ   rÑ   E  s  ø„ ð +Ð,VÐWÐð˜~õ ð r§y¡yó ð  ØØð
 DHñ	
à×'Ñ'ð
ð —\‘\ð
ð " D¨¡I™o°°S±	Ñ9¸DÑ@ð	
ð
 Ð+Ñ,ð
ð 
Ð+Ñ	+ò
ó ó ó  ð
ð  ØØð .2Ø15Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.Ø+/ñC
à×#Ñ# dÑ*ðC
ð ×'Ñ'¨$Ñ.ðC
ð Ÿ™ tÑ+ð	C
ð
 ×&Ñ&¨Ñ-ðC
ð  ™ðC
ð ×(Ñ(¨4Ñ/ðC
ð × Ñ  4Ñ'ðC
ð ˜$‘;ðC
ð ˜eŸl™lÑ*ðC
ð —\‘\ DÑ(ð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   rD   rk   r�   r‹   r�   r›   rÑ   Ú__all__r‰   r)   r(   ú<module>rò      sW  ðõ, "ã Ý å !Ý  Ý )Ý 7ß `Ñ `Ý -Ý &ß OÑ Oß IÝ Ý 2ñ ˜YÓ'ôJ�b—i‘ió Jó (ðJô(#˜"Ÿ)™)ô #ôL "§)¡)ô ñ8 ðôð
 ô9 [ó 9ó óð9ñ0 ðôð
 ô9Ð"9ó 9ó óð9ð ô'˜oó 'ó ð'ñ ðôô
{
Ð+ó {
óð
{
ñ| ðôô
CÐ'>Àó Cóð
CòL [�r)   