+
    œ°³j^  ã                   ó&  € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
 ^RIHt ^RIHtHt ^RIHt ^RIHt ^R	IHtHtHt ^R
IHtHt ^RIHt ^RIHtH t H!t!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ]"PR                  ! ]*4      t+R t,R t-R$R R llt. ! R R]P^                  4      t0R t1 ! R R]P^                  4      t2]  ! R R]4      4       t3]  ! R R]34      4       t4] ! RR7       ! R R ]3]4      4       t5] ! R!R7       ! R" R#]34      4       t6. R%Ot7R# )&zPyTorch CTRL model.)ÚCallableN)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)Úinitialization)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚBaseModelOutputWithPastÚCausalLMOutputWithPastÚSequenceClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)Úcapture_outputs©Ú
CTRLConfigc                 óx   € ^\         P                  ! R^V^,          ,          V,          4      ,          pW,          # )é   i'  )ÚtorchÚpow)ÚposÚiÚd_model_sizeÚangle_ratess   &&& Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/ctrl/modeling_ctrl.pyÚ
angle_defnr#   -   s-   € Ø”e—i’i ¨¨Q°!­V­¸Õ'DÓEÕE€KØÕÐó    c                 óÎ  € \        \        P                  ! V \        P                  R 7      P	                  V4      P                  ^4      \        P                  ! V\        P                  R 7      P	                  V4      P                  ^ 4      V4      p\        P                  ! VR,          4      p\        P                  ! VR,          4      p\        P                  ! WE.RR7      pV# ))Údtype©Údim)ºNNN:é    Né   )r)   :r   Nr+   éÿÿÿÿ)	r#   r   ÚarangeÚint64ÚtoÚ	unsqueezeÚsinÚcosÚcat)Úpositionr    r&   Ú
angle_radsÚsinesÚcosinesÚpos_encodings   &&&    r"   Úpositional_encodingr9   2   s    € äÜ�Š�X¤U§[¡[Ô1×4Ñ4°UÓ;×EÑEÀaÓHÜ�Š�\¬¯©Ô5×8Ñ8¸Ó?×IÑIÈ!ÓLØó€Jô �IŠI�j Õ)Ó*€EÜ�iŠi˜
 7Õ+Ó,€Gä—9’9˜eÐ-°2Ô6€LØÐr$   c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r+   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutÚkwargs)r   ÚModuler   ÚTensorÚfloatr   r   )Úformats   "r"   Ú__annotate__rG   B   s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r$   c                 ó¶  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VRR7      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )Nr'   )ÚpÚtrainingr,   ç      à¿)
Úsizer   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrA   rJ   Ú
contiguous)
r;   r<   r=   r>   r?   r@   rA   rB   Úattn_weightsÚattn_outputs
   &&&&&&&,  r"   Úeager_attention_forwardrT   B   s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r$   c                   óL   a a€ ] tR t^^t oRV 3R lltRV3R lR lltRtVtV ;t# )ÚMultiHeadAttentionc                ó”  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        W n        R V n        \        V P                  V P                  ,          4      V n
        V P                  R,          V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        R# )TNrK   )ÚsuperÚ__init__ÚconfigÚn_headÚ	num_headsÚn_embdr    Ú	layer_idxÚ	is_causalÚintÚhead_dimr@   r   ÚLinearÚWqÚWkÚWvÚdense©ÚselfrZ   r^   Ú	__class__s   &&&€r"   rY   ÚMultiHeadAttention.__init___   sÙ   ø€ Ü‰ÑÔØŒØŸ™ˆŒØ"ŸM™MˆÔØ"ŒØˆŒä˜D×-Ñ-°·±Õ>Ó?ˆŒØ—}‘} dÕ*ˆŒä—)’)˜D×-Ñ-¨t×/@Ñ/@ÓAˆŒÜ—)’)˜D×-Ñ-¨t×/@Ñ/@ÓAˆŒÜ—)’)˜D×-Ñ-¨t×/@Ñ/@ÓAˆŒä—Y’Y˜t×0Ñ0°$×2CÑ2CÓDˆŽ
r$   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r+   rB   ©r   r   )rF   Ú__classdict__s   "€r"   rG   ÚMultiHeadAttention.__annotate__p   s   ø€ ÷ #)ñ #)ñ Ñ+Õ,ñ#)r$   c                ó°  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
V P                  V4      P                  V4      P	                  ^^4      pVe   VP                  W«V P                  4      w  r«\        P                  ! V P                  P                  \        4      pV! V V	V
VV3RRRV P                  /VB w  rÞVP                  ! . VORN5!  P!                  4       pV P#                  V4      pWÞ3# )NrA   ç        r@   r,   )Úshapera   rc   ÚviewrN   rd   re   Úupdater^   r   Úget_interfacerZ   Ú_attn_implementationrT   r@   ÚreshaperQ   rf   )rh   ÚvÚkÚqÚ
layer_pastr?   rB   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerS   rR   s   &&&&&&,        r"   ÚforwardÚMultiHeadAttention.forwardp   sQ  € ð —g‘g˜c˜r�lˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—w‘w˜q“z—‘ |Ó4×>Ñ>¸qÀ!ÓDˆØ—W‘W˜Q“Z—_‘_ \Ó2×<Ñ<¸QÀÓBˆ
Ø—w‘w˜q“z—‘ |Ó4×>Ñ>¸qÀ!ÓDˆàÒ!Ø'1×'8Ñ'8¸ÐSW×SaÑSaÓ'bÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð ð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—j‘j Ó-ˆØÐ(Ð(r$   )rd   rc   re   rZ   r    rf   ra   r_   r^   r\   r@   ©N©NN©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rY   r‚   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©ri   rn   s   @@r"   rV   rV   ^   s   ù‡ € ÷E÷"#)÷ #)ò #)r$   rV   c                 ó¨   € \         P                  ! \         P                  ! W4      \         P                  ! 4       \         P                  ! W4      4      # r„   )r   Ú
Sequentialrb   ÚReLU)r    Údffs   &&r"   Úpoint_wise_feed_forward_networkr“   –   s-   € Ü�=Š=œŸš <Ó5´r·w²w³yÄ"Ç)Â)ÈCÓB^Ó_Ð_r$   c                   óL   a a€ ] tR t^št oRV 3R lltRV3R lR lltRtVtV ;t# )ÚEncoderLayerc                óÀ  <€ \         SV `  4        \        WR 7      V n        \	        VP
                  VP                  4      V n        \        P                  ! VP
                  RR7      V n
        \        P                  ! VP
                  RR7      V n        \        P                  ! VP                  4      V n        \        P                  ! VP                  4      V n        R# )©r^   g�íµ ÷Æ°>©ÚepsN)rX   rY   rV   Úmulti_head_attentionr“   r]   r’   Úffnr   Ú	LayerNormÚ
layernorm1Ú
layernorm2ÚDropoutÚresid_pdropÚdropout1Údropout2rg   s   &&&€r"   rY   ÚEncoderLayer.__init__›   s‰   ø€ Ü‰ÑÔä$6°vÔ$SˆÔ!Ü2°6·=±=À&Ç*Á*ÓMˆŒäŸ,š, v§}¡}¸$Ô?ˆŒÜŸ,š, v§}¡}¸$Ô?ˆŒäŸ
š
 6×#5Ñ#5Ó6ˆŒÜŸ
š
 6×#5Ñ#5Ó6ˆŽr$   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rl   rm   )rF   rn   s   "€r"   rG   ÚEncoderLayer.__annotate__§   s   ø€ ÷ ñ ñ
 Ñ+Õ,ñr$   c                ó  € V P                  V4      pV P                  ! VVV3R VRV/VB w  rgV P                  V4      pW,           pV P                  V4      p	V P	                  V	4      p
V P                  V
4      p
WŠ,           p	V	# )r{   r?   )r�   rš   r¡   rž   r›   r¢   )rh   Úxr{   r?   rB   ÚnormedrS   Ú_Úout1Úout2Ú
ffn_outputs   &&&&,      r"   r‚   ÚEncoderLayer.forward§   s˜   € ð —‘ Ó#ˆØ×2Ò2ØØØñ
ð "ð	
ð
 *ð
ð ñ
‰ˆð —m‘m KÓ0ˆØ�ˆà�‰˜tÓ$ˆØ—X‘X˜d“^ˆ
Ø—]‘] :Ó.ˆ
ØÕ ˆàˆr$   )r¡   r¢   r›   r�   rž   rš   r„   r…   r†   rŽ   s   @@r"   r•   r•   š   s   ù‡ € ÷
7÷÷ ò r$   r•   c                   ó^   a a€ ] tR t^Ât oRtRtRtRtRtR]	R]
/tV 3R ltV3R ltRtVtV ;t# )ÚCTRLPreTrainedModelÚtransformerTÚhidden_statesÚ
attentionsc                ó  <€ \         SV `  V4       \        V\        4      '       d[   \        P
                  ! VP                  \        VP                  P                  VP                  \        P                  4      4       R # R # r„   )rX   Ú_init_weightsÚ
isinstanceÚ	CTRLModelÚinitÚcopy_r8   r9   rZ   Ún_positionsr    r   rE   )rh   r;   ri   s   &&€r"   r´   Ú!CTRLPreTrainedModel._init_weightsÏ   s[   ø€ Ü‰Ñ˜fÔ%Ü�fœi×(Ò(Ü�JŠJØ×#Ñ#Ô%8¸¿¹×9RÑ9RÐTZ×TgÑTgÔin×itÑitÓ%uöñ )r$   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r+   rZ   r   )rF   rn   s   "€r"   rG   Ú CTRLPreTrainedModel.__annotate__Â   s   ø‡ ‚ áÑò r$   © )r‡   rˆ   r‰   rŠ   Úbase_model_prefixÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendr•   rV   Ú_can_record_outputsr´   Ú__annotate_func__r‹   rŒ   r�   rŽ   s   @@r"   r¯   r¯   Â   sC   ù‡ € ð &ÐØÐØ€NØÐØ"&Ðà˜ØÐ(ðÐõ
÷ … r$   r¯   c                   ór   a a€ ] tR t^×t oV 3R ltR tR t]]]	RV3R lR ll4       4       4       t
RtVtV ;t# )r¶   c           
     óÄ  <€ \         SV `  V4       VP                  V n        VP                  V n        \        P                  ! VP                  VP                  4      V n	        \        P                  ! VP                  4      V n        \        P                  ! \        VP                  4       Uu. uF  p\        WR 7      NK  	  up4      V n        \        P"                  ! VP                  VP$                  R7      V n        \        P(                  ! \+        VP,                  V P                  \.        P0                  4      RR7      V n        V P5                  4        R# u upi )r—   r˜   F)Ú
persistentN)rX   rY   r]   r    Ún_layerÚ
num_layersr   Ú	EmbeddingÚ
vocab_sizeÚwrŸ   Ú
embd_pdroprA   Ú
ModuleListÚranger•   Úhrœ   Úlayer_norm_epsilonÚ	layernormÚBufferr9   r¹   r   rE   r8   Ú	post_init)rh   rZ   r   ri   s   && €r"   rY   ÚCTRLModel.__init__Ù   sé   ø€ Ü‰Ñ˜Ô à"ŸM™MˆÔØ Ÿ.™.ˆŒä—’˜f×/Ñ/°·±Ó?ˆŒä—z’z &×"3Ñ"3Ó4ˆŒÜ—’Ì5ÐQW×Q_ÑQ_ÔK`ÓaÑK`Àa¤¨V× AÑK`ÑaÓbˆŒÜŸš f§m¡m¸×9RÑ9RÔSˆŒäŸIšIÜ × 2Ñ 2°D×4EÑ4EÄuÇ{Á{ÓSÐ`eô
ˆÔð
 	�‰Öùò  bs   Â/Ec                ó   € V P                   # r„   ©rÌ   )rh   s   &r"   Úget_input_embeddingsÚCTRLModel.get_input_embeddingsì   s   € Ø�v‰vˆr$   c                ó   € Wn         R # r„   r×   )rh   Únew_embeddingss   &&r"   Úset_input_embeddingsÚCTRLModel.set_input_embeddingsï   s   € ØŽr$   c                ó&  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[,          R
S[/	# )r+   Ú	input_idsNÚpast_key_valuesr?   Útoken_type_idsÚposition_idsÚinputs_embedsÚ	use_cacherB   Úreturn)r   Ú
LongTensorr   ÚFloatTensorÚboolr   r   r   )rF   rn   s   "€r"   rG   ÚCTRLModel.__annotate__õ   sµ   ø€ ÷ \
ñ \
á×#Ñ# dÕ*ð\
ñ  �ð\
ñ ×)Ñ)¨DÕ0ð	\
ñ
 ×(Ñ(¨4Õ/ð\
ñ ×&Ñ&¨Õ-ð\
ñ ×(Ñ(¨4Õ/ð\
ñ ˜$•;ð\
ñ Ñ+Õ,ð\
ñ 
!ñ\
r$   c                óò  € Ve   TMV P                   P                  pVe   Ve   \        R4      hVe   V P                  V4      pMVf   \        R4      hVP                  RR p	VP                  ^ ,          p
VP
                  pV'       d   Vf   \        V P                   R7      pVe   VP                  4       M^ pVfG   \        P                  ! WÉR,          V,           \        P                  VR7      pVP                  ^ 4      pVe:   V P                  V4      pV\        P                  ! V P                  4      ,          pM^ pVeD   \        V\        P                   4      '       d$   VP"                  ^8  d   VP%                  V
R4      p\'        V P                   VVVVR7      pV\        P                  ! V P                  4      ,          pV P(                  P+                  W¶P,                  R7      V n        V P(                  VR3,          pWo,           V,           pV P/                  V4      pV P0                   F  pV! V3R	VR
V/VB pK  	  V P3                  V4      p\5        TV'       d   VR7      # RR7      # )a1  
Example:

```python
>>> from transformers import AutoTokenizer, CTRLModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("Salesforce/ctrl")
>>> model = CTRLModel.from_pretrained("Salesforce/ctrl")

>>> # CTRL was trained with control codes as the first token
>>> inputs = tokenizer("Opinion My dog is cute", return_tensors="pt")
>>> assert inputs["input_ids"][0, 0].item() in tokenizer.control_codes.values()

>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 5, 1280]
```NzDYou cannot specify both input_ids and inputs_embeds at the same timez5You have to specify either input_ids or inputs_embeds)rZ   )r&   Údevice)rZ   rã   r?   rà   râ   ©rë   r&   r)   r{   r?   )Úlast_hidden_staterà   r,   )rZ   rä   Ú
ValueErrorrÌ   rr   rë   r	   Úget_seq_lengthr   r-   Úlongr0   ÚnpÚsqrtr    rµ   rD   Úndimrs   r   r8   r/   r&   rA   rÐ   rÒ   r   )rh   rß   rà   r?   rá   râ   rã   rä   rB   r|   Ú
batch_sizerë   Úpast_lengthÚtoken_type_embedsÚcausal_maskÚ
pos_embedsr±   rÐ   s   &&&&&&&&,         r"   r‚   ÚCTRLModel.forwardò   sK  € ðD "+Ò!6‘I¸D¿K¹K×<QÑ<Qˆ	àÒ  ]Ò%>ÜÐcÓdÐdØÒ Ø ŸF™F 9Ó-‰MØÒ"ÜÐTÓUÐUà#×)Ñ)¨#¨2Ð.ˆØ"×(Ñ(¨Õ+ˆ
Ø×%Ñ%ˆç˜Ò0Ü*°$·+±+Ô>ˆOà:IÒ:U�o×4Ñ4Ô6Ð[\ˆØÒÜ Ÿ<š<¨Àµ_À{Õ5RÔZ_×ZdÑZdÐmsÔtˆLØ'×1Ñ1°!Ó4ˆLàÒ%Ø $§¡ ~Ó 6ÐØ¤§¢¨×):Ñ):Ó!;Õ;Ñà !ÐàÒ%¬*°^ÄUÇ\Á\×*RÒ*RÐWe×WjÑWjÐmnÔWnØ+×0Ñ0°¸RÓ@ˆNä(Ø—;‘;Ø'Ø)Ø+Ø%ô
ˆð 	œŸš ×!2Ñ!2Ó3Õ3ˆð !×-Ñ-×0Ñ0¸×FYÑFYÐ0ÓZˆÔØ×&Ñ& |°Q Õ7ˆ
à%Õ2Ð5FÕFˆàŸ™ ]Ó3ˆà—”ˆAÙØñà*ðð  +ðð ñ	ŠMñ ð Ÿ™ }Ó5ˆä&Ø+ß/8˜Oô
ð 	
à>Bô
ð 	
r$   )r    rA   rÐ   rÒ   rÉ   r8   rÌ   )NNNNNNN)r‡   rˆ   r‰   rŠ   rY   rØ   rÜ   r   r   r   r‚   r‹   rŒ   r�   rŽ   s   @@r"   r¶   r¶   ×   sF   ù‡ € õò&ò ð  ØØ÷\
ñ \
ó ó ó  ÷\
ð \
r$   r¶   z‡
    The CTRL Model transformer with a language modeling head on top (linear layer with weights tied to the input
    embeddings).
    )Úcustom_introc                   ót   a a€ ] tR tRt oRR/tV 3R lt]]R	V3R lR ll4       4       tR
V 3R llt	Rt
VtV ;t# )ÚCTRLLMHeadModeliT  zlm_head.weightztransformer.w.weightc                óÊ   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  VP                  R R7      V n        V P                  4        R# )T©ÚbiasN)
rX   rY   r¶   r°   r   rb   r]   rË   Úlm_headrÔ   ©rh   rZ   ri   s   &&€r"   rY   ÚCTRLLMHeadModel.__init__]  sG   ø€ Ü‰Ñ˜Ô Ü$ VÓ,ˆÔÜ—y’y §¡°×0AÑ0AÈÔMˆŒð 	�‰Ör$   c                óx  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[S[ P                  ,          RS[S[,          RS[	/# )r+   rß   Nrà   r?   rá   râ   rã   Úlabelsrä   Úlogits_to_keeprB   rå   )
r   ræ   r   rç   rè   r`   rD   r   r   r   )rF   rn   s   "€r"   rG   ÚCTRLLMHeadModel.__annotate__g  sß   ø€ ÷ K
ñ K
á×#Ñ# dÕ*ðK
ñ  �ðK
ñ ×)Ñ)¨DÕ0ð	K
ñ
 ×(Ñ(¨4Õ/ðK
ñ ×&Ñ&¨Õ-ðK
ñ ×(Ñ(¨4Õ/ðK
ñ × Ñ  4Õ'ðK
ñ ˜$•;ðK
ñ ™eŸl™lÕ*ðK
ñ Ñ+Õ,ðK
ñ 
 ñK
r$   c
                óŽ  € V P                   ! V3RVRVRVRVRVRV/V
B pV^ ,          p\        V	\        4      '       d   \        V	) R4      MT	pV P	                  VRVR3,          4      pRpVe+   V P
                  ! VV3R	V P                  P                  /V
B p\        VVVP                  VP                  VP                  R
7      # )a¯  
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for language modeling. Note that the labels **are shifted** inside the model, i.e. you can set
    `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100`
    are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]`

Example:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CTRLLMHeadModel

>>> tokenizer = AutoTokenizer.from_pretrained("Salesforce/ctrl")
>>> model = CTRLLMHeadModel.from_pretrained("Salesforce/ctrl")

>>> # CTRL was trained with control codes as the first token
>>> inputs = tokenizer("Wikipedia The llama is", return_tensors="pt")
>>> assert inputs["input_ids"][0, 0].item() in tokenizer.control_codes.values()

>>> sequence_ids = model.generate(inputs["input_ids"])
>>> sequences = tokenizer.batch_decode(sequence_ids)
>>> sequences
['Wikipedia The llama is a member of the family Bovidae. It is native to the Andes of Peru,']

>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> round(outputs.loss.item(), 2)
9.21

>>> list(outputs.logits.shape)
[1, 5, 246534]
```rà   r?   rá   râ   rã   rä   Nr)   rË   )ÚlossÚlogitsrà   r±   r²   )r°   rµ   r`   Úslicer   Úloss_functionrZ   rË   r   rà   r±   r²   )rh   rß   rà   r?   rá   râ   rã   r  rä   r  rB   Útransformer_outputsr±   Úslice_indicesr	  r  s   &&&&&&&&&&,     r"   r‚   ÚCTRLLMHeadModel.forwarde  s  € ð\ #×.Ò.Øñ	
à+ð	
ð *ð	
ð *ð		
ð
 &ð	
ð (ð	
ð  ð	
ð ñ	
Ðð ,¨AÕ.ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%ØØñð  Ÿ;™;×1Ñ1ðð ñ	ˆDô &ØØØ/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r$   c           	     óZ   <€ \         SV `  ! V3R VRVRV/VB pVP                  RR4       V# )rà   rä   Úis_first_iterationrá   N)rX   Úprepare_inputs_for_generationÚpop)rh   rß   rà   rä   r  rB   Úmodel_inputsri   s   &&&&&, €r"   r  Ú-CTRLLMHeadModel.prepare_inputs_for_generation´  sV   ø€ ô
 ‘wÒ<Øñ
à+ð
ð  ð
ð  2ð	
ð
 ñ
ˆð 	×ÑÐ)¨4Ô0àÐr$   )r   r°   )	NNNNNNNNr*   )NNF)r‡   rˆ   r‰   rŠ   Ú_tied_weights_keysrY   r   r   r‚   r  r‹   rŒ   r�   rŽ   s   @@r"   rü   rü   T  sG   ù‡ € ð +Ð,BÐCÐõð Ø÷K
ñ K
ó ó ðK
÷Z÷ r$   rü   aÎ  
    The CTRL Model transformer with a sequence classification head on top (linear layer).
    [`CTRLForSequenceClassification`] uses the last token in order to do the classification, as other causal models
    (e.g. GPT-2) do. Since it does classification on the last token, it requires to know the position of the last
    token. If a `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in
    each row. If no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot
    guess the padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last
    value in each row of the batch).
    c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚCTRLForSequenceClassificationiÇ  c                óì   <€ \         SV `  V4       VP                  V n        \        V4      V n        \
        P                  ! VP                  V P                  R R7      V n        V P                  4        R# )Frþ   N)
rX   rY   Ú
num_labelsr¶   r°   r   rb   r]   Ú
classifierrÔ   r  s   &&€r"   rY   Ú&CTRLForSequenceClassification.__init__Ó  sR   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ$ VÓ,ˆÔÜŸ)š) F§M¡M°4·?±?ÈÔOˆŒð 	�‰Ör$   c                óN  <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[S[,          RS[/
# )r+   rß   Nrà   r?   rá   râ   rã   r  rä   rB   rå   )r   ræ   r   rç   rè   r   r   r   )rF   rn   s   "€r"   rG   Ú*CTRLForSequenceClassification.__annotate__Þ  sË   ø€ ÷ Y
ñ Y
á×#Ñ# dÕ*ðY
ñ  �ðY
ñ ×)Ñ)¨DÕ0ð	Y
ñ
 ×(Ñ(¨4Õ/ðY
ñ ×&Ñ&¨Õ-ðY
ñ ×(Ñ(¨4Õ/ðY
ñ × Ñ  4Õ'ðY
ñ ˜$•;ðY
ñ Ñ+Õ,ðY
ñ 
"ñY
r$   c	                óÐ  € V P                   ! V3RVRVRVRVRVRV/V	B p
V
^ ,          pV P                  V4      pVe   VP                  R,          w  rÞMVP                  R,          w  rÞV P                  P                  f   V^8w  d   \        R	4      hV P                  P                  f   RpMÍVeœ   WP                  P                  8g  P                  VP                  \        P                  4      p\        P                  ! VP                  R,          VP                  \        P                  R
7      pVV,          P                  R4      pM.Rp\        P                  V P                  P                   R24       V\        P                  ! WÜP                  R7      V3,          pRpVEeš   V P                  P                   f–   V P"                  ^8X  d   RV P                  n        MrV P"                  ^8”  dQ   VP$                  \        P&                  8X  g    VP$                  \        P(                  8X  d   RV P                  n        MRV P                  n        V P                  P                   R8X  dL   \+        4       pV P"                  ^8X  d'   V! VP-                  4       VP-                  4       4      pM�V! VV4      pM†V P                  P                   R8X  d>   \/        4       pV! VP1                  RV P"                  4      VP1                  R4      4      pM.V P                  P                   R8X  d   \3        4       pV! VV4      p\5        VVV
P6                  V
P8                  R7      # )a¿
  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).

Example of single-label classification:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CTRLForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("Salesforce/ctrl")
>>> model = CTRLForSequenceClassification.from_pretrained("Salesforce/ctrl")

>>> # CTRL was trained with control codes as the first token
>>> inputs = tokenizer("Opinion My dog is cute", return_tensors="pt")
>>> assert inputs["input_ids"][0, 0].item() in tokenizer.control_codes.values()

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
'LABEL_0'
```

```python
>>> import torch

>>> torch.manual_seed(42)  # doctest: +IGNORE_RESULT
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = CTRLForSequenceClassification.from_pretrained("Salesforce/ctrl", num_labels=num_labels)

>>> labels = torch.tensor(1)
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
0.93
```

Example of multi-label classification:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CTRLForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("Salesforce/ctrl")
>>> model = CTRLForSequenceClassification.from_pretrained(
...     "Salesforce/ctrl", problem_type="multi_label_classification"
... )

>>> # CTRL was trained with control codes as the first token
>>> inputs = tokenizer("Opinion My dog is cute", return_tensors="pt")
>>> assert inputs["input_ids"][0, 0].item() in tokenizer.control_codes.values()

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
'LABEL_0'
```

```python
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = CTRLForSequenceClassification.from_pretrained("Salesforce/ctrl", num_labels=num_labels)

>>> num_labels = len(model.config.id2label)
>>> labels = torch.nn.functional.one_hot(torch.tensor([predicted_class_id]), num_classes=num_labels).to(
...     torch.float
... )
>>> loss = model(**inputs, labels=labels).loss
>>> loss.backward()  # doctest: +IGNORE_RESULT
```rà   r?   rá   râ   rã   rä   N:Nr+   Nz=Cannot handle batch sizes > 1 if no padding token is defined.rì   zŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`)rë   Ú
regressionÚsingle_label_classificationÚmulti_label_classification)r  r	  r±   r²   r,   )r°   r  rr   rZ   Úpad_token_idrî   r/   rë   r   Úint32r-   ÚargmaxÚloggerÚwarning_onceri   r‡   Úproblem_typer  r&   rð   r`   r   Úsqueezer   rs   r   r   r±   r²   )rh   rß   rà   r?   rá   râ   rã   r  rä   rB   r  r±   r	  rô   Úsequence_lengthÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesÚpooled_logitsr  Úloss_fcts   &&&&&&&&&,           r"   r‚   Ú%CTRLForSequenceClassification.forwardÜ  sè  € ðv #×.Ò.Øñ	
à+ð	
ð *ð	
ð *ð		
ð
 &ð	
ð (ð	
ð  ð	
ð ñ	
Ðð ,¨AÕ.ˆØ—‘ Ó/ˆàÒ Ø*3¯/©/¸"Õ*=Ñ'ˆJ˜à*7×*=Ñ*=¸bÕ*AÑ'ˆJà�;‰;×#Ñ#Ò+°
¸a´ÜÐ\Ó]Ð]Ø�;‰;×#Ñ#Ò+Ø!#ÑØÒ"à%¯©×)AÑ)AÑA×EÑEÀfÇmÁmÔUZ×U`ÑU`ÓaˆLÜ!ŸLšL¨¯©¸Õ)<ÀVÇ]Á]ÔZ_×ZeÑZeÔfˆMØ"/°,Õ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|š|¨J¿}¹}ÔMÐOaÐaÕbˆàˆØÓØ�{‰{×'Ñ'Ò/Ø—?‘? aÔ'Ø/;�D—K‘KÕ,Ø—_‘_ qÔ(¨f¯l©l¼e¿j¹jÔ.HÈFÏLÉLÔ\a×\eÑ\eÔLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ô7Ü"›9�Ø—?‘? aÔ'Ù# M×$9Ñ$9Ó$;¸V¿^¹^Ó=MÓN‘Dá# M°6Ó:‘DØ—‘×)Ñ)Ð-JÔJÜ+Ó-�Ù × 2Ñ 2°2°t·±Ó GÈÏÉÐUWËÓY‘Ø—‘×)Ñ)Ð-IÔIÜ,Ó.�Ù ¨vÓ6�Ü'ØØ Ø-×;Ñ;Ø*×5Ñ5ô	
ð 	
r$   )r  r  r°   )NNNNNNNN)r‡   rˆ   r‰   rŠ   rY   r   r   r‚   r‹   rŒ   r�   rŽ   s   @@r"   r  r  Ç  s4   ù‡ € õð Ø÷Y
ñ Y
ó ó ÷Y
ð Y
r$   r  )Nrq   )r  rü   r¶   r¯   )8Ú__doc__Úcollections.abcr   Únumpyrñ   r   r   Útorch.nnr   r   r   Ú r   r·   Úcache_utilsr   r	   Ú
generationr
   Úmasking_utilsr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_ctrlr   Ú
get_loggerr‡   r%  r#   r9   rT   rC   rV   r“   r•   r¯   r¶   rü   r  Ú__all__r½   r$   r"   Ú<module>rA     s+  ðñ å $ã Û Ý ß AÑ Aå &ß .Ý )Ý /ß iÑ iß FÝ &÷ó õ 8Ý 5Ý *ð 
×	Ò	˜HÓ	%€òò
÷ %ô85)˜Ÿ™ô 5)òp`ô%�2—9‘9ô %ðP ô˜/ó ó ðð( ôy
Ð#ó y
ó ðy
ñx ðôôjÐ)¨?ó jóðjñZ ðô
ôe
Ð$7ó e
ó
ðe
òP c‚r$   