§
    ‚Štjí½  ã                   óx  — 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-j5        e6¦  «        Z7dej8        de9de9fd„Z: G d„ dej;        ¦  «        Z<	 	 d=dej=        dej8        dej8        d ej8        d!ej8        dz  d"e>dz  d#e>d$e'e)         fd%„Z? G d&„ d'ej=        ¦  «        Z@ G d(„ d)e¦  «        ZA G d*„ d+e¦  «        ZBe* G d,„ d-e%¦  «        ¦   «         ZC G d.„ d/eC¦  «        ZD G d0„ d1eC¦  «        ZEe* G d2„ d3eC¦  «        ¦   «         ZF e*d4¬5¦  «         G d6„ d7eCe¦  «        ¦   «         ZG G d8„ d9eC¦  «        ZH G d:„ d;eCe¦  «        ZIg d<¢ZJdS )>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        ¦  «        }| dd…dd…f                              ¦   «         |dd…dd…f<   ||dd…df<   |€t          d¦  «        ‚|                     |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       új/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/pegasus/modeling_pegasus.pyÚshift_tokens_rightr/   9   s˜   € ð "×+Ò+¨I¬OÑ<Ô<ÐØ(¨¨¨¨C¨R¨C¨Ô0×6Ò6Ñ8Ô8Ð�a�a�a˜˜˜�eÑØ4Ð�a�a�a˜�dÑàÐÝÐLÑMÔMÐMà×"Ò"Ð#4¸Ò#<¸lÑKÔKÐ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                 óP   •— t          ¦   «                              ||d¬¦  «         d S )NT)Ú_freeze)ÚsuperÚ__init__)Úselfr3   r4   r5   Ú	__class__s       €r.   r:   z-PegasusSinusoidalPositionalEmbedding.__init__M   s(   ø€ Ý‰Œ×Ò˜¨¸tÐÑDÔDÐDÐDÐDr0   c           	      óà  ‡— | j         j        \  }Št          j        ˆfd„t	          |¦  «        D ¦   «         ¦  «        }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 )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:]
        c                 óJ   •‡— g | ]Šˆˆfd „t          ‰¦  «        D ¦   «         ‘ŒS )c           	      óR   •— g | ]#}‰t          j        d d|dz  z  ‰z  ¦  «        z  ‘Œ$S )i'  é   )ÚnpÚpower)Ú.0ÚjÚdimÚposs     €€r.   ú
<listcomp>zQPegasusSinusoidalPositionalEmbedding.create_weight.<locals>.<listcomp>.<listcomp>W   s7   ø€ ÐLÐLÐL¸Aˆc•B”H˜U A¨¨a©¡L°3Ñ$6Ñ7Ô7Ñ7ÐLÐLÐLr0   )Úrange)rC   rF   rE   s    @€r.   rG   zFPegasusSinusoidalPositionalEmbedding.create_weight.<locals>.<listcomp>W   s9   øø€ ÐeÐeÐeÐQTÐLÐLÐLÐLÐLÅÀsÁÄÐLÑLÔLÐeÐeÐer0   F)ÚdtypeÚrequires_gradr@   r   r!   N)Úweightr)   rA   ÚarrayrH   ÚtorchÚemptyrI   ÚFloatTensorÚsinÚcos)r;   Ún_posÚposition_encÚoutÚsentinelrE   s        @r.   Úcreate_weightz2PegasusSinusoidalPositionalEmbedding.create_weightP   s  ø€ ð
 ”[Ô&‰
ˆˆsÝ”xØeÐeÐeÐeÕX]Ð^cÑXdÔXdÐeÑeÔeñ
ô 
ˆõ Œk˜% ¨D¬KÔ,=ÈUÐSÑSÔSˆØ" Q™w¨!š|˜|�3˜!‘8�8°#¸±(¸a±ˆÝ"Ô.­r¬v°lÀ1À1À1ÀaÀdÈÀdÀ7Ô6KÑ/LÔ/LÑMÔMˆˆAˆAˆAˆq�ˆzˆMÑÝ!Ô-­b¬f°\À!À!À!ÀQÀTÈÀTÀ'Ô5JÑ.KÔ.KÑLÔLˆˆAˆAˆAˆxˆyˆyˆLÑØˆ
r0   r   Úinput_ids_shapeÚpast_key_values_lengthÚposition_idsc                 óÂ   •— |€<|dd…         \  }}t          j        |||z   t           j        | j        j        ¬¦  «        }t          ¦   «                              |¦  «        S )z3`input_ids_shape` is expected to be [bsz x seqlen].Nr@   )rI   Údevice)rM   ÚarangeÚlongrK   r[   r9   Úforward)r;   rW   rX   rY   ÚbszÚseq_lenr<   s         €r.   r^   z,PegasusSinusoidalPositionalEmbedding.forward_   se   ø€ ð
 ÐØ*¨2¨A¨2Ô.‰LˆC�Ý œ<Ø&Ð(>ÀÑ(HÕPUÔPZÐcgÔcnÔcuðñ ô ˆLõ ‰wŒw�Š˜|Ñ,Ô,Ð,r0   ©N)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr:   rV   rM   Úno_gradÚSizeÚTensorr^   Ú__classcell__©r<   s   @r.   r2   r2   J   së   ø€ € € € € ØNÐNðEð E cð E¸#ð EÈCÐRVÉJð EÐbfð Eð Eð Eð Eð Eð Eðð ð ð €U„]�_„_àptð	-ð 	-Ø$œzð	-ØCFð	-ØZ_ÔZfÐimÑZmð	-à	Œð	-ð 	-ð 	-ð 	-ð 	-ñ „_ð	-ð 	-ð 	-ð 	-ð 	-r0   r2   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )Nr'   ç      à¿r@   r   ©rE   ©ÚpÚtrainingr!   )
ÚsizerM   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrs   rz   Ú
contiguous)
rm   rn   ro   rp   rq   rr   rs   rt   Ú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Ô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' paperrl   FTNÚ	embed_dimÚ	num_headsrs   Ú
is_decoderÚbiasÚ	is_causalÚconfigÚ	layer_idxc	                 óz  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        || _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        || _	        || _
        || _        |€/| j	        r(t                               d| j        j        › d�¦  «         t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        t!          j        |||¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).rv   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‡   rs   Úhead_dimr‹   r+   rr   rˆ   rŠ   rŒ   ÚloggerÚwarning_oncer<   rb   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)
