Ë
    ÜÓ^jí½  ã                   ój  — d Z ddlZddlZddlmZ ddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4  e-jj                  e6«      Z7dejp                  de9de9fd„Z: G d„ dejv                  «      Z<	 	 d<dejz                  dejp                  dejp                  dejp                  d ejp                  dz  d!e>dz  d"e>d#e'e)   fd$„Z? G d%„ d&ejz                  «      Z@ G d'„ d(e«      ZA G d)„ d*e«      ZBe* G d+„ d,e%«      «       ZC G d-„ d.eC«      ZD G d/„ d0eC«      ZEe* G d1„ d2eC«      «       ZF e*d3¬4«       G d5„ d6eCe«      «       ZG G d7„ d8eC«      ZH G d9„ d:eCe«      ZIg d;¢ZJy)=zPyTorch PEGASUS model.é    N)ÚCallable)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚis_torchdynamo_compilingÚlogging)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )ÚPegasusConfigÚ	input_idsÚpad_token_idÚdecoder_start_token_idc                 óÖ   — | j                  | j                  «      }| dd…dd…f   j                  «       |dd…dd…f<   ||dd…df<   |€t        d«      ‚|j	                  |dk(  |«       |S )z1
    Shift input ids one token to the right.
    Néÿÿÿÿr!   r   z1self.model.config.pad_token_id has to be defined.iœÿÿÿ)Ú	new_zerosÚshapeÚcloneÚ
ValueErrorÚmasked_fill_)r#   r$   r%   Úshifted_input_idss       úw/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/pegasus/modeling_pegasus.pyÚshift_tokens_rightr/   9   s}   € ð "×+Ñ+¨I¯O©OÓ<ÐØ(ª¨C¨R¨C¨Ñ0×6Ñ6Ó8Ð’a˜™�eÑØ4Ð’a˜�dÑàÐÜÐLÓMÐMà×"Ñ"Ð#4¸Ñ#<¸lÔKàÐó    c            
       óÌ   ‡ — e Zd ZdZddedededz  ddfˆ fd„Zd„ Z ej                  «       	 dd	ej                  d
edej                  dz  dej                  fˆ fd„«       Zˆ xZS )Ú$PegasusSinusoidalPositionalEmbeddingzDThis module produces sinusoidal positional embeddings of any length.NÚnum_positionsÚembedding_dimÚpadding_idxÚreturnc                 ó*   •— t         ‰| �  ||d¬«       y )NT)Ú_freeze)ÚsuperÚ__init__)Úselfr3   r4   r5   Ú	__class__s       €r.   r:   z-PegasusSinusoidalPositionalEmbedding.__init__M   s   ø€ Ü‰Ñ˜¨¸tÐÕDr0   c                 óˆ  — | j                   j                  \  }}t        j                  t	        |«      D ��cg c];  }t	        |«      D �cg c]$  }|t        j
                  dd|dz  z  |z  «      z  ‘Œ& c}‘Œ= c}}«      }t        j                  ||| j                   j                  d¬«      }|dz  dk(  r|dz  n|dz  dz   }t        j                  t        j                  |dd…ddd…f   «      «      |dd…d|…f<   t        j                  t        j                  |dd…ddd…f   «      «      |dd…|d…f<   |S c c}w c c}}w )z°
        Identical to the XLM create_sinusoidal_embeddings except features are not interleaved. The cos features are in
        the 2nd half of the vector. [dim // 2:]
        i'  é   F)ÚdtypeÚrequires_gradr   r!   N)Úweightr)   ÚnpÚarrayÚrangeÚpowerÚtorchÚemptyr?   ÚFloatTensorÚsinÚcos)r;   Ún_posÚdimÚposÚjÚposition_encÚoutÚsentinels           r.   Úcreate_weightz2PegasusSinusoidalPositionalEmbedding.create_weightP   s  € ð
 —[‘[×&Ñ&‰
ˆˆsÜ—x‘xÜX]Ð^cÓXd×eÐQTÄÀsÃÖL¸Aˆc”B—H‘H˜U A¨¨a©¡L°3Ñ$6Ó7Ó7ÔLÓeó
ˆô �k‰k˜% ¨D¯K©K×,=Ñ,=ÈUÔSˆØ" Q™w¨!š|�3˜!’8°#¸±(¸a±ˆÜ"×.Ñ.¬r¯v©v°lÂ1ÀaÀdÈÀdÀ7Ñ6KÓ/LÓMˆŠAˆq�ˆzˆMÑÜ!×-Ñ-¬b¯f©f°\Â!ÀQÀTÈÀTÀ'Ñ5JÓ.KÓLˆŠAˆx‰yˆLÑØˆ
ùò MùÓes   ·D>
Á	)D9Á2D>
Ä9D>
Úinput_ids_shapeÚpast_key_values_lengthÚposition_idsc                 ó²   •— |€F|dd \  }}t        j                  |||z   t         j                  | j                  j                  ¬«      }t
        ‰| �  |«      S )z3`input_ids_shape` is expected to be [bsz x seqlen].Nr>   )r?   Údevice)rF   ÚarangeÚlongrA   rW   r9   Úforward)r;   rS   rT   rU   ÚbszÚseq_lenr<   s         €r.   rZ   z,PegasusSinusoidalPositionalEmbedding.forward_   s]   ø€ ð
 ÐØ*¨2¨AÐ.‰LˆC�Ü Ÿ<™<Ø&Ð(>ÀÑ(HÔPU×PZÑPZÐcg×cnÑcn×cuÑcuôˆLô ‰w‰˜|Ó,Ð,r0   ©N)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr:   rR   rF   Úno_gradÚSizeÚTensorrZ   Ú__classcell__©r<   s   @r.   r2   r2   J   sŠ   ø„ ÙNñE cð E¸#ð EÈCÐRVÉJð EÐbfõ Eòð €U‡]�]ƒ_àptñ	-Ø$Ÿz™zð	-ØCFð	-ØZ_×ZfÑZfÐimÑZmð	-à	�‰ô	-ó ô	-r0   r2   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 óœ  — |€|j                  d«      dz  }t        j                  ||j                  dd«      «      |z  }|�||z   }t        j
                  j                  |d¬«      }t        j
                  j                  ||| j                  ¬«      }t        j                  ||«      }	|	j                  dd«      j                  «       }	|	|fS )Nr'   ç      à¿r>   r   ©rL   ©ÚpÚtrainingr!   )
ÚsizerF   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrn   ru   Ú
contiguous)
rh   ri   rj   rk   rl   rm   rn   ro   Úattn_weightsÚattn_outputs
             r.   Úeager_attention_forwardr~   m   s»   € ð €Ø—*‘*˜R“. DÑ(ˆô —<‘<  s§}¡}°Q¸Ó':Ó;¸gÑE€LàÐ!Ø# nÑ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨¸È6Ï?É?Ð(Ó[€Lä—,‘,˜|¨UÓ3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€Kà˜Ð$Ð$r0   c                   ó  ‡ — e Zd ZdZ	 	 	 	 	 	 ddedededededed	edz  d
