+
    œ°³jCØ  ã                   óZ  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^ RIHtHtH	t	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Ht ^RIHt ^RIHtH t H!t!H"t"H#t# ^RI$H%t%H&t& ^RI'H(t( ^RI)H*t*H+t+ ^RI,H-t- ^RI.H/t/ ^RI0H1t1 ]! 4       '       d   ^RIH2t2 ]+Pf                  ! ]44      t5 ! R R]Pl                  4      t7R t8R9R lt9 ! R R]Pt                  4      t;R R lt<R R lt= ! R R ]Pt                  4      t> ! R! R"]>4      t? ! R# R$]Pt                  4      t@R%]>R&]>R']?/tA ! R( R)]4      tB]* ! R* R+](4      4       tC]* ! R, R-]C4      4       tD]*! R.R/7       ! R0 R1]C]4      4       tE]*! R2R/7       ! R3 R4]C4      4       tF]* ! R5 R6]C4      4       tG]* ! R7 R8]C4      4       tH. R:OtIR# );zPyTorch Falcon model.N)ÚCallable)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚ	LayerNormÚMSELoss)Ú
functional)Úinitialization)Úget_activation)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)Ú!flash_attn_supports_top_left_maskÚis_flash_attn_available)ÚGradientCheckpointingLayer)Ú)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚQuestionAnsweringModelOutputÚ SequenceClassifierOutputWithPastÚTokenClassifierOutput)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚPreTrainedModel)Úauto_docstringÚlogging)Údeprecate_kwarg)Úmaybe_autocast©ÚFalconConfig)Ú_flash_attention_forwardc                   ó2   a € ] tR t^<t o V 3R lR ltRtV tR# )ÚFalconLinearc                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )é   ÚinputÚreturn©ÚtorchÚTensor)ÚformatÚ__classdict__s   "€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/falcon/modeling_falcon.pyÚ__annotate__ÚFalconLinear.__annotate__=   s#   ø€ ÷ )ñ )™UŸ\™\ð )©e¯l©lñ )ó    c                ó~   € WP                   P                  ,          pV P                  f   V# W P                  ,           # ©N)ÚweightÚTÚbias)Úselfr%   Úhidden_statess   && r,   ÚforwardÚFalconLinear.forward=   s/   € Ø§¡§¡Õ-ˆØ�9‰9ÒØ Ð ØŸy™yÕ(Ð(r/   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r7   Ú__static_attributes__Ú__classdictcell__)r+   s   @r,   r"   r"   <   s   ø‡ € ÷)ö )r/   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..N©Údiméÿÿÿÿ)Úshaper(   Úcat)ÚxÚx1Úx2s   &  r,   Úrotate_halfrI   E   sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r/   c                óÈ   € 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.
)Ú	unsqueezerI   )ÚqÚkÚcosÚsinÚunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r,   Úapply_rotary_pos_embrS   M   sS   € ð$ �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr/   c                   óÎ   a a€ ] tR t^gt 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# )ÚFalconRotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©r$   Úconfigr   )r*   r+   s   "€r,   r-   Ú"FalconRotaryEmbedding.__annotate__i   s   ø€ ÷ Oñ O™|ñ Or/   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)ÚsuperÚ__init__Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrZ   Úrope_parametersr]   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)r5   rZ   rV   Úrope_init_fnri   Ú	__class__s   &&&  €r,   ra   ÚFalconRotaryEmbedding.__init__h   s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÕAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÔ&Ü.¨t¯~©~Õ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr/   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )r$   rZ   r&   )r   Útupler(   r)   Úfloat)r*   r+   s   "€r,   r-   r[   {   s.   ø€ ÷ 5ñ 5±ð 5ÑX]Ñ^c×^jÑ^jÑlqÐ^qÕXrñ 5r/   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_dimNç      ð?©Údtype)re   ÚgetattrÚhidden_sizeÚnum_attention_headsr(   Úarangerq   Úto)rZ   rV   ÚkwargsÚbaserB   Úattention_factorri   s   &&,    r,   rf   Ú5FalconRotaryEmbedding.compute_default_rope_parametersy   s~   € ð ×%Ñ% lÕ3ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r/   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)rw   rV   ÚmpsÚcpuF)Údevice_typeÚenabledrA   rv   )NºNNNNrC   ©r†   Nr†   )ri   ÚexpandrD   r|   r(   rq   rV   Ú
isinstanceÚtypeÚstrr   Ú	transposerE   rN   rg   rO   rw   )
r5   rF   Úposition_idsÚinv_freq_expandedÚposition_ids_expandedr„   ÚfreqsÚembrN   rO   s
   &&&       r,   r7   ÚFalconRotaryEmbedding.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,	)rg   rZ   ri   rc   rk   rd   r]   r1   )r:   r;   r<   r=   r   ra   Ústaticmethodrf   r(   Úno_gradr   r7   r>   r?   Ú__classcell__©rm   r+   s   @@r,   rU   rU   g   su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r/   rU   c                ó„   € V ^8„  d   QhR\         P                  R\        R\         P                  R\         P                  /# )r$   Úattention_maskÚ	num_headsrw   r&   )r(   r)   Úintrw   )r*   s   "r,   r-   r-       s=   € ÷ Jñ J¤u§|¡|ð JÄð JÌEÏKÉKð JÔ\a×\hÑ\hñ Jr/   c           	      óˆ  € V P                   w  r4^\        P                  ! \        P                  ! V4      4      ,          p\        P
                  ! R^^\        P                  ! V4      ^,
          ) ,          ) ,          V P                  \        P                  R7      p\        P                  ! ^^V,           V P                  \        P                  R7      p\        P                  ! Wg4      pWQ8w  dæ   \        P
                  ! R^^\        P                  ! ^V,          4      ^,
          ) ,          ) ,          V P                  \        P                  R7      p	\        WQV,
          4      p
\        P                  ! ^^^V
,          ,           ^V P                  \        P                  R7      p\        P                  ! V\        P                  ! W›4      .^ R7      pV P                  RR7      ^,
          V ,          R,          pVR,          P                  4       V,          pVP                  W1,          ^V4      P!                  V4      # )r$   ©rV   rw   rA   r9   rC   r‡   ).N)rD   ÚmathÚfloorÚlog2r(   ÚfullrV   Úfloat32r{   Úint32ÚpowÚminrE   ÚcumsumÚbfloat16Úreshaper|   )r˜   r™   rw   Ú
batch_sizeÚ
seq_lengthÚclosest_power_of_2r~   ÚpowersÚslopesÚ
extra_baseÚnum_remaining_headsÚextra_powersÚarange_tensorÚalibis   &&&           r,   Úbuild_alibi_tensorr²       s²  € Ø+×1Ñ1Ñ€JØœdŸjšj¬¯ª°9Ó)=Ó>Õ>ÐÜ�:Š:Ø
ˆA�Aœ4Ÿ9š9Ð%7Ó8¸1Õ<Ð=Õ=Ð>Õ?È×H]ÑH]Ôej×erÑerô€Dô �\Š\˜!˜QÐ!3Õ3¸N×<QÑ<QÔY^×YdÑYdÔe€FÜ�YŠY�tÓ$€FàÔ&Ü—Z’ZØØ�Aœ4Ÿ9š9 QÐ);Õ%;Ó<¸qÕ@ÐAÕAÐBÕCØ!×(Ñ(Ü—-‘-ô	
ˆ
ô "Ð"4ÐBTÕ6TÓUÐÜ—|’| A q¨1Ð/BÕ+BÕ'BÀAÈn×NcÑNcÔkp×kvÑkvÔwˆÜ—’˜F¤E§I¢I¨jÓ$GÐHÈaÔPˆð %×+Ñ+°Ð+Ó3°aÕ7¸>ÕIÈ:ÕV€MØ�9Õ×&Ñ&Ó(¨=Õ8€EØ�=‰=˜Õ/°°JÓ?×BÑBÀ5ÓIÐIr/   c          
      ó�   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\         P                  /# )r$   rF   ÚresidualÚprobÚtrainingr&   )r(   r)   rq   Úbool)r*   s   "r,   r-   r-   À   s?   € ÷ ñ ”5—<‘<ð ¬5¯<©<ð ¼uð ÔPTð ÔY^×YeÑYeñ r/   c                óF   € \         P                  ! WVR7      pW,           pV# )zÞ
Dropout add function

Args:
    x (`torch.tensor`):
        input tensor
    residual (`torch.tensor`):
        residual tensor
    prob (`float`):
        dropout probability
    training (`bool`):
        training mode
)Úpr¶   )ÚFÚdropout)rF   r´   rµ   r¶   Úouts   &&&& r,   Údropout_addr½   À   s    € ô �)Š)�A¨Ô
1€CØ
�.€CØ€Jr/   c                   ó|   a a€ ] tR t^Ót o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V3R lR lltR	tVt	V ;t
# )ÚFalconAttentionc                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   ÚFalconAttention.__annotate__Ô   s   ø€ ÷ (rñ (r™|ñ (rr/   c                ó”  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        V P                  V P
                  ,          V n        V P                  V n        VP                  V n        VP                  V n	        R V n
        W n        Vf.   \        P                  RV P                  P                   R24       V P                  V P
                  ,          V P                  8w  d'   \!        RV P                   RV P
                   R24      hR\"        P$                  ! V P                  4      ,          V n        V P&                  V n        VP*                  '       d7   VP,                  ^,          VP                  ,           V P                  ,          pMJVP.                  '       d&   V P                  ^V P                  ,          ,           pM^V P                  ,          p\1        V P                  W1P2                  R7      V n        VP*                  V n        VP.                  V n        \1        V P                  V P                  VP2                  R7      V n        \8        P:                  ! VP<                  4      V n        V P*                  '       g   V P.                  '       g   VP,                  V n        R# ^V n        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.zA`hidden_size` must be divisible by num_heads (got `hidden_size`: z and `num_heads`: z).ru   ©r4   )r`   ra   rZ   ry   rz   r™   rt   Ú
