Ë
    ÛÓ^j½¦  ã                   ó„  — d Z ddlZddlmZ ddlZddlmZ ddlmZ ddlm	Z
 ddlmZ dd	lmZ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l-m.Z.m/Z/ ddl0m1Z1  e*jd                  e3«      Z4dejj                  de6de6fd„Z7 G d„ dejp                  «      Z9 G d„ dejp                  «      Z:	 	 d>dejv                  dejj                  d ejj                  d!ejj                  d"ejj                  dz  d#e<dz  d$e<d%e$e&   fd&„Z= G d'„ d(ejv                  «      Z> G d)„ d*e«      Z? G d+„ d,e«      Z@e' G d-„ d.e"«      «       ZA G d/„ d0eA«      ZB G d1„ d2eA«      ZCe' G d3„ d4eA«      «       ZD e'd5¬6«       G d7„ d8eAe«      «       ZE G d9„ d:eA«      ZF G d;„ d<eAe«      ZGg d=¢ZHy)?zPyTorch Blenderbot 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é   )ÚBlenderbotConfigÚ	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       ú}/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/blenderbot/modeling_blenderbot.pyÚshift_tokens_rightr/   1   s}   € ð "×+Ñ+¨I¯O©OÓ<ÐØ(ª¨C¨R¨C¨Ñ0×6Ñ6Ó8Ð’a˜™�eÑØ4Ð’a˜�dÑàÐÜÐLÓMÐMà×"Ñ"Ð#4¸Ñ#<¸lÔKàÐó    c                   óv   ‡ — e Zd ZdZdedefˆ fd„Z	 d