edz  fˆ fd„Z	 	 	 dde	j                  de	j                  dz  dedz  de	j                  dz  dee   dee	j                  e	j                  dz  f   fd„Zˆ xZS )ÚPegasusAttentionz=Multi-headed attention from 'Attention Is All You Need' paperNÚ	embed_dimÚ	num_headsrn   Ú
is_decoderÚbiasÚ	is_causalÚconfigÚ	layer_idxc	                 óŽ  •— t         ‰	| �  «        || _        || _        || _        ||z  | _        || _        | j
                  |z  | j                  k7  rt        d| j                  › d|› d�«      ‚| j
                  dz  | _        || _	        || _
        || _        |€9| j                  r-t        j                  d| j                  j                  › d�«       t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        y )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).rq   zInstantiating a decoder z¸ without passing `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.©r„   )r9   r:   r�   r‚   rn   Úhead_dimr†   r+   rm   rƒ   r…   r‡   ÚloggerÚwarning_oncer<   r^   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)
r;   r�   r‚   rn   rƒ   r„   r…   r†   r‡   r<   s
            €r.   r:   zPegasusAttention.__init__�   s$  ø€ ô 	‰ÑÔØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒà�M‰M˜IÑ%¨$¯.©.Ò8ÜØMÈdÏnÉnÐM]Ø$ Y K¨rð3óð ð —}‘} dÑ*ˆŒØ$ˆŒØ"ˆŒØ"ˆŒØÐ §¢Ü×ÑØ*¨4¯>©>×+BÑ+BÐ*Cð D,ð ,ôô —i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜŸ	™	 )¨Y¸TÔBˆ�r0   Úhidden_statesÚkey_value_statesÚpast_key_valuesrl   ro   r6   c                 óØ  — |du}|j                   dd }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }	d}
|�St        |t        «      rA|j                  j                  | j                  «      }
|r|j                  }n|j                  }n|}|r|n|}|rK|�I|
rGj                  | j                     j                  }|j                  | j                     j                  }nÑ| j                  |«      }| j!                  |«      }g |j                   dd ¢d‘| j                  ‘­}|j                  |«      j	                  dd«      }|j                  |«      j	                  dd«      }|�Kj#                  ||| j                  «      \  }}|r)t        |t        «      rd|j                  | j                  <   t%        j&                  | j(                  j*                  t,        «      } || |	|||f| j.                  sdn| j0                  | j2                  dœ|¤Ž\  }} |j4                  g |¢d‘­Ž j7                  «       }| j9                  |«      }||fS )	z#Input shape: Batch x Time x ChannelNr'   r!   r>   FTç        )rn   rm   )r)   rŠ   r�   Úviewrx   Ú
isinstancer   Ú
is_updatedÚgetr‡   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesrŽ   r�   Úupdater   Úget_interfacer†   Ú_attn_implementationr~   ru   rn   rm   Úreshaper{   r‘   )r;   r’   r“   r”   rl   ro   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesr™   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚattention_interfacer}   r|   s                      r.   rZ   zPegasusAttention.forward´   sd  € ð .°TÐ9Ðð $×)Ñ)¨#¨2Ð.ˆà8˜Ð8 bÐ8¨$¯-©-Ñ8ˆð —{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆàˆ
ØÐ&Ü˜/Ô+>Ô?Ø,×7Ñ7×;Ñ;¸D¿N¹NÓK�
Ù%à+:×+PÑ+PÑ(à+:×+OÑ+OÑ(à'6Ð$á-?Ñ)À]ˆÙ /Ð"=Á*à-×4Ñ4°T·^±^ÑD×IÑIˆJØ/×6Ñ6°t·~±~ÑF×MÑM‰LàŸ™ ^Ó4ˆJØŸ;™; ~Ó6ˆLØF˜×-Ñ-¨c¨rÐ2ÐF°BÐF¸¿¹ÑFˆHØ#Ÿ™¨Ó2×<Ñ<¸QÀÓBˆJØ'×,Ñ,¨XÓ6×@Ñ@ÀÀAÓFˆLàÐ*Ø+?×+FÑ+FÀzÐS_Ðae×aoÑaoÓ+pÑ(�
˜Lá%¬*°_ÔFYÔ*ZØAE�O×.Ñ.¨t¯~©~Ñ>ä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}š}‘C°$·,±,Ø—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—m‘m KÓ0ˆà˜LÐ(Ð(r0   )r–   FTFNN©NNN)r^   r_   r`   ra   rb   ÚfloatÚboolr"   r:   rF   re   r	   r   r   ÚtuplerZ   rf   rg   s   @r.   r€   r€   Š   s  ø„ ÙGð Ø ØØØ'+Ø $ñ%Càð%Cð ð%Cð ð	%Cð
 ð%Cð ð%Cð ð%Cð  Ñ$ð%Cð ˜‘:õ%CðT 15Ø(,Ø.2ñH)à—|‘|ðH)ð  Ÿ,™,¨Ñ-ðH)ð  ™ð	H)ð
 Ÿ™ tÑ+ðH)ð Ð-Ñ.ðH)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷H)r0   r€   c                   ó~   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  dee   dej                  fd„Z	ˆ xZ
S )ÚPegasusEncoderLayerr†   c                 óh  •— t         ‰| �  «        |j                  | _        t	        | j                  |j
                  |j                  |¬«      | _        t        j                  | j                  «      | _
        |j                  | _        t        |j                     | _        |j                  | _        t        j                   | j                  |j"                  «      | _        t        j                   |j"                  | j                  «      | _        t        j                  | j                  «      | _        y )N)r�   r‚   rn   r†   )r9   r:   Úd_modelr�   r€   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normrn   r   Úactivation_functionÚactivation_fnÚactivation_dropoutr�   Úencoder_ffn_dimÚfc1Úfc2Úfinal_layer_norm©r;   r†   r<   s     €r.   r:   zPegasusEncoderLayer.__init__  sÑ   ø€ Ü‰ÑÔØŸ™ˆŒä)Ø—n‘nØ×4Ñ4Ø×,Ñ,Øô	