r;   r†   r‡   rs   rˆ   r‰   rŠ   r‹   rŒ   r<   s
            €r.   r:   zPegasusAttention.__init__�   sY  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒØ$ˆŒØ"ˆŒØ"ˆŒØÐ ¤ÐÝ×Òð,¨4¬>Ô+Bð ,ð ,ð ,ñô ð õ ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝœ	 )¨Y¸TÐBÑBÔBˆŒˆˆr0   Úhidden_statesÚkey_value_statesÚpast_key_valuesrq   rt   r6   c                 óŽ  — |du}|j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }	d}
|�Ht          |t          ¦  «        r1|j                             | j	        ¦  «        }
|r|j
        }n
|j        }n|}|r|n|}|r3|�1|
r/|j        | j	                 j        }|j        | j	                 j        }nÞ|                      |¦  «        }|                      |¦  «        }g |j         dd…         ¢d‘| j        ‘R }|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }|�E|                     ||| j	        ¦  «        \  }}|r$t          |t          ¦  «        rd|j        | j	        <   t%          j        | j        j        t,          ¦  «        } || |	|||f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )	z#Input shape: Batch x Time x ChannelNr'   r!   r@   FTrl   )rs   rr   )r)   r�   r•   Úviewr}   Ú
isinstancer   Ú
is_updatedÚgetrŒ   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesr“   r”   Úupdater   Úget_interfacer‹   Ú_attn_implementationrƒ   rz   rs   rr   Úreshaper€   r–   )r;   r—   r˜   r™   rq   rt   Ú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.   r^   zPegasusAttention.forward´   s¨  € ð .°TÐ9Ðð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆð —{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆàˆ
ØÐ&Ý˜/Õ+>Ñ?Ô?ð 7Ø,Ô7×;Ò;¸D¼NÑKÔK�
Ø%ð Pà+:Ô+PÐ(Ð(à+:Ô+OÐ(Ð(à'6Ð$à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš ^Ñ4Ô4ˆJØŸ;š; ~Ñ6Ô6ˆLØF˜Ô-¨c¨r¨cÔ2ÐF°BÐF¸¼ÐFÐFˆHØ#Ÿš¨Ñ2Ô2×<Ò<¸QÀÑBÔBˆJØ'×,Ò,¨XÑ6Ô6×@Ò@ÀÀAÑFÔFˆLàÐ*Ø+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}Ð>�C�C°$´,Ø”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜LÐ(Ð(r0   )rl   FTFNN©NNN)rb   rc   rd   re   rf   ÚfloatÚboolr"   r:   rM   ri   r	   r   r   Útupler^   rj   rk   s   @r.   r…   r…   Š   s]  ø€ € € € € ØGÐGð Ø ØØØ'+Ø $ð%Cð %Càð%Cð ð%Cð ð	%Cð
 ð%Cð ð%Cð ð%Cð  Ñ$ð%Cð ˜‘:ð%Cð %Cð %Cð %Cð %Cð %CðT 15Ø(,Ø.2ðH)ð H)à”|ðH)ð  œ,¨Ñ-ðH)ð  ™ð	H)ð
 œ tÑ+ðH)ð Ð-Ô.ðH)ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ðH)ð H)ð H)ð H)ð H)ð H)ð H)ð H)r0   r…   c                   óf   ‡ — 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                 ó  •— t          ¦   «                              ¦   «          |j        | _        t	          | j        |j        |j        |¬¦  «        | _        t          j	        | j        ¦  «        | _
        |j        | _        t          |j                 | _        |j        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        t          j	        | j        ¦  «        | _        d S )N)r†   r‡   rs   r‹   )r9   r:   Úd_modelr†   r…   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normrs   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ØÔ4ØÔ,Øð	
ñ 
ô 
ˆŒõ %'¤L°´Ñ$@Ô$@ˆÔ!Ø”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔÝ”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr0   r—   rq   rt   r6   c                 óº  — |}|                       |¦  «        } | j        d||dœ|¤Ž\  }}t          j                             || j        | j        ¬¦  «        }||z   }|}|                      |¦  «        }|                      |                      |¦  «        ¦  «        }t          j                             || j	        | j        ¬¦  «        }|  
                    |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|j        t          j        k    r9t          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—   rq   rx   iè  )ÚminÚmax© )r¾   r¼   r   r~   rs   rz   rÅ   rÀ   rÃ   rÁ   rÄ   rI   rM   Úfloat16ÚfinforÉ   Úclamp)r;   r—   rq   rt   ÚresidualÚ_Úclamp_values          r.   r^   zPegasusEncoderLayer.forward  s[  € ð !ˆØ×1Ò1°-Ñ@Ô@ˆØ)˜4œ>ð 