dej                  dedej                  dz  fˆ fd	„Z	ˆ xZ
S )Ú$BlenderbotLearnedPositionalEmbeddingzN
    This module learns positional embeddings up to a fixed maximum size.
    Únum_embeddingsÚembedding_dimc                 ó&   •— t         ‰| �  ||«       y ©N)ÚsuperÚ__init__)Úselfr3   r4   Ú	__class__s      €r.   r8   z-BlenderbotLearnedPositionalEmbedding.__init__F   s   ø€ Ü‰Ñ˜¨Õ7r0   NÚ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].Né   )ÚdtypeÚdevice)ÚtorchÚarangeÚlongÚweightrA   r7   Úforward)r9   r;   r<   r=   ÚbszÚseq_lenr:   s         €r.   rF   z,BlenderbotLearnedPositionalEmbedding.forwardI   s]   ø€ ð ÐØ*¨2¨AÐ.‰LˆC�Ü Ÿ<™<Ø&Ð(>ÀÑ(HÔPU×PZÑPZÐcg×cnÑcn×cuÑcuôˆLô ‰w‰˜|Ó,Ð,r0   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr8   rB   ÚSizeÚTensorrF   Ú__classcell__©r:   s   @r.   r2   r2   A   sT   ø„ ñð8 sð 8¸3õ 8ð quñ	-Ø$Ÿz™zð	-ØCFð	-ØZ_×ZfÑZfÐimÑZm÷	-ñ 	-r0   r2   c            
       ó`   ‡ — e Zd ZdZd
dededededz  fˆ fd„Zdej                  fˆ fd	„Z	ˆ xZ
S )ÚBlenderbotScaledWordEmbeddingz\
    This module overrides nn.Embeddings' forward by multiplying with embeddings scale.
    r3   r4   Úpadding_idxÚembed_scaleNc                 ó6   •— t         ‰| �  |||«       || _        y r6   )r7   r8   rU   )r9   r3   r4   rT   rU   r:   s        €r.   r8   z&BlenderbotScaledWordEmbedding.__init__[   s   ø€ Ü‰Ñ˜¨¸ÔDØ&ˆÕr0   r#   c                 ó<   •— t         ‰| �  |«      | j                  z  S r6   )r7   rF   rU   )r9   r#   r:   s     €r.   rF   z%BlenderbotScaledWordEmbedding.forward_   s   ø€ Ü‰w‰˜yÓ)¨D×,<Ñ,<Ñ<Ð<r0   )ç      ð?)rI   rJ   rK   rL   rM   Úfloatr8   rB   rO   rF   rP   rQ   s   @r.   rS   rS   V   sE   ø„ ññ' sð '¸3ð 'ÈSð 'Ð_dÐgkÑ_kõ 'ð= §¡÷ =ñ =r0   rS   Ú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   ©Údim©ÚpÚtrainingr!   )
ÚsizerB   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxr`   rh   Ú
contiguous)
rZ   r[   r\   r]   r^   r_   r`   ra   Úattn_weightsÚattn_outputs
             r.   Úeager_attention_forwardrq   d   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 )ÚBlenderbotAttentionz=Multi-headed attention from 'Attention Is All You Need' paperNÚ	embed_dimÚ	num_headsr`   Ú
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).rc   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.©rw   )r7   r8   rt   ru   r`   Úhead_dimry   r+   r_   rv   rx   rz   ÚloggerÚwarning_oncer:   rI   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)
r9   rt   ru   r`   rv   rw   rx   ry   rz   r:   s
            €r.   r8   zBlenderbotAttention.__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_valuesr^   ra   Úreturnc                 óØ  — |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ç        )r`   r_   )r)   r}   rƒ   Úviewrk   Ú
isinstancer   Ú
is_updatedÚgetrz   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesr�   r‚   Úupdater   Úget_interfacery   Ú_attn_implementationrq   rh   r`   r_   Úreshapern   r„   )r9   r…   r†   r‡   r^   ra   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesr�   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚattention_interfacerp   ro   s                      r.   rF   zBlenderbotAttention.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)rI   rJ   rK   rL   rM   rY   Úboolr"   r8   rB   rO   r	   r   r   ÚtuplerF   rP   rQ   s   @r.   rs   rs   �   s  ø„ ÙGð Ø ØØØ*.Ø $ñ%Càð%Cð ð%Cð ð	%Cð
 ð%Cð ð%Cð ð%Cð ! 4Ñ'ð%Cð ˜‘:õ%CðT 15Ø(,Ø.2ñH)à—|‘|ðH)ð  Ÿ,™,¨Ñ-ðH)ð  ™ð	H)ð
 Ÿ™ tÑ+ðH)ð Ð-Ñ.ðH)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷H)r0   rs   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 )ÚBlenderbotEncoderLayerry   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)rt   ru   r`   ry   )r7   r8   Úd_modelrt   rs   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normr`   r   Úactivation_functionÚactivation_fnÚactivation_dropoutr€   Úencoder_ffn_dimÚfc1Úfc2Úfinal_layer_norm©r9   ry   r:   s     €r.   r8   zBlenderbotEncoderLayer.__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…   r^   ra   rˆ   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…   r^   rf   iè  )ÚminÚmax© )r­   r«   r   rl   r`   rh   r´   r¯   r²   r°   r³   r@   rB   Úfloat16Úfinfor¸   Úclamp)r9   r…   r^   ra   ÚresidualÚ_Úclamp_values          r.   rF   zBlenderbotEncoderLayer.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   )rI   rJ   rK   r"   r8   rB   rO   r   r   rF   rP   rQ   s   @r.   r¦   r¦   ÷   sM   ø„ ð=Ð/õ =ð$"à—|‘|ð"ð Ÿ™ð"ð Ð+Ñ,ð	"ð
 
�‰÷"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 )ÚBlenderbotDecoderLayerNry   rz   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)rt   ru   r`   rv   rx   ry   rz   )r`   rv   ry   rz   )r7   r8   r¨   rt   rs   Údecoder_attention_headsrª   r«   r`   r   r®   r¯   r°   r   r¬   r­   Úencoder_attnÚencoder_attn_layer_normr€   Údecoder_ffn_dimr²   r³   r´   )r9   ry   rz   r:   s      €r.   r8   zBlenderbotDecoderLayer.__init__1  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…   r^   Úencoder_hidden_statesÚencoder_attention_maskr‡   Ú	use_cachera   rˆ   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‡   r^   rf   )r…   r†   r^   r‡   r¹   )r­   r«   r   rl   r`   rh   rÅ   rÄ   r´   r¯   r²   r°   r³   )
r9   r…   r^   rÇ   rÈ   r‡   rÉ   ra   r½   r¾   s
             r.   rF   zBlenderbotDecoderLayer.forwardP  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   r6   )NNNNT)rI   rJ   rK   r"   rM   r8   rB   rO   r	   r£   r   r   rF   rP   rQ   s   @r.   rÁ   rÁ   0  s±   ø„ ñ=Ð/ð =¸CÀ$¹Jõ =ðD /3Ø59Ø6:Ø(,Ø!%ñ:à—|‘|ð:ð Ÿ™ tÑ+ð:ð  %Ÿ|™|¨dÑ2ð	:ð
 !&§¡¨tÑ 3ð:ð  ™ð:ð ˜$‘;ð:ð Ð+Ñ,ð:ð 
�‰÷:r0   rÁ   c                   óR   ‡ — e Zd ZU eed<   dZdZdZdZdZ	dZ
ˆ fd„Zed„ «       Zˆ xZS )ÚBlenderbotPreTrainedModelry   ÚmodelTc                 ó„   •— t         ‰| �  |«       t        |t        «      r t	        j
                  |j                  «       y y r6   )r7   Ú_init_weightsrŒ   Ú"BlenderbotForConditionalGenerationÚinitÚzeros_Úfinal_logits_bias)r9   rZ   r:   s     €r.   rÏ   z'BlenderbotPreTrainedModel._init_weights—  s3   ø€ Ü‰Ñ˜fÔ%Ü�fÔ@ÔAÜ�K‰K˜×0Ñ0Õ1ð Br0   c                 ó°   — | j                   j                  }t        j                  g d¢dddd|gg| j                  ¬«      }|j                  |«      ||dœ}|S )N)r   é   é
   é   r?   r   é   é   r?   ©rA   )r^   r#   Údecoder_input_ids)ry   r$   rB   ÚtensorrA   Úne)r9   Ú	pad_tokenr#   Údummy_inputss       r.   rß   z&BlenderbotPreTrainedModel.dummy_inputsœ  sZ   € à—K‘K×,Ñ,ˆ	Ü—L‘LÒ"2°Q¸¸2¸qÀ)Ð4LÐ!MÐVZ×VaÑVaÔbˆ	à'Ÿl™l¨9Ó5Ø"Ø!*ñ
ˆð
 Ðr0   )rI   rJ   rK   r"   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphrÏ   Úpropertyrß   rP   rQ   s   @r.   rÌ   rÌ   �  sE   ø… àÓØÐØ&*Ð#ØÐØ€NØÐØ!Ðô2ð
 ñó ôr0   rÌ   c                   óÈ   ‡ — e Zd ZdZeedœZdefˆ fd„Ze	e
e	 	 	 ddej                  dz  dej                  dz  dej                  dz  d	ee   d
ef
d„«       «       «       Zˆ xZS )ÚBlenderbotEncoderzì
    Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a
    [`BlenderbotEncoderLayer`].

    Args:
        config: BlenderbotConfig
        embed_tokens (nn.Embedding): output embedding
    )r…   Ú
attentionsry   c                 ó˜  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  }|j                  | _        |j                  | _	        |j                  rt        j                  |«      nd}t        |j                  || j                  |¬«      | _        t!        |j                  |«      | _        t%        j&                  t)        |j*                  «      D �cg c]  }t-        |«      ‘Œ c}«      | _        t%        j0                  |j
                  «      | _        d| _        | j7                  «        y c c}w )NrX   ©rU   F)r7   r8   r`   Úencoder_layerdropÚ	layerdropr¨   r$   rT   Úmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtrS   Ú