ˆŒô %'§L¡L°·±Ó$@ˆÔ!Ø—~‘~ˆŒÜ# F×$>Ñ$>Ñ?ˆÔØ"(×";Ñ";ˆÔÜ—9‘9˜TŸ^™^¨V×-CÑ-CÓDˆŒÜ—9‘9˜V×3Ñ3°T·^±^ÓDˆŒÜ "§¡¨T¯^©^Ó <ˆÕr0   r’   rl   ro   r6   c                 ó   — |}| j                  |«      } | j                  d||dœ|¤Ž\  }}t        j                  j	                  || j                  | j
                  ¬«      }||z   }|}| j                  |«      }| j                  | j                  |«      «      }t        j                  j	                  || j                  | j
                  ¬«      }| j                  |«      }t        j                  j	                  || j                  | j
                  ¬«      }||z   }|j                  t        j                  k(  rEt        j                  |j                  «      j                  dz
  }t        j                   || |¬«      }|S )a>  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
        )r’   rl   rs   iè  )ÚminÚmax© )rº   r¸   r   ry   rn   ru   rÁ   r¼   r¿   r½   rÀ   r?   rF   Úfloat16ÚfinforÅ   Úclamp)r;   r’   rl   ro   ÚresidualÚ_Úclamp_values          r.   rZ   zPegasusEncoderLayer.forward  sT  € ð !ˆØ×1Ñ1°-Ó@ˆØ)˜4Ÿ>™>ð 
Ø'Ø)ñ
ð ñ
Ñˆ�qô
 Ÿ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆà ˆØ×-Ñ-¨mÓ<ˆØ×*Ñ*¨4¯8©8°MÓ+BÓCˆÜŸ™×-Ñ-¨m¸t×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆà×Ñ¤%§-¡-Ò/ÜŸ+™+ m×&9Ñ&9Ó:×>Ñ>ÀÑEˆKÜ!ŸK™K¨¸K¸<È[ÔYˆMàÐr0   )r^   r_   r`   r"   r:   rF   re   r   r   rZ   rf   rg   s   @r.   r³   r³      sL   ø„ ð=˜}õ =ð$"à—|‘|ð"ð Ÿ™ð"ð Ð+Ñ,ð	"ð
 
�‰÷"r0   r³   c                   óì   ‡ — e Zd Zddededz  fˆ fd„Z	 	 	 	 	 ddej                  dej                  dz  dej                  dz  dej                  dz  d	edz  d
e	dz  de
e   dej                  fd„Zˆ xZS )ÚPegasusDecoderLayerNr†   r‡   c           	      ó  •— t         ‰| �  «        |j                  | _        t	        | j                  |j
                  |j                  dd||¬«      | _        |j                  | _        t        |j                     | _        |j                  | _        t        j                  | j                  «      | _        t	        | j                  |j
                  |j                  d||¬«      | _        t        j                  | j                  «      | _        t        j$                  | j                  |j&                  «      | _        t        j$                  |j&                  | j                  «      | _        t        j                  | j                  «      | _        y )NT)r�   r‚   rn   rƒ   r…   r†   r‡   )rn   rƒ   r†   r‡   )r9   r:   rµ   r�   r€   Údecoder_attention_headsr·   r¸   rn   r   r»   r¼   r½   r   r¹   rº   Úencoder_attnÚencoder_attn_layer_normr�   Údecoder_ffn_dimr¿   rÀ   rÁ   )r;   r†   r‡   r<   s      €r.   r:   zPegasusDecoderLayer.__init__:  s   ø€ Ü‰ÑÔØŸ™ˆŒä)Ø—n‘nØ×4Ñ4Ø×,Ñ,ØØØØô
ˆŒð —~‘~ˆŒÜ# F×$>Ñ$>Ñ?ˆÔØ"(×";Ñ";ˆÔä$&§L¡L°·±Ó$@ˆÔ!Ü,Ø�N‰NØ×*Ñ*Ø×,Ñ,ØØØô
ˆÔô (*§|¡|°D·N±NÓ'CˆÔ$Ü—9‘9˜TŸ^™^¨V×-CÑ-CÓDˆŒÜ—9‘9˜V×3Ñ3°T·^±^ÓDˆŒÜ "§¡¨T¯^©^Ó <ˆÕr0   r’   rl   Úencoder_hidden_statesÚencoder_attention_maskr”   Ú	use_cachero   r6   c                 ó  — |}| j                  |«      } | j                  d|||dœ|¤Ž\  }}	t        j                  j	                  || j                  | j
                  ¬«      }||z   }|�h|}| j                  |«      } | j                  d||||dœ|¤Ž\  }}	t        j                  j	                  || j                  | j
                  ¬«      }||z   }|}| j                  |«      }| j                  | j                  |«      «      }t        j                  j	                  || j                  | j
                  ¬«      }| j                  |«      }t        j                  j	                  || j                  | j
                  ¬«      }||z   }|S )að  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            encoder_hidden_states (`torch.FloatTensor`):
                cross attention input to the layer of shape `(batch, seq_len, embed_dim)`
            encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            past_key_values (`Cache`): cached past key and value projection states
        )r’   r”   rl   rs   )r’   r“   rl   r”   rÆ   )rº   r¸   r   ry   rn   ru   rÒ   rÑ   rÁ   r¼   r¿   r½   rÀ   )
r;   r’   rl   rÔ   rÕ   r”   rÖ   ro   rÊ   rË   s
             r.   rZ   zPegasusDecoderLayer.forwardY  s—  € ð* !ˆØ×1Ñ1°-Ó@ˆð *˜4Ÿ>™>ð 
Ø'Ø+Ø)ñ
ð ñ	
Ñˆ�qô Ÿ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆð !Ð,Ø$ˆHØ ×8Ñ8¸ÓGˆMà0˜t×0Ñ0ð  Ø+Ø!6Ø5Ø /ñ	 ð
 ñ ÑˆM˜1ô ŸM™M×1Ñ1°-À4Ç<Á<ÐZ^×ZgÑZgÐ1ÓhˆMØ$ }Ñ4ˆMð !ˆØ×-Ñ-¨mÓ<ˆØ×*Ñ*¨4¯8©8°MÓ+BÓCˆÜŸ™×-Ñ-¨m¸t×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆàÐr0   r]   )NNNNT)r^   r_   r`   r"   rb   r:   rF   re   r	   r°   r   r   rZ   rf   rg   s   @r.   rÎ   rÎ   9  s°   ø„ ñ=˜}ð =¸¸t¹õ =ðD /3Ø59Ø6:Ø(,Ø!%ñ:à—|‘|ð:ð Ÿ™ tÑ+ð:ð  %Ÿ|™|¨dÑ2ð	:ð
 !&§¡¨tÑ 3ð:ð  ™ð:ð ˜$‘;ð:ð Ð+Ñ,ð:ð 