Ø'Ø)ð
ð 
ð ð
ð 
Ñˆ�qõ
 œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆà ˆØ×-Ò-¨mÑ<Ô<ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆàÔ¥%¤-Ò/Ð/Ýœ+ mÔ&9Ñ:Ô:Ô>ÀÑEˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMàÐr0   )rb   rc   rd   r"   r:   rM   ri   r   r   r^   rj   rk   s   @r.   r·   r·      sŠ   ø€ € € € € ð=˜}ð =ð =ð =ð =ð =ð =ð$"à”|ð"ð œð"ð Ð+Ô,ð	"ð
 
Œð"ð "ð "ð "ð "ð "ð "ð "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        ¦  «        | _        d S )NT)r†   r‡   rs   rˆ   rŠ   r‹   rŒ   )rs   rˆ   r‹   rŒ   )r9   r:   r¹   r†   r…   Údecoder_attention_headsr»   r¼   rs   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ØÔ4ØÔ,ØØØØð
ñ 
ô 
ˆŒð ”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔå$&¤L°´Ñ$@Ô$@ˆÔ!Ý,ØŒNØÔ*ØÔ,ØØØð
ñ 
ô 
ˆÔõ (*¤|°D´NÑ'CÔ'CˆÔ$Ý”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr0   Tr—   rq   Úencoder_hidden_statesÚencoder_attention_maskr™   Ú	use_cachert   r6   c                 óÞ  — |}|                       |¦  «        } | j        d|||dœ|¤Ž\  }}	t          j                             || j        | j        ¬¦  «        }||z   }|�]|}|                      |¦  «        } | j        d||||dœ|¤Ž\  }}	t          j                             || j        | j        ¬¦  «        }||z   }|}|                      |¦  «        }|  	                    |  
                    |¦  «        ¦  «        }t          j                             || j        | j        ¬¦  «        }|                      |¦  «        }t          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™   rq   rx   N)r—   r˜   rq   r™   rÊ   )r¾   r¼   r   r~   rs   rz   rÖ   rÕ   rÅ   rÀ   rÃ   rÁ   rÄ   )
r;   r—   rq   rØ   rÙ   r™   rÚ   rt   rÎ   rÏ   s
             r.   r^   zPegasusDecoderLayer.forwardY  s§  € ð* !ˆØ×1Ò1°-Ñ@Ô@ˆð *˜4œ>ð 
Ø'Ø+Ø)ð
ð 
ð ð	
ð 
Ñˆ�qõ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆð !Ð,Ø$ˆHØ ×8Ò8¸ÑGÔGˆMà0˜tÔ0ð  Ø+Ø!6Ø5Ø /ð	 ð  ð
 ð ð  ÑˆM˜1õ œM×1Ò1°-À4Ä<ÐZ^ÔZgÐ1ÑhÔhˆMØ$ }Ñ4ˆMð !ˆØ×-Ò-¨mÑ<Ô<ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆàÐr0   ra   )NNNNT)rb   rc   rd   r"   rf   r:   rM   ri   r	   r´   r   r   r^   rj   rk   s   @r.   rÒ   rÒ   9  sô   ø€ € € € € ð=ð =˜}ð =¸¸t¹ð =ð =ð =ð =ð =ð =ðD /3Ø59Ø6:Ø(,Ø!%ð:ð :à”|ð:ð œ tÑ+ð:ð  %œ|¨dÑ2ð	:ð
 !&¤¨tÑ 3ð:ð  ™ð:ð ˜$‘;ð:ð Ð+Ô,ð:ð 
Œð:ð :ð :ð :ð :ð :ð :ð :r0   rÒ   c                   ól   ‡ — 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                 ó0  •— t          ¦   «                              |¦  «         t          |t          ¦  «        r.t	          j        |j        |                     ¦   «         ¦  «         d S t          |t          ¦  «        rt	          j	        |j
        ¦  «         d S d S ra   )r9   Ú_init_weightsrœ   r2   ÚinitÚcopy_rK   rV   ÚPegasusForConditionalGenerationÚzeros_Úfinal_logits_bias)r;   rm   r<   s     €r.   rà   z$PegasusPreTrainedModel._init_weights   sŠ   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕBÑCÔCð 	2ÝŒJ�v”} f×&:Ò&:Ñ&<Ô&<Ñ=Ô=Ð=Ð=Ð=Ý˜Õ ?Ñ@Ô@ð 	2ÝŒK˜Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r0   )rb   rc   rd   r"   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphrM   rg   rà   rj   rk   s   @r.   rÝ   rÝ   –  s{   ø€ € € € € € àÐÐÑØÐØ&*Ð#ØÐØ€NØÐØ!Ðà€U„]�_„_ð2ð 2ð 2ð 2ñ „_ð2ð 2ð 2ð 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                 óh  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        }‰j        | _        ‰j        | _	        ‰j
        rt          j        |¦  «        nd| _        t          j        ‰j        || j        ¦  «        | _        t%          ‰j        || j        ¦  «        | _        t          j        ˆfd„t+          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ¦  «        | _        d| _        |                      ¦   «          d S )Nç      ð?c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rÊ   )r·   )rC   rÏ   r‹   s     €r.   rG   z+PegasusEncoder.__init__.<locals>.<listcomp>Ê  s"   ø€ Ð$gÐ$gÐ$gÀQÕ%8¸Ñ%@Ô%@Ð$gÐ$gÐ$gr0   F)r9   r:   rs   Úencoder_layerdropÚ	layerdropr¹   r$   r5   Úmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtÚembed_scaler   Ú	EmbeddingÚ