vocab_sizeÚembed_tokensr2   Úembed_positionsr   Ú
ModuleListÚrangeÚencoder_layersr¦   r‘   r¬   Ú
layer_normÚgradient_checkpointingÚ	post_init)r9   ry   rt   rU   r¾   r:   s        €r.   r8   zBlenderbotEncoder.__init__·  sþ   ø€ Ü‰Ñ˜Ô à—~‘~ˆŒØ×1Ñ1ˆŒà—N‘Nˆ	Ø!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø.4×.DÒ.D”d—i‘i 	Ô*È#ˆä9Ø×Ñ˜y¨$×*:Ñ*:Èô
ˆÔô  DØ×*Ñ*Øó 
ˆÔô —m‘mÌUÐSY×ShÑShÓMiÖ$jÈÔ%;¸FÕ%CÒ$jÓkˆŒÜŸ,™, v§~¡~Ó6ˆŒà&+ˆÔ#à�‰Õùò %ks   Ã-ENr#   r^   Úinputs_embedsra   rˆ   c                 ó4  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|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'   rf   )ry   rý   r^   FT)Úlast_hidden_state)r+   rõ   ri   rö   r   rl   r`   rh   r   ry   Ú	enumerater‘   rB   Úrandrî   rú   r   )r9   r#   r^   rý   ra   r™   Ú	embed_posr…   ÚidxÚencoder_layerÚto_dropÚdropout_probabilitys               r.   rF   zBlenderbotEncoder.forwardÑ  s+  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø ×-Ñ-¨iÓ8ˆMà#×(Ñ(Ó*¨3¨BÐ/ˆØ×(Ñ(¨Ó5ˆ	à%¨	Ñ1ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä2Ø—;‘;Ø'Ø)ô
ˆô
 #,¨D¯K©KÓ"8ò 	ÑˆC�àˆGØ�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Ø"�GâÙ -Ø!Ø"ñ!ð ñ!‘ð	ð  Ÿ™¨Ó6ˆäØ+ô