�‰÷:r0   rÎ   c                   ój   ‡ — e Zd ZU eed<   dZdZdZdZdZ	dZ
 ej                  «       ˆ fd„«       Zˆ xZS )ÚPegasusPreTrainedModelr†   ÚmodelTc                 ó  •— t         ‰| �  |«       t        |t        «      r/t	        j
                  |j                  |j                  «       «       y t        |t        «      r t	        j                  |j                  «       y y r]   )r9   Ú_init_weightsr˜   r2   ÚinitÚcopy_rA   rR   ÚPegasusForConditionalGenerationÚzeros_Úfinal_logits_bias)r;   rh   r<   s     €r.   rÜ   z$PegasusPreTrainedModel._init_weights   sY   ø€ ä‰Ñ˜fÔ%Ü�fÔBÔCÜ�J‰J�v—}‘} f×&:Ñ&:Ó&<Õ=Ü˜Ô ?Ô@Ü�K‰K˜×0Ñ0Õ1ð Ar0   )r^   r_   r`   r"   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphrF   rc   rÜ   rf   rg   s   @r.   rÙ   rÙ   –  sF   ø… àÓØÐØ&*Ð#ØÐØ€NØÐØ!Ðà€U‡]�]ƒ_ó2ó ô2r0   rÙ   c                   óš   ‡ — e Zd ZdZeedœZdefˆ fd„Zde	fd„Z
dej                  fd„Zeee	 	 	 dd	ee   defd
„«       «       «       Zˆ xZS )ÚPegasusEncoderzæ
    Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a
    [`PegasusEncoderLayer`].

    Args:
        config: PegasusConfig
        embed_tokens (nn.Embedding): output embedding
    )r’   Ú
attentionsr†   c                 óÈ  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  }|j                  | _        |j                  | _	        |j                  rt        j                  |«      nd| _        t        j                  |j                   || j                  «      | _        t%        |j                  || j                  «      | _        t        j(                  t+        |j,                  «      D �cg c]  }t/        |«      ‘Œ c}«      | _        t        j2                  |j
                  «      | _        d| _        | j9                  «        y c c}w )Nç      ð?F)r9   r:   rn   Úencoder_layerdropÚ	layerdroprµ   r$   r5   Úmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtÚembed_scaler   Ú	EmbeddingÚ
vocab_sizeÚembed_tokensr2   Úembed_positionsÚ
ModuleListrD   Úencoder_layersr³   r�   r¹   Ú
layer_normÚgradient_checkpointingÚ	post_init)r;   r†   r�   rË   r<   s       €r.   r:   zPegasusEncoder.__init__¸  s  ø€ Ü‰Ñ˜Ô à—~‘~ˆŒØ×1Ñ1ˆŒà—N‘Nˆ	Ø!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø39×3IÒ3Iœ4Ÿ9™9 YÔ/ÈsˆÔäŸL™L¨×):Ñ):¸IÀt×GWÑGWÓXˆÔäCØ×*Ñ*ØØ×Ñó 
ˆÔô
 —m‘mÌ%ÐPV×PeÑPeÓJfÖ$gÀQÔ%8¸Õ%@Ò$gÓhˆŒÜŸ,™, v§~¡~Ó6ˆŒà&+ˆÔ#à�‰Õùò %hs   ÄEÚnew_num_position_embeddingsc                 ó®  — t         j                  d|› d�«       || j                  _        t	        | j                  j                  | j                  j
                  | j                  «      | _        t        j                  | j                  j                  | j                  j                  «       «       | j                  j                  | j                  «       y©áÛ  
        Resizes position embeddings matrix of the model if `new_num_position_embeddings !=
        config.max_position_embeddings`.

        Arguments:
            new_num_position_embeddings (`int`):
                The number of new position embeddings. If position embeddings are learned, increasing the size will add
                newly initialized vectors at the end, whereas reducing the size will remove vectors from the end. If
                position embeddings are not learned (*e.g.* sinusoidal position embeddings), increasing the size will
                add correct vectors at the end following the position encoding algorithm, whereas reducing the size
                will remove vectors from the end.
        z(Setting `config.max_position_embeddings=z`...N©r‹   Úinfor†   rð   r2   rµ   r5   rù   rÝ   rÞ   rA   rR   ÚtorW   ©r;   rÿ   s     r.   Úresize_position_embeddingsz)PegasusEncoder.resize_position_embeddingsÑ  óœ   € ô 	�‰Ð>Ð?ZÐ>[Ð[_Ð`ÔaØ.Iˆ�‰Ô+äCØ�K‰K×/Ñ/Ø�K‰K×ÑØ×Ñó 
ˆÔô
 	�
‰
�4×'Ñ'×.Ñ.°×0DÑ0D×0RÑ0RÓ0TÔUØ×Ñ×Ñ §¡Õ,r0   r6   c                 ó   — | j                   S ©z8
        Returns the position embeddings matrix
        ©rù   ©r;   s    r.   Úget_position_embeddingsz&PegasusEncoder.get_position_embeddingsé  ó   € ð ×#Ñ#Ð#r0   ro   c                 óF  — |d u |d uz  rt        d«      ‚|€| j                  |«      | j                  z  }|j                  d d }| j	                  |«      }||z   }t
        j                  j                  || j                  | j                  ¬«      }t        | j                  ||¬«      }t        | j                  «      D ]F  \  }}	d}
