+
    œ°³j¡Ú  ã                   óº  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIH	u H
t ^ RIH	t	 ^RIHt ^RIHt ^RIHtHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHtH t  ^RI!H"t"H#t#H$t$ ^RI%H&t& ^RI'H(t(H)t)H*t*H+t+ ^RI,H-t- ^RI.H/t/H0t0 ^RI1H2t2H3t3 ^RI4H5t5 ^RI6H7t7 ^RI8H9t9H:t: ]+Pv                  ! ]<4      t=])! RR7      ] ! R R]4      4       4       t>])! RR7      ] ! R R]4      4       4       t?R<R lt@R=R  ltA ! R! R"]	P„                  4      tC ! R# R$]	Pˆ                  4      tE ! R% R&]	PŒ                  4      tG ! R' R(]	PŒ                  4      tHR) tI]! R*4      R>R+ l4       tJ ! R, R-]	PŒ                  4      tKR?R. R/ lltL ! R0 R1]	PŒ                  4      tM ! R2 R3]4      tN ! R4 R5]4      tO]) ! R6 R7]$4      4       tP]) ! R8 R9]P4      4       tQ ! R: R;]P]4      tR. R@OtSR# )AzPyTorch Idefics model.)ÚCallable)Ú	dataclass)ÚAnyN)Únn)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hub)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚModelOutput)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedConfigÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Údeprecate_kwarg)Úmaybe_autocastÚmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputs©ÚIdeficsConfig)ÚIdeficsPerceiverResampler)ÚIdeficsVisionEmbeddingsÚIdeficsVisionTransformerz{
    Base class for Idefics model's outputs that may also contain a past key/values (to speed up sequential decoding).
    )Úcustom_introc                   óD   a € ] tR t^4t o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚIdeficsBaseModelOutputWithPastaa  
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
    Sequence of hidden-states at the output of the last layer of the model.

    If `past_key_values` is used only the last hidden-state of the sequences of shape `(batch_size, 1,
    hidden_size)` is output.
image_hidden_states (`tuple(torch.FloatTensor)`, *optional*):
    Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
    sequence_length, hidden_size)`.

    image_hidden_states of the model produced by the vision encoder, and optionally by the perceiver
Nc                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )é   NÚlast_hidden_stateÚpast_key_valuesÚhidden_statesÚ
attentionsÚimage_hidden_states©ÚtorchÚFloatTensorr   Útuple)ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/idefics/modeling_idefics.pyÚ__annotate__Ú+IdeficsBaseModelOutputWithPast.__annotate__4   s…   ø‡ ‚ ñ( ×(Ñ(¨4Õ/Ñ6ñ) ñ* ˜T•\Ñ(ñ+ ñ, ™×*Ñ*Õ+¨dÕ2Ñ9ñ- ñ. ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ/ ñ0 ™u×0Ñ0Õ1°DÕ8Ñ?ò1 ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r(   r)   r*   r+   r,   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r2   s   @r3   r%   r%   4   s.   ø‡ € ñð 37ÐØ$(€OØ59€MØ26€JØ;?Ð÷1 ƒ r6   r%   zS
    Base class for Idefics causal language model (or autoregressive) outputs.
    c                   óH   a € ] tR t^Ot o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )ÚIdeficsCausalLMOutputWithPasta1  
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 (`tuple(torch.FloatTensor)`, *optional*):
    Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
    sequence_length, hidden_size)`.

    image_hidden_states of the model produced by the vision encoder, and optionally by the perceiver