ð 	
r0   r¢   )rI   rJ   rK   rL   r¦   rs   Ú_can_record_outputsr"   r8   r   r    r   rB   Ú
LongTensorrO   ÚFloatTensorr   r   r   rF   rP   rQ   s   @r.   ré   ré   ¨  s©   ø„ ñð 0Ø)ñÐð
Ð/õ ð4  ØØð .2Ø.2Ø26ñ	,
à×#Ñ# dÑ*ð,
ð Ÿ™ tÑ+ð,
ð ×(Ñ(¨4Ñ/ð	,
ð
 Ð+Ñ,ð,
ð 
ò,
ó ó ó  ô,
r0   ré   c                   óF  ‡ — e Zd ZdZe eedd¬«       eedd¬«      dœZdefˆ fd„Z	e
ee	 	 	 	 	 	 	 dd
ej                  d	z  dej                  d	z  dej                   d	z  dej                  d	z  ded	z  dej                   d	z  ded	z  dee   defd„«       «       «       Zˆ xZS )ÚBlenderbotDecoderzØ
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`BlenderbotDecoderLayer`]

    Args:
        config: BlenderbotConfig
        embed_tokens (nn.Embedding): output embedding
    r!   r«   )ÚindexÚ
layer_namerÄ   )r…   rê   Úcross_attentionsry   c           	      óÀ  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  rt        j                  |j                  «      nd}t        |j                  |j                  | j                  |¬«      | _        t!        |j                  |j                  «      | _        t%        j&                  t)        |j*                  «      D �cg c]  }t-        ||¬«      ‘Œ c}«      | _        t%        j0                  |j                  «      | _        d| _        | j7                  «        y c c}w )NrX   rì   )rz   F)r7   r8   r`   Údecoder_layerdroprî   r$   rT   rï   Úmax_target_positionsrñ   rò   ró   r¨   rS   rô   rõ   r2   rö   r   r÷   rø   Údecoder_layersrÁ   r‘   r¬   rú   rû   rü   )r9   ry   rU   Úir:   s       €r.   r8   zBlenderbotDecoder.__init__  s  ø€ Ü‰Ñ˜Ô Ø—~‘~ˆŒØ×1Ñ1ˆŒØ!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø39×3IÒ3I”d—i‘i §¡Ô/Èsˆä9Ø×Ñ˜vŸ~™~¨t×/?Ñ/?È[ô
ˆÔô  DØ×*Ñ*Ø�N‰Nó 
ˆÔô —m‘mÜBGÈ×H]ÑH]ÓB^Ö_¸QÔ# F°aÖ8Ò_ó
ˆŒô Ÿ,™, v§~¡~Ó6ˆŒà&+ˆÔ#à�‰Õùò `s   Ã?ENr#   r^   rÇ   rÈ   r‡   rý   rÉ   ra   rˆ   c                 ó„  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|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-        | j.                  «      D ]\  \  }}| j*                  r%t        j0                  g «      }|| j2                  k  rŒ7 ||||f|||d
œ|¤Ž}t        |t4        «      r|d   n|}Œ^ | j7                  |«      }t9        ||¬«      S )NzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time)ry   r'   r   rÚ   )ry   rý   r^   r‡   )ry   rý   r^   rÇ   )r=   rf   )rÈ   r‡   rÉ   )rÿ   r‡   )r+   rõ   ry   Úis_encoder_decoderr   r
   ri   Úget_seq_lengthrB   rC   rA   r   ÚonesrŒ   r�   r   r   rö   r   rl   r`   rh   r   r‘   r  rî   r¤   rú   r   )r9   r#   r^   rÇ   rÈ   r‡   rý   rÉ   ra   Ú
batch_sizeÚ
seq_lengthr<   r=   Úmask_seq_lengthÚself_attn_cacheÚcausal_maskr…   r  Údecoder_layerr  Úlayer_outputss                        r.   rF   zBlenderbotDecoder.forward+  s_  € ð ˜Ð -°tÐ";Ò<ÜÐsÓtÐtàÐ Ø ×-Ñ-¨iÓ8ˆMñ ˜Ð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ô	"
Ðð ×+Ñ+Ø˜Ð$Ð&<È<ð ,ó 
ˆð &¨Ñ4ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä"+¨D¯K©KÓ"8ò 	dÑˆC�à�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Øá)ØØØ%ðð (>Ø /Ø#ñð ñˆMô 1;¸=Ì%Ô0P˜M¨!Ò,ÐVc‰Mð!	dð& Ÿ™¨Ó6ˆä8Ø+Ø+ô
ð 	
r0   )NNNNNNN)rI   rJ   rK   rL   rÁ   r   rs   r  r"   r8   r   r    r   rB   r  rO   r	  r	   r£   r   r   r   rF   rP   rQ   s   @r.   r  r    s  ø„ ñð 0Ù$Ð%8ÀÈkÔZÙ*Ð+>ÀaÐTbÔcñÐðÐ/õ ð2  ØØð .2Ø.2Ø:>Ø:>Ø(,Ø26Ø!%ñU
à×#Ñ# dÑ*ðU
ð Ÿ™ tÑ+ðU
ð  %×0Ñ0°4Ñ7ð	U
ð
 !&× 0Ñ 0°4Ñ 7ðU
ð  ™ðU
ð ×(Ñ(¨4Ñ/ðU
ð ˜$‘;ðU
ð Ð+Ñ,ðU
ð 
3òU
ó ó ó  ôU
r0   r  c                   óJ  ‡ — e Zd ZdddœZdefˆ fd„Zd„ Z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dz  de
j                  dz  de
j                  dz  dedz  dee   defd„«       «       Zˆ xZS )ÚBlenderbotModelzshared.weight)zencoder.embed_tokens.weightzdecoder.embed_tokens.weightry   c                 óJ  •— t         ‰| �  |«       |j                  |j                  }}|j                  rt        j                  |j                  «      nd}t        ||j                  ||¬«      | _	        t        |«      | _        t        |«      | _        | j                  «        y )NrX   rì   )r7   r8   r$   rô   rñ   rò   ró   r¨   rS   Úsharedré   Úencoderr  Údecoderrü   )r9   ry   rT   rô   rU   r:   s        €r.   r8   zBlenderbotModel.__init__�  s}   ø€ Ü‰Ñ˜Ô à"(×"5Ñ"5°v×7HÑ7H�ZˆØ39×3IÒ3I”d—i‘i §¡Ô/ÈsˆÜ3°JÀÇÁÐP[ÐitÔuˆŒÜ(¨Ó0ˆŒÜ(¨Ó0ˆŒð 	�‰Õr0   c                 ó   — | j                   S r6   )r"  ©r9   s    r.   Úget_input_embeddingsz$BlenderbotModel.get_input_embeddings™  s   € Ø�{‰{Ðr0   c                 ó~   — || _         | j                   | j                  _        | j                   | j                  _        y r6   )r"  r#  rõ   r$  ©r9   r]   s     r.   Úset_input_embeddingsz$BlenderbotModel.set_input_embeddingsœ  s)   € ØˆŒØ$(§K¡Kˆ�‰Ô!Ø$(§K¡Kˆ�‰Õ!r0   Nr#   r^   rÛ   Údecoder_attention_maskÚencoder_outputsr‡   rý   Údecoder_inputs_embedsrÉ   ra   rˆ   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 )
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)

            Blenderbot uses the `bos_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, BlenderbotModel

        >>> model = BlenderbotModel.from_pretrained("facebook/blenderbot-400M-distill")
        >>> tokenizer = AutoTokenizer.from_pretrained("facebook/blenderbot-400M-distill")

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

        >>> last_hidden_states = outputs.last_hidden_state
        >>> list(last_hidden_states.shape)
        [1, 6, 1280]
        ```N)r#   r^   rý   r   r!   r?   )rÿ   r…   rê   ©r#   r^   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  )r9   r#   r^   rÛ   r+  r,  r‡   rý   r-  rÉ   ra   Údecoder_outputss               r.   rF   zBlenderbotModel.forward¡  s  € ð` Ð"Ø/;¨t¯|©|ð 0Ø#Ø-Ø+ñ0ð ñ	0‰Oô ˜O¬_Ô=Ü-Ø"1°!Ñ"4Ü47¸Ó4HÈ1Ò4L˜o¨aÒ0ÐRVÜ14°_Ó1EÈÒ1I˜?¨1Ò-ÈtôˆOð FRÀTÇ\Á\ð 	F