| j                  r&t        j                  g «      }|| j                  k  rd}
|
rŒ= |	||fi |¤Ž}ŒH | j!                  |«      }t#        |¬«      S )Nz:You must specify exactly one of input_ids or inputs_embedsr'   rs   )r†   Úinputs_embedsrl   FT)Úlast_hidden_state)r+   rø   rõ   r)   rù   r   ry   rn   ru   r   r†   Ú	enumerater�   rF   Úrandrï   rü   r   )r;   r#   rl   r  ro   r¥   Ú	embed_posr’   ÚidxÚencoder_layerÚto_dropÚdropout_probabilitys               r.   rZ   zPegasusEncoder.forwardï  s3  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø ×-Ñ-¨iÓ8¸4×;KÑ;KÑKˆMà#×)Ñ)¨#¨2Ð.ˆØ×(Ñ(¨Ó5ˆ	à%¨	Ñ1ˆäŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä2Ø—;‘;Ø'Ø)ô
ˆô #,¨D¯K©KÓ"8ò 	ÑˆC�àˆGØ�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Ø"�GâÙ -Ø!Ø"ñ!ð ñ!‘ð	ð Ÿ™¨Ó6ˆäØ+ô
ð 	
r0   r®   )r^   r_   r`   ra   r³   r€   Ú_can_record_outputsr"   r:   rb   r  r   rö   r  r   r    r   r   r   r   rZ   rf   rg   s   @r.   rê   rê   ©  s‰   ø„ ñð -Ø&ñÐð
˜}õ ð2-Àcó -ð0$¨¯©ó $ð  ØØð ØØñ	-
ð
 Ð+Ñ,ð-
ð 
ò-
ó ó ó  ô-
r0   rê   c                   óÈ   ‡ — e Zd ZdZe eedd¬«       eedd¬«      dœZdefˆ fd„Z	d	e
fd
„Zdej                  fd„Zeee	 	 	 	 	 	 	 ddee   defd„«       «       «       Zˆ xZS )ÚPegasusDecoderzÒ
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`PegasusDecoderLayer`]

    Args:
        config: PegasusConfig
        embed_tokens (nn.Embedding): output embedding
    r!   r¸   )ÚindexÚ
layer_namerÑ   )r’   rë   Úcross_attentionsr†   c           	      óð  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  rt        j                  |j                  «      nd| _        t        j                  |j                   |j                  | j                  «      | _        t%        |j                  |j                  | j                  «      | _        t        j(                  t+        |j,                  «      D �cg c]  }t/        ||¬«      ‘Œ c}«      | _        t        j2                  |j                  «      | _        d| _        | j9                  «        y c c}w )Nrí   )r‡   F)r9   r:   rn   Údecoder_layerdroprï   r$   r5   rð   Úmax_target_positionsrò   ró   rô   rµ   rõ   r   rö   r÷   rø   r2   rù   rú   rD   Údecoder_layersrÎ   r�   r¹   rü   rý   rþ   )r;   r†   Úir<   s      €r.   r:   zPegasusDecoder.__init__1  s  ø€ Ü‰Ñ˜Ô Ø—~‘~ˆŒØ×1Ñ1ˆŒØ!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø8>×8NÒ8Nœ4Ÿ9™9 V§^¡^Ô4ÐTWˆÔäŸL™L¨×):Ñ):¸F¿N¹NÈD×L\ÑL\Ó]ˆÔäCØ×*Ñ*Ø�N‰NØ×Ñó 
ˆÔô
 —m‘mÔW\Ð]c×]rÑ]rÓWsÖ$tÐRSÔ%8¸È1Ö%MÒ$tÓuˆŒÜŸ,™, v§~¡~Ó6ˆŒà&+ˆÔ#à�‰Õùò %us   ÄE3rÿ   c                 ó®  — t         j                  d|› d�«       || j                  _        t	        | j                  j                  | j                  j
                  | j                  «      | _        t        j                  | j                  j                  | j                  j                  «       «       | j                  j                  | j                  «       yr  r  r  s     r.   r  z)PegasusDecoder.resize_position_embeddingsG  r  r0   r6   c                 ó   — | j                   S r
  r  r  s    r.   r  z&PegasusDecoder.get_position_embeddings_  r  r0   ro   c                 ót  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|| j                  z  }|rd|€b|€| j                  j                  r4t        t        | j                  ¬«      t        | j                  ¬«      «      nt        | j                  ¬«      }|j                  «       d d \  }	}
|�|j                  «       nd}t        j                  |
|j                  ¬«      |z   }|€1t        «       s'||
z   }t        j                  |	||j                  ¬«      }t        |t
        «      r|j                  n|}t!        | j                  |||¬«      }t#        | j                  |||¬«      }| j%                  |	|
f||¬«      }||z   }t&        j(                  j+                  || j*                  | j,                  ¬	«      }t/        | j0                  «      D ]E  \  }}| j,                  r%t        j2                  g «      }|| j4                  k  rŒ7 ||||f|||d
œ|¤Ž}ŒG | j7                  |«      }t9        ||¬«      S )NzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time)r†   r'   r   ©rW   )r†   r  rl   r”   )r†   r  rl   rÔ   )rU   rs   )rÕ   r”   rÖ   )r  r”   )r+   rø   rõ   r†   Úis_encoder_decoderr   r
   rv   Úget_seq_lengthrF   rX   rW   r   Úonesr˜   rœ   r   r   rù   r   ry   rn   ru   r  r�   r  rï   rü   r   )r;   r#   rl   rÔ   rÕ   r”   r  rÖ   ro   Ú
batch_sizeÚ
seq_lengthrT   rU   Úmask_seq_lengthÚself_attn_cacheÚcausal_maskÚ	positionsr’   r  Údecoder_layerr  s                        r.   rZ   zPegasusDecoder.forwarde  sQ  € ð ˜Ð -°tÐ";Ò<ÜÐsÓtÐtàÐ Ø ×-Ñ-¨iÓ8ˆMð &¨×(8Ñ(8Ñ8ˆñ ˜Ð0ð )Ð4¸¿¹×8VÒ8Vô $¤L¸¿¹Ô$DÄlÐZ^×ZeÑZeÔFfÔgä!¨¯©Ô5ð ð "/×!3Ñ!3Ó!5°c°rÐ!:Ñˆ
�JØETÐE` ×!?Ñ!?Ô!AÐfgÐÜ—|‘| J°}×7KÑ7KÔLÐOeÑeˆàÐ!Ô*BÔ*Dà4°zÑAˆOÜ"ŸZ™Z¨
°OÈM×L`ÑL`ÔaˆNô ˜/Ô+>Ô?ð ×0Ò0à ð 	ô )Ø—;‘;Ø'Ø)Ø+ô	
ˆô ";Ø—;‘;Ø'Ø1Ø"7ô	"
Ðð ×(Ñ(¨*°jÐ)AÐCYÐhtÐ(Óuˆ	Ø%¨	Ñ1ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä"+¨D¯K©KÓ"8ò 	ÑˆC�à�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Øá)ØØØ%ðð (>Ø /Ø#ñð ñ‰Mð	ð" Ÿ™¨Ó6ˆä8Ø+Ø+ô
ð 	
r0   )NNNNNNN)r^   r_   r`   ra   rÎ   r   r€   r  r"   r:   rb   r  r   rö   r  r   r    r   r   r   r   rZ   rf   rg   s   @r.   r  r  "  s±   ø„ ñð -Ù$Ð%5¸QÈ;ÔWÙ*Ð+;À1ÐQ_Ô`ñÐð˜}õ ð,-Àcó -ð0$¨¯©ó $ð  ØØð ØØ"Ø#ØØØñS
ð Ð+Ñ,ðS
ð 
3òS
ó ó ó  ôS
r0   r  c                   óœ  ‡ — e Zd ZdddœZdefˆ fd„Zd„ Zd„ Zdefd„Z	d	e
ej                     fd
„Zee	 	 	 	 	 	 	 	 	 ddej"                  dz  dej"                  dz  dej"                  dz  dej"                  dz  de
ej$                     dz  dedz  dej"                  dz  dej"                  dz  dedz  dee   d	e
ez  fd„«       «       Zˆ xZS )ÚPegasusModelzshared.weight)zdecoder.embed_tokens.weightzencoder.embed_tokens.weightr†   c                 ó   •— t         ‰| �  |«       |j                  |j                  }}t	        j
                  ||j                  |«      | _        t        |«      | _	        t        |«      | _        | j                  «        y r]   )r9   r:   r$   r÷   r   rö   rµ   Úsharedrê   Úencoderr  Údecoderrþ   )r;   r†   r5   r÷   r<   s       €r.   r:   zPegasusModel.__init__Å  sa   ø€ Ü‰Ñ˜Ô à"(×"5Ñ"5°v×7HÑ7H�ZˆÜ—l‘l :¨v¯~©~¸{ÓKˆŒä% fÓ-ˆŒÜ% fÓ-ˆŒð 	�‰Õr0   c                 ó   — | j                   S r]   )r5  r  s    r.   Úget_input_embeddingsz!PegasusModel.get_input_embeddingsÑ  s   € Ø�{‰{Ðr0   c                 ó~   — || _         | j                   | j                  _        | j                   | j                  _        y r]   )r5  r6  rø   r7  ©r;   rk   s     r.   Úset_input_embeddingsz!PegasusModel.set_input_embeddingsÔ  s)   € ØˆŒØ$(§K¡Kˆ�‰Ô!Ø$(§K¡Kˆ�‰Õ!r0   rÿ   c                 ó’   — || j                   _        | j                  j                  |«       | j                  j                  |«       y©r  N)r†   rð   r6  r  r7  r  s     r.   r  z'PegasusModel.resize_position_embeddingsÙ  s7   € ð /Jˆ�‰Ô+Ø�‰×/Ñ/Ð0KÔLØ�‰×/Ñ/Ð0KÕLr0   r6   c                 ój   — | j                   j                  «       | j                  j                  «       fS r
  )r6  r  r7  r  s    r.   r  z$PegasusModel.get_position_embeddingsê  s)   € ð —‘×4Ñ4Ó6¸¿¹×8\Ñ8\Ó8^Ð_Ð_r0   Nr#   rl   Údecoder_input_idsÚdecoder_attention_maskÚencoder_outputsr”   r  Údecoder_inputs_embedsrÖ   ro   c
                 óÂ  — |€ | j                   d	|||dœ|