Nc                óJ  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )r'   NÚlossÚlogitsr)   r*   r+   r,   r-   )r1   r2   s   "€r3   r4   Ú*IdeficsCausalLMOutputWithPast.__annotate__O   s�   ø‡ ‚ ñ0 ×
Ñ
˜dÕ
"Ñ)ñ1 ñ2 ×Ñ Õ$Ñ+ñ3 ñ4 ˜T•\Ñ(ñ5 ñ6 ™×*Ñ*Õ+¨dÕ2Ñ9ñ7 ñ8 ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ9 ñ: ™u×0Ñ0Õ1°DÕ8Ñ?ò; r6   r7   )r8   r9   r:   r;   r<   rD   rE   r)   r*   r+   r,   r=   r>   r?   r@   s   @r3   rB   rB   O   s2   ø‡ € ñð" &*€DØ'+€FØ$(€OØ59€MØ26€JØ;?Ð÷; ƒ r6   rB   c                 ój  € \         P                  ! V P                  ^ ,          4      P                  R^4      P	                  ^V4      P                  R4      P                  V P                  4      pV P                  ^ V4      p VP                  R4      VR&   VP                  R4      VR&   VP                  R4      VR&   VP                  R4      VR&   RV9   d   VR,          pVP                  ^ V4      VR&   Ve   VP                  ^ V4      VR&   VR,          e   VR,          P                  ^ V4      VR&   VR,          e    VR,          P                  ^ V4      VR&   W3# VR,          e    VR,          P                  ^ V4      VR&   W3# VR,          e   VR,          P                  ^ V4      VR&   W3# )é    Úpixel_valuesÚimage_encoder_embeddingsÚperceiver_embeddingsÚimage_attention_maskÚtoken_type_idsÚattention_maskéÿÿÿÿ)	r.   ÚarangeÚshapeÚviewÚrepeatÚtoÚdeviceÚindex_selectÚget)Ú	input_idsÚexpand_sizeÚis_encoder_decoderrN   Úencoder_outputsÚmodel_kwargsÚexpanded_return_idxrM   s   &&&&&,  r3   Úexpand_inputs_for_generationr^   o   sê  € ô 	�Š�Y—_‘_ QÕ'Ó(×-Ñ-¨b°!Ó4×;Ñ;¸A¸{ÓK×PÑPÐQSÓT×WÑWÐXa×XhÑXhÓið ð ×&Ñ& qÐ*=Ó>€IØ#/×#3Ñ#3°NÓ#C€L�Ñ Ø/;×/?Ñ/?Ð@ZÓ/[€LÐ+Ñ,Ø+7×+;Ñ+;Ð<RÓ+S€LÐ'Ñ(Ø+7×+;Ñ+;Ð<RÓ+S€LÐ'Ñ(à˜<Ô'Ø%Ð&6Õ7ˆØ)7×)DÑ)DÀQÐH[Ó)\ˆÐ%Ñ&àÒ!Ø)7×)DÑ)DÀQÐH[Ó)\ˆÐ%Ñ&àÐ*Õ+Ò7Ø/;Ð<RÕ/S×/`Ñ/`ØÐ"ó0
ˆÐ+Ñ,ð �NÕ#Ò/Ø'3°NÕ'C×'PÑ'PÐQRÐTgÓ'hˆ�^Ñ$ð Ð"Ð"ð 
Ð0Õ	1Ò	=Ø3?Ð@ZÕ3[×3hÑ3hØÐ"ó4
ˆÐ/Ñ0ð Ð"Ð"ð 
Ð,Õ	-Ò	9Ø/;Ð<RÕ/S×/`Ñ/`ØÐ"ó0
ˆÐ+Ñ,ð Ð"Ð"r6   c                 óª  a€ R \         P                  R\         P                  R\         P                  /pV Uu. uF  q2V,          NK  	  ppV P	                  4        Fo  oV'       dT   \
        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   SP                  R4       K^  SP                  R4       Kq  	  V # u upi )Ú	LayerNormÚLinearÚ	Embeddingc              3   ó<   <"  € T F  p\        SV4      x € K  	  R # 5i©N)Ú
isinstance)Ú.0ÚtÚmodules   & €r3   Ú	<genexpr>Úfreeze_model.<locals>.<genexpr>¤   s   øé € Ð$]ÑD\¸q¤Z°¸×%:Ð%:ÓD\ùs   ƒTF)r   r`   ra   rb   ÚmodulesÚanyÚrequires_grad_)ÚmodelÚmodule_exceptionsÚmappingÚmÚmodule_exceptions_mappedrh   s   &&   @r3   Úfreeze_modelrs   œ   s¡   ø€ à”R—\‘\Ø”"—)‘)Ø”R—\‘\ð€Gñ
 5FÓFÑ4E¨q¨§
 
Ñ4EÐÐFØ—-‘-–/ˆß§£Ô$]ÑD\Ó$]§§¢Ô$]ÑD\Ó$]×!]Ò!]Ø×!Ñ! $Ö'à×!Ñ! %Ö(ñ	 "ð
 €Lùò  Gs   ¸Cc                   ó^   a a€ ] tR t^«t oRtRV3R lV 3R llltR tV3R lR ltRtVt	V ;t
# )	ÚIdeficsDecoupledEmbeddinga«  
Implements a decoupling of parameters to allow freezing (or not) a subset of the embeddings. In practise, the
regular `weight` can be trained or frozen (i.e. `partially_freeze=True`), and if `num_additional_embeddings` > 0,
then it will create `num_additional_embeddings` additional parameters that are always trained. If
`num_additional_embeddings=0`, then the module defaults back to the regular behavior of `nn.Embedding`.
c                ó2   <€ V ^8„  d   QhRS[ R,          RR/# )r'   Úpartially_freezeNÚreturn)Úbool)r1   r2   s   "€r3   r4   Ú&IdeficsDecoupledEmbedding.__annotate__´   s%   ø€ ÷ 3ñ 3ñ
  �+ð3ð 
ñ3r6   c                ó`  <€ Ve   Wq8”  d   \        RV RV 24      h\        S	V `  ! RRVRVRVRVRV/VB  Wn        Wpn        W n        W@n        V'       d   V P                  P                  R	4       V P
                  ^ 8”  d,   \        P                  ! V P
                  VVVR
7      V n        R# R# )a¹  
Args:
    num_embeddings (`int`):
        Size of the dictionary of embeddings
    num_additional_embeddings (`int`):
        Number of additional embeddings. Only useful when you `partially_freeze=True`.
    embedding_dim (`int`):
        The size of each embedding vector
    partially_freeze: (`bool`, *optional*, defaults to `False`):
        If `True`, the regular `weight` will be frozen. `additional_weight` is never frozen.
    padding_idx (`int`, *optional*):
        The padding index (needs to be less than num_embeddings)

Note: there are a lot of other parameters to initialize a standard `nn.Embedding` such as `padding_idx`,
`max_norm` or `norm_type`. We are not supporting these.
Nz/padding_idx must be within num_embeddings. Got z and Únum_embeddingsÚembedding_dimrU   ÚdtypeÚpadding_idxF)r|   r}   rU   r~   r7   )Ú
ValueErrorÚsuperÚ__init__r|   r   Únum_additional_embeddingsrw   Úweightrm   r   rb   Úadditional_embedding)
Úselfr|   rƒ   r}   rw   rU   r~   r   ÚkwargsÚ	__class__s
   &&&&&&&&,€r3   r‚   Ú"IdeficsDecoupledEmbedding.__init__´   sÖ   ø€ ð6 Ò" {Ô'CÜÐNÈ{ÈmÐ[`ÐaoÐ`pÐqÓrÐrÜ‰Òñ 	
Ø)ð	
à'ð	
ð ð	
ð ð		
ð
 $ð	
ð ò	
ð -ÔØ&ÔØ)BÔ&Ø 0ÔçØ�K‰K×&Ñ& uÔ-à×)Ñ)¨AÔ-Ü(*¯ªØ#×=Ñ=Ø+ØØô	)ˆDÖ%ñ .r6   c                ón  € V P                   ^ 8X  d!   \        P                  ! WP                  4      # VP	                  4       p\
        P                  ! WP                  8¬  4      pW,          pV P                  W0P                  ,
          4      p^ W&   \        P                  ! WP                  4      pWEV&   V# )a{  
we have 2 embeddings, with different indices - one pretrained self.weight and another
self.additional_embedding.weight that is being trained.

in order to make a lookup of the input ids, we:
1. find out the indices of the entries belonging to the 2nd embedding
2. extract those values while subtracting the size of the first embedding (num_embeddings), since the 2nd
   embedding starts from 0 and not num_embeddings
3. perform the 2nd embedding lookup
4. now we handle the 1st embedding, we overwrite indices belonging to the 2nd embedding with a padding index
5. perform the 1st embedding lookup
6. now we overwrite the values in the 1st embedding lookup with the values of the 2nd embedding lookup

note: for the 1st embedding lookup we could have looked up only the low indices and not do the padding, but
then we have to create a new tensor and populate it with 2 tensors that are spread out across various indices -
i.e. not a simple concat - I haven't benchmarked the complex case if it's any faster, given that seqlens are
usually relatively short it's probably not faster or if faster not by much - but might be a good idea to
measure.

)	rƒ   ÚFÚ	embeddingr„   Úcloner.   Úwherer|   r…   )r†   rX   Úadditional_vocab_indicesÚinput_ids_additional_vocabÚadditional_embeddingsÚfull_vectors   &&    r3   ÚforwardÚ!IdeficsDecoupledEmbedding.forwardé   s�   € ð* ×)Ñ)¨QÔ.Ü—;’;˜y¯+©+Ó6Ð6ð —O‘OÓ%ˆ	Ü#(§;¢;¨y×<OÑ<OÑ/OÓ#PÐ Ø%.Õ%HÐ"Ø $× 9Ñ 9Ð:T×WjÑWjÕ:jÓ kÐð /0ˆ	Ñ+Ü—k’k )¯[©[Ó9ˆð 1FÐ,Ñ-àÐr6   c                ó    <€ V ^8„  d   QhRS[ /# ©r'   rx   ©Ústr)r1   r2   s   "€r3   r4   rz     s   ø€ ÷ Añ A™Cñ Ar6   c                ón   € R V P                    RV P                   RV P                   RV P                   2# )znum_embeddings=z, num_additional_embeddings=z, embedding_dim=ú, partially_freeze=)r|   rƒ   r}   rw   ©r†   s   &r3   Ú
extra_reprÚ$IdeficsDecoupledEmbedding.extra_repr  sq   € Ø  ×!4Ñ!4Ð 5Ð5QÐRV×RpÑRpÐQqð  rBð  CG÷  CUñ  CUð  BVð  Við  jn÷  jñ  jð  i@ð  Að  	Ar6   )r…   rƒ   r|   r   rw   )FNNN©r8   r9   r:   r;   r<   r‚   r“   rœ   r>   r?   Ú__classcell__©rˆ   r2   s   @@r3   ru   ru   «   s-   ù‡ € ñ÷3õ 3òj%÷NA÷ Að Ar6   ru   c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚIdeficsDecoupledLineari  a°  
Implements a decoupling of parameters to allow freezing (or not) a subset of the parameters. In practise, the
regular `weight` can be trained or frozen (i.e. `partially_freeze=True`), and if `out_additional_features` > 0,
then it will create `out_additional_features * in_features` additional parameters that are always trained. If
`out_additional_features=0`, then the module defaults back to the regular behavior of `nn.Linear`.
c                ó<   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[RR/# )r'   Úin_featuresÚout_featuresÚout_additional_featuresÚbiasrw   rx   N)Úintry   )r1   r2   s   "€r3   r4   Ú#IdeficsDecoupledLinear.__annotate__  sG   ø€ ÷ "ñ "áð"ñ ð"ñ "%ð	"ñ
 ð"ñ ð"ð 
ñ"r6   c                ó8  <€ \         SV `  WWFV4       W0n        WPn        Wn        W n        V'       d?   V P                  P                  R4       V'       d   V P                  P                  R4       V^ 8”  d#   \        P                  ! VVVVVR7      V n        R# R# )a'  
out_additional_features: int. Number of additional trainable dimensions. Only makes sense when
`partially_freeze=True`. partially_freeze: bool. If True, the regular `weight` will be frozen and extra
parameters (if any) will be trainable. If False, default to the regular behavior of nn.Linear.
F)r¤   r¥   r§   rU   r~   N)r�   r‚   r¦   rw   r¤   r¥   r„   rm   r§   r   ra   Úadditional_fc)	r†   r¤   r¥   r¦   r§   rw   rU   r~   rˆ   s	   &&&&&&&&€r3   r‚   ÚIdeficsDecoupledLinear.__init__  s…   ø€ ô 	‰Ñ˜°DÀ%ÔHØ'>Ô$Ø 0Ôà&ÔØ(ÔçØ�K‰K×&Ñ& uÔ-ßØ—	‘	×(Ñ(¨Ô/à" QÔ&Ü!#§¢Ø'Ø4ØØØô"ˆDÖñ 'r6   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r'   Úinputrx   )r.   ÚTensor)r1   r2   s   "€r3   r4   r©   A  s#   ø€ ÷ ñ ™UŸ\™\ð ©e¯l©lñ r6   c                óÐ   € \         P                  ! WP                  V P                  4      pV P                  ^ 8”  d*   V P                  V4      p\        P                  ! W#3R4      pV# )rH   rO   )r‹   Úlinearr„   r§   r¦   r«   r.   Úcat)r†   r®   ÚoutputÚadditional_featuress   &&  r3   r“   ÚIdeficsDecoupledLinear.forwardA  sQ   € Ü—’˜%§¡¨d¯i©iÓ8ˆà×'Ñ'¨!Ô+Ø"&×"4Ñ"4°UÓ";ÐÜ—Y’Y Ð<¸bÓAˆFàˆr6   c                ó    <€ V ^8„  d   QhRS[ /# r–   r—   )r1   r2   s   "€r3   r4   r©   J  s   ø€ ÷ Sñ S™Cñ Sr6   c           
     óŒ   € RV P                    RV P                   RV P                   RV P                  RJ RV P                   2