split_sizeÚhidden_dropoutrb   Ú	is_causalÚ	layer_idxÚloggerÚwarning_oncerm   r:   Ú
ValueErrorr�   ÚsqrtÚinv_norm_factorÚbetaÚnew_decoder_architectureÚnum_kv_headsÚmulti_queryr"   r4   Úquery_key_valueÚdenser   ÚDropoutÚattention_dropout)r5   rZ   rÇ   Úqkv_out_dimrm   s   &&& €r,   ra   ÚFalconAttention.__init__Ô   s%  ø€ Ü‰ÑÔàŒØ!×-Ñ-ˆÔØ×3Ñ3ˆŒØ×(Ñ(¨D¯N©NÕ:ˆŒØ×*Ñ*ˆŒØ$×3Ñ3ˆÔØ'-×'EÑ'EˆÔ$àˆŒØ"ŒØÒÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð �=‰=˜4Ÿ>™>Õ)¨T×-=Ñ-=Ô=ÜØSÐTX×TdÑTdÐSeð fØ—N‘NÐ# 2ð'óð ð  #¤T§Y¢Y¨t¯}©}Ó%=Õ=ˆÔØ×(Ñ(ˆŒ	Ø×*×*Ð*Ø!×.Ñ.°Õ2°V×5OÑ5OÕOÐSW×S`ÑS`Õ`‰KØ××ÐØ×*Ñ*¨Q°·±Õ->Õ>‰Kà˜d×.Ñ.Õ.ˆKÜ+¨D×,<Ñ,<¸k×P[ÑP[Ô\ˆÔØ(.×(GÑ(GˆÔ%Ø!×-Ñ-ˆÔÜ! $×"2Ñ"2°D×4DÑ4DÈ6Ï;É;ÔWˆŒ
Ü!#§¢¨F×,DÑ,DÓ!EˆÔØ48×4Q×4QÐ4QÐY]×Yi×YiÐYi˜F×/Ñ/ˆÖÐpqˆÖr/   c                ó�   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  S[ P                  3,          /# )r$   Ú	fused_qkvr&   )r(   r)   rp   )r*   r+   s   "€r,   r-   rÁ   þ   s>   ø€ ÷ \ñ \¡e§l¡lð \±u¹U¿\¹\É5Ï<É<ÑY^×YeÑYeÐ=eÕ7fñ \r/   c                ó†  € V P                   '       då   VP                  w  r#pVP                  W#RV P                  V P                  ,          ^,           V P
                  4      pVRRRRR13,          pVRRRR.3,          pVRRRR.3,          p\        P                  ! WvP                  4      p\        P                  ! W†P                  4      pWgV3 U	u. uF  q™P                  ^^4      NK  	  up	w  rgpWgV3# V P                  '       gR   VP                  w  r«pVP                  W«V P                  ^V P
                  4      pVR,          VR,          VR,          3# VP                  w  r«pVP                  W«V P                  ^,           V P
                  4      pVRRR1R3,          VRR.R3,          VRR.R3,          3# u up	i )	ap  
Split the last dimension into (num_heads, head_dim), results share same memory storage as `fused_qkv`

Args:
    fused_qkv (`torch.tensor`): [batch_size, seq_length, num_heads * 3 * head_dim]

Returns:
    query: [batch_size, seq_length, num_heads, head_dim] key: [batch_size, seq_length, num_heads, head_dim]
    value: [batch_size, seq_length, num_heads, head_dim]