Ø'Ø1Ø"1°!Ñ"4Ø#1Ø+Ø/Øñ	F
ð ñ	F
ˆô "Ø-×?Ñ?Ø+×;Ñ;Ø"1×"?Ñ"?Ø.×9Ñ9Ø,×=Ñ=Ø&5×&GÑ&GØ"1×"?Ñ"?Ø.×9Ñ9ô	
ð 		
r0   )	NNNNNNNNN)rI   rJ   rK   Ú_tied_weights_keysr"   r8   r'  r*  r   r   rB   r  rO   r   r	   r	  r£   r   r   r   rF   rP   rQ   s   @r.   r   r   †  s/  ø„ ð (7Ø'6ñÐð

Ð/õ 
òò0ð
 Øð .2Ø.2Ø59Ø:>Ø26Ø(,Ø26Ø:>Ø!%ñP
à×#Ñ# dÑ*ðP
ð Ÿ™ tÑ+ðP
ð !×+Ñ+¨dÑ2ð	P
ð
 !&× 0Ñ 0°4Ñ 7ðP
ð )¨4Ñ/ðP
ð  ™ðP
ð ×(Ñ(¨4Ñ/ðP
ð  %×0Ñ0°4Ñ7ðP
ð ˜$‘;ðP
ð Ð+Ñ,ðP
ð 
òP
ó ó ôP
r0   r   z\
    The Blenderbot 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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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fd„«       «       Zˆ xZS )rÐ   rÍ   rÓ   úlm_head.weightzmodel.shared.weightry   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|   )r7   r8   r   rÍ   Úregister_bufferrB   Úzerosr"  r3   r   r€   r¨   Úlm_headrü   rµ   s     €r.   r8   z+BlenderbotForConditionalGeneration.__init__  s€   ø€ Ü‰Ñ˜Ô Ü$ VÓ,ˆŒ