¤Ž}nGt        |t        «      s7t        |d   t        |«      dkD  r|d   ndt        |«      dkD  r|d   nd¬«      } | j                  d	|||d   ||||	dœ|
¤Ž}t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«      S )
aE  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

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

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Pegasus uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, PegasusModel

        >>> tokenizer = AutoTokenizer.from_pretrained("google/pegasus-large")
        >>> model = PegasusModel.from_pretrained("google/pegasus-large")

        >>> inputs = tokenizer("Studies have been shown that owning a dog is good for you", return_tensors="pt")
        >>> decoder_inputs = tokenizer("Studies show that", return_tensors="pt")
        >>> outputs = model(input_ids=inputs.input_ids, decoder_input_ids=decoder_inputs.input_ids)

        >>> last_hidden_states = outputs.last_hidden_state
        >>> list(last_hidden_states.shape)
        [1, 4, 1024]
        ```N)r#   rl   r  r   r!   r>   )r  r’   rë   ©r#   rl   rÔ   rÕ   r”   r  rÖ   )r  r”   Údecoder_hidden_statesÚdecoder_attentionsr  Úencoder_last_hidden_staterÔ   Úencoder_attentionsrÆ   )r6  r˜   r   Úlenr7  r   r  r”   r’   rë   r  )r;   r#   rl   r@  rA  rB  r”   r  rC  rÖ   ro   Údecoder_outputss               r.   rZ   zPegasusModel.forwardð  s  € ð` Ð"Ø*˜dŸl™lð Ø#Ø-Ø+ñð ñ	‰Oô ˜O¬_Ô=Ü-Ø"1°!Ñ"4Ü47¸Ó4HÈ1Ò4L˜o¨aÒ0ÐRVÜ14°_Ó1EÈÒ1I˜?¨1Ò-ÈtôˆOð '˜$Ÿ,™,ð 	