vocab_sizeÚembed_tokensr2   Úembed_positionsÚ
ModuleListrH   Úencoder_layersr¡   r½   Ú
layer_normÚgradient_checkpointingÚ	post_init)r;   r‹   r†   r<   s    ` €r.   r:   zPegasusEncoder.__init__¸  s  øø€ Ý‰Œ×Ò˜Ñ Ô Ð à”~ˆŒØÔ1ˆŒà”Nˆ	Ø!Ô.ˆÔØ$*Ô$BˆÔ!Ø39Ô3IÐR�4œ9 YÑ/Ô/Ð/ÈsˆÔåœL¨Ô):¸IÀtÔGWÑXÔXˆÔåCØÔ*ØØÔñ 
ô  
ˆÔõ
 ”mÐ$gÐ$gÐ$gÐ$gÍ%ÐPVÔPeÑJfÔJfÐ$gÑ$gÔ$gÑhÔhˆŒÝœ, v¤~Ñ6Ô6ˆŒà&+ˆÔ#à�ŠÑÔÐÐÐr0   Únew_num_position_embeddingsc                 ób  — t                                d|› d�¦  «         || j        _        t	          | j        j        | j        j        | j        ¦  «        | _        t          j	        | j        j
        | j                             ¦   «         ¦  «         | j                             | j        ¦  «         dS ©áÛ  
        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â   rK   rV   Útor[   ©r;   r  s     r.   Úresize_position_embeddingsz)PegasusEncoder.resize_position_embeddingsÑ  ó�   € õ 	�ŠÐ`Ð?ZÐ`Ð`Ð`ÑaÔaÐaØ.IˆŒÔ+åCØŒKÔ/ØŒKÔØÔñ 
ô  
ˆÔõ
 	Œ
�4Ô'Ô.°Ô0D×0RÒ0RÑ0TÔ0TÑUÔUÐUØÔ×Ò ¤Ñ,Ô,Ð,Ð,Ð,r0   r6   c                 ó   — | j         S ©z8
        Returns the position embeddings matrix
        ©rþ   ©r;   s    r.   Úget_position_embeddingsz&PegasusEncoder.get_position_embeddingsé  ó   € ð Ô#Ð#r0   Nrt   c                 ó2  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        | j        z  }|j        d d…         }|                      |¦  «        }||z   }t
          j                             || j        | j        ¬¦  «        }t          | j
        ||¬¦  «        }t          | j        ¦  «        D ];\  }}	d}
| j        r!t          j        g ¦  «        }|| j        k     rd}
|
s
 |	||fi |¤Ž}Œ<|                      |¦  «        }t#          |¬¦  «        S )Nz:You must specify exactly one of input_ids or inputs_embedsr'   rx   )r‹   Úinputs_embedsrq   FT)Úlast_hidden_state)r+   rý   rú   r)   rþ   r   r~   rs   rz   r   r‹   Ú	enumerater¡   rM   Úrandrô   r  r   )r;   r#   rq   r  rt   r©   Ú	embed_posr—   ÚidxÚencoder_layerÚto_dropÚdropout_probabilitys               r.   r^   zPegasusEncoder.forwardï  sf  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàÐ Ø ×-Ò-¨iÑ8Ô8¸4Ô;KÑKˆMà#Ô)¨#¨2¨#Ô.ˆØ×(Ò(¨Ñ5Ô5ˆ	à%¨	Ñ1ˆåœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆõ #,¨D¬KÑ"8Ô"8ð 	ð 	ÑˆC�àˆGØŒ}ð #Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Ø"�Gàð Ø - Ø!Ø"ð!ð !ð ð!ð !�øð Ÿš¨Ñ6Ô6ˆåØ+ð
ñ 
ô 
ð 	
r0   r²   )rb   rc   rd   re   r·   r…   Ú_can_record_outputsr"   r:   rf   r  r   rû   r  r   r    r   r   r   r   r^   rj   rk   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                 óx  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j	        rt          j        ‰j        ¦  «        nd| _        t          j        ‰j        ‰j        | j        ¦  «        | _        t%          ‰j        ‰j        | j        ¦  «        | _        t          j        ˆfd„t+          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ¦  «        | _        d| _        |                      ¦   «          d S )Nrñ   c                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ))rŒ   )rÒ   )rC   Úir‹   s     €r.   rG   z+PegasusDecoder.__init__.<locals>.<listcomp>@  s(   ø€ Ð$tÐ$tÐ$tÐRSÕ%8¸È1Ð%MÑ%MÔ%MÐ$tÐ$tÐ$tr0   F)r9   r:   rs   Údecoder_layerdroprô   r$   r5   rõ   Úmax_target_positionsr÷   rø   rù   r¹   rú   r   rû   rü   rý   r2   rþ   rÿ   rH   Údecoder_layersr¡   r½   r  r  r  rÆ   s    `€r.   r:   zPegasusDecoder.__init__1  s  øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø”~ˆŒØÔ1ˆŒØ!Ô.ˆÔØ$*Ô$BˆÔ!Ø8>Ô8NÐW�4œ9 V¤^Ñ4Ô4Ð4ÐTWˆÔåœL¨Ô):¸F¼NÈDÔL\Ñ]Ô]ˆÔåCØÔ*ØŒNØÔñ 
ô  
ˆÔõ
 ”mÐ$tÐ$tÐ$tÐ$tÕW\Ð]cÔ]rÑWsÔWsÐ$tÑ$tÔ$tÑuÔuˆŒÝœ, v¤~Ñ6Ô6ˆŒà&+ˆÔ#à�ŠÑÔÐÐÐr0   r  c                 ób  — t                                d|› d�¦  «         || j        _        t	          | j        j        | j        j        | j        ¦  «        | _        t          j	        | j        j
        | j                             ¦   «         ¦  «         | j                             | j        ¦  «         dS 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   Nrt   c                 óX  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|| j        z  }|r[|€Y|€| j        j        r6t          t          | j        ¬¦  «        t          | j        ¬¦  «        ¦  «        nt          | j        ¬¦  «        }|                     ¦   «         d d…         \  }	}