Ø×ÑÐ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_resizingrˆ   c                 óz   •— t         ‰| �  |||«      }| j                  |j                  j                  d   «       |S )Nr   )r7   Úresize_token_embeddingsÚ_resize_final_logits_biasrE   r)   )r9   r>  r?  r@  Únew_embeddingsr:   s        €r.   rB  z:BlenderbotForConditionalGeneration.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Ú   rd   rÓ   )rÓ   r)   rB   r<  rA   Úcatr;  )r9   r>  Úold_num_tokensÚnew_biasÚ
extra_biass        r.   rC  z<BlenderbotForConditionalGeneration._resize_final_logits_bias  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#   r^   rÛ   r+  r,  r‡   rý   r-  ÚlabelsrÉ   ra   c                 óØ  — |	�R|
rt         j                  d«       d}
|€7|€5t        |	| j                  j                  | j                  j
                  «      } | j                  |f||||||||
dœ|¤Ž}| j                  |d   «      }|| j                  j                  |j                  «      z   }d}|	�a|	j                  |j                  «      }	t        «       } ||j                  d| j                  j                  «      |	j                  d«      «      }t        |||j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  ¬«	      S )a4  
        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)

            Blenderbot uses the `bos_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 conversation:

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

        >>> mname = "facebook/blenderbot-400M-distill"
        >>> model = BlenderbotForConditionalGeneration.from_pretrained(mname)
        >>> tokenizer = AutoTokenizer.from_pretrained(mname)
        >>> UTTERANCE = "My friends are cool but they eat too many carbs."
        >>> print("Human: ", UTTERANCE)
        Human:  My friends are cool but they eat too many carbs.

        >>> inputs = tokenizer([UTTERANCE], return_tensors="pt")
        >>> reply_ids = model.generate(**inputs)
        >>> print("Bot: ", tokenizer.batch_decode(reply_ids, skip_special_tokens=True)[0])
        Bot: That's unfortunate. Are they trying to lose weight or are they just trying to be healthier?

        >>> REPLY = "I'm not sure"
        >>> print("Human: ", REPLY)
        Human: I'm not sure

        >>> NEXT_UTTERANCE = (
        ...     "My friends are cool but they eat too many carbs.</s> <s>That's unfortunate. "
        ...     "Are they trying to lose weight or are they just trying to be healthier?</s> "
        ...     "<s> I'm not sure."
        ... )
        >>> inputs = tokenizer([NEXT_UTTERANCE], return_tensors="pt")
        >>> next_reply_ids = model.generate(**inputs)
        >>> print("Bot: ", tokenizer.batch_decode(next_reply_ids, skip_special_tokens=True)[0])
        Bot:   I see. Well, it's good that they're trying to change their eating habits.
        ```
        NzJThe `use_cache` argument is changed to `False` since `labels` is provided.F)r^   rÛ   r,  r+  r‡   rý   r-  rÉ   r   r'   )	ÚlossÚlogitsr‡   r0  r1  r  r2  rÇ   r3  )r~   Úwarningr/   ry   r$   r%   rÍ   r=  rÓ   ÚtorA   r   r‹   rô   r   r‡   r0  r1  r  r2  rÇ   r3  )r9   r#   r^   rÛ   r+  r,  r‡   rý   r-  rJ  rÉ   ra   ÚoutputsÚ	lm_logitsÚmasked_lm_lossÚloss_fcts                   r.   rF   z*BlenderbotForConditionalGeneration.forward  sj  € ðH ÐÙÜ—‘ÐkÔlØˆIØ Ð(Ð-BÐ-JÜ$6Ø˜DŸK™K×4Ñ4°d·k±k×6XÑ6Xó%Ð!ð '1 d§j¡jØð'