# )z=Overwriting `nn.Linear.extra_repr` to include new parameters.zin_features=z, out_features=z, out_additional_features=z, bias=Nrš   ©r¤   r¥   r¦   r§   rw   r›   s   &r3   rœ   Ú!IdeficsDecoupledLinear.extra_reprJ  s˜   € à˜d×.Ñ.Ð/¨¸t×?PÑ?PÐ>QÐQkÐlp÷  mIñ  mIð  lJð  JQð  RV÷  R[ñ  R[ð  cgð  Rgð  Qhð  h{ð  |@÷  |Qñ  |Qð  {Rð  Sð  	Sr6   )r«   r¤   r¦   r¥   rw   )rH   TTNNrž   r    s   @@r3   r¢   r¢     s1   ù‡ € ñ÷"õ "÷Hð ÷S÷ Sð Sr6   r¢   c                   óB   a a€ ] tR tRt oRV 3R lltR tR tRtVtV ;t	# )ÚIdeficsRMSNormiP  c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z-
IdeficsRMSNorm is equivalent to T5LayerNorm
N)r�   r‚   r   Ú	Parameterr.   Úonesr„   Úvariance_epsilon)r†   Úhidden_sizeÚepsrˆ   s   &&&€r3   r‚   ÚIdeficsRMSNorm.__init__Q  s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör6   c                ó¼  € VP                  \        P                  4      P                  ^4      P	                  RRR7      pV\        P
                  ! W P                  ,           4      ,          pV P                  P                  \        P                  \        P                  39   d&   VP                  V P                  P                  4      pV P                  V,          # )r'   T)ÚkeepdimrO   )rT   r.   Úfloat32ÚpowÚmeanÚrsqrtr¿   r„   r~   Úfloat16Úbfloat16)r†   r*   Úvariances   && r3   r“   ÚIdeficsRMSNorm.forwardY  s—   € Ø ×#Ñ#¤E§M¡MÓ2×6Ñ6°qÓ9×>Ñ>¸rÈ4Ð>ÓPˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆð �;‰;×Ñ¤§¡´·±Ð ?Ô?Ø)×,Ñ,¨T¯[©[×->Ñ->Ó?ˆMà�{‰{˜]Õ*Ð*r6   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)r0   r„   rQ   r¿   r›   s   &r3   rœ   ÚIdeficsRMSNorm.extra_reprc  s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr6   )r¿   r„   )g�íµ ÷Æ°>)
r8   r9   r:   r;   r‚   r“   rœ   r>   r?   rŸ   r    s   @@r3   r»   r»   P  s   ù‡ € ÷$ò+÷Jò Jr6   r»   c                   óÎ   a a€ ] tR tRt o]! RRR7      RV3R lV 3R lll4       t]]! RRR7      RV3R lR ll4       4       t]P                  ! 4       ]
R	 4       4       tR
tVtV ;t# )ÚIdeficsRotaryEmbeddingih  rU   z5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©r'   Úconfigr   )r1   r2   s   "€r3   r4   Ú#IdeficsRotaryEmbedding.__annotate__j  s   ø€ ÷ Oñ O™}ñ Or6   c                óä  <€ \         SV `  4        VP                  V n        VP                  V n        Wn        V P
                  P                  R ,          V n        V P                  pV P                  R8w  d   \        V P                  ,          pV! V P
                  V4      w  q@n
        \        P                  ! VRR7      V n        \        P                  ! VP                  4       RR7      V n        R# )Ú	rope_typeÚdefaultF)Ú
persistentN)r�   r‚   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrÔ   Úrope_parametersr×   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqr�   Úoriginal_inv_freq)r†   rÔ   rU   Úrope_init_fnrá   rˆ   s   &&&  €r3   r‚   ÚIdeficsRotaryEmbedding.__init__i  s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÕAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÔ&Ü.¨t¯~©~Õ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr6   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )r'   rÔ   rx   )r   r0   r.   r¯   Úfloat)r1   r2   s   "€r3   r4   rÕ   |  s.   ø€ ÷ 5ñ 5±ð 5ÑY^Ñ_d×_kÑ_kÑmrÐ_rÕYsñ 5r6   c           	     ó0  € V P                   R,          p\        V RR4      ;'       g    V P                  V P                  ,          pRpRV\        P
                  ! ^ V^\        P                  R7      V,          ,          ,          pVP                  V4      V3# )a~  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
Returns:
    Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
    post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
Ú
rope_thetaÚhead_dimNg      ð?©r~   )rÝ   ÚgetattrrÀ   Únum_attention_headsr.   rP   ræ   rT   )rÔ   rU   r‡   ÚbaseÚdimÚattention_factorrá   s   &&,    r3   rÞ   Ú6IdeficsRotaryEmbedding.compute_default_rope_parametersz  s~   € ð ×%Ñ% lÕ3ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r6   c                ó^  € V P                   R,          P                  VP                  ^ ,          R	^4      P                  \        P
                  VP                  R7      pVR
,          P                  4       p\        VP                  P                  \        4      '       d2   VP                  P                  R8w  d   VP                  P                  MRp\        VRR7      ;_uu_ 4        W4,          P                  ^^4      p\        P                  ! Wf3R	R7      pVP                  4       V P                  ,          pVP                  4       V P                  ,          p	R R R 4       XP                  VP                   R7      X	P                  VP                   R7      3#   + '       g   i     LH; i)N©r~   rU   ÚmpsÚcpuF)Údevice_typeÚenabled©rî   rê   )NºNNNNrO   )rø   Nrø   )rá   ÚexpandrQ   rT   r.   ræ   rU   re   Útyper˜   r   Ú	transposer²   Úcosrß   Úsinr~   )
r†   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrõ   ÚfreqsÚembrü   rý   s
   &&&       r3   r“   ÚIdeficsRotaryEmbedding.forwardŽ  s2  € ð �M‰M˜-Õ(×/Ñ/°×0BÑ0BÀ1Õ0EÀrÈ1ÓM×PÑPÔW\×WbÑWbÐkl×ksÑksÐPÓtð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆä¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ô3ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆC÷	 Dð �v‰v˜AŸG™GˆvÓ$ c§f¡f°1·7±7 fÓ&;Ð;Ð;÷ D×Cús   Ã(A4FÆF,	)rß   rÔ   rá   rÛ   râ   rÜ   r×   rd   )r8   r9   r:   r;   r   r‚   ÚstaticmethodrÞ   r.   Úno_gradr   r“   r>   r?   rŸ   r    s   @@r3   rÐ   rÐ   h  su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r6   rÐ   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..Nr÷   rO   )rQ   r.   r²   )rþ   Úx1Úx2s   &  r3   Úrotate_halfr
  ¢  sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r6   Úrotary_pos_embc                óÈ   € VP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pWV3# )aI  Applies Rotary Position Embedding to the query and key tensors.

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.
    unsqueeze_dim (`int`, *optional*, defaults to 1):
        The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
        sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
        that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
        k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
        cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
        the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
)Ú	unsqueezer
  )ÚqÚkrü   rý   Úunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r3   Úapply_rotary_pos_embr  ©  sS   € ð( �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr6   c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )Ú