|�|                     ¦   «         nd}t          j
        |
|j        ¬¦  «        |z   }|€/t          ¦   «         s!||
z   }t          j        |	||j        ¬¦  «        }t          |t
          ¦  «        r|j        n|}t!          | j        |||¬¦  «        }t#          | j        |||¬¦  «        }|                      |	|
f||¬¦  «        }||z   }t&          j                             || j        | j        ¬	¦  «        }t/          | j        ¦  «        D ];\  }}| j        r t          j        g ¦  «        }|| j        k     rŒ, ||||f|||d
œ|¤Ž}Œ<|                      |¦  «        }t9          ||¬¦  «        S )NzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time)r‹   r'   r   ©r[   )r‹   r  rq   r™   )r‹   r  rq   rØ   )rY   rx   )rÙ   r™   rÚ   )r  r™   )r+   rý   rú   r‹   Úis_encoder_decoderr   r
   r{   Úget_seq_lengthrM   r\   r[   r   Úonesrœ   r    r   r   rþ   r   r~   rs   rz   r  r¡   r  rô   r  r   )r;   r#   rq   rØ   rÙ   r™   r  rÚ   rt   Ú
batch_sizeÚ
seq_lengthrX   rY   Úmask_seq_lengthÚself_attn_cacheÚcausal_maskÚ	positionsr—   r  Údecoder_layerr  s                        r.   r^   zPegasusDecoder.forwarde  sµ  € ð ˜Ð -°tÐ";Ñ<ð 	uÝÐsÑtÔtÐtàÐ Ø ×-Ò-¨iÑ8Ô8ˆMð &¨Ô(8Ñ8ˆð ð 	˜Ð0ð )Ð4¸¼Ô8VÐ4õ $¥L¸¼Ð$DÑ$DÔ$DÅlÐZ^ÔZeÐFfÑFfÔFfÑgÔgÐgå!¨¬Ð5Ñ5Ô5ð ð "/×!3Ò!3Ñ!5Ô!5°c°r°cÔ!:Ñˆ
�JØETÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐÝ”| J°}Ô7KÐLÑLÔLÐOeÑeˆàÐ!Õ*BÑ*DÔ*DÐ!à4°zÑAˆOÝ"œZ¨
°OÈMÔL`ÐaÑaÔaˆNõ ˜/Õ+>Ñ?Ô?ð!ˆOÔ0Ð0à ð 	õ )Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆõ ";Ø”;Ø'Ø1Ø"7ð	"
ñ "
ô "
Ðð ×(Ò(¨*°jÐ)AÐCYÐhtÐ(ÑuÔuˆ	Ø%¨	Ñ1ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆå"+¨D¬KÑ"8Ô"8ð 	ð 	ÑˆC�àŒ}ð Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Øà)˜MØØØ%ðð (>Ø /Ø#ðð ð ðð ˆMˆMð Ÿš¨Ñ6Ô6ˆå8Ø+Ø+ð
ñ 
ô 
ð 	
r0   )NNNNNNN)rb   rc   rd   re   rÒ   r   r…   r  r"   r:   rf   r  r   rû   r  r   r    r   r   r   r   r^   rj   rk   s   @r.   r   r   "  s9  ø€ € € € € ðð ð -Ø$�nÐ%5¸QÈ;ÐWÑWÔWØ*˜NÐ+;À1ÐQ_Ð`Ñ`Ô`ðð Ðð˜}ð ð ð ð ð ð ð,-Àcð -ð -ð -ð -ð0$¨¬ð $ð $ð $ð $ð  ØØð ØØ"Ø#ØØØðS
ð S
ð Ð+Ô,ðS
ð 
3ðS
ð S
ð S
ñ „^ñ „_ñ  ÔðS
ð S
ð S
ð S
ð S
r0   r   c                   ój  ‡ — 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          |¦  «        | _        |                      ¦   «          d S ra   )r9   r:   r$   rü   r   rû   r¹   Úsharedrî   Úencoderr   Údecoderr  )r;   r‹   r5   rü   r<   s       €r.   r:   zPegasusModel.__init__Å  sw   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à"(Ô"5°vÔ7H�ZˆÝ”l :¨v¬~¸{ÑKÔKˆŒå% fÑ-Ô-ˆŒÝ% fÑ-Ô-ˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S ra   )r;  r  s    r.   Úget_input_embeddingsz!PegasusModel.get_input_embeddingsÑ  s
   € ØŒ{Ðr0   c                 óX   — || _         | j         | j        _        | j         | j        _        d S ra   )r;  r<  rý   r=  ©r;   rp   s     r.   Úset_input_embeddingsz!PegasusModel.set_input_embeddingsÔ  s'   € ØˆŒØ$(¤KˆŒÔ!Ø$(¤KˆŒÔ!Ð!Ð!r0   r  c                 ó†   — || j         _        | j                             |¦  «         | j                             |¦  «         dS ©r  N)r‹   rõ   r<  r  r=  r  s     r.   r  z'PegasusModel.resize_position_embeddingsÙ  sC   € ð /JˆŒÔ+ØŒ×/Ò/Ð0KÑLÔLÐLØŒ×/Ò/Ð0KÑLÔLÐLÐLÐLr0   r6   c                 óf   — | j                              ¦   «         | j                             ¦   «         fS r  )r<  r  r=  r  s    r.   r  z$PegasusModel.get_position_embeddingsê  s+   € ð ”×4Ò4Ñ6Ô6¸¼×8\Ò8\Ñ8^Ô8^Ð_Ð_r0   Nr#   rq   Údecoder_input_idsÚdecoder_attention_maskÚencoder_outputsr™   r  Údecoder_inputs_embedsrÚ   rt   c
                 ó¤  — |€ | j         d	|||dœ|