à)Ø/Ø+Ø#9Ø+Ø'Ø"7Øñ'
ð ñ'
ˆð —L‘L ¨¡Ó,ˆ	Ø × 6Ñ 6× 9Ñ 9¸)×:JÑ:JÓ KÑKˆ	àˆØÐØ—Y‘Y˜y×/Ñ/Ó0ˆFÜ'Ó)ˆ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   )NT)
NNNNNNNNNN)rI   rJ   rK   rá   Ú_keys_to_ignore_on_load_missingr6  r"   r8   rM   r£   r   Ú	EmbeddingrB  rC  r   r   rB   r  rO   r   r	   r	  r   r   r   rF   rP   rQ   s   @r.   rÐ   rÐ   ö  s”  ø„ ð  ÐØ':Ð&;Ð#àÐ/ðÐðÐ/õ ð aeñØ!ðØ7:¸T±zðØY]ðà	�‰õð<¸ð <Àó <ð Øð .2Ø.2Ø59Ø:>Ø26Ø(,Ø26Ø:>Ø*.Ø!%ñk
à×#Ñ# dÑ*ðk
ð Ÿ™ tÑ+ðk
ð !×+Ñ+¨dÑ2ð	k
ð
 !&× 0Ñ 0°4Ñ 7ðk
ð )¨4Ñ/ðk
ð  ™ðk
ð ×(Ñ(¨4Ñ/ðk
ð  %×0Ñ0°4Ñ7ðk
ð × Ñ  4Ñ'ðk
ð ˜$‘;ðk
ð Ð+Ñ,ðk
ð 
òk
ó ó ôk
r0   rÐ   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚBlenderbotDecoderWrapperz½
    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 r6   )r7   r8   r  r$  rü   rµ   s     €r.   r8   z!BlenderbotDecoderWrapper.__init__’  s&   ø€ Ü‰Ñ˜Ô Ü(¨Ó0ˆŒØ�‰Õr0   c                 ó&   —  | j                   |i |¤ŽS r6   )r$  )r9   Úargsra   s      r.   rF   z BlenderbotDecoderWrapper.forward—  s   € Øˆt�|‰|˜TÐ, VÑ,Ð,r0   )rI   rJ   rK   rL   r8   rF   rP   rQ   s   @r.   rW  rW  Œ  s   ø„ ñô