Ø'Ø1Ø"1°!Ñ"4Ø#1Ø+Ø/Øñ	
ð ñ	
ˆô "Ø-×?Ñ?Ø+×;Ñ;Ø"1×"?Ñ"?Ø.×9Ñ9Ø,×=Ñ=Ø&5×&GÑ&GØ"1×"?Ñ"?Ø.×9Ñ9ô	
ð 		
r0   )	NNNNNNNNN)r^   r_   r`   Ú_tied_weights_keysr"   r:   r9  r<  rb   r  r±   r   rö   r  r   r   rF   re   rH   r	   r°   r   r   r   rZ   rf   rg   s   @r.   r3  r3  ¾  sZ  ø„ ð (7Ø'6ñÐð

˜}õ 
òò0ð
MÀcó Mð"`¨¨r¯|©|Ñ)<ó `ð Øð *.Ø.2Ø15Ø6:Ø;?Ø(,Ø-1Ø59Ø!%ñR
à—<‘< $Ñ&ðR
ð Ÿ™ tÑ+ðR
ð !Ÿ<™<¨$Ñ.ð	R
ð
 !&§¡¨tÑ 3ðR
ð ˜u×0Ñ0Ñ1°DÑ8ðR
ð  ™ðR
ð —|‘| dÑ*ðR
ð  %Ÿ|™|¨dÑ2ðR
ð ˜$‘;ðR
ð Ð+Ñ,ðR
ð 
Ð#Ñ	#òR
ó ó ôR
r0   r3  zY
    The PEGASUS Model with a language modeling head. Can be used for summarization.
    )Úcustom_introc                   ó"  ‡ — e Zd ZdZdgZddiZdefˆ fd„Z	 dded	edz  d
e	de
j                  fˆ fd„Zdeddfd„Zdefd„Zdee
j                     fd„Zee	 	 	 	 	 	 	 	 	 	 ddej(                  dz  dej(                  dz  dej(                  dz  dej(                  dz  deej*                     dz  dedz  dej(                  dz  dej(                  dz  dej(                  dz  de	dz  dee   deez  fd„«       «       Zdej(                  fd„Zˆ xZS ) rß   rÚ   rá   úlm_head.weightzmodel.shared.weightr†   c                 óx  •— t         ‰| �  |«       t        |«      | _        | j	                  dt        j                  d| j                  j                  j                  f«      «       t        j                  |j                  | j                  j                  j                  d¬«      | _        | j                  «        y )Nrá   r!   Fr‰   )r9   r:   r3  rÚ   Úregister_bufferrF   Úzerosr5  Únum_embeddingsr   r�   rµ   Úlm_headrþ   rÂ   s     €r.   r:   z(PegasusForConditionalGeneration.__init__S  s€   ø€ Ü‰Ñ˜Ô Ü! &Ó)ˆŒ
Ø×ÑÐ0´%·+±+¸qÀ$Ç*Á*×BSÑBS×BbÑBbÐ>cÓ2dÔeÜ—y‘y §¡°·±×1BÑ1B×1QÑ1QÐX]Ô^ˆŒð 	�‰Õr0   NÚnew_num_tokensÚpad_to_multiple_ofÚmean_resizingr6   c                 óz   •— t         ‰| �  |||«      }| j                  |j                  j                  d   «       |S )Nr   )r9   Úresize_token_embeddingsÚ_resize_final_logits_biasrA   r)   )r;   rU  rV  rW  Únew_embeddingsr<   s        €r.   rY  z7PegasusForConditionalGeneration.resize_token_embeddings\  s?   ø€ ô ™Ñ8¸ÐI[Ð]jÓkˆØ×&Ñ& ~×'<Ñ'<×'BÑ'BÀ1Ñ'EÔFØÐr0   c                 ó6  — | j                   j                  d   }||k  r| j                   d d …d |…f   }nSt        j                  d||z
  f| j                   j                  ¬«      }t        j
                  | j                   |gd¬«      }| j                  d|«       y )Nr'   r!   r'  rr   rá   )rá   r)   rF   rR  rW   ÚcatrQ  )r;   rU  Úold_num_tokensÚnew_biasÚ
extra_biass        r.   rZ  z9PegasusForConditionalGeneration._resize_final_logits_biasc  sŒ   € Ø×/Ñ/×5Ñ5°bÑ9ˆØ˜^Ò+Ø×-Ñ-ªa°°.°Ð.@ÑA‰HäŸ™ a¨¸.Ñ)HÐ%IÐRV×RhÑRh×RoÑRoÔpˆJÜ—y‘y $×"8Ñ"8¸*Ð!EÈ1ÔMˆHØ×ÑÐ0°(Õ;r0   rÿ   c                 óº   — || j                   _        | j                  j                  j	                  |«       | j                  j
                  j	                  |«       yr>  )r†   rð   rÚ   r6  r  r7  r  s     r.   r  z:PegasusForConditionalGeneration.resize_position_embeddingsl  sC   € ð /Jˆ�‰Ô+Ø�
‰
×Ñ×5Ñ5Ð6QÔRØ�
‰
×Ñ×5Ñ5Ð6QÕRr0   c                 ó’   — | j                   j                  j                  «       | j                   j                  j                  «       fS r
  )rÚ   r6  r  r7  r  s    r.   r  z7PegasusForConditionalGeneration.get_position_embeddings}  s5   € ð —
‘
×"Ñ"×:Ñ:Ó<¸d¿j¹j×>PÑ>P×>hÑ>hÓ>jÐkÐkr0   r#   rl   r@  rA  rB  r”   r  rC  ÚlabelsrÖ   ro   c                 óz  — |	�R|
rt         j                  d«       d}
|€7|€5t        |	| j                  j                  | j                  j
                  «      } | j                  |f||||||||
dœ|¤Ž}| j                  |j                  «      | j                  z   }d}|	�Ft        «       } ||j                  d| j                  j                  «      |	j                  d«      «      }t        |||j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  ¬«	      S )a¡	  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

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

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Pegasus uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.
        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 Summarization:

        ```python
        >>> from transformers import AutoTokenizer, PegasusForConditionalGeneration

        >>> model = PegasusForConditionalGeneration.from_pretrained("google/pegasus-xsum")
        >>> tokenizer = AutoTokenizer.from_pretrained("google/pegasus-xsum")

        >>> ARTICLE_TO_SUMMARIZE = (
        ...     "PG&E stated it scheduled the blackouts in response to forecasts for high winds "
        ...     "amid dry conditions. The aim is to reduce the risk of wildfires. Nearly 800 thousand customers were "
        ...     "scheduled to be affected by the shutoffs which were expected to last through at least midday tomorrow."
        ... )
        >>> inputs = tokenizer(ARTICLE_TO_SUMMARIZE, max_length=1024, return_tensors="pt")

        >>> # Generate Summary
        >>> summary_ids = model.generate(inputs["input_ids"])
        >>> tokenizer.batch_decode(summary_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
        "California's largest electricity provider has turned off power to hundreds of thousands of customers."
        ```
        NzJThe `use_cache` argument is changed to `False` since `labels` is provided.F)rl   r@  rB  rA  r”   r  rC  rÖ   r'   )	ÚlossÚlogitsr”   rF  rG  r  rH  rÔ   rI  )r‹   Úwarningr/   r†   r$   r%   rÚ   rT  r  rá   r   r—   r÷   r   r”   rF  rG  r  rH  rÔ   rI  )r;   r#   rl   r@  rA  rB  r”   r  rC  rc  rÖ   ro   ÚoutputsÚ	lm_logitsÚmasked_lm_lossÚloss_fcts                   r.   rZ   z'PegasusForConditionalGeneration.forwardƒ  sB  € ðr ÐÙÜ—‘ÐkÔlØˆIØ Ð(Ð-BÐ-JÜ$6Ø˜DŸK™K×4Ñ4°d·k±k×6XÑ6Xó%Ð!ð '1 d§j¡jØð'
à)Ø/Ø+Ø#9Ø+Ø'Ø"7Øñ'
ð ñ'
ˆð —L‘L ×!:Ñ!:Ó;¸d×>TÑ>TÑTˆ	àˆØÐÜ'Ó)ˆHÙ% i§n¡n°R¸¿¹×9OÑ9OÓ&PÐRX×R]ÑR]Ð^`ÓRaÓbˆNäØØØ#×3Ñ3Ø")×"?Ñ"?Ø&×9Ñ9Ø$×5Ñ5Ø&-×&GÑ&GØ")×"?Ñ"?Ø&×9Ñ9ô

ð 
	
r0   c                 ól   — t        || j                  j                  | j                  j                  «      S r]   )r/   r†   r$   r%   )r;   rc  s     r.   Ú%prepare_decoder_input_ids_from_labelszEPegasusForConditionalGeneration.prepare_decoder_input_ids_from_labelsä  s%   € Ü! &¨$¯+©+×*BÑ*BÀDÇKÁK×DfÑDfÓgÐgr0   )NT)
NNNNNNNNNN)r^   r_   r`   rã   Ú_keys_to_ignore_on_load_missingrL  r"   r:   rb   r°   r   rö   rY  rZ  r  r±   r  r   r   rF   re   rH   r	   r   r   r   rZ   rm  rf   rg   s   @r.   rß   rß   G  sÏ  ø„ ð  ÐØ':Ð&;Ð#àÐ/ðÐð˜}õ ð aeñØ!ðØ7:¸T±zðØY]ðà	�‰õð<¸ð <Àó <ðSÀcó Sð"l¨¨r¯|©|Ñ)<ó lð Øð *.Ø.2Ø15Ø6:Ø;?Ø(,Ø-1Ø59Ø&*Ø!%ñ]
à—<‘< $Ñ&ð]
ð Ÿ™ tÑ+ð]
ð !Ÿ<™<¨$Ñ.ð	]
ð
 !&§¡¨tÑ 3ð]
ð ˜u×0Ñ0Ñ1°DÑ8ð]
ð  ™ð]
ð —|‘| dÑ*ð]
ð  %Ÿ|™|¨dÑ2ð]
ð —‘˜tÑ#ð]
ð ˜$‘;ð]
ð Ð+Ñ,ð]
ð 
�Ñ	 ò]
ó ó ð]
ð~h¸E¿L¹L÷ hr0   rß   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚPegasusDecoderWrapperz½
    This wrapper class is a helper class to correctly load pretrained checkpoints when the causal language model is
    used in combination with the [`EncoderDecoderModel`] framework.
    c                 ód   •— t         ‰| �  |«       t        |«      | _        | j	                  «        y r]   )r9   r:   r  r7  rþ   rÂ   s     €r.   r:   zPegasusDecoderWrapper.__init__ï  s&   ø€ Ü‰Ñ˜Ô Ü% fÓ-ˆŒØ�‰Õr0   c                 ó&   —  | j                   |i |¤ŽS r]   )r7  )r;   Úargsro   s      r.   rZ   zPegasusDecoderWrapper.forwardô  s   € Øˆt�|‰|˜TÐ, VÑ,Ð,r0   )r^   r_   r`   ra   r:   rZ   rf   rg   s   @r.   rp  rp  é  s   ø„ ñô