¤Ž}nct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    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#   rq   r  r   r!   r@   )r  r—   rï   ©r#   rq   rØ   rÙ   r™   r  rÚ   )r  r™   Údecoder_hidden_statesÚdecoder_attentionsr#  Úencoder_last_hidden_staterØ   Úencoder_attentionsrÊ   )r<  rœ   r   Úlenr=  r   r  r™   r—   rï   r#  )r;   r#   rq   rF  rG  rH  r™   r  rI  rÚ   rt   Údecoder_outputss               r.   r^   zPegasusModel.forwardð  s8  € ð` Ð"Ø*˜dœlð Ø#Ø-Ø+ðð ð ð	ð ˆOˆOõ ˜O­_Ñ=Ô=ð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð '˜$œ,ð 	
Ø'Ø1Ø"1°!Ô"4Ø#1Ø+Ø/Øð	
ð 	
ð ð	
ð 	
ˆõ "Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r0   )	NNNNNNNNN)rb   rc   rd   Ú_tied_weights_keysr"   r:   r?  rB  rf   r  rµ   r   rû   r  r   r   rM   ri   rO   r	   r´   r   r   r   r^   rj   rk   s   @r.   r9  r9  ¾  sÖ  ø€ € € € € ð (7Ø'6ðð Ðð

˜}ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð0ð 0ð 0ð
MÀcð Mð Mð Mð Mð"`¨¨r¬|Ô)<ð `ð `ð `ð `ð Øð *.Ø.2Ø15Ø6:Ø;?Ø(,Ø-1Ø59Ø!%ðR
ð R
à”< $Ñ&ðR
ð œ tÑ+ðR
ð !œ<¨$Ñ.ð	R
ð
 !&¤¨tÑ 3ðR
ð ˜uÔ0Ô1°DÑ8ðR
ð  ™ðR
ð ”| dÑ*ðR
ð  %œ|¨dÑ2ðR
ð ˜$‘;ðR
ð Ð+Ô,ðR
ð 
Ð#Ñ	#ðR
ð R
ð R
ñ „^ñ ÔðR
ð R
ð R
ð R
ð R
r0   r9  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                 ól  •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      dt          j        d| j        j        j        f¦  «        ¦  «         t          j
        |j        | j        j        j        d¬¦  «        | _        |                      ¦   «          d S )Nrå   r!   FrŽ   )r9   r:   r9  rÞ   Úregister_bufferrM   Úzerosr;  Únum_embeddingsr   r’   r¹   Úlm_headr  rÆ   s     €r.   r:   z(PegasusForConditionalGeneration.__init__S  s“   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý! &Ñ)Ô)ˆŒ
Ø×ÒÐ0µ%´+¸qÀ$Ä*ÔBSÔBbÐ>cÑ2dÔ2dÑeÔeÐeÝ”y ¤°´Ô1BÔ1QÐX]Ð^Ñ^Ô^ˆŒð 	�ŠÑÔÐÐÐr0   NTÚnew_num_tokensÚpad_to_multiple_ofÚmean_resizingr6   c                 ó˜   •— t          ¦   «                              |||¦  «        }|                      |j        j        d         ¦  «         |S )Nr   )r9   Úresize_token_embeddingsÚ_resize_final_logits_biasrK   r)   )r;   r[  r\  r]  Únew_embeddingsr<   s        €r.   r_  z7PegasusForConditionalGeneration.resize_token_embeddings\  sG   ø€ õ ™œ×8Ò8¸ÐI[Ð]jÑkÔkˆØ×&Ò& ~Ô'<Ô'BÀ1Ô'EÑFÔFÐFØÐr0   c                 ó  — | j         j        d         }||k    r| j         d d …d |…f         }nBt          j        d||z
  f| j         j        ¬¦  «        }t          j        | j         |gd¬¦  «        }|                      d|¦  «         d S )Nr'   r!   r-  rw   rå   )rå   r)   rM   rX  r[   ÚcatrW  )r;   r[  Úold_num_tokensÚnew_biasÚ