ö
-r0   rW  c                   ó\  ‡ — e Zd ZddiZˆ fd„Zd„ Z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 )ÚBlenderbotForCausalLMr9  z!model.decoder.embed_tokens.weightc                 óâ   •— d|_         d|_        t        ‰| �  |«       t	        |«      | _        t        j                  |j                  |j                  d¬«      | _
        | j                  «        y )NTFr|   )rv   r  r7   r8   rW  rÍ   r   r€   Úhidden_sizerô   r=  rü   rµ   s     €r.   r8   zBlenderbotForCausalLM.__init__¡  sX   ø€ Ø ˆÔØ$)ˆÔ!Ü‰Ñ˜Ô Ü-¨fÓ5ˆŒ
ä—y‘y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Õr0   c                 óB   — | j                   j                  j                  S r6   ©rÍ   r$  rõ   r&  s    r.   r'  z*BlenderbotForCausalLM.get_input_embeddings¬  s   € Ø�z‰z×!Ñ!×.Ñ.Ð.r0   c                 ó:   — || j                   j                  _        y r6   r`  r)  s     r.   r*  z*BlenderbotForCausalLM.set_input_embeddings¯  s   € Ø*/ˆ�
‰
×ÑÕ'r0   Nr#   r^   rÇ   rÈ   r‡   rý   rJ  rÉ   Úlogits_to_keepra   rˆ   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 )ah  
        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, BlenderbotForCausalLM

        >>> tokenizer = AutoTokenizer.from_pretrained("facebook/blenderbot-400M-distill")
        >>> model = BlenderbotForCausalLM.from_pretrained("facebook/blenderbot-400M-distill")
        >>> 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
        ```r/  r   Nr'   )rL  rM  r‡   r…   rê   r  r¹   )rÍ   r$  rŒ   rM   Úslicer=  rO  rA   r   r‹   ry   rô   r   r‡   r…   rê   r  )r9   r#   r^   rÇ   rÈ   r‡   rý   rJ  rÉ   rb  ra   rP  r…   Úslice_indicesrM  rL  rS  s                    r.   rF   zBlenderbotForCausalLM.forward²  s  € ðL >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   )rI   rJ   rK   r6  r8   r'  r*  r   r   rB   r  rO   r	  r	   r£   rM   r   r   r¤   r   rF   rP   rQ   s   @r.   r\  r\  œ  s/  ø„ àÐ=ðÐô	ò/ò0ð Øð .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   r\  )r\  rÐ   r   rÌ   )NrŠ   )IrL   rò   Úcollections.abcr   rB   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_blenderbotr"   Ú
get_loggerrI   r~   rO   rM   r/   rU  r2   rS   ÚModulerY   rq   rs   r¦   rÁ   rÌ   ré   r  r   rÐ   rW  r\  Ú__all__r¹   r0   r.   ú<module>ry     s   ðñ  ã Ý $ã Ý Ý %å &Ý !ß CÑ CÝ )ß JÝ BÝ 9÷õ ÷ GÝ &ß lÕ lÝ 7ß EÝ 6ð 
ˆ×	Ñ	˜HÓ	%€ð %§,¡,ð ¸cð Ð[^ó ô -¨2¯<©<ô -ô*
= B§L¡Lô 
=ð( !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(ó%ô:r)˜"Ÿ)™)ô r)ôl5Ð7ô 5ôrZÐ7ô Zðz ô ó ó ðô4X
Ð1ô X
ôv@
Ð1ô @
ðF ôl
Ð/ó l
ó ðl
ñ^ ðôô
M
Ð)BÀOó M
óð
M
ôb-Ð8ô -ô Y
Ð5°ô Y
òx�r0   