r†   N.rC   éþÿÿÿ).é    r†   ).é   r†   ).r$   r†   )
rÎ   rD   Úviewr™   rÏ   rt   r(   Úbroadcast_toÚflattenrÐ   )r5   rØ   ÚbatchÚseq_lenÚ_ÚqkvÚqueryÚkeyÚvaluerF   r¨   r©   Úthree_times_hidden_sizes   &&           r,   Ú_split_headsÚFalconAttention._split_headsþ   s®  € ð ×(×(Ð(Ø )§¡ÑˆE˜AØ—.‘. °°T·^±^Àt×GXÑGXÕ5XÐ[\Õ5\Ð^b×^kÑ^kÓlˆCØ˜˜1˜a  " ˜Õ%ˆEØ�a˜˜A ˜t�mÕ$ˆCØ˜˜1˜a " ˜Õ&ˆEÜ×$Ò$ S¯+©+Ó6ˆCÜ×&Ò& u¯k©kÓ:ˆEà;@ÀuÑ:MÓ NÑ:M°Q§¡¨1¨a¦Ñ:MÑ NÑˆE˜Ø˜uÐ$Ð$Ø×!×!Ð!Ø>G¿o¹oÑ;ˆJÐ$;Ø!Ÿ™ z¸t¿~¹~ÈqÐRV×R_ÑR_Ó`ˆIØ˜YÕ'¨°9Õ)=¸yÈÕ?SÐSÐSà>G¿o¹oÑ;ˆJÐ$;Ø!Ÿ™ z¸t¿~¹~ÐPQÕ?QÐSW×S`ÑS`ÓaˆIØ˜S # 2 # q˜[Õ)¨9°S¸2¸$À°\Õ+BÀIÈcÐTVÐSWÐYZÈlÕD[Ð[Ð[ùò !Os   ÃF>c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r$   rF   r&   r'   )r*   r+   s   "€r,   r-   rÁ     s'   ø€ ÷ Qñ Q™eŸl™lð Q©u¯|©|ñ Qr/   c                ó  € VP                   w  r#pW P                  ,          pVP                  WPP                  W0P                  4      pVP	                  ^ ^^^4      pVP                  WSV P                  V P                  ,          4      # )zÇ
Merge heads together over the last dimension

Args:
    x (`torch.tensor`): [batch_size * num_heads, seq_length, head_dim]

Returns:
    torch.tensor: [batch_size, seq_length, num_heads * head_dim]
)rD   r™   rÝ   rt   Úpermuter§   )r5   rF   Úbatch_size_and_num_headsr©   râ   r¨   s   &&    r,   Ú_merge_headsÚFalconAttention._merge_heads  so   € ð 34·'±'Ñ/Ð ¨aØ-·±Õ?ˆ
ð �F‰F�:Ÿ~™~¨z¿=¹=ÓIˆð �I‰I�a˜˜A˜qÓ!ˆð �y‰y˜°·±À$Ç-Á-Õ1OÓPÐPr/   c                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  RS[ P                  R,          RS[R,          RS[RS[R	S[S[ P                  S[ P                  3,          R,          /# ©
r$   r6   r±   Nr˜   r�   Ú
layer_pastÚ	use_cacheÚoutput_attentionsÚposition_embeddings©r(   r)   Ú
LongTensorr   r·   rp   )r*   r+   s   "€r,   r-   rÁ   7  sœ   ø€ ÷ o0ñ o0á—|‘|ðo0ñ �|‰|˜dÕ"ðo0ñ Ÿ™ð	o0ñ
 ×&Ñ&¨Õ-ðo0ñ ˜D•Lðo0ñ ðo0ñ  ðo0ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEño0r/   c	           	     óø	  € V P                  V4      p
V P                  '       d   V P                  MV P                  pV P	                  V
4      w  rÍpVP
                  w  pp pVP                  ^^4      P                  WðP                  VV P                  4      pVP                  ^^4      P                  WûVV P                  4      pVP                  ^^4      P                  WûVV P                  4      pVf   Vw  pp\        WÍVV4      w  rÍVe   VP                  WÞV P                  4      w  rÞVP
                  R,          pVEfk   V P                  P                  R8X  d`   V'       gX   V P                  ;'       d    VRJ ;'       d    V^8„  p\        P                   P"                  P%                  VVVVRVR7      pRpMrWÍP                  RR4      ,          pV\&        P(                  ! V P                  4      ,          p\*        P,                  ! VV,           RVP.                  R7      pVV,          pVP1                  WðP                  VV P                  4      pVP3                  ^ ^^^4      pVP                  VVV P                  V P                  ,          4      pV P5                  V4      pVV3# V P                  P                  R8X  dÜ   V'       gÔ   V P                  ;'       d    VRJ ;'       d    V^8„  p\        P                   P"                  P%                  TTTTV P6                  '       d   V P8                  P:                  MRVR7      pRpVP                  ^^4      pVP                  VVV P                  V P                  ,          4      pV P5                  V4      pVV3# WÍP                  RR4      ,          pVP1                  WðP                  VV4      pVP.                  pV\        P<                  8X  g   V\        P>                  8X  d    VPA                  \        PB                  4      pVVP1                  WðP                  ^R4      ,           pVV PD                  ,          p\*        P,                  ! VV,           RVP.                  R7      pV P9                  V4      pVP1                  WðP                  VV4      pVV,          PG                  ^ ^4      pV PI                  V4      pV P5                  V4      pVV3# )rÜ   NÚsdpaç        )Ú	attn_maskÚ	dropout_prÆ   )rB   rw   rÚ   rC   )%rÑ   rÎ   r™   rÏ   rè   rD   rŒ   r§   rt   rS   ÚupdaterÇ   rZ   Ú_attn_implementationrÆ   r(   r   r   Úscaled_dot_product_attentionr�   rË   rº   Úsoftmaxrw   rÝ   rí   rÒ   r¶   rÔ   r¹   Úfloat16r¦   r|   r¡   rÌ   rß   rï   )r5   r6   r±   r˜   r�   ró   rô   rõ   rö   r}   rØ   rÏ   Úquery_layerÚ	key_layerÚvalue_layerr¨   Úquery_lengthrâ   rN   rO   Ú	kv_lengthrÆ   Úattn_outputÚattention_scoresÚattention_probsÚmatmul_resultÚinput_dtypeÚattention_logitsÚattention_probs_reshapeds   &&&&&&&&&,                   r,   r7   ÚFalconAttention.forward7  sw  € ð ×(Ñ(¨Ó7ˆ	Ø)-×)F×)FÐ)F�t—~’~ÈD×L]ÑL]ˆà04×0AÑ0AÀ)Ó0LÑ-ˆ à)4×):Ñ):Ñ&ˆ
�L ! Qà!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÇnÁnÐVbÐdh×dqÑdqÓrˆØ×'Ñ'¨¨1Ó-×5Ñ5°jÐP\Ð^b×^kÑ^kÓlˆ	Ø!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÐT`Ðbf×boÑboÓpˆàŠ=Ø*‰HˆC�Ü%9¸+ÐRUÐWZÓ%[Ñ"ˆKàÒ!Ø%/×%6Ñ%6°yÈtÏ~É~Ó%^Ñ"ˆIà—O‘O BÕ'ˆ	à‹=Ø�{‰{×/Ñ/°6Ô9×BSð
 !ŸN™N×ZÐZ¨~ÀÐ/E×ZÐZÈ,ÐYZÑJZ�	Ü#Ÿh™h×1Ñ1×NÑNØØØØ,Ø!Ø'ð Oó �ð $(Ñ à#.×1DÑ1DÀRÈÓ1LÕ#LÐ Ø ¤D§I¢I¨d¯m©mÓ$<Õ<Ð ä#$§9¢9Ð-=ÀÕ-NÐTVÐ^k×^qÑ^qÔ#rÐ à.°Õ<�à%×*Ñ*¨:·~±~À|ÐUY×UbÑUbÓcˆKØ%×-Ñ-¨a°°A°qÓ9ˆKØ%×-Ñ-¨j¸,ÈÏÉÐY]×YfÑYfÕHfÓgˆKàŸ*™* [Ó1ˆKàÐ 0Ð0Ð0ð �{‰{×/Ñ/°6Ô9×BSð !ŸN™N×ZÐZ¨~ÀÐ/E×ZÐZÈ,ÐYZÑJZ�	Ü#Ÿh™h×1Ñ1×NÑNØØØØ,Ø:>¿-¿-¸-˜d×4Ñ4×6Ò6ÈSØ'ð Oó �ð #'�Ø)×3Ñ3°A°qÓ9�Ø)×1Ñ1°*¸lÈDÏNÉNÐ]a×]jÑ]jÕLjÓk�à"Ÿj™j¨Ó5�ð<  Ð/Ð/ð9 !,×.AÑ.AÀ"ÀbÓ.IÕ I�ð $1×#5Ñ#5°jÇ.Á.ÐR^Ð`iÓ#jÐ ð /×4Ñ4�à¤%§-¡-Ô/°;Ä%Ç.Á.Ô3PØ'7×':Ñ':¼5¿=¹=Ó'IÐ$à#3°e·j±jÀÏ^É^Ð]^Ð`bÓ6cÕ#cÐ Ø  D×$8Ñ$8Õ8Ð Ü"#§)¢)Ð,<¸~Õ,MÐSUÐ]j×]pÑ]pÔ"q�à"&×"8Ñ"8¸Ó"I�ð ,;×+?Ñ+?À
ÏNÉNÐ\hÐjsÓ+tÐ(ð  8¸+ÕE×NÑNÈqÐRSÓT�ð #×/Ñ/°Ó<�à"Ÿj™j¨Ó5�à Ð/Ð/r/   )rÔ   rÍ   rZ   rÒ   rt   rÅ   ry   rÌ   rÆ   rÇ   rb   rÐ   rÎ   r™   rÏ   rÑ   rÄ   r1   ©NNFFN)r:   r;   r<   r=   ra   rè   rï   r7   r>   r?   r•   r–   s   @@r,   r¿   r¿   Ó   s=   ù‡ € ÷(rõ (r÷T\ð \÷@Qð Q÷2o0÷ o0ò o0r/   r¿   c                   óL   a a€ ] tR tRt oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚFalconFlashAttention2i©  a8  
Falcon flash attention module. This module inherits from `FalconAttention` as the weights of the module stays
untouched. The only required change would be on the forward pass where it needs to correctly call the public API of
flash attention and deal with padding tokens in case the input contains any of them.
c                óF   <€ \         SV `  ! V/ VB  \        4       V n        R # r1   )r`   ra   r   Ú_flash_attn_uses_top_left_mask)r5   Úargsr}   rm   s   &*,€r,   ra   ÚFalconFlashAttention2.__init__°  s#   ø€ Ü‰Ò˜$Ð) &Ò)ô
 /PÓ.QˆÖ+r/   c                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  RS[ P                  R,          RS[R,          RS[RS[R	S[S[ P                  S[ P                  3,          R,          /# rò   r÷   )r*   r+   s   "€r,   r-   Ú"FalconFlashAttention2.__annotate__¸  sœ   ø€ ÷ S)ñ S)á—|‘|ðS)ñ �|‰|˜dÕ"ðS)ñ Ÿ™ð	S)ñ
 ×&Ñ&¨Õ-ðS)ñ ˜D•LðS)ñ ðS)ñ  ðS)ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEñS)r/   c	                ól  € V P                  V4      p
V P                  '       d   V P                  MV P                  pV P	                  V
4      w  rÍpVP
                  w  pp pVP                  ^^4      P                  WðP                  VV P                  4      pVP                  ^^4      P                  WûVV P                  4      pVP                  ^^4      P                  WûVV P                  4      pVf   Vw  pp\        WÍVV4      w  rÍVe   VP                  WÞV P                  4      w  rÞVP                  ^^4      pVP                  ^^4      pVP                  ^^4      pVe   \        R4      hV P                  '       d   V P                  P                  MRpVP                   pVP"                  P$                  R8w  d   VP"                  P$                  MRpV\&        P(                  8X  dÓ   \&        P*                  ! V4      '       d   \&        P,                  ! V4      pMS\/        V P                  R4      '       d   V P                  P                   pM V P                   P0                  P                   p\2        P5                  RV R24       VP7                  V4      pVP7                  V4      pVP7                  V4      p\9        VVVVVVVV P:                  V P<                  R	7	      pVP                  VVV P                  V P                  ,          4      pV P?                  V4      pV'       g   RpVV3# )
rÜ   Nz6`alibi` is not supported when `use_flash_attn` is Truerû   r‚   rƒ   Ú_is_quantizedz¾The input hidden states seems to be silently casted in float32, this might be related to the fact you have upcasted embedding or layer norm layers in float32. We will cast back the input in Ú.)r�   r»   rÆ   Úuse_top_left_mask) rÑ   rÎ   r™   rÏ   rè   rD   rŒ   r§   rt   rS   rþ   rÇ   rÊ   r¶   rZ   rÔ   rw   rV   rŠ   r(   r¡   Úis_autocast_enabledÚget_autocast_dtypeÚhasattrr2   rÈ   rÉ   r|   r    rÆ   r  rÒ   )r5   r6   r±   r˜   r�   ró   rô   rõ   rö   r}   rØ   rÏ   r  r  r  r¨   r  râ   rN   rO   Úattn_dropoutr  r„   Útarget_dtyper  Úattn_weightss   &&&&&&&&&,                r,   r7   ÚFalconFlashAttention2.forward¸  sÔ  € ð ×(Ñ(¨Ó7ˆ	Ø)-×)F×)FÐ)F�t—~’~ÈD×L]ÑL]ˆà04×0AÑ0AÀ)Ó0LÑ-ˆ à)4×):Ñ):Ñ&ˆ
�L ! Qà!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÇnÁnÐVbÐdh×dqÑdqÓrˆØ×'Ñ'¨¨1Ó-×5Ñ5°jÐP\Ð^b×^kÑ^kÓlˆ	Ø!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÐT`Ðbf×boÑboÓpˆàŠ=Ø*‰HˆC�Ü%9¸+ÐRUÐWZÓ%[Ñ"ˆKàÒ!Ø%/×%6Ñ%6°yÈtÏ~É~Ó%^Ñ"ˆIð "×+Ñ+¨A¨qÓ1ˆØ×'Ñ'¨¨1Ó-ˆ	Ø!×+Ñ+¨A¨qÓ1ˆàÒÜÐUÓVÐVà8<¿¿¸�t—{‘{×4Ò4È3ˆð
 "×'Ñ'ˆØ1<×1CÑ1C×1HÑ1HÈEÔ1Q�k×(Ñ(×-Ò-ÐW\ˆØœ%Ÿ-™-Ô'Ü×(Ò(¨×5Ò5Ü$×7Ò7¸ÓD‘ä˜Ÿ™ o×6Ò6Ø#Ÿ{™{×0Ñ0‘à#×3Ñ3×:Ñ:×@Ñ@�ä×Ñðà �> ð$ôð &Ÿ.™.¨Ó6ˆKØ!Ÿ™ \Ó2ˆIØ%Ÿ.™.¨Ó6ˆKä.ØØØØØØ%Ø Ø—n‘nØ"×AÑAô

ˆð #×*Ñ*¨:°|ÀTÇ^Á^ÐVZ×VcÑVcÕEcÓdˆØ—j‘j Ó.ˆç ØˆLà˜LÐ(Ð(r/   )r  r  )
r:   r;   r<   r=   Ú__doc__ra   r7   r>   r?   r•   r–   s   @@r,   r  r  ©  s"   ù‡ € ñõR÷S)÷ S)ò S)r/   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú	FalconMLPi  c                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   ÚFalconMLP.__annotate__  s   ø€ ÷ 4ñ 4™|ñ 4r/   c                ó*  <€ \         SV `  4        VP                  p\        W!P                  VP
                  R 7      V n        \        VP                  4      V n	        \        VP                  W!P
                  R 7      V n
        VP                  V n        R# )rÃ   N)r`   ra   ry   r"   Úffn_hidden_sizer4   Údense_h_to_4hr
   Ú