extra_biass        r.   r`  z9PegasusForConditionalGeneration._resize_final_logits_biasc  s—   € ØÔ/Ô5°bÔ9ˆØ˜^Ò+Ð+ØÔ-¨a¨a¨a°°.°Ð.@ÔAˆHˆHåœ a¨¸.Ñ)HÐ%IÐRVÔRhÔRoÐpÑpÔpˆJÝ”y $Ô"8¸*Ð!EÈ1ÐMÑMÔMˆHØ×ÒÐ0°(Ñ;Ô;Ð;Ð;Ð;r0   r  c                 óš   — || j         _        | j        j                             |¦  «         | j        j                             |¦  «         dS rD  )r‹   rõ   rÞ   r<  r  r=  r  s     r.   r  z:PegasusForConditionalGeneration.resize_position_embeddingsl  sI   € ð /JˆŒÔ+ØŒ
Ô×5Ò5Ð6QÑRÔRÐRØŒ
Ô×5Ò5Ð6QÑRÔRÐRÐRÐRr0   c                 óz   — | j         j                             ¦   «         | j         j                             ¦   «         fS r  )rÞ   r<  r  r=  r  s    r.   r  z7PegasusForConditionalGeneration.get_position_embeddings}  s1   € ð ”
Ô"×:Ò:Ñ<Ô<¸d¼jÔ>P×>hÒ>hÑ>jÔ>jÐkÐkr0   r#   rq   rF  rG  rH  r™   r  rI  ÚlabelsrÚ   rt   c                 ó  — |	�G|
rt                                d¦  «         d}
|€'|€%t          |	| j        j        | j        j        ¦  «        } | j        |f||||||||
dœ|¤Ž}|                      |j        ¦  «        | j	        z   }d}|	�Kt          ¦   «         } ||                     d| 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)rq   rF  rH  rG  r™   r  rI  rÚ   r'   )	ÚlossÚlogitsr™   rL  rM  r#  rN  rØ   rO  )r�   Úwarningr/   r‹   r$   r%   rÞ   rZ  r  rå   r   r›   rü   r   r™   rL  rM  r#  rN  rØ   rO  )r;   r#   rq   rF  rG  rH  r™   r  rI  ri  rÚ   rt   ÚoutputsÚ	lm_logitsÚmasked_lm_lossÚloss_fcts                   r.   r^   z'PegasusForConditionalGeneration.forwardƒ  sL  € ðr ÐØð mÝ—’ÐkÑlÔlÐlØˆIØ Ð(Ð-BÐ-JÝ$6Ø˜DœKÔ4°d´kÔ6Xñ%ô %Ð!ð '1 d¤jØð'
à)Ø/Ø+Ø#9Ø+Ø'Ø"7Øð'
ð '
ð ð'
ð '
ˆð —L’L Ô!:Ñ;Ô;¸dÔ>TÑTˆ	àˆØÐÝ'Ñ)Ô)ˆHØ%˜X i§n¢n°R¸¼Ô9OÑ&PÔ&PÐRX×R]ÒR]Ð^`ÑRaÔRaÑbÔbˆNåØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r0   c                 óL   — t          || j        j        | j        j        ¦  «        S ra   )r/   r‹   r$   r%   )r;   ri  s     r.   Ú%prepare_decoder_input_ids_from_labelszEPegasusForConditionalGeneration.prepare_decoder_input_ids_from_labelsä  s   € Ý! &¨$¬+Ô*BÀDÄKÔDfÑgÔgÐgr0   )NT)
NNNNNNNNNN)rb   rc   rd   rç   Ú_keys_to_ignore_on_load_missingrR  r"   r:   rf   r´   r   rû   r_  r`  r  rµ   r  r   r   rM   ri   rO   r	   r   r   r   r^   rs  rj   rk   s   @r.   rã   rã   G  sk  ø€ € € € € ð  ÐØ':Ð&;Ð#àÐ/ðÐð˜}ð ð ð ð ð ð ð aeðð Ø!ðØ7:¸T±zðØY]ðà	Œðð ð ð ð ð ð<¸ð <Àð <ð <ð <ð <ðSÀcð Sð Sð Sð Sð"l¨¨r¬|Ô)<ð lð lð lð lð Øð *.Ø.2Ø15Ø6:Ø;?Ø(,Ø-1Ø59Ø&*Ø!%ð]
ð ]
à”< $Ñ&ð]
ð œ tÑ+ð]
ð !œ<¨$Ñ.ð	]
ð
 !&¤¨tÑ 3ð]
ð ˜uÔ0Ô1°DÑ8ð]
ð  ™ð]
ð ”| dÑ*ð]
ð  %œ|¨dÑ2ð]
ð ”˜tÑ#ð]
ð ˜$‘;ð]
ð Ð+Ô,ð]
ð 
�Ñ	 ð]
ð ]
ð ]
ñ „^ñ Ôð]
ð~h¸E¼Lð hð hð hð hð hð hð hð 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                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S ra   )r9   r:   r   r=  r  rÆ   s     €r.   r:   zPegasusDecoderWrapper.__init__ï  s@   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý% fÑ-Ô-ˆŒØ�ŠÑÔÐÐÐr0   c                 ó   —  | j         |i |¤ŽS ra   )r=  )r;   Úargsrt   s      r.   r^   zPegasusDecoderWrapper.forwardô  s   € ØˆtŒ|˜TÐ, VÐ,Ð,Ð,r0   )rb   rc   rd   re   r:   r^   rj   rk   s   @r.   rv  rv  é  sQ   ø€ € € € € ðð ð
ð ð ð ð ð
-ð -ð -ð -ð -ð -ð -r0   rv  c                   óJ  ‡ — 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 )ÚPegasusForCausalLMrU  z!model.decoder.embed_tokens.weightc                 ó*  •— t          j        |¦  «        }d|_        d|_        t	          ¦   «                              |¦  «         t          |¦  «        | _        t          j	        |j
        |j        d¬¦  «        | _        |                      ¦   «          d S )NTFrŽ   )ÚcopyÚdeepcopyrˆ   r.  r9   r:   rv  rÞ   r   r’   Úhidden_sizerü   rZ  r  rÆ   s     €r.   r:   zPegasusForCausalLM.__init__ý  s   ø€ Ý”˜vÑ&Ô&ˆØ ˆÔØ$)ˆÔ!Ý‰Œ×Ò˜Ñ Ô Ð Ý*¨6Ñ2Ô2ˆŒ