IdeficsMLPiÅ  c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r'   rÀ   Úintermediate_sizeÚ
hidden_act)r¨   r˜   )r1   r2   s   "€r3   r4   ÚIdeficsMLP.__annotate__Æ  s)   ø€ ÷ 
)ñ 
)áð
)ñ ð
)ñ ñ	
)r6   c                óö   <€ \         SV `  4        \        P                  ! WR R7      V n        \        P                  ! W!R R7      V n        \        P                  ! WR R7      V n        \        V,          V n        R# )F©r§   N)	r�   r‚   r   ra   Ú	gate_projÚ	down_projÚup_projr   Úact_fn)r†   rÀ   r  r  rˆ   s   &&&&€r3   r‚   ÚIdeficsMLP.__init__Æ  sS   ø€ ô 	‰ÑÔÜŸš ;ÈÔNˆŒÜŸšÐ#4ÈÔNˆŒÜ—y’y ÀeÔLˆŒÜ˜ZÕ(ˆŽr6   c                óŒ   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      # rd   )r  r  r  r  )r†   rþ   s   &&r3   r“   ÚIdeficsMLP.forwardÒ  s0   € Ø�~‰~˜dŸk™k¨$¯.©.¸Ó*;Ó<¸t¿|¹|ÈA»ÕNÓOÐOr6   )r  r  r  r  )	r8   r9   r:   r;   r‚   r“   r>   r?   rŸ   r    s   @@r3   r  r  Å  s   ù‡ € ÷
)ó 
)÷Pò Pr6   r  c                óÞ   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        /# )	r'   rh   ÚqueryÚkeyÚvaluerN   NÚscalingÚdropout)r   ÚModuler.   r¯   ræ   )r1   s   "r3   r4   r4   ×  sg   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ñ%r6   c                 óÎ  € \         P                  ! WP                  RR4      4      V,          pVe	   W„,           p\        P                  P                  VR\         P                  R7      P                  VP                  4      p\        P                  P                  W†V P                  R7      p\         P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )é   )rî   r~   ©ÚpÚtrainingrO   éþÿÿÿ)r.   Úmatmulrû   r   Ú
functionalÚsoftmaxrÅ   rT   r~   r(  r.  Ú
contiguous)
rh   r$  r%  r&  rN   r'  r(  r‡   Úattn_weightsÚattn_outputs
   &&&&&&&,  r3   Úeager_attention_forwardr6  ×  s°   € ô —<’< §}¡}°R¸Ó'<Ó=ÀÕG€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r6   c                   ón   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltRV3R lR lltR	tVt	V ;t
# )ÚIdeficsAttentioniï  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó`   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[R,          RS[RS[ R,          /# )	r'   rÀ   Ú	num_headsr(  Úis_cross_attentionrÔ   NÚqk_layer_normsÚ	layer_idx)r¨   ræ   ry   r   )r1   r2   s   "€r3   r4   ÚIdeficsAttention.__annotate__ò  sl   ø€ ÷ OWñ OWáðOWñ ðOWñ ð	OWñ
 !ðOWñ ! 4Õ'ðOWñ ðOWñ ˜•:ñOWr6   c                óZ  <€ \         S	V `  4        WPn        Wn        W n        W,          V n        W0n        R V n        V P
                  R,          V n        Wpn	        Vf.   \        P                  RV P                  P                   R24       V P
                  V,          V P                  8w  d   \        RV P                   RV R24      hW@n        \!        \"        P$                  R4      '       g   \        R4      hV P                  '       dÔ   \!        VP&                  R	4      '       g   V P                  MVP&                  P(                  p\"        P*                  ! V P                  W P
                  ,          R
R7      V n        \"        P*                  ! W‚V P
                  ,          R
R7      V n        \"        P*                  ! VW P
                  ,          R
R7      V n        M¨\"        P*                  ! V P                  W P
                  ,          R
R7      V n        \"        P*                  ! V P                  W P
                  ,          R
R7      V n        \"        P*                  ! V P                  W P
                  ,          R
R7      V n        \"        P*                  ! W P
                  ,          VR
R7      V n        \5        V4      V n        W`n        V P8                  '       dO   \;        V P
                  VP<                  R7      V n        \;        V P
                  VP<                  R7      V n         R# R# )TNzInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.z?hidden_size must be divisible by num_heads (got `hidden_size`: z and `num_heads`: z).Úscaled_dot_product_attentionz)this model requires pytorch 2.0 or higherÚ	embed_dimFr  ©rÁ   g      à¿)!r�   r‚   rÔ   rÀ   r:  ré   r(  Ú	is_causalr'  r=  ÚloggerÚwarning_oncerˆ   r8   r€   r;  Úhasattrr   r1  Úvision_configrA  ra   Úq_projÚk_projÚv_projÚo_projrÐ   Ú
rotary_embr<  r»   Úrms_norm_epsÚq_layer_normÚk_layer_norm)
r†   rÀ   r:  r(  r;  rÔ   r<  r=  Úkv_input_dimrˆ   s
   &&&&&&&& €r3   r‚   ÚIdeficsAttention.__init__ò  sv  ø€ ô 	‰ÑÔØŒØ&ÔØ"ŒØ#Õ0ˆŒØŒØˆŒØ—}‘} dÕ*ˆŒà"ŒØÒÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð �M‰M˜IÕ%¨$×*:Ñ*:Ô:ÜØQÐRV×RbÑRbÐQcØ$ Y K¨rð3óð ð
 #5Ôä”r—}‘}Ð&D×EÒEÜÐHÓIÐIà×"×"Ð"ä(/°×0DÑ0DÀk×(RÒ(R�× Ò ÐX^×XlÑXl×XvÑXvð ô Ÿ)š)Ø× Ñ ØŸM™MÕ)ØôˆDŒKô
 Ÿ)š) L¸d¿m¹mÕ2KÐRWÔXˆDŒKÜŸ)š)ØØŸM™MÕ)ØôˆD�Kô Ÿ)š)Ø× Ñ ØŸM™MÕ)ØôˆDŒKô
 Ÿ)š)Ø× Ñ ØŸM™MÕ)ØôˆDŒKô
 Ÿ)š)Ø× Ñ ØŸM™MÕ)ØôˆDŒKô
 —i’iØŸ™Õ%ØØô
ˆŒô
 1°Ó8ˆŒà,ÔØ××ÐÜ .¨t¯}©}À&×BUÑBUÔ VˆDÔÜ .¨t¯}©}À&×BUÑBUÔ VˆDÖñ r6   c                ó@   <€ V ^8„  d   QhRS[ P                  RS[RS[/# )r'   ÚtensorÚseq_lenÚbsz)r.   r¯   r¨   )r1   r2   s   "€r3   r4   r>  C  s+   ø€ ÷ eñ e™UŸ\™\ð e±Cð e¹cñ er6   c                óŒ   € VP                  W2V P                  V P                  4      P                  ^^4      P	                  4       # ©r+  )rR   r:  ré   rû   r3  )r†   rS  rT  rU  s   &&&&r3   Ú_shapeÚIdeficsAttention._shapeC  s5   € Ø�{‰{˜3¨¯©¸¿¹ÓG×QÑQÐRSÐUVÓW×bÑbÓdÐdr6   c                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  3,          /# )	r'   r*   Úkey_value_statesNrN   rÿ   r)   r‡   rx   )r.   r¯   Ú
LongTensorr   r   r   r0   )r1   r2   s   "€r3   r4   r>  F  sŽ   ø€ ÷ ;)ñ ;)á—|‘|ð;)ñ  Ÿ,™,¨Õ-ð;)ñ Ÿ™ tÕ+ð	;)ñ
 ×&Ñ&¨Õ-ð;)ñ  �ð;)ñ Ñ+Õ,ð;)ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ;)r6   c                óè  € V P                   ;'       g    VR JpVP                  4       w  r‰p
V P                  V4      P                  W‰V P                  V P
                  4      P                  ^^4      pV'       gŽ   V P                  V4      P                  W‰V P                  V P
                  4      P                  ^^4      pV P                  V4      P                  W‰V P                  V P
                  4      P                  ^^4      pMŸVP                  4       w  r®p
V P                  V4      P                  WŽV P                  V P
                  4      P                  ^^4      pV P                  V4      P                  WŽV P                  V P
                  4      P                  ^^4      pVP                  R,          pVe   WõP                  4       ,          pV'       g$   V P                  WÔ4      w  pp\        W¼VV4      w  r¼Ve   VP                  WÍV P                  4      w  rÍV P                  '       d#   V P!                  V4      pV P#                  V4      p\$        P&                  ! V P(                  P*                  \,        4      pT! V VVVV3RV P.                  '       g   RMV P0                  RV P2                  /VB w  ppVP5                  W‰R4      P7                  4       pV P9                  V4      pVV3# )Nr(  ç        r'  r/  rO   )r;  ÚsizerH  rR   r:  ré   rû   rI  rJ  rQ   Úget_seq_lengthrL  r  Úupdater=  r<  rN  rO  r   Úget_interfacerÔ   Ú_attn_implementationr6  r.  r(  r'  Úreshaper3  rK  )r†   r*   r[  rN   rÿ   r)   r‡   r;  rU  Úq_lenÚ_Úquery_statesÚ
key_statesÚvalue_statesÚkv_lenÚ
kv_seq_lenrü   rý   Úattention_interfacer5  r4  s   &&&&&&,              r3   r“   ÚIdeficsAttention.forwardF  s¦  € ð "×4Ñ4×TÐTÐ8HÐPTÐ8TÐà%×*Ñ*Ó,‰ˆ�Aà—{‘{ =Ó1×6Ñ6°sÀ4Ç>Á>ÐSW×S`ÑS`Óa×kÑkÐlmÐopÓqˆß!ØŸ™ ]Ó3×8Ñ8¸ÀTÇ^Á^ÐUY×UbÑUbÓc×mÑmÐnoÐqrÓsˆJØŸ;™; }Ó5×:Ñ:¸3ÀtÇ~Á~ÐW[×WdÑWdÓe×oÑoÐpqÐstÓu‰Là+×0Ñ0Ó2‰LˆA�qØŸ™Ð%5Ó6×;Ñ;¸CÈÏÉÐY]×YfÑYfÓg×qÑqÐrsÐuvÓwˆJà—‘Ð,Ó-×2Ñ2°3ÀÇÁÐPT×P]ÑP]Ó^×hÑhÐijÐlmÓnð ð  ×%Ñ% bÕ)ˆ
ØÒ&Ø×8Ñ8Ó:Õ:ˆJç!Ø—‘ |ÓB‰HˆC�Ü';¸LÐVYÐ[^Ó'_Ñ$ˆLð Ò&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJà××ÐØ×,Ñ,¨\Ó:ˆLØ×*Ñ*¨:Ó6ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆ�\ð "×)Ñ)¨#°bÓ9×DÑDÓFˆØ—k‘k +Ó.ˆà˜LÐ(Ð(r6   )rÔ   r(  ré   rÀ   rC  r;  rO  rI  r=  r:  rK  rN  rH  r<  rL  r'  rJ  )r^  FNFN)NNNN)r8   r9   r:   r;   r<   r‚   rX  r“   r>   r?   rŸ   r    s   @@r3   r8  r8  ï  s2   ù‡ € ÙG÷OWõ OW÷beð e÷;)÷ ;)ò ;)r6   r8  c                   ób   a a€ ] tR tRt oRV3R lV 3R lllt]RV3R lR ll4       tRtVtV ;t	# )	ÚIdeficsDecoderLayeri…  c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# ©r'   rÔ   r=  N©r   r¨   )r1   r2   s   "€r3   r4   Ú IdeficsDecoderLayer.__annotate__†  s   ø€ ÷ &ñ &™}ð &¹¸t½ñ &r6   c                óÈ  <€ \         SV `  4        VP                  V n        \        V P                  VP                  VP
                  VVR 7      V n        \        V P                  VP                  VP                  R7      V n
        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        VP
                  V n        R# ))rÀ   r:  r(  rÔ   r=  ©rÀ   r  r  rB  N)r�   r‚   rÀ   r8  rì   r(  Ú	self_attnr  r  r  Úmlpr»   rM  Úinput_layernormÚpost_attention_layernorm©r†   rÔ   r=  rˆ   s   &&&€r3   r‚   ÚIdeficsDecoderLayer.__init__†  s³   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ)Ø×(Ñ(Ø×0Ñ0Ø—N‘NØØô
ˆŒô Ø×(Ñ(Ø$×6Ñ6Ø×(Ñ(ô
ˆŒô
  .¨f×.@Ñ.@Àf×FYÑFYÔZˆÔÜ(6°v×7IÑ7IÈv×ObÑObÔ(cˆÔ%Ø—~‘~ˆŽr6   c                óÈ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[ P                  /# )r'   r*   rN   Nrÿ   r)   r‡   rx   )r.   r¯   r\  r   r   r   r/   )r1   r2   s   "€r3   r4   rs  š  so   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ ×&Ñ&¨Õ-ð	ñ
  �ðñ Ñ+Õ,ðñ 
×	Ñ	ñr6   c                ó   € TpV P                  V4      pV P                  ! RR VRVRVRV/VB w  r\        P                  P	                  WP                  V P
                  R7      pWa,           pTpV P                  V4      pV P                  V4      p\        P                  P	                  WP                  V P
                  R7      pWa,           pV# )r*   rN   rÿ   r)   r,  r7   )rx  rv  r   r1  r(  r.  ry  rw  )r†   r*   rN   rÿ   r)   r‡   Úresidualrf  s   &&&&&,  r3   r“   ÚIdeficsDecoderLayer.forward™  sß   € ð !ˆà×,Ñ,¨]Ó;ˆð  Ÿ>š>ñ 
Ø'ð
à)ð
ð &ð
ð ,ð	
ð
 ñ
Ñˆô Ÿ™×-Ñ-¨m¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ Õ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ Õ0ˆàÐr6   )r(  rÀ   rx  rw  ry  rv  rd   )NNN©
r8   r9   r:   r;   r‚   r   r“   r>   r?   rŸ   r    s   @@r3   ro  ro  …  s-   ù‡ € ÷&õ &ð& ÷ñ ó ÷ð r6   ro  c                   ób   a a€ ] tR tRt oRV3R lV 3R lllt]RV3R lR ll4       tRtVtV ;t	# )	ÚIdeficsGatedCrossAttentionLayeri»  c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# rq  rr  )r1   r2   s   "€r3   r4   Ú,IdeficsGatedCrossAttentionLayer.__annotate__¼  s'   ø€ ÷ @Lñ @L™}ð @L¹¸t½ñ @Lr6   c           
     ó
  <€ \         SV `  4        VP                  V n        \        V P                  VP                  R VP
                  VVP                  VR7      V n        \        V P                  VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        VP
                  V n        \"        P$                  ! 4       V n        \"        P$                  ! 4       V n        VP*                  R8X  Ed   VP,                  R8X  dy   \"        P.                  ! \0        P2                  ! ^^V P                  4      4      V n        \"        P.                  ! \0        P2                  ! ^^V P                  4      4      V n        EM!VP,                  R8X  da   \"        P.                  ! \0        P2                  ! ^4      4      V n        \"        P.                  ! \0        P2                  ! ^4      4      V n        EM°\9        RVP,                   R24      hVP*                  R	8X  Ed   VP,                  R8X  dy   \"        P.                  ! \0        P:                  ! ^^V P                  4      4      V n        \"        P.                  ! \0        P:                  ! ^^V P                  4      4      V n        EMüVP,                  R8X  da   \"        P.                  ! \0        P:                  ! ^4      4      V n        \"        P.                  ! \0        P:                  ! ^4      4      V n        EM‹\9        RVP,                   R24      hVP*                  R9   EdH   VP,                  R8X  d”   \"        P.                  ! \0        P<                  ! R
VP>                  ^^V P                  3R7      4      V n        \"        P.                  ! \0        P<                  ! R
VP>                  ^^V P                  3R7      4      V n        M¼VP,                  R8X  dz   \"        P.                  ! \0        P<                  ! R
VP>                  ^R7      4      V n        \"        P.                  ! \0        P<                  ! R
VP>                  ^R7      4      V n        M2\9        RVP,                   R24      h\A        RVP*                   R24      h\C        V R4      '       d   \C        V R4      '       g   \9        R4      hR# )T)rÀ   r:  r;  r(  rÔ   r<  r=  ru  rB  ÚzerosÚvectorræ   z Unknown value for `alpha_type` (Ú)r¾   r^  )rÇ   Ústdr_  zAlpha initialization scheme z not yet implemented!Úalpha_cross_attnÚalpha_densez+Alpha parameters not initialized correctly!N>   ÚnormalÚrandomÚgaussian)"r�   r‚   rÀ   r8  rì   r(  r<  Ú
cross_attnr  r  r  rw  r»   rM  rx  ry  rÔ   r   ÚTanhÚact_cross_attnÚ	act_denseÚalpha_initializerÚ
alpha_typer½   r.   r†  rŠ  r‹  r€   r¾   rŒ  Úalphas_initializer_rangeÚNotImplementedErrorrF  rz  s   &&&€r3   r‚   Ú(IdeficsGatedCrossAttentionLayer.__init__¼  s°  ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ*Ø×(Ñ(Ø×0Ñ0Ø#Ø—N‘NØØ!×0Ñ0Øô
ˆŒô Ø×(Ñ(Ø$×6Ñ6Ø×(Ñ(ô
ˆŒô
  .¨f×.@Ñ.@Àf×FYÑFYÔZˆÔÜ(6°v×7IÑ7IÈv×ObÑObÔ(cˆÔ%Ø—n‘nˆŒä Ÿgšg›iˆÔÜŸš›ˆŒà×#Ñ# wÕ.Ø× Ñ  HÔ,Ü(*¯ª´U·[²[ÀÀAÀt×GWÑGWÓ5XÓ(Y�Ô%Ü#%§<¢<´·²¸A¸qÀ$×BRÑBRÓ0SÓ#T�Ö Ø×"Ñ" gÔ-Ü(*¯ª´U·[²[À³^Ó(D�Ô%Ü#%§<¢<´·²¸A³Ó#?�Ö ä Ð#CÀF×DUÑDUÐCVÐVWÐ!XÓYÐYà×%Ñ%¨Õ/Ø× Ñ  HÔ,Ü(*¯ª´U·Z²ZÀÀ1Àd×FVÑFVÓ5WÓ(X�Ô%Ü#%§<¢<´·
²
¸1¸aÀ×AQÑAQÓ0RÓ#S�Ö Ø×"Ñ" gÔ-Ü(*¯ª´U·Z²ZÀ³]Ó(C�Ô%Ü#%§<¢<´·
²
¸1³Ó#>�Ö ä Ð#CÀF×DUÑDUÐCVÐVWÐ!XÓYÐYà×%Ñ%Ð)IÕIØ× Ñ  HÔ,Ü(*¯ªÜ—L’L c¨v×/NÑ/NÐVWÐYZÐ\`×\lÑ\lÐUmÔnó)�Ô%ô $&§<¢<Ü—L’L c¨v×/NÑ/NÐVWÐYZÐ\`×\lÑ\lÐUmÔnó$�Õ ð ×"Ñ" gÔ-Ü(*¯ªÜ—L’L c¨v×/NÑ/NÐVWÔYó)�Ô%ô $&§<¢<´·²À#È6×KjÑKjÐrsÔ0uÓ#v�Õ ä Ð#CÀF×DUÑDUÐCVÐVWÐ!XÓYÐYô &Ð(DÀV×E]ÑE]ÐD^Ð^sÐ&tÓuÐuä˜Ð0×1Ò1´g¸dÀM×6RÒ6RÜÐJÓKÐKñ 7Sr6   c                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          R	S[ P
                  /# )
r'   r*   rN   Nr,   rL   Úcross_attention_gater)   r‡   rx   )r.   r¯   r   r   r   r/   )r1   r2   s   "€r3   r4   r„  ÿ  s“   ø€ ÷ 8ñ 8á—|‘|ð8ñ Ÿ™ tÕ+ð8ñ #Ÿ\™\¨DÕ0ð	8ñ
 $Ÿl™l¨TÕ1ð8ñ $Ÿl™l¨TÕ1ð8ñ  �ð8ñ Ñ+Õ,ð8ñ 
×	Ñ	ñ8r6   c           	     ó®  € Vf   \        R4      hVf   \        R4      hVe   \        R4      hTpV P                  V4      pV P                  ! R	RVRVRV/VB w  r\        P
                  P                  WP                  V P                  R7      pVP                  V^ 8H  R
,          R4      pW€P                  V P                  4      V,          ,           pTpV P                  V4      pV P                  V4      p\        P
                  P                  WP                  V P                  R7      pW€P                  V P                  4      V,          ,           pV# )aÎ  
image_hidden_states (`torch.FloatTensor`):
    Input to the layer of shape `(batch, seq_len, embed_dim)`
image_attention_mask (`torch.FloatTensor`, *optional*):
    image attention mask of size
    `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
cross_attention_gate (`torch.FloatTensor`, *optional*):
    gate of size `(batch, seq_len)` used to zero-out cross-attention output for tokens attending no images.
zt`image_hidden_states` is required for Idefics cross attention module which are visual features to be conditioned on.z‹`cross_attention_gate` is required for Idefics cross attention module to zero-out the cross-attention hidden_states attending to no images.zMPast key value states are not implemented for Idefics cross attention module.r*   r[  rN   r,  r^  r7   )rø   rø   N)r€   r–  rx  r�  r   r1  r(  rÔ   r.  Úmasked_fillr‘  rŠ  ry  rw  r’  r‹  )
r†   r*   rN   r,   rL   r™  r)   r‡   r~  rf  s
   &&&&&&&,  r3   r“   Ú'IdeficsGatedCrossAttentionLayer.forwardþ  se  € ð( Ò&Üð#óð ð
  Ò'Üð ^óð ð Ò&Ü%Ð&uÓvÐvà ˆà×,Ñ,¨]Ó;ˆð  Ÿ?š?ñ 
Ø'ð
à0ð
ð 0ð
ð ñ	
Ñˆô Ÿ™×-Ñ-¨m¿{¹{ÐUY×UbÑUbÐ-Ócˆà%×1Ñ1Ð3GÈ1Ñ3LÈjÕ2YÐ[^Ó_ˆØ ×#6Ñ#6°t×7LÑ7LÓ#MÐP]Õ#]Õ]ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¿{¹{ÐUY×UbÑUbÐ-ÓcˆØ §>¡>°$×2BÑ2BÓ#CÀmÕ#SÕSˆàÐr6   )
r‘  r’  rŠ  r‹  rÔ   r�  rÀ   rx  rw  ry  rd   )NNNNNr€  r    s   @@r3   r‚  r‚  »  s2   ù‡ € ÷@Lõ @LðD ÷8ñ 8ó ÷8ð 8r6   r‚  c            	       ó¨   a a€ ] tR tRt oRtRtRt. ROtRtRt	Rt
RtR]R]! ]^RR7      /t]P"                  ! 4       V 3R	 l4       tV3R
 ltRtVtV ;t# )ÚIdeficsPreTrainedModeli:  rn   TFr*   r+   rv  )ÚindexÚ
layer_namec                ó€  <€ \         SV `  V4       \        V\        4      '       d‚   \        P
                  ! VP                  4       \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P                  R4      4       R# \        V\        4      '       EdH   V P                  P                  R8X  dC   \        P                   ! VP"                  4       \        P                   ! VP$                  4       R# V P                  P                  R8X  dC   \        P&                  ! VP"                  4       \        P&                  ! VP$                  4       R# V P                  P                  R9   dq   \        P
                  ! VP"                  RV P                  P(                  R7       \        P
                  ! VP$                  RV P                  P(                  R7       R# R# \        V\*        4      '       d#   \        P
                  ! VP,                  4       R# R# )	r+  r†  r¾   r^  )rÇ   r‰  NrO   )r+  rO   >   rŒ  r�  rŽ  )r�   Ú_init_weightsre   r!   ÚinitÚnormal_Úclass_embeddingÚcopy_rÿ   r.   rP   rQ   rù   r‚  rÔ   r“  Úzeros_rŠ  r‹  Úones_r•  r    Úlatents)r†   rh   rˆ   s   &&€r3   r¢  Ú$IdeficsPreTrainedModel._init_weightsL  se  ø€ ô
 	‰Ñ˜fÔ%Ü�fÔ5×6Ò6Ü�LŠL˜×/Ñ/Ô0Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜Ô ?×@Ó@Ø�{‰{×,Ñ,°Ô7Ü—’˜F×3Ñ3Ô4Ü—’˜F×.Ñ.Ö/Ø—‘×.Ñ.°&Ô8Ü—
’
˜6×2Ñ2Ô3Ü—
’
˜6×-Ñ-Ö.Ø—‘×.Ñ.Ð2RÔRÜ—’˜V×4Ñ4¸3ÀDÇKÁK×DhÑDhÕiÜ—’˜V×/Ñ/°c¸t¿{¹{×?cÑ?c×dñ Sô ˜Ô 9×:Ò:Ü�LŠL˜Ÿ™Ö(ñ ;r6   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rÓ   r   )r1   r2   s   "€r3   r4   Ú#IdeficsPreTrainedModel.__annotate__:  s   ø‡ ‚ áÑò r6   r7   )ÚimageÚtext)ro  r‚  ÚIdeficsVisionEncoderLayer)r8   r9   r:   r;   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_can_compile_fullgraphÚ_supports_attention_backendro  r   r8  Ú_can_record_outputsr.   r  r¢  r=   r>   r?   rŸ   r    s   @@r3   rž  rž  :  sv   ù‡ € ð  ÐØ(ÐØ&*Ð#ÚoÐØ€Nà ÐØ"ÐØ"&Ðð 	Ð,Ø‘nÐ%5¸QÈ;ÔWðÐð
 ‡]‚]ƒ_ô)ó ð)÷' … r6   rž  c                   ó”   a a€ ] tR tRt oRtV3R lV 3R lltRR ltRR ltRR lt]	]
]RV3R lR	 ll4       4       4       tR
tVtV ;t# )ÚIdeficsModelic  z�
Transformer decoder consisting of `config.num_hidden_layers` layers. Each layer is a [`IdeficsDecoderLayer`]

Args:
    config: IdeficsConfig
c                ó    <€ V ^8„  d   QhRS[ /# rÓ   r   )r1   r2   s   "€r3   r4   ÚIdeficsModel.__annotate__l  s   ø€ ÷ 0,ñ 0,™}ñ 0,r6   c           
     ó¼  <€ \         SV `  V4       Wn        VP                  V n        VP
                  V n        \        VP
                  VP                  VP                  VP                  V P                  R 7      V n
        VP                  P                  V n        VP                  V n        VP                  V P                  n        \        VP                  4      V n        VP                   '       d^   VP"                  p\%        VVP                  P&                  VP(                  VP*                  VP,                  VP.                  4      V n        \2        P4                  ! \7        VP8                  4       Uu. uF  p\;        WR7      NK  	  up4      V n        VP>                  V n        VP8                  V P>                  ,          p\2        P4                  ! \7        V4       Uu. uF  p\A        WR7      NK  	  up4      V n!        RV n"        \G        VP                  VPH                  R7      V n%        V PM                  4        V PO                  V4       R# u upi u upi ))r|   rƒ   r}   rw   r   )r=  FrB  N)(r�   r‚   rÔ   Úpad_token_idr   Ú
vocab_sizeru   Úadditional_vocab_sizerÀ   Úfreeze_text_layersÚembed_tokensrG  Ú
image_sizerc  r"   Úvision_modelÚuse_resamplerÚperceiver_configr    rA  Úresampler_depthÚresampler_n_headsÚresampler_head_dimÚresampler_n_latentsÚperceiver_resamplerr   Ú
ModuleListÚrangeÚnum_hidden_layersro  ÚlayersÚcross_layer_intervalr‚  Úgated_cross_attn_layersÚgradient_checkpointingr»   rM  ÚnormÚ	post_initÚfreeze_relevant_params)r†   rÔ   rÆ  ÚiÚnum_cross_layersrˆ   s   &&   €r3   r‚   ÚIdeficsModel.__init__l  sê  ø€ Ü‰Ñ˜Ô ØŒØ!×.Ñ.ˆÔØ ×+Ñ+ˆŒä5Ø!×,Ñ,Ø&,×&BÑ&BØ ×,Ñ,Ø#×6Ñ6Ø×(Ñ(ô
ˆÔð !×.Ñ.×9Ñ9ˆŒØ#×1Ñ1ˆÔà28×2MÑ2Mˆ×ÑÔ/Ü4°V×5IÑ5IÓJˆÔð ××ÐØ%×6Ñ6ÐÜ'@ØØ×$Ñ$×.Ñ.Ø ×0Ñ0Ø ×2Ñ2Ø ×3Ñ3Ø ×4Ñ4ó(ˆDÔ$ô —m’mÜ?DÀV×E]ÑE]Ô?^Ó_Ñ?^¸!Ô  ×5Ñ?^Ñ_ó
ˆŒð %+×$?Ñ$?ˆÔ!Ø!×3Ñ3°t×7PÑ7PÕPÐÜ')§}¢}ÜKPÐQaÔKbÓcÑKbÀaÔ,¨V×AÑKbÑcó(
ˆÔ$ð ',ˆÔ#ä" 6×#5Ñ#5¸6×;NÑ;NÔOˆŒ	ð 	�‰Ôà×#Ñ# FÖ+ùò `ùò ds   Å7IÇ#Ic                óê   € Vf   V P                   pVP                  '       d   V P                  VP                  4       VP                  '       d$   \	        V P
                  VP                  R7       R # R # )N©ro   )rÔ   rÁ  Úfreeze_text_module_exceptionsÚfreeze_vision_layersrs   rÄ  Úfreeze_vision_module_exceptions)r†   rÔ   s   &&r3   rÕ  Ú#IdeficsModel.freeze_relevant_paramsž  sW   € ØŠ>Ø—[‘[ˆFà×$×$Ð$Ø×#Ñ# F×$HÑ$HÔIà×&×&Ð&Ü˜×*Ñ*¸f×>dÑ>d×eñ 'r6   c                ó\   € V P                   V P                  3 F  p\        W!R 7       K  	  R# ©rÚ  N)rÏ  rÓ  rs   )r†   ro   rh   s   && r3   rÁ  ÚIdeficsModel.freeze_text_layers¨  s!   € Ø—{‘{ D§I¡IÓ.ˆFÜ˜×Eó /r6   c                ó4   € \        V P                  VR 7       R# rà  )rs   rÄ  )r†   ro   s   &&r3   rÜ  Ú!IdeficsModel.freeze_vision_layers¬  s   € Ü�T×&Ñ&Ð:K×Lr6   c                óÂ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[R,          RS[R,          RS[S[,          RS[S[	,          /# )r'   rX   NrN   rÿ   r)   Úinputs_embedsrI   rJ   rK   rL   Ú	use_cacheÚinterpolate_pos_encodingr‡   rx   )