activationÚactÚdense_4h_to_hrÅ   )r5   rZ   ry   rm   s   && €r,   ra   ÚFalconMLP.__init__  sp   ø€ Ü‰ÑÔØ×(Ñ(ˆä)¨+×7MÑ7MÐTZ×T_ÑT_Ô`ˆÔÜ! &×"3Ñ"3Ó4ˆŒÜ)¨&×*@Ñ*@À+×T_ÑT_Ô`ˆÔØ$×3Ñ3ˆÖr/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rë   r'   )r*   r+   s   "€r,   r-   r(    s#   ø€ ÷ ñ ™Ÿ™ð ©%¯,©,ñ r/   c                óh   € V P                  V P                  V4      4      pV P                  V4      pV# r1   )r-  r+  r.  )r5   rF   s   &&r,   r7   ÚFalconMLP.forward  s0   € Ø�H‰H�T×'Ñ'¨Ó*Ó+ˆØ×Ñ˜qÓ!ˆØˆr/   )r-  r.  r+  rÅ   ©	r:   r;   r<   r=   ra   r7   r>   r?   r•   r–   s   @@r,   r&  r&    s   ù‡ € ÷4ó 4÷÷ ð r/   r&  Úeagerrú   Úflash_attention_2c                   óX   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tRtVtV ;t# )	ÚFalconDecoderLayeri%  c                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   ÚFalconDecoderLayer.__annotate__&  s   ø€ ÷ ]ñ ]™|ñ ]r/   c                óš  <€ \         SV `  4        VP                  pVP                  V n        \
        VP                  ,          ! W4      V n        \        V4      V n	        VP                  V n
        Wn        VP                  f   VP                  '       d   ^Vn        VP                  '       g9   \        W1P                   R7      V n        \        W1P                   R7      V n        R # VP                  ^8X  d9   \        W1P                   R7      V n        \        W1P                   R7      V n        R # \        W1P                   R7      V n        R # )N©Úeps)r`   ra   ry   rz   r™   ÚFALCON_ATTENTION_CLASSESrÿ   Úself_attentionr&  ÚmlprÅ   rZ   Únum_ln_in_parallel_attnrÎ   Úparallel_attnr   Úlayer_norm_epsilonÚpost_attention_layernormÚinput_layernormÚln_attnÚln_mlp)r5   rZ   rÇ   ry   rm   s   &&& €r,   ra   ÚFalconDecoderLayer.__init__&  sô   ø€ Ü‰ÑÔØ×(Ñ(ˆØ×3Ñ3ˆŒä6°v×7RÑ7RÖSÐTZÓfˆÔÜ˜VÓ$ˆŒØ$×3Ñ3ˆÔØŒà×)Ñ)Ò1°f×6U×6UÐ6UØ-.ˆFÔ*à×#×#Ð#Ü,5°k×G`ÑG`Ô,aˆDÔ)Ü#,¨[×>WÑ>WÔ#XˆDÖ à×-Ñ-°Ô2ä(¨×:SÑ:SÔT�”ä'¨×9RÑ9RÔS�–ä'0°×B[ÑB[Ô'\�Ö$r/   c                ó^  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  RS[ P                  R,          RS[S[S[ P                  S[ P                  3,          ,          R,          RS[RS[R	S[S[ P                  S[ P                  3,          R,          /# rò   )r(   r)   rø   r   rp   r·   )r*   r+   s   "€r,   r-   r9  ?  sª   ø€ ÷ 8$ñ 8$á—|‘|ð8$ñ �|‰|˜dÕ"ð8$ñ Ÿ™ð	8$ñ
 ×&Ñ&¨Õ-ð8$ñ ™E¡%§,¡,±·±Ð"<Õ=Õ=ÀÕDð8$ñ ð8$ñ  ð8$ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEñ8$r/   c	                ó®  € Tp
V P                   P                  '       d?   V P                   P                  ^8X  d$   V P                  V4      pV P	                  V4      pMV P                  V4      pV P                  VVVVVVVVR7      w  rÞV P                   P                  '       g]   V P                   P                  '       d   TpM=\        WÚV P                   P                  V P                  R7      p
V P                  V
4      pV P                   P                  '       d:   V P                   P                  '       d   V P                   P                  ^8X  d   TpV P                  X4      pV P                   P                  '       g   V P                   P                  '       d	   Wý,          p\        WúV P                   P                  V P                  R7      pVV3# )r$   )ró   r˜   r�   r±   rô   rõ   rö   )r¶   )rZ   rÎ   r@  rE  rF  rD  r>  rA  r½   rÔ   r¶   rC  r?  rÅ   )r5   r6   r±   r˜   r�   ró   rô   rõ   rö   r}   r´   Úattention_layernorm_outÚmlp_layernorm_outÚattention_outputr"  Ú
mlp_outputÚoutputs   &&&&&&&&&,       r,   r7   ÚFalconDecoderLayer.forward?  s†  € ð !ˆà�;‰;×/×/Ð/°D·K±K×4WÑ4WÐ[\Ô4\Ø&*§l¡l°=Ó&AÐ#Ø $§¡¨MÓ :Ñà&*×&:Ñ&:¸=Ó&IÐ#ð *.×)<Ñ)<Ø#Ø!Ø)Ø%ØØØ/Ø 3ð *=ó 	*
Ñ&Ðð �{‰{×3×3Ð3Ø�{‰{×(×(Ð(Ø$;Ñ!ä&Ø$°·±×0MÑ0MÐX\×XeÑXeô�ð %)×$AÑ$AÀ(Ó$KÐ!ð �K‰K×0×0Ð0Ø—‘×)×)Ð)Ø—‘×3Ñ3°qÔ8à 7Ðð —X‘XÐ/Ó0ˆ
à�;‰;×/×/Ð/°4·;±;×3L×3LÐ3LØÕ*ˆJä˜Z°4·;±;×3MÑ3MÐX\×XeÑXeÔfˆà�|Ð#Ð#r/   )	rZ   rÅ   rD  rE  rF  r?  r™   rC  r>  r1   r  r3  r–   s   @@r,   r7  r7  %  s    ù‡ € ÷]õ ]÷28$÷ 8$ò 8$r/   r7  c                   ó¬   a a€ ] tR tRt oRtRtR.tRtRtRt	]
P                  ! 4       V3R lV 3R ll4       t]RV3R lR ll4       tV3R	 ltR
tVtV ;t# )ÚFalconPreTrainedModeliz  ÚtransformerTr7  c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r$   Úmodule)r   ÚModule)r*   r+   s   "€r,   r-   Ú"FalconPreTrainedModel.__annotate__…  s   ø€ ÷ )ñ )¡B§I¡Iñ )r/   c                ó$  <€ \         SV `  V4       \        V\        4      '       dj   \        P
                  ! VP                  RV P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# R# )zInitialize the weights.rû   )ÚmeanÚstdN)r`   Ú_init_weightsr‰   r"   ÚinitÚnormal_r2   rZ   Úinitializer_ranger4   Úzeros_)r5   rT  rm   s   &&€r,   rZ  Ú#FalconPreTrainedModel._init_weights„  sa   ø€ ô 	‰Ñ˜fÔ%Ü�fœl×+Ò+Ü�LŠL˜Ÿ™¨S°d·k±k×6SÑ6SÕTØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ñ ,r/   c                ó    <€ V ^8„  d   QhRS[ /# )r$   Úhard_check_only)r·   )r*   r+   s   "€r,   r-   rV  �  s   ø€ ÷ ñ ¹Tñ r/   c                óR   € \        V R R4      pV'       d   V# V'       g   RVn        V# )Úuse_bettertransformerFrú   )rx   rÿ   )ÚclsrZ   ra  Ú_is_bettertransformers   &&& r,   Ú_check_and_enable_sdpaÚ,FalconPreTrainedModel._check_and_enable_sdpaŽ  s*   € ä '¨Ð-DÀeÓ LÐß ØˆMçØ*0ˆFÔ'Øˆr/   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rY   r   )r*   r+   s   "€r,   r-   rV  z  s   ø‡ ‚ áÑò r/   r9   )F)r:   r;   r<   r=   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphr(   r”   rZ  Úclassmethodrf  Ú__annotate_func__r>   r?   r•   r–   s   @@r,   rQ  rQ  z  sj   ù‡ € ð &ÐØ&*Ð#Ø-Ð.ÐØÐØ€NØ!Ðà
‡]‚]ƒ_÷)ò )ó ð)ð ÷ñ ó ð÷+ … r/   rQ  c                   óv   a a€ ] tR tRt oV3R lV 3R lltR tV3R lR lt]R
V3R lR ll4       tR	t	Vt
V ;t# )ÚFalconModeli™  c                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   ÚFalconModel.__annotate__›  s   ø€ ÷ ñ ™|ñ r/   c           
     ó"  <€ \         SV `  V4       VP                  V n        VP                  V n        VP                  V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! \        VP                  4       Uu. uF  p\        WR 7      NK  	  up4      V n        \#        V P                  VP$                  R7      V n        RV n        \+        VR7      V n        V P/                  4        R# u upi ))rÇ   r;  F©rZ   N)r`   ra   ry   Ú	embed_dimrz   r™   r±   Ú	use_alibir   Ú	EmbeddingÚ