å”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐr0   c                 ó$   — | j         j        j        S ra   ©rÞ   r=  rý   r  s    r.   r?  z'PegasusForCausalLM.get_input_embeddings	  s   € ØŒzÔ!Ô.Ð.r0   c                 ó(   — || j         j        _        d S ra   r�  rA  s     r.   rB  z'PegasusForCausalLM.set_input_embeddings  s   € Ø*/ˆŒ
ÔÔ'Ð'Ð'r0   r6   c                 ó>   — | j         j                             ¦   «         S r  )rÞ   r=  r  r  s    r.   r  z*PegasusForCausalLM.get_position_embeddings  s   € ð ŒzÔ!×9Ò9Ñ;Ô;Ð;r0   r  c                 ó\   — || j         _        | j        j                             |¦  «         dS rD  )r‹   rõ   rÞ   r=  r  r  s     r.   r  z-PegasusForCausalLM.resize_position_embeddings  s/   € ð /JˆŒÔ+ØŒ
Ô×5Ò5Ð6QÑRÔRÐRÐRÐRr0   Nr   r#   rq   rØ   rÙ   r™   r  ri  rÚ   Úlogits_to_keeprt   c
                 óþ  —  | j         j        d|||||||dœ|
¤Ž}|d         }t          |	t          ¦  «        rt	          |	 d¦  «        n|	}|                      |dd…|dd…f         ¦  «        }d}|�e|                     |j        ¦  «        }t          ¦   «         } || 	                    d| 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
        ```rK  r   Nr'   )rk  rl  r™   r—   rï   r#  rÊ   )rÞ   r=  rœ   rf   ÚslicerZ  r
  r[   r   r›   r‹   rü   r   r™   r—   rï   r#  )r;   r#   rq   rØ   rÙ   r™   r  ri  rÚ   r…  rt   rn  r—   Úslice_indicesrl  rk  rq  s                    r.   r^   zPegasusForCausalLM.forward%  s)  € ðN >P¸T¼ZÔ=Oð 	>
ØØ)Ø"7Ø#9Ø+Ø'Øð	>
ð 	>
ð ð	>
ð 	>
ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ—Y’Y˜vœ}Ñ-Ô-ˆFÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
r0   )	NNNNNNNNr   )rb   rc   rd   rR  r:   r?  rB  r   rû   r  rf   r  r   r   rM   Ú
LongTensorri   rO   r	   r´   r   r   rµ   r   r^   rj   rk   s   @r.   r{  r{  ø  s¸  ø€ € € € € àÐ=ðÐð
ð 
ð 
ð 
ð 
ð/ð /ð /ð0ð 0ð 0ð<¨¬ð <ð <ð <ð <ðSÀcð Sð Sð Sð Sð  Øð .2Ø.2Ø:>Ø;?Ø(,Ø26Ø*.Ø!%Ø-.ðA
ð A
àÔ# dÑ*ðA
ð œ tÑ+ðA
ð  %Ô0°4Ñ7ð	A
ð
 !&Ô 1°DÑ 8ðA
ð  ™ðA
ð Ô(¨4Ñ/ðA
ð Ô  4Ñ'ðA
ð ˜$‘;ðA
ð ˜eœlÑ*ðA
ð Ð+Ô,ðA
ð 
Ð2Ñ	2ðA
ð A
ð A
ñ „^ñ ÔðA
ð A
ð A
ð A
ð A
r0   r{  )r{  rã   r9  rÝ   )Nrl   )Kre   r}  rø   Úcollections.abcr   ÚnumpyrA   rM   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_loggerrb   r�   ri   rf   r/   rû   r2   ÚModuler³   rƒ   r…   r·   rÒ   rÝ   rî   r   r9  rã   rv  r{  Ú__all__rÊ   r0   r.   ú<module>rž     s-  ðð Ð à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 0Ð 0Ð 0Ð 0Ð 0Ð 0ð 
ˆÔ	˜HÑ	%Ô	%€ð %¤,ð ¸cð Ð[^ð ð ð ð ð"-ð -ð -ð -ð -¨2¬<ñ -ô -ð -ðR !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð:r)ð r)ð r)ð r)ð r)�r”yñ r)ô r)ð r)ðl5ð 5ð 5ð 5ð 5Ð4ñ 5ô 5ð 5ðrZð Zð Zð Zð ZÐ4ñ Zô Zð Zðz ð2ð 2ð 2ð 2ð 2˜_ñ 2ô 2ñ „ð2ð$v
ð v
ð v
ð v
ð v
Ð+ñ v
ô v
ð v
ðrY
ð Y
ð Y
ð Y
ð Y
Ð+ñ Y
ô Y
ð Y
ðx ðE
ð E
ð E
ð E
ð E
Ð)ñ E
ô E
ñ „ðE
ðP €ððñ ô ð
Yhð Yhð Yhð Yhð YhÐ&<¸oñ Yhô Yhñô ð
Yhðz-ð -ð -ð -ð -Ð2ñ -ô -ð -ðq
ð q
ð q
ð q
ð q
Ð/°ñ q
ô q
ð q
ðh nÐ
mÐ
m€€€r0   