r.   r\  r¯   r   r/   ry   r   r   r0   r%   )r1   r2   s   "€r3   r4   r¼  ²  s  ø€ ÷ S
ñ S
á×#Ñ# dÕ*ðS
ñ Ÿ™ tÕ+ðS
ñ ×&Ñ&¨Õ-ð	S
ñ
  �ðS
ñ ×(Ñ(¨4Õ/ðS
ñ ×'Ñ'¨$Õ.ðS
ñ #(×"3Ñ"3°dÕ":ðS
ñ $×/Ñ/°$Õ6ðS
ñ $Ÿl™l¨TÕ1ðS
ñ ˜$•;ðS
ñ #'¨¥+ðS
ñ Ñ+Õ,ðS
ñ 
Ñ/Õ	/ñS
r6   c           
     óÆ	  € Ve   VP                   MVP                   pVRJ VRJ,          '       d   \        R4      hVf   V P                  V4      pV
'       d   Vf   \        V P                  R7      pVP
                  ^,          pVe   VP                  4       M^ pWï,           pVeO   VfK   VP                  4       P                  R4      ^,
          pVP                  V^ 8H  ^4       VRV) R13,          pM=Vf:   \        P                  ! WåP                   R7      V,           pVP                  ^ 4      p\        R WgV3 4       4      ^8w  d   \        R4      hVe‹   VP                  V P                  VR7      pVP
                  R	,          w  ppVP!                  4       P"                  ! VV,          .VP
                  R
,          O5!  pV P%                  WkR7      P&                  pMPVeM   VP)                  4       w  ppppVP                  V P                  VR7      pVP#                  VV,          VV4      pV P                  P*                  '       dQ   Vf5   V P-                  X4      pVP)                  ^4      VP)                  ^4      ppMVP)                  4       w  ppppTpM2Vf$   XP)                  ^4      VP)                  ^4      ppM\        R4      hVP#                  XXV,          V4      pV	R,          P/                  RRRV4      P0                  ! . V	P
                  R	,          ORN5!  p	\        P2                  ! V	R,          P5                  4       \        P6                  ! RRVVP                  R7      \        P8                  ! VP                  4      P:                  4      p	V	R8H  P=                  RR7      P                  V P                  VR7      P?                  ^R7      pVf4   \        P@                  ! VV3\        P4                  VP                   R7      p\C        V P                  VVVVR7      pTp\E        V PF                  4       Fb  w  ppVV PH                  ,          ^ 8X  d6   V PJ                  VV PH                  ,          ,          pV! VVV3RV	RVRR/VB pV! V3RVRVRV/VB pKd  	  V PM                  V4      pVP#                  VVVV4      p\O        VVVR7      # )a*  
image_encoder_embeddings (`torch.FloatTensor`, *optional*):
    The output of the image encoder.
perceiver_embeddings (`torch.FloatTensor`, *optional*):
    The output of the perceiver resampler.
image_attention_mask (`torch.LongTensor`, *optional*):
    The attention mask for the image encoder.
Nz:You must specify exactly one of input_ids or inputs_embeds)rÔ   rø   )rU   c              3   ó(   "  € T F  qR J x € K
  	  R # 5ird   r7   )rf   rþ   s   & r3   ri   Ú'IdeficsModel.forward.<locals>.<genexpr>á  s   é € ÐaÑ"`˜Q�D�yÓ"`ùs   ‚z_Exactly 1 of pixel_values, image_encoder_embeddings or perceiver_embeddings has to be not-None.rò   :Nr'   N:r'   NN)rI   rç  zBIf `perceiver_embeddings` are passed, use_resampler should be Truer^  )rU   r~   r÷   )rÔ   rå  rN   r)   rÿ   rL   r™  r)   rN   rÿ   )r(   r,   r)   rO   ).N)rø   Nrø   rø   r7   )(rU   r€   rÂ  r	   rÔ   rQ   r`  ÚlongÚcumsumÚmasked_fill_r.   rP   r  ÚsumrT   r~   r3  rR   rÄ  r(   r_  rÅ  rË  rù   rd  rŽ   ry   ÚfullÚfinfoÚminrl   Úsqueezer¾   r   Ú	enumeraterÏ  rÐ  rÑ  rÓ  r%   )r†   rX   rN   rÿ   r)   rå  rI   rJ   rK   rL   ræ  rç  r‡   rU   Ú
seq_lengthÚpast_key_values_lengthÚseq_length_with_pastÚ
batch_sizeÚ
num_imagesr,   Úimage_seq_lenÚimage_hidden_sizer™  Úcausal_maskr*   ÚidxÚdecoder_layerÚcross_attn_blocks   &&&&&&&&&&&&,               r3   r“   ÚIdeficsModel.forward¯  s  € ð4 &/Ò%:�×!Ò!À×@TÑ@Tˆà˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×-Ñ-¨iÓ8ˆMç˜Ò0Ü*°$·+±+Ô>ˆOà"×(Ñ(¨Õ+ˆ
ØETÒE` ×!?Ñ!?Ô!AÐfgÐØ)ÕBÐàÒ%¨,Ò*>à)×.Ñ.Ó0×7Ñ7¸Ó;¸aÕ?ˆLØ×%Ñ% n¸Ñ&9¸1Ô=Ø'¨¨J¨;©<¨Õ8‰LØÒ!Ü Ÿ<š<¨
×;OÑ;OÔPÐSiÕiˆLØ'×1Ñ1°!Ó4ˆLäÑa <ÐK_Ñ"`ÓaÓaÐefÔfÜØqóð ð Ò%Ø'Ÿ?™?°·±ÀF˜?ÓKˆLØ%1×%7Ñ%7¸Õ%;Ñ"ˆJ˜
Ø'×2Ñ2Ó4×9Ò9¸*ÀzÕ:QÐkÐT`×TfÑTfÐgiÕTjÓkˆLð #'×"3Ñ"3Ø)ð #4ó #çÑñ  ð &Ò1ØG_×GdÑGdÓGfÑDˆJ˜
 MÐ3DØ":×"=Ñ"=ÀDÇJÁJÐW]Ð"=Ó"^ÐØ"5×":Ñ":¸:È
Õ;RÐTaÐctÓ"uÐà�;‰;×$×$Ð$Ø#Ò+Ø'+×'?Ñ'?Ð@SÓ'TÐ$Ø3G×3LÑ3LÈQÓ3OÐQe×QjÑQjÐklÓQmÐ0�Ð0àK_×KdÑKdÓKfÑH�
˜J¨Ð7HØ"6ÑØ!Ò)Ø/B×/GÑ/GÈÓ/JÐL_×LdÑLdÐefÓLgÐ,ˆMÐ,äÐaÓbÐbà1×6Ñ6°zÀ:ÐP]ÕC]Ð_pÓqÐð ! Õ+ß‰V�B˜˜B Ó.ß‰Wðð :à*×0Ñ0°Õ4ð:à68ó:ð 	ô
  %Ÿ{š{Ø  Õ/×4Ñ4Ó6Ü�JŠJ�r˜3 vÐ5H×5NÑ5NÔOÜ�KŠKÐ+×1Ñ1Ó2×6Ñ6ó 
Ðð " SÑ(×-Ñ-°"Ð-Ó5×8Ñ8¸t¿z¹zÐRXÐ8ÓY×aÑaÐfgÐaÓhð 	ð
 Ò!Ü"ŸZšZØÐ1Ð2¼%¿*¹*È]×MaÑMaôˆNô )Ø—;‘;Ø'Ø)Ø+Ø%ô
ˆð &ˆä"+¨D¯K©KÖ"8ÑˆC�à�T×.Ñ.Õ.°!Ô3Ø#'×#?Ñ#?ÀÀt×G`ÑG`Õ@`Õ#aÐ Ù 0Ø!ØØ'ñ!ð *>ð	!ð
 *>ð!ð %)ð!ð ñ!�ñ *Øñà*ðð *ðð !0ð	ð
 ñŠMñ #9ð, Ÿ	™	 -Ó0ˆØ1×6Ñ6°zÀ:È}Ð^oÓpÐä-Ø+Ø 3Ø+ô
ð 	
r6   )rÔ   rÐ  rÂ  rÑ  rÒ  rÃ  rÏ  rÓ  r   rË  rG  rÄ  r¿  rd   ©r7   )NNNNNNNNNNF)r8   r9   r:   r;   r<   r‚   rÕ  rÁ  rÜ  r   r   r   r“   r>   r?   rŸ   r    s   @@r3   rº  rº  c  sY   ù‡ € ñ÷0,ó 0,ôdfôFôMð  ØØ÷S
ñ S
ó ó ó  ÷S
ð S
r6   rº  c                   ó”   a a€ ] tR tRt oRR/tRV 3R llt]]RV3R lR ll4       4       tRV 3R llt	RV3R lV 3R	 lllt
R
tVtV ;t# )ÚIdeficsForVisionText2TextiH  úlm_head.weightúmodel.embed_tokens.weightc                ó  <€ \         SV `  V4       \        V4      V n        \	        VP
                  VP                  VP                  R VP                  R7      V n	        VP                  ^ 8”  d   RRRR/V n
        V P                  4        R# )Fr¸   r  r  zlm_head.additional_fc.weightz.model.embed_tokens.additional_embedding.weightN)r�   r‚   rº  rn   r¢   rÀ   r¿  rÀ  Úfreeze_lm_headÚlm_headÚ_tied_weights_keysrÔ  )r†   rÔ   rÄ  rˆ   s   &&&€r3   r‚   Ú"IdeficsForVisionText2Text.__init__K  s�   ø€ Ü‰Ñ˜Ô Ü! &Ó)ˆŒ
ä-Ø×*Ñ*Ø×*Ñ*Ø$*×$@Ñ$@ØØ#×2Ñ2ô
ˆŒð ×'Ñ'¨!Ô+à Ð"=Ø.Ð0`ð'ˆDÔ#ð 	�‰Ör6   c                ó  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  ,          RS[S[,          RS[	S[
,          /# )r'   rX   NrN   rÿ   r)   rå  rI   rJ   rK   rL   Úlabelsræ  rç  Úlogits_to_keepr‡   rx   )r.   r\  r¯   r   r/   ry   r¨   r   r   r0   rB   )r1   r2   s   "€r3   r4   Ú&IdeficsForVisionText2Text.__annotate__a  s2  ø€ ÷ V
ñ V
á×#Ñ# dÕ*ðV
ñ Ÿ™ tÕ+ðV
ñ ×&Ñ&¨Õ-ð	V
ñ
  �ðV
ñ ×(Ñ(¨4Õ/ðV
ñ ×'Ñ'¨$Õ.ðV
ñ #(×"3Ñ"3°dÕ":ðV
ñ $×/Ñ/°$Õ6ðV
ñ $Ÿl™l¨TÕ1ðV
ñ × Ñ  4Õ'ðV
ñ ˜$•;ðV
ñ #'¨¥+ðV
ñ ™eŸl™lÕ*ðV
ñ Ñ+Õ,ðV
ñ  
Ñ.Õ	.ñ!V
r6   c                óÄ  € V P                   ! RRVRVRVRVRVRVRVRVR	V	R
VRVRR/VB pVP                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pRpV
e-   V P                  ! RRVRV
RV P                  P                  /VB p\        VVVP                  VP                  VP                  VP                  R7      # )aK  
image_encoder_embeddings (`torch.FloatTensor`, *optional*):
    The output of the image encoder.
perceiver_embeddings (`torch.FloatTensor`, *optional*):
    The output of the perceiver resampler.
image_attention_mask (`torch.LongTensor`, *optional*):
    The attention mask for the image encoder.
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 transformers import AutoProcessor, IdeficsForVisionText2Text

>>> model = IdeficsForVisionText2Text.from_pretrained("HuggingFaceM4/idefics-9b")
>>> processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics-9b")

>>> dogs_image_url_1 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_nlvr2/raw/main/image1.jpeg"
>>> dogs_image_url_2 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_nlvr2/raw/main/image2.jpeg"

>>> prompts = [
...     [
...         "User:",
...         dogs_image_url_1,
...         "Describe this image.\nAssistant: An image of two dogs.\n",
...         "User:",
...         dogs_image_url_2,
...         "Describe this image.\nAssistant:",
...     ]
... ]
>>> inputs = processor(prompts, return_tensors="pt")
>>> generate_ids = model.generate(**inputs, max_new_tokens=6)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)
```rX   rN   rÿ   r)   rå  rI   rJ   rK   rL   ræ  rç  Úreturn_dictTNrø   rE   r  r¿  )rD   rE   r)   r*   r+   r,   r7   )rn   r(   re   r¨   Úslicer  Úloss_functionrÔ   r¿  rB   r)   r*   r+   r,   )r†   rX   rN   rÿ   r)   rå  rI   rJ   rK   rL   r  ræ  rç  r  r‡   Úoutputsr*   Úslice_indicesrE   rD   s   &&&&&&&&&&&&&&,     r3   r“   Ú!IdeficsForVisionText2Text.forward_  sE  € ðp 37·*²*ñ 3
Øð3
à)ð3
ð &ð3
ð ,ð	3
ð
 (ð3
ð &ð3
ð &>ð3
ð "6ð3
ð "6ð3
ð  ð3
ð &>ð3
ð ð3
ð ñ3
ˆð   ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%Ñp¨VÐp¸FÐpÈtÏ{É{×OeÑOeÐpÐioÑpˆDä,ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø '× ;Ñ ;ô
ð 	
r6   c
                ó.  <€ \         SV `  ! V3R VRVRVRVRV	RV/V
B pVe'   V P                  P                  '       d   W{R&   M	W{R&   MWkR	&   V
P	                  R
R4      VR
&   Ve0   Vf,   VR,          P
                  ^,          pVRV) R13,          VR&   V# )r)   rN   rå  rÿ   ræ  rL   NrK   rJ   rI   rç  FrX   rø   )r�   Úprepare_inputs_for_generationrÔ   rÅ  ÚpoprQ   )r†   rX   rN   rÿ   rå  r)   rI   r,   rL   ræ  r‡   Úmodel_inputsrô  rˆ   s   &&&&&&&&&&,  €r3   r  Ú7IdeficsForVisionText2Text.prepare_inputs_for_generation¹  sã   ø€ ô ‘wÒ<Øñ	
à+ð	
ð *ð	
ð (ð		
ð
 &ð	
ð  ð	
ð "6ð	
ð ñ	
ˆð Ò*Ø�{‰{×(×(Ð(Ø7JÐ3Ò4à;NÐ7Ò8à+7˜Ñ(Ø39·:±:Ð>XÐZ_Ó3`ˆÐ/Ñ0àÒ+°Ò0EØ% kÕ2×8Ñ8¸Õ;ˆJØ3GÈÈJÈ;É<ÈÕ3XˆLÐ/Ñ0àÐr6   c          
      ó^   <€ V ^8„  d   QhRS[ RS[S[S[3,          RS[RS[S[S[3,          /# )r'   r  r\   rZ   rx   )r   Údictr˜   r   ry   )r1   r2   s   "€r3   r4   r  á  sC   ø€ ÷ ñ áðñ ™3¡˜8•nðñ !ð	ñ 
‰c‘3ˆh�ñr6   c                ó  <€ \         SV `  ! VVV3/ VB pR V9   d[   VR ,          pVR,          P                  ^4      pVP                  RR4      '       d   WbR &   M\        P
                  ! WV.^R7      VR &   VP                  VR&   V# )rL   ræ  Tr÷   r,   )rø   rO   rø   )r�   Ú#_update_model_kwargs_for_generationr  rW   r.   r²   r,   )r†   r  r\   rZ   r‡   rL   Ú	last_maskrˆ   s   &&&&,  €r3   r  Ú=IdeficsForVisionText2Text._update_model_kwargs_for_generationá  s¢   ø€ ô ‘wÒBØØØñ
ð ñ	
ˆð " \Ô1Ø#/Ð0FÕ#GÐ Ø,¨XÕ6×@Ñ@ÀÓCˆIØ×Ñ ¨T×2Ò2Ø7@Ð3Ò4ä7<·y²yÐBVÐAbÐhiÔ7j�Ð3Ñ4ð /6×.IÑ.IˆÐ*Ñ+ØÐr6   )r  r  rn   rd   )NNNNNNNNNNNFrH   )NNNNNNNN)F)r8   r9   r:   r;   r  r‚   r   r   r“   r  r  r>   r?   rŸ   r    s   @@r3   r  r  H  sP   ù‡ € Ø*Ð,GÐHÐ÷ð( Ø÷V
ñ V
ó ó ðV
÷p&÷P÷ õ r6   r  )r+  FNNr   rW  )r^  )r  rº  rž  )Tr<   Úcollections.abcr   Údataclassesr   Útypingr   r.   Útorch.nn.functionalr   r1  r‹   Ú r   r£  Úactivationsr   Úcache_utilsr   r	   Ú
generationr
   Úintegrationsr   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.deprecationr   Úutils.genericr   r   Úutils.output_capturingr   r   Úconfiguration_ideficsr   Ú	perceiverr    Úvisionr!   r"   Ú
get_loggerr8   rD  r%   rB   r^   rs   rb   ru   ra   r¢   r)  r»   rÐ   r
  r  r  r6  r8  ro  r‚  rž  rº  r  Ú__all__r7   r6   r3   Ú<module>r8     sä  ðñ& å $Ý !Ý ã ß Ð Ý å &Ý !ß .Ý )Ý 7Ý /Ý 9Ý +ß Kß XÑ XÝ &ß RÓ RÝ 0ß Gß EÝ 0Ý 0ß Eð 
×	Ò	˜HÓ	%€ñ ðôð
 ô@ [ó @ó óð@ñ* ðôð
 ô@ Kó @ó óð@ô4*#ôZôfA §¡ô fAôR8S˜RŸY™Yô 8SôxJ�R—Y‘Yô Jô06<˜RŸY™Yô 6<òt(ñ Ð-Ó.óó /ðô4P�—‘ô P÷$%ô0R)�r—y‘yô R)ôl3Ð4ô 3ôl|Ð&@ô |ð~ ô%)˜_ó %)ó ð%)ðP ôa
Ð)ó a
ó ða
ôHqÐ 6¸ô qòh R‚r6   