vocab_sizeÚword_embeddingsÚ
ModuleListÚrangeÚnum_hidden_layersr7  Úhr   rB  Úln_fÚgradient_checkpointingrU   Ú
rotary_embÚ	post_init)r5   rZ   Úirm   s   && €r,   ra   ÚFalconModel.__init__›  sÊ   ø€ Ü‰Ñ˜Ô à×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™ˆŒô  "Ÿ|š|¨F×,=Ñ,=¸t¿~¹~ÓNˆÔô —’ÔQVÐW]×WoÑWoÔQpÓqÑQpÈAÔ 2°6× GÑQpÑqÓrˆŒô ˜dŸn™n°&×2KÑ2KÔLˆŒ	Ø&+ˆÔ#Ü/°vÔ>ˆŒð 	�‰Öùò  rs   ÂDc                ó   € V P                   # r1   ©r{  )r5   s   &r,   Úget_input_embeddingsÚ FalconModel.get_input_embeddings°  s   € Ø×#Ñ#Ð#r/   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r$   Únew_embeddingsr'   )r*   r+   s   "€r,   r-   rt  ³  s   ø€ ÷ .ñ .±5·<±<ñ .r/   c                ó   € Wn         R # r1   r‡  ©r5   rŒ  s   &&r,   Úset_input_embeddingsÚ FalconModel.set_input_embeddings³  s   € Ø-Ör/   c                ó\  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          R	S[R,          R
S[R,          RS[S[ P                  R3,          S[,          /
# )r$   Ú	input_idsNÚpast_key_valuesr˜   r�   Úinputs_embedsrô   rõ   Úoutput_hidden_statesÚreturn_dictr&   .)r(   rø   r   r)   r·   rp   r   )r*   r+   s   "€r,   r-   rt  ·  sÍ   ø€ ÷ F
ñ F
á×#Ñ# dÕ*ðF
ñ  �ðF
ñ Ÿ™ tÕ+ð	F
ñ
 ×&Ñ&¨Õ-ðF
ñ ×'Ñ'¨$Õ.ðF
ñ ˜$•;ðF
ñ   $�;ðF
ñ # T�kðF
ñ ˜D•[ðF
ñ 
‰u�|‰|˜SÐ Õ	!Ñ$MÕ	MñF
r/   c
                ó˜  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV	e   T	MV P                   P                  p	VRJ VRJ,          '       d   \        R4      hV P                  '       d2   V P                  '       d    V'       d   \        P                  R4       RpVf   V P                  V4      pV'       d   Vf   \        V P                   R7      pRpVe   VP                  4       M^ pVP                  w  rÞpV P                  '       db   Vf:   \        P                   ! WÞV,           3VP"                  \        P$                  R7      MTp\'        VV P(                  VP*                  R7      pVfb   Ve   VP                  4       M^ p\        P,                  ! VP                  ^,          VP"                  R7      V,           pVP/                  ^ 4      p\1        V P                   VVVRR	7      pVEe&   VEe!   VP2                  ^8X  Ed   \        P4                  ! VP*                  4      P6                  pVP*                  \        P8                  8X  dE   \        P:                  ! V\        P<                  ! RR
VP"                  VP*                  R7      V4      pVP>                  ! VR.VP                  R,          O5!  p\        P@                  ! V\B        PD                  ! V P                   PF                  V P(                  ,          4      ,          VR8  V4      pTpV PI                  VVR7      pV'       d   RMRpV'       d   RMRp\K        V PL                  4       FL  w  ppV'       d   VV3,           pV! VVVVVVVVR7      pV^ ,          pV'       g   K;  VV^,          3,           pKN  	  V PO                  V4      pV'       d   VV3,           pV	'       g5   \P        ;QJ d    . R VVVV3 4       F  NK  	  5# ! R VVVV3 4       4      # \S        VVVVR7      # )áj  
input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
    `input_ids_length` = `sequence_length` if `past_key_values` is `None` else `past_key_values.get_seq_length()`
    (`sequence_length` of input past key value states). Indices of input sequence tokens in the vocabulary.

    If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
    `input_ids`.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for details.

    [What are input IDs?](../glossary#input-ids)
Nz:You must specify exactly one of input_ids or inputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...Frv  rœ   rv   ©rV   )rZ   r”  r˜   r“  Úallow_is_causal_skiprû   ºrÜ   NN)r�   )ró   r˜   r�   rô   rõ   r±   rö   c              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir1   r9   )Ú.0Úvs   & r,   Ú	<genexpr>Ú&FalconModel.forward.<locals>.<genexpr>4  s   é € ð Ùc�a—’Ócùs   ‚Œ
)Úlast_hidden_stater“  r6   Ú
attentionsr9   rC   )*rZ   rõ   r•  rô   r–  rÊ   r�  r¶   rÈ   rÉ   r{  r   Úget_seq_lengthrD   rx  r(   ÚonesrV   Úlongr²   r™   rw   r{   rK   r   ÚndimÚfinfor¤   r·   Úwherer    r§   Úmasked_fillr�   rË   ry   r‚  Ú	enumerater  r€  rp   r   )r5   r’  r“  r˜   r�   r”  rô   rõ   r•  r–  r}   r±   Úpast_key_values_lengthr¨   r©   râ   ÚmaskÚpast_seen_tokensÚcausal_maskÚ	min_dtyper6   rö   Úall_self_attentionsÚall_hidden_statesr„  ÚblockÚoutputss   &&&&&&&&&&,                r,   r7   ÚFalconModel.forward¶  sÝ  € ð6 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð "+Ò!6‘I¸D¿K¹K×<QÑ<Qˆ	Ø%0Ò%<‘kÀ$Ç+Á+×BYÑBYˆà˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZà×&×&Ð&¨4¯=¯=¨=ßÜ×#Ñ#Øpôð "�	àÒ Ø ×0Ñ0°Ó;ˆMç˜Ò0Ü*°$·+±+Ô>ˆOð ˆØETÒE` ×!?Ñ!?Ô!AÐfgÐØ$1×$7Ñ$7Ñ!ˆ
 Ø�>�>ˆ>ð
 "Ò)ô —
’
ØÐ.DÕ!DÐEÈm×NbÑNbÔjo×jtÑjtõð $ð ô ' t¨T¯^©^À=×CVÑCVÔWˆEàÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×1Ñ1°!Ó4ˆLä(Ø—;‘;Ø'Ø)Ø+à!&ô
ˆð Ó Ó!8¸[×=MÑ=MÐQRÕ=RÜŸš M×$7Ñ$7Ó8×<Ñ<ˆIð × Ñ ¤E§J¡JÔ.Ü#ŸkškØ¤§¢¨B°¸K×<NÑ<NÐVc×ViÑViÔ!jÐluó�ð
 —M’M *¨bÐC°5·;±;¸rµ?ÓCˆEÜ×+Ò+ØœŸ	š	 $§+¡+×"9Ñ"9¸T¿^¹^Õ"KÓLÕLØ˜bÑ ØóˆKð &ˆØ"Ÿo™o¨mÈ,˜oÓWÐç$5™b¸4Ðß"6™B¸DÐä! $§&¡&Ö)‰HˆAˆuß#Ø$5¸Ð8HÕ$HÐ!áØØ*Ø*Ø)Ø#Ø"3ØØ$7ô	ˆGð $ A�JˆMß Ñ Ø&9¸WÀQ½Z¸MÕ&IÒ#ñ# *ð( Ÿ	™	 -Ó0ˆçØ 1°]Ð4DÕ DÐçß”5ñ Ø)¨?Ð<MÐObÑcó—5ð �5ñ Ø)¨?Ð<MÐObÑcóó ð ô 9Ø+Ø+Ø+Ø*ô	
ð 	
r/   )rw  r�  r  r€  r™   r‚  rx  r{  ©	NNNNNNNNN)r:   r;   r<   r=   ra   rˆ  r�  r   r7   r>   r?   r•   r–   s   @@r,   rr  rr  ™  s@   ù‡ € ÷ó ò*$÷.ð .ð ÷F
ñ F
ó ÷F
ð F
r/   rr  z…
    The Falcon Model transformer with a language modeling head on top (linear layer with weights tied to the input embeddings).
    )Úcustom_introc                   óx   a a€ ] tR tRt oRR/tV3R lV 3R lltV3R lR lt]RV3R lR	 ll4       tR
t	Vt
V ;t# )ÚFalconForCausalLMi@  zlm_head.weightz"transformer.word_embeddings.weightc                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   ÚFalconForCausalLM.__annotate__H  s   ø€ ÷ ñ ™|ñ r/   c                óÊ   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  VP                  R R7      V n        V P                  4        R# ©FrÃ   N)
r`   ra   rr  rR  r   ÚLinearry   rz  Úlm_headrƒ  ©r5   rZ   rm   s   &&€r,   ra   ÚFalconForCausalLM.__init__H  sI   ø€ Ü‰Ñ˜Ô Ü& vÓ.ˆÔÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Ör/   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r‹  r'   )r*   r+   s   "€r,   r-   rº  P  s   ø€ ÷ &ñ &±E·L±Lñ &r/   c                ó   € Wn         R # r1   )r¾  rŽ  s   &&r,   Úset_output_embeddingsÚ'FalconForCausalLM.set_output_embeddingsP  s   € Ø%Žr/   c                óª  <€ V ^8„  d   Qh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[R,          R	S[R,          R
S[R,          RS[R,          RS[S[ P                  ,          RS[S[ P                  ,          S[,          /# )r$   r’  Nr“  r˜   r�   r”  Úlabelsrô   rõ   r•  r–  Úlogits_to_keepr&   )r(   rø   r   r)   r·   rš   rp   r   )r*   r+   s   "€r,   r-   rº  T  sî   ø€ ÷ F
ñ F
á×#Ñ# dÕ*ðF
ñ  �ðF
ñ Ÿ™ tÕ+ð	F
ñ
 ×&Ñ&¨Õ-ðF
ñ —|‘| dÕ*ðF
ñ —‘˜tÕ#ðF
ñ ˜$•;ðF
ñ   $�;ðF
ñ # T�kðF
ñ ˜D•[ðF
ñ ™eŸl™lÕ*ðF
ñ 
‰u�|‰|Õ	Ñ@Õ	@ñF
r/   c                ó  € V
e   T
MV P                   P                  p
V P                  VVVVVVVV	V
R7	      pV^ ,          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                  ! VV3RV P                   P                  /VB pV
'       g"   V3VR,          ,           pVe   V3V,           # T# \        VVVP                  VP                  VP                  R7      # )aô  
input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
    `input_ids_length` = `sequence_length` if `past_key_values` is `None` else `past_key_values.get_seq_length()`
    (`sequence_length` of input past key value states). Indices of input sequence tokens in the vocabulary.

    If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
    `input_ids`.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for details.

    [What are input IDs?](../glossary#input-ids)
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for language modeling. Note that the labels **are shifted** inside the model, i.e. you can set
    `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100`
    are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]`
N)r“  r˜   r�   r”  rô   rõ   r•  r–  r†   rz  r›  ©ÚlossÚlogitsr“  r6   r¢  )rZ   r–  rR  r‰   rš   Úslicer¾  Úloss_functionrz  r   r“  r6   r¢  )r5   r’  r“  r˜   r�   r”  rÆ  rô   rõ   r•  r–  rÇ  r}   Útransformer_outputsr6   Úslice_indicesÚ	lm_logitsrÊ  rN  s   &&&&&&&&&&&&,      r,   r7   ÚFalconForCausalLM.forwardS  s+  € ðD &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà"×.Ñ.ØØ+Ø)Ø%Ø'ØØ/Ø!5Ø#ð /ó 

Ðð ,¨AÕ.ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—L‘L ¨q°-ÀÐ/BÕ!CÓDˆ	àˆØÒØ×%Ò%ØØñð  Ÿ;™;×1Ñ1ðð ñ	ˆD÷ Ø�\Ð$7¸Õ$;Õ;ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä0ØØØ/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r/   )r¾  rR  )NNNNNNNNNNrÛ   )r:   r;   r<   r=   Ú_tied_weights_keysra   rÃ  r   r7   r>   r?   r•   r–   s   @@r,   r¸  r¸  @  sI   ù‡ € ð +Ð,PÐQÐ÷ó ÷&ð &ð ÷F
ñ F
ó ÷F
ð F
r/   r¸  aØ  
    The Falcon Model transformer with a sequence classification head on top (linear layer).

    [`FalconForSequenceClassification`] uses the last token in order to do the classification, as other causal models
    (e.g. GPT-1) do.

    Since it does classification on the last token, it requires to know the position of the last token. If a
    `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in each row. If
    no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the
    padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in
    each row of the batch).
    c                   ó^   a a€ ] tR tRt oV3R lV 3R llt]RV3R lR ll4       tRtVtV ;t	# )ÚFalconForSequenceClassificationi�  c                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   Ú,FalconForSequenceClassification.__annotate__¬  s   ø€ ÷ ñ ™|ñ r/   c                óì   <€ \         SV `  V4       VP                  V n        \        V4      V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# r¼  )
r`   ra   Ú
num_labelsrr  rR  r   r½  ry   Úscorerƒ  r¿  s   &&€r,   ra   Ú(FalconForSequenceClassification.__init__¬  sV   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ& vÓ.ˆÔÜ—Y’Y˜v×1Ñ1°6×3DÑ3DÈ5ÔQˆŒ
ð 	�‰Ör/   c                óX  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          R	S[R,          R
S[R,          RS[S[ P                  ,          S[,          /
# ©r$   r’  Nr“  r˜   r”  rÆ  rô   rõ   r•  r–  r&   )r(   rø   r   r)   r·   rp   r   )r*   r+   s   "€r,   r-   rÖ  ¶  sÄ   ø€ ÷ f
ñ f
á×#Ñ# dÕ*ðf
ñ  �ðf
ñ Ÿ™ tÕ+ð	f
ñ
 —|‘| dÕ*ðf
ñ —‘˜tÕ#ðf
ñ ˜$•;ðf
ñ   $�;ðf
ñ # T�kðf
ñ ˜D•[ðf
ñ 
‰u�|‰|Õ	Ñ?Õ	?ñf
r/   c
                ó
  € V	e   T	MV P                   P                  p	V P                  VVVVVVVV	R7      pV^ ,          pV P                  V4      pVe   VP                  ^ ,          pMVP                  ^ ,          pV P                   P
                  f   V^8w  d   \        R4      hV P                   P
                  f   RpMÍVeœ   WP                   P
                  8g  P                  VP                  \        P                  4      p\        P                  ! VP                  R,          VP                  \        P                  R7      pVV,          P                  R4      pM.Rp\        P                  V P                  P                    R24       V\        P                  ! WíP                  R7      V3,          pRpVEeq   V P                   P"                  f–   V P$                  ^8X  d   RV P                   n        MrV P$                  ^8”  dQ   VP&                  \        P(                  8X  g    VP&                  \        P*                  8X  d   RV P                   n        MR	V P                   n        V P                   P"                  R8X  dL   \-        4       pV P$                  ^8X  d'   V! VP/                  4       VP/                  4       4      pMgV! VV4      pM]V P                   P"                  R8X  d   \1        4       pV! VV4      pM.V P                   P"                  R	8X  d   \3        4       pV! VV4      pV	'       g"   V3VR
,          ,           pVe   V3V,           # T# \5        VVVP6                  VP8                  VP:                  R7      # )áÎ  
input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
    `input_ids_length` = `sequence_length` if `past_key_values` is `None` else `past_key_values.get_seq_length()`
    (`sequence_length` of input past key value states). Indices of input sequence tokens in the vocabulary.

    If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
    `input_ids`.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for details.

    [What are input IDs?](../glossary#input-ids)
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
N©r“  r˜   r”  rô   rõ   r•  r–  z=Cannot handle batch sizes > 1 if no padding token is defined.rœ   zŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`r™  Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr›  rÉ  rC   )rZ   r–  rR  rÙ  rD   Úpad_token_idrÊ   r|   rV   r(   r¢   r{   ÚargmaxrÈ   rÉ   rm   r:   Úproblem_typerØ  rw   r¥  rš   r   Úsqueezer   r   r   r“  r6   r¢  )r5   r’  r“  r˜   r”  rÆ  rô   rõ   r•  r–  r}   rÎ  r6   rË  r¨   Úlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesÚpooled_logitsrÊ  Úloss_fctrN  s   &&&&&&&&&&,           r,   r7   Ú'FalconForSequenceClassification.forwardµ  sè  € ð@ &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà"×.Ñ.ØØ+Ø)Ø'ØØ/Ø!5Ø#ð /ó 	
Ðð ,¨AÕ.ˆØ—‘˜MÓ*ˆàÒ Ø"Ÿ™¨Õ+‰Jà&×,Ñ,¨QÕ/ˆJà�;‰;×#Ñ#Ò+°
¸a´ÜÐ\Ó]Ð]Ø�;‰;×#Ñ#Ò+Ø!#ÑØÒ"à%¯©×)AÑ)AÑA×EÑEÀfÇmÁmÔUZ×U`ÑU`ÓaˆLÜ!ŸLšL¨¯©¸Õ)<ÀVÇ]Á]ÔZ_×ZeÑZeÔfˆMØ"/°,Õ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|š|¨J¿}¹}ÔMÐOaÐaÕbˆàˆØÓØ�{‰{×'Ñ'Ò/Ø—?‘? aÔ'Ø/;�D—K‘KÕ,Ø—_‘_ qÔ(¨f¯l©l¼e¿j¹jÔ.HÈFÏLÉLÔ\a×\eÑ\eÔLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ô7Ü"›9�Ø—?‘? aÔ'Ù# M×$9Ñ$9Ó$;¸V¿^¹^Ó=MÓN‘Dá# M°6Ó:‘DØ—‘×)Ñ)Ð-JÔJÜ+Ó-�Ù ¨vÓ6‘Ø—‘×)Ñ)Ð-IÔIÜ,Ó.�Ù ¨vÓ6�ßØ#Ð%Ð(;¸BÕ(?Õ?ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä/ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r/   )rØ  rÙ  rR  rµ  ©
r:   r;   r<   r=   ra   r   r7   r>   r?   r•   r–   s   @@r,   rÔ  rÔ  �  s1   ù‡ € ÷ó ð ÷f
ñ f
ó ÷f
ð f
r/   rÔ  c                   ó^   a a€ ] tR tRt oV3R lV 3R llt]RV3R lR ll4       tRtVtV ;t	# )ÚFalconForTokenClassificationi  c                ó    <€ V ^8„  d   QhRS[ /# rY   r   )r*   r+   s   "€r,   r-   Ú)FalconForTokenClassification.__annotate__!  s   ø€ ÷ ñ ™|ñ r/   c                ó’  <€ \         SV `  V4       VP                  V n        \        V4      V n        \        VR R4      e   VP                  pM\        VRR4      e   VP                  pMRp\        P                  ! V4      V n
        \        P                  ! VP                  VP                  4      V n        V P                  4        R# )Úclassifier_dropoutNrÅ   gš™™™™™¹?)r`   ra   rØ  rr  rR  rx   ró  rÅ   r   rÓ   r»   r½  ry   Ú
classifierrƒ  )r5   rZ   ró  rm   s   && €r,   ra   Ú%FalconForTokenClassification.__init__!  s£   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä& vÓ.ˆÔÜ�6Ð/°Ó6ÒBØ!'×!:Ñ!:ÑÜ�VÐ-¨tÓ4Ò@Ø!'×!6Ñ!6Ñà!$ÐÜ—z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰Ör/   c                óX  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          R	S[R,          R
S[R,          RS[S[ P                  ,          S[,          /
# rÜ  )r(   rø   r   r)   r·   rp   r   )r*   r+   s   "€r,   r-   rñ  3  sÄ   ø€ ÷ A
ñ A
á×#Ñ# dÕ*ðA
ñ  �ðA
ñ Ÿ™ tÕ+ð	A
ñ
 —|‘| dÕ*ðA
ñ —‘˜tÕ#ðA
ñ ˜$•;ðA
ñ   $�;ðA
ñ # T�kðA
ñ ˜D•[ðA
ñ 
‰u�|‰|Õ	Ñ4Õ	4ñA
r/   c
                ó  € V	e   T	MV P                   P                  p	V P                  VVVVVVVV	R7      pV^ ,          pV P                  V4      pV P	                  V4      pRpVeZ   VP
                  w  pp\        4       pV! VP                  VV,          V P                  4      VP                  VV,          4      4      pV	'       g"   V3VR,          ,           pVe   V3V,           # T# \        VVVP                  VP                  R7      # )rÞ  Nrß  ºr$   NN)rÊ  rË  r6   r¢  )rZ   r–  rR  r»   rô  rD   r   rÝ   rØ  r   r6   r¢  )r5   r’  r“  r˜   r”  rÆ  rô   rõ   r•  r–  r}   rÎ  r6   rË  rÊ  r¨   r©   rë  rN  s   &&&&&&&&&&,        r,   r7   Ú$FalconForTokenClassification.forward2  s  € ð@ &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà"×.Ñ.ØØ+Ø)Ø'ØØ/Ø!5Ø#ð /ó 	
Ðð ,¨AÕ.ˆØŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÒØ%+§\¡\Ñ"ˆJ˜
Ü'Ó)ˆHÙØ—‘˜J¨Õ3°T·_±_ÓEÀvÇ{Á{ÐS]Ð`jÕSjÓGkóˆD÷ Ø�YÐ!4°RÕ!8Õ8ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä$ØØØ-×;Ñ;Ø*×5Ñ5ô	
ð 	
r/   )rô  r»   rØ  rR  rµ  rí  r–   s   @@r,   rï  rï    s1   ù‡ € ÷ó ð" ÷A
ñ A
ó ÷A
ð A
r/   rï  c                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚFalconForQuestionAnsweringiw  c                ó²   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  ^4      V n        V P                  4        R# )r$   N)	r`   ra   rr  rR  r   r½  ry   Ú
qa_outputsrƒ  r¿  s   &&€r,   ra   Ú#FalconForQuestionAnswering.__init__y  sA   ø€ Ü‰Ñ˜Ô Ü& vÓ.ˆÔÜŸ)š) F×$6Ñ$6¸Ó:ˆŒð 	�‰Ör/   c                ó4  <€ V ^8„  d   Qh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[R,          R
S[S[,          /	# )r$   r’  Nr˜   r”  Ústart_positionsÚend_positionsrõ   r•  r–  r&   )r(   rø   ÚFloatTensorr·   rp   r   )r*   r+   s   "€r,   r-   Ú'FalconForQuestionAnswering.__annotate__‚  s¹   ø€ ÷ F
ñ F
á×#Ñ# dÕ*ðF
ñ ×)Ñ)¨DÕ0ðF
ñ ×(Ñ(¨4Õ/ð	F
ñ
 ×)Ñ)¨DÕ0ðF
ñ ×'Ñ'¨$Õ.ðF
ñ   $�;ðF
ñ # T�kðF
ñ ˜D•[ðF
ñ 
Ñ-Õ	-ñF
r/   c	           	     ón  € Ve   TMV P                   P                  pV P                  VVVVVVR7      p
V
^ ,          pV P                  V4      pVP	                  ^RR7      w  rÞVP                  R4      P                  4       pVP                  R4      P                  4       pRpVeÄ   VeÀ   \        VP                  4       4      ^8”  d   VP                  R4      p\        VP                  4       4      ^8”  d   VP                  R4      pVP                  ^4      pVP                  ^ V4      pVP                  ^ V4      p\        VR7      pV! WÔ4      pV! Wå4      pVV,           ^,          pV'       g"   WÞ3V
R,          ,           pVe   V3V,           # T# \        VVVV
P                  V
P                  R7      # )r˜  N)r˜   r”  rõ   r•  r–  rA   )Úignore_indexrø  )rÊ  Ústart_logitsÚ
end_logitsr6   r¢  rC   )rZ   r–  rR  rý  Úsplitræ  Ú
contiguousÚlenÚsizeÚclampr   r   r6   r¢  )r5   r’  r˜   r”  r   r  rõ   r•  r–  r}   r³  Úsequence_outputrË  r  r  Ú
total_lossÚignored_indexrë  Ú
start_lossÚend_lossrN  s   &&&&&&&&&,           r,   r7   Ú"FalconForQuestionAnswering.forward�  s±  € ð4 &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà×"Ñ"ØØ)Ø'Ø/Ø!5Ø#ð #ó 
ˆð " !�*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ó#:Ñ ˆØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆ
ØÒ&¨=Ò+Dä�?×'Ñ'Ó)Ó*¨QÔ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ô,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ-×3Ñ3°A°}ÓEˆOØ)×/Ñ/°°=ÓAˆMä'°]ÔCˆHÙ! ,Ó@ˆJÙ 
Ó:ˆHØ$ xÕ/°1Õ4ˆJçØ"Ð/°'¸"µ+Õ=ˆFØ/9Ò/E�Z�M FÕ*ÐQÈ6ÐQä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r/   )rý  rR  )NNNNNNNNrí  r–   s   @@r,   rû  rû  w  s,   ù‡ € õð ÷F
ñ F
ó ÷F
ð F
r/   rû  )rÜ   )r¸  rr  rQ  rÔ  rï  rû  )Jr$  r�   Úcollections.abcr   r(   r   Útorch.nnr   r   r   r   r   rº   Ú r	   r[  Úactivationsr
   Úcache_utilsr   r   Ú
generationr   Úmasking_utilsr   Úmodeling_flash_attention_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   Úutilsr   r   Úutils.deprecationr   Úutils.genericr   Úconfiguration_falconr   r    Ú
get_loggerr:   rÈ   r½  r"   rI   rS   rU  rU   r²   r½   r¿   r  r&  r=  r7  rQ  rr  r¸  rÔ  rï  rû  Ú__all__r9   r/   r,   Ú<module>r%     sá  ðñ ã Ý $ã Ý ß LÓ LÝ $å &Ý )ß .Ý )Ý /ß hÝ 9÷õ ÷õ .÷õ 1Ý +Ý .ñ ×ÒÝJà	×	Ò	˜HÓ	%€ô
)�2—9‘9ô )ò(ôô46<˜BŸI™Iô 6<õrJõ@ô&S0�b—i‘iô S0ôlb)˜Oô b)ôJ�—	‘	ô ð" ˆ_Ø
ˆOØÐ.ðÐ ôR$Ð3ô R$ðj ô˜Oó ó ðð< ôc
Ð'ó c
ó ðc
ñL ðôô
U
Ð-¨ó U
óð
U
ñp ðôôq
Ð&;ó q
óðq
ðh ôT
Ð#8ó T
ó ðT
ðn ôP
Ð!6ó P
ó ðP
òf‚r/   