ó
    pyüiÔ,  ã                   ó   • S SK Jr  S SKrS SKJr  SSKJr  SSKJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJrJrJrJr  \R*                  " \5      r " S	 S
\R0                  5      r\ " S S5      5       r\ " S S5      5       r\ " S S5      5       rg)é    )ÚpartialNé   )ÚCache)ÚBaseModelOutputWithPastÚQuestionAnsweringModelOutputÚ SequenceClassifierOutputWithPastÚTokenClassifierOutput)Ú	AutoModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingc                   ó0   ^ • \ rS rSrSrSrU 4S jrSrU =r$ )ÚGradientCheckpointingLayeré"   aÜ  Base class for layers with gradient checkpointing.

This class enables gradient checkpointing functionality for a layer. By default, gradient checkpointing is disabled
(`gradient_checkpointing = False`). When `model.set_gradient_checkpointing()` is called, gradient checkpointing is
enabled by setting `gradient_checkpointing = True` and assigning a checkpointing function to `_gradient_checkpointing_func`.

Important:

    When using gradient checkpointing with `use_reentrant=True`, inputs that require gradients (e.g. hidden states)
    must be passed as positional arguments (`*args`) rather than keyword arguments to properly propagate gradients.

    Example:

        ```python
        >>> # Correct - hidden_states passed as positional arg
        >>> out = self.layer(hidden_states, attention_mask=attention_mask)

        >>> # Incorrect - hidden_states passed as keyword arg
        >>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)
        ```
Fc                 ó  >• U R                   (       aè  U R                  (       a×  SnU R                  R                  nSU S3nSU;   a  US   (       a  SUS'   US-  nSnSU;   a  US   b  S US'   US-  nSnS	U;   a  US	   b  S US	'   US
-  nSnSU;   a  US   b  S US'   US-  nSnU(       a)  UR	                  S5      S-   n[
        R                  U5        U R                  " [        [        TU ](  40 UD6/UQ76 $ [        TU ](  " U0 UD6$ )NFz7Caching is incompatible with gradient checkpointing in z	. SettingÚ	use_cachez `use_cache=False`,TÚpast_key_valuez `past_key_value=None`,Úpast_key_valuesz `past_key_values=None`,Ú
layer_pastz `layer_past=None`,Ú,Ú.)Úgradient_checkpointingÚtrainingÚ	__class__Ú__name__ÚrstripÚloggerÚwarning_onceÚ_gradient_checkpointing_funcr   ÚsuperÚ__call__)ÚselfÚargsÚkwargsÚdo_warnÚ
layer_nameÚmessager   s         €ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/modeling_layers.pyr#   Ú#GradientCheckpointingLayer.__call__;   sK  ø€ Ø×&×&¨4¯=¯=ØˆGØŸ™×0Ñ0ˆJØOÐPZÈ|Ð[dÐeˆGà˜fÓ$¨°×)<Ø&+��{Ñ#ØÐ0Ñ0�Ø�ð   6Ó)¨fÐ5EÑ.FÑ.RØ+/�Ð'Ñ(ØÐ4Ñ4�Ø�à  FÓ*¨vÐ6GÑ/HÑ/TØ,0�Ð(Ñ)ØÐ5Ñ5�Ø�à˜vÓ%¨&°Ñ*>Ñ*JØ'+��|Ñ$ØÐ0Ñ0�Ø�ö Ø!Ÿ.™.¨Ó-°Ñ3�Ü×#Ñ# GÔ,à×4Ò4´W¼U¹WÑ=MÑ5XÐQWÑ5XÐ`Ð[_Ò`Ð`Ü‰wÒ Ð0¨Ñ0Ð0ó    © )	r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   Ú__static_attributes__Ú__classcell__©r   s   @r*   r   r   "   s   ø† ñð, #Ð÷"1ó "1r,   r   c                   ó  ^ • \ rS rSrSrU 4S jr\\       SS\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\R                  S-  S
\R                  S-  S\S-  S\\   S\4S jj5       5       rSrU =r$ )Ú GenericForSequenceClassificationé`   Úmodelc                 ó  >• [         TU ]  U5        UR                  U l        [        X R                  [
        R                  " U5      5        [        R                  " UR                  U R                  SS9U l
        U R                  5         g )NF)Úbias)r"   Ú__init__Ú
num_labelsÚsetattrÚbase_model_prefixr
   Úfrom_configÚnnÚLinearÚhidden_sizeÚscoreÚ	post_init©r$   Úconfigr   s     €r*   r;   Ú)GenericForSequenceClassification.__init__d   sb   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä�×,Ñ,¬i×.CÒ.CÀFÓ.KÔLÜ—Y’Y˜v×1Ñ1°4·?±?ÈÑOˆŒ
ð 	�‰Õr,   NÚ	input_idsÚattention_maskÚposition_idsr   Úinputs_embedsÚlabelsr   r&   Úreturnc           	      ó¤  • [        X R                  5      " U4UUUUUS.UD6n	U	R                  n
U R                  U
5      nUb  UR                  S   nOUR                  S   nU R
                  R                  c  US:w  a  [        S5      eU R
                  R                  c  SnOÀUb�  XR
                  R                  :g  R                  UR                  [        R                  5      n[        R                  " UR                  S   UR                  [        R                  S9nXþ-  R                  S5      nO.Sn[        R                  U R                   R"                   S35        U[        R                  " XËR                  S9U4   nS nUb  U R%                  X¶UU R
                  S	9n['        UUU	R(                  U	R*                  U	R,                  S
9$ )N©rI   rJ   r   rK   r   r   r   z=Cannot handle batch sizes > 1 if no padding token is defined.éÿÿÿÿ)ÚdeviceÚdtypezŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`)rQ   )ÚlogitsrL   Úpooled_logitsrF   )ÚlossrS   r   Úhidden_statesÚ
attentions)Úgetattrr>   Úlast_hidden_staterC   ÚshaperF   Úpad_token_idÚ
ValueErrorÚtorQ   ÚtorchÚint32ÚarangeÚargmaxr   r    r   r   Úloss_functionr   r   rV   rW   )r$   rH   rI   rJ   r   rK   rL   r   r&   Útransformer_outputsrV   rS   Ú
batch_sizeÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesrT   rU   s                     r*   ÚforwardÚ(GenericForSequenceClassification.forwardn   sÃ  € ô 8?¸t×E[ÑE[Ô7\Øð8
à)Ø%Ø+Ø'Øñ8
ð ñ8
Ðð ,×=Ñ=ˆØ—‘˜MÓ*ˆàÑ Ø"Ÿ™¨Ñ+‰Jà&×,Ñ,¨QÑ/ˆJà�;‰;×#Ñ#Ñ+°
¸a³ÜÐ\Ó]Ð]Ø�;‰;×#Ñ#Ñ+Ø!#ÑØÑ"à%¯©×)AÑ)AÑA×EÑEÀfÇmÁmÔUZ×U`ÑU`ÓaˆLÜ!ŸLšL¨¯©¸Ñ)<ÀVÇ]Á]ÔZ_×ZeÑZeÑfˆMØ"/Ñ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|š|¨J¿}¹}ÑMÐOaÐaÑbˆàˆØÑØ×%Ñ%¨VÐR_Ðhl×hsÑhsÐ%ÐtˆDä/ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ñ
ð 	
r,   )r<   rC   ©NNNNNNN)r   r.   r/   r0   r>   r;   r   r   r^   Ú
LongTensorÚTensorr   ÚFloatTensorÚboolr   r   r   rh   r2   r3   r4   s   @r*   r6   r6   `   sÜ   ø† àÐõð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%ñ8
à×#Ñ# dÑ*ð8
ð Ÿ™ tÑ+ð8
ð ×&Ñ&¨Ñ-ð	8
ð
  ™ð8
ð ×(Ñ(¨4Ñ/ð8
ð × Ñ  4Ñ'ð8
ð ˜$‘;ð8
ð Ð+Ñ,ð8
ð 
*ô8
ó ó ö8
r,   r6   c                   ó4  ^ • \ rS rSrSrU 4S jrS rS r\\	       SS\
R                  S-  S\
R                  S-  S	\
R                  S-  S
\S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\\   S\4S jj5       5       rSrU =r$ )ÚGenericForQuestionAnsweringé«   r8   c                 óä   >• [         TU ]  U5        [        X R                  [        R
                  " U5      5        [        R                  " UR                  S5      U l	        U R                  5         g )Né   )r"   r;   r=   r>   r
   r?   r@   rA   rB   Ú
qa_outputsrD   rE   s     €r*   r;   Ú$GenericForQuestionAnswering.__init__¯   sO   ø€ Ü‰Ñ˜Ô ä�×,Ñ,¬i×.CÒ.CÀFÓ.KÔLÜŸ)š) F×$6Ñ$6¸Ó:ˆŒð 	�‰Õr,   c                 ó@   • [        X R                  5      R                  $ ©N©rX   r>   Úembed_tokens)r$   s    r*   Úget_input_embeddingsÚ0GenericForQuestionAnswering.get_input_embeddings¸   s   € Ü�t×3Ñ3Ó4×AÑAÐAr,   c                 ó8   • U[        X R                  5      l        g rw   rx   )r$   Úvalues     r*   Úset_input_embeddingsÚ0GenericForQuestionAnswering.set_input_embeddings»   s   € Ø=BŒ�×,Ñ,Ó-Õ:r,   NrH   rI   rJ   r   rK   Ústart_positionsÚend_positionsr&   rM   c                 ó˜  • [        X R                  5      " U4UUUUS.UD6n	U	R                  n
U R                  U
5      nUR	                  SSS9u  pÍUR                  S5      R                  5       nUR                  S5      R                  5       nS nUb  Ub  U R                  " XÍXg40 UD6n[        UUUU	R                  U	R                  S9$ )N)rI   rJ   r   rK   r   rP   )Údim)rU   Ústart_logitsÚ
end_logitsrV   rW   )rX   r>   rY   rt   ÚsplitÚsqueezeÚ
contiguousrb   r   rV   rW   )r$   rH   rI   rJ   r   rK   r€   r�   r&   ÚoutputsÚsequence_outputrS   r„   r…   rU   s                  r*   rh   Ú#GenericForQuestionAnswering.forward¾   sé   € ô ,3°4×9OÑ9OÔ+PØð,
à)Ø%Ø+Ø'ñ,
ð ñ,
ˆð "×3Ñ3ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ð#:Ñ ˆØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆØÑ&¨=Ñ+DØ×%Ò% lÀÑiÐbhÑiˆDä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
r,   )rt   rj   )r   r.   r/   r0   r>   r;   rz   r~   r   r   r^   rk   rl   r   rm   r   r   r   rh   r2   r3   r4   s   @r*   rp   rp   «   sï   ø† àÐõòBòCð Øð .2Ø.2Ø04Ø(,Ø26Ø37Ø15ñ%
à×#Ñ# dÑ*ð%
ð Ÿ™ tÑ+ð%
ð ×&Ñ&¨Ñ-ð	%
ð
  ™ð%
ð ×(Ñ(¨4Ñ/ð%
ð ×)Ñ)¨DÑ0ð%
ð ×'Ñ'¨$Ñ.ð%
ð Ð+Ñ,ð%
ð 
&ô%
ó ó ö%
r,   rp   c                   ó  ^ • \ rS rSrSrU 4S jr\\       SS\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\R                  S-  S
\R                  S-  S\S-  S\\   S\4S jj5       5       rSrU =r$ )ÚGenericForTokenClassificationéè   r8   c                 óÀ  >• [         TU ]  U5        UR                  U l        [        X R                  [
        R                  " U5      5        [        USS 5      b  UR                  nO[        USS 5      b  UR                  nOSn[        R                  " U5      U l        [        R                  " UR                  UR                  5      U l        U R!                  5         g )NÚclassifier_dropoutÚhidden_dropoutgš™™™™™¹?)r"   r;   r<   r=   r>   r
   r?   rX   r�   r‘   r@   ÚDropoutÚdropoutrA   rB   rC   rD   )r$   rF   r�   r   s      €r*   r;   Ú&GenericForTokenClassification.__init__ì   s±   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä�×,Ñ,¬i×.CÒ.CÀFÓ.KÔLÜ�6Ð/°Ó6ÑBØ!'×!:Ñ!:ÑÜ�VÐ-¨tÓ4Ñ@Ø!'×!6Ñ!6Ñà!$ÐÜ—z’zÐ"4Ó5ˆŒÜ—Y’Y˜v×1Ñ1°6×3DÑ3DÓEˆŒ
ð 	�‰Õr,   NrH   rI   rJ   r   rK   rL   r   r&   rM   c           	      ó$  • [        X R                  5      " U4UUUUUS.UD6n	U	R                  n
U R                  U
5      n
U R	                  U
5      nS nUb  U R                  X¶U R                  5      n[        UUU	R                  U	R                  S9$ )NrO   )rU   rS   rV   rW   )
rX   r>   rY   r“   rC   rb   rF   r	   rV   rW   )r$   rH   rI   rJ   r   rK   rL   r   r&   r‰   rŠ   rS   rU   s                r*   rh   Ú%GenericForTokenClassification.forwardý   s©   € ô ,3°4×9OÑ9OÔ+PØð,
à)Ø%Ø+Ø'Øñ,
ð ñ,
ˆð "×3Ñ3ˆØŸ,™, Ó7ˆØ—‘˜OÓ,ˆàˆØÑØ×%Ñ% f°d·k±kÓBˆDä$ØØØ!×/Ñ/Ø×)Ñ)ñ	
ð 	
r,   )r“   r<   rC   rj   )r   r.   r/   r0   r>   r;   r   r   r^   rk   rl   r   rm   rn   r   r   r	   rh   r2   r3   r4   s   @r*   r�   r�   è   sÜ   ø† àÐõð" Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%ñ!
à×#Ñ# dÑ*ð!
ð Ÿ™ tÑ+ð!
ð ×&Ñ&¨Ñ-ð	!
ð
  ™ð!
ð ×(Ñ(¨4Ñ/ð!
ð × Ñ  4Ñ'ð!
ð ˜$‘;ð!
ð Ð+Ñ,ð!
ð 
ô!
ó ó ö!
r,   r�   )Ú	functoolsr   r^   Útorch.nnr@   Úcache_utilsr   Úmodeling_outputsr   r   r   r	   Úmodels.autor
   Úprocessing_utilsr   Úutilsr   r   r   r   Ú
get_loggerr   r   ÚModuler   r6   rp   r�   r-   r,   r*   Ú<module>r       sž   ðõ ã Ý å ÷ó õ #Ý $ß PÓ Pð 
×	Ò	˜HÓ	%€ô;1 §¡ô ;1ð| ÷G
ð G
ó ðG
ðT ÷9
ð 9
ó ð9
ðx ÷7
ð 7
ó ñ7
r,   