ö
-r0   rp  c                   óˆ  ‡ — e Zd ZddiZˆ fd„Zd„ Zd„ Zdej                  fd„Z	de
fd	„Zee	 	 	 	 	 	 	 	 	 ddej                  d
z  dej                   d
z  dej"                  d
z  dej"                  d
z  ded
z  dej"                  d
z  dej                  d
z  ded
z  de
ej                   z  dee   deez  fd„«       «       Zˆ xZS )ÚPegasusForCausalLMrO  z!model.decoder.embed_tokens.weightc                 ó  •— t        j                  |«      }d|_        d|_        t        ‰| �  |«       t        |«      | _        t        j                  |j                  |j                  d¬«      | _        | j                  «        y )NTFr‰   )ÚcopyÚdeepcopyrƒ   r(  r9   r:   rp  rÚ   r   r�   Úhidden_sizer÷   rT  rþ   rÂ   s     €r.   r:   zPegasusForCausalLM.__init__ý  sf   ø€ Ü—‘˜vÓ&ˆØ ˆÔØ$)ˆÔ!Ü‰Ñ˜Ô Ü*¨6Ó2ˆŒ
ä—y‘y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Õr0   c                 óB   — | j                   j                  j                  S r]   ©rÚ   r7  rø   r  s    r.   r9  z'PegasusForCausalLM.get_input_embeddings	  s   € Ø�z‰z×!Ñ!×.Ñ.Ð.r0   c                 ó:   — || j                   j                  _        y r]   r{  r;  s     r.   r<  z'PegasusForCausalLM.set_input_embeddings  s   € Ø*/ˆ�
‰
×ÑÕ'r0   r6   c                 óJ   — | j                   j                  j                  «       S r
  )rÚ   r7  r  r  s    r.   r  z*PegasusForCausalLM.get_position_embeddings  s   € ð �z‰z×!Ñ!×9Ñ9Ó;Ð;r0   rÿ   c                 óp   — || j                   _        | j                  j                  j	                  |«       yr>  )r†   rð   rÚ   r7  r  r  s     r.   r  z-PegasusForCausalLM.resize_position_embeddings  s*   € ð /Jˆ�‰Ô+Ø�
‰
×Ñ×5Ñ5Ð6QÕRr0   Nr#   rl   rÔ   rÕ   r”   r  rc  rÖ   Úlogits_to_keepro   c
                 ó  —  | j                   j                  d|||||||dœ|
¤Ž}|d   }t        |	t        «      rt	        |	 d«      n|	}| j                  |dd…|dd…f   «      }d}|�a|j                  |j                  «      }t        «       } ||j                  d| j                  j                  «      |j                  d«      «      }t        |||j                  |j                  |j                  |j                   ¬«      S )aJ  
        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 AutoTokenizer, PegasusForCausalLM

        >>> tokenizer = AutoTokenizer.from_pretrained("google/pegasus-large")
        >>> model = PegasusForCausalLM.from_pretrained("google/pegasus-large")
        >>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
        >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> logits = outputs.logits
        >>> expected_shape = [1, inputs.input_ids.shape[-1], model.config.vocab_size]
        >>> list(logits.shape) == expected_shape
        True
        ```rE  r   Nr'   )re  rf  r”   r’   rë   r  rÆ   )rÚ   r7  r˜   rb   ÚslicerT  r  rW   r   r—   r†   r÷   r   r”   r’   rë   r  )r;   r#   rl   rÔ   rÕ   r”   r  rc  rÖ   r  ro   rh  r’   Úslice_indicesrf  re  rk  s                    r.   rZ   zPegasusForCausalLM.forward%  s  € ðN >P¸T¿Z¹Z×=OÑ=Oð 	>
ØØ)Ø"7Ø#9Ø+Ø'Øñ	>
ð ñ	>
ˆð   ™
ˆä8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÐØ—Y‘Y˜vŸ}™}Ó-ˆFÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯K©K×,BÑ,BÓCÀVÇ[Á[ÐQSÃ_ÓUˆDä0ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø$×5Ñ5ô
ð 	
r0   )	NNNNNNNNr   )r^   r_   r`   rL  r:   r9  r<  r   rö   r  rb   r  r   r   rF   Ú
LongTensorre   rH   r	   r°   r   r   r±   r   rZ   rf   rg   s   @r.   ru  ru  ø  sM  ø„ àÐ=ðÐô
ò/ò0ð<¨¯©ó <ðSÀcó Sð  Øð .2Ø.2Ø:>Ø;?Ø(,Ø26Ø*.Ø!%Ø-.ñA
à×#Ñ# dÑ*ðA
ð Ÿ™ tÑ+ðA
ð  %×0Ñ0°4Ñ7ð	A
ð
 !&× 1Ñ 1°DÑ 8ðA
ð  ™ðA
ð ×(Ñ(¨4Ñ/ðA
ð × Ñ  4Ñ'ðA
ð ˜$‘;ðA
ð ˜eŸl™lÑ*ðA
ð Ð+Ñ,ðA
ð 
Ð2Ñ	2òA
ó ó ôA
r0   ru  )ru  rß   r3  rÙ   )Nr–   )Kra   rw  ró   Úcollections.abcr   ÚnumpyrB   rF   r   Útorch.nnr   Ú r   rÝ   Úactivationsr   Úcache_utilsr	   r
   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   r    Úconfiguration_pegasusr"   Ú
get_loggerr^   r‹   re   rb   r/   rö   r2   ÚModuler¯   r~   r€   r³   rÎ   rÙ   rê   r  r3  rß   rp  ru  Ú__all__rÆ   r0   r.   ú<module>r˜     s  ðñ ã Û Ý $ã Û Ý Ý %å &Ý !ß CÑ CÝ )ß JÝ BÝ 9÷õ ÷ GÝ &÷õ õ 8ß EÝ 0ð 
ˆ×	Ñ	˜HÓ	%€ð %§,¡,ð ¸cð Ð[^ó ô"-¨2¯<©<ô -ðR !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(ó%ô:r)�r—y‘yô r)ôl5Ð4ô 5ôrZÐ4ô Zðz ô2˜_ó 2ó ð2ô$v
Ð+ô v
ôrY
Ð+ô Y
ðx ôE
Ð)ó E
ó ðE
ñP ðôô
YhÐ&<¸oó Yhóð
Yhôz-Ð2ô -ôq
Ð/°ô q
òh n�r0   