§
    Ý˜ºh*-  ã                   óP  — d dl m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
mZ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  ej        e¦  «        Z G d
„ dej        ¦  «        Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         ZdS )é    )Úpartial)ÚOptionalNé   )ÚCache)ÚBaseModelOutputWithPastÚQuestionAnsweringModelOutputÚ SequenceClassifierOutputWithPastÚTokenClassifierOutput)Ú	AutoModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingc                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚGradientCheckpointingLayera  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                 óö  •— | j         rÙ| j        rÒd}| j        j        }d|› d�}d|v r|d         rd|d<   |dz  }d}d|v r|d         �d |d<   |dz  }d}d	|v r|d	         �d |d	<   |d
z  }d}d|v r|d         �d |d<   |dz  }d}|r2|                     d¦  «        dz   }t
                               |¦  «          | j        t          t          ¦   «         j
        fi |¤Žg|¢R Ž S  t          ¦   «         j
        |i |¤ŽS )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         €úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/modeling_layers.pyr#   z#GradientCheckpointingLayer.__call__<   s  ø€ ØÔ&ð  	a¨4¬=ð  	aØˆGØœÔ0ˆJØeÐPZÐeÐeÐ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Ô4µW½U¹W¼WÔ=MÐ5XÐ5XÐQWÐ5XÐ5XÐ`Ð[_Ð`Ð`Ð`Ð`Ø�u‰wŒwÔ Ð0¨Ð0Ð0Ð0ó    )r   Ú
__module__Ú__qualname__Ú__doc__r   r#   Ú__classcell__©r   s   @r*   r   r   #   sJ   ø€ € € € € ðð ð, #Ðð"1ð "1ð "1ð "1ð "1ð "1ð "1ð "1ð "1r+   r   c                   ó  ‡ — e Zd ZdZˆ fd„Zee	 	 	 	 	 	 	 ddeej	                 deej
                 deej	                 dee         deej                 d	eej	                 d
ee         dee         defd„¦   «         ¦   «         Zˆ xZS )Ú GenericForSequenceClassificationÚmodelc                 ó&  •— t          ¦   «                              |¦  «         |j        | _        t          | | j        t          j        |¦  «        ¦  «         t          j        |j	        | j        d¬¦  «        | _
        |                      ¦   «          d S )NF)Úbias)r"   Ú__init__Ú
num_labelsÚsetattrÚbase_model_prefixr   Úfrom_configÚnnÚLinearÚhidden_sizeÚscoreÚ	post_init©r$   Úconfigr   s     €r*   r6   z)GenericForSequenceClassification.__init__e   sz   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå��dÔ,­iÔ.CÀFÑ.KÔ.KÑLÔLÐLÝ”Y˜vÔ1°4´?ÈÐOÑOÔOˆŒ
ð 	�ŠÑÔÐÐÐr+   NÚ	input_idsÚattention_maskÚposition_idsr   Úinputs_embedsÚlabelsr   r&   Úreturnc           	      ó8  —  t          | | j        ¦  «        |f|||||dœ|¤Ž}	|	j        }
|                      |
¦  «        }|�|j        d         }n|j        d         }| j        j        €|dk    rt          d¦  «        ‚| j        j        €d}n¨|�}|| j        j        k                         |j	        t          j        ¦  «        }t          j        |j        d         |j	        t          j        ¬¦  «        }||z                       d¦  «        }n)d}t                               | j        j        › d�¦  «         |t          j        ||j	        ¬¦  «        |f         }d }|�|                      |||| j        ¬	¦  «        }t'          |||	j        |	j        |	j        ¬
¦  «        S )N©rC   rD   r   rE   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.`)rK   )ÚlogitsrF   Úpooled_logitsrA   )ÚlossrM   r   Úhidden_statesÚ
attentions)Úgetattrr9   Úlast_hidden_stater>   ÚshaperA   Úpad_token_idÚ
ValueErrorÚtorK   ÚtorchÚint32ÚarangeÚargmaxr   r    r   r   Úloss_functionr	   r   rP   rQ   )r$   rB   rC   rD   r   rE   rF   r   r&   Útransformer_outputsrP   rM   Ú
batch_sizeÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesrN   rO   s                     r*   Úforwardz(GenericForSequenceClassification.forwardo   sÜ  € ð 8]µw¸tÀTÔE[Ñ7\Ô7\Øð8
à)Ø%Ø+Ø'Øð8
ð 8
ð ð8
ð 8
Ðð ,Ô=ˆØ—’˜MÑ*Ô*ˆàÐ Ø"œ¨Ô+ˆJˆJà&Ô,¨QÔ/ˆJàŒ;Ô#Ð+°
¸a²°ÝÐ\Ñ]Ô]Ð]ØŒ;Ô#Ð+Ø!#ÐÐØÐ"à%¨¬Ô)AÒA×EÒEÀfÄmÕUZÔU`ÑaÔaˆLÝ!œL¨¬¸Ô)<ÀVÄ]ÕZ_ÔZeÐfÑfÔfˆMØ"/°,Ñ">×!FÒ!FÀrÑ!JÔ!JÐÐà!#ÐÝ×ÒØ”>Ô*ð Zð Zð Zñô ð ð
 �uœ|¨J¸v¼}ÐMÑMÔMÐOaÐaÔbˆàˆØÐØ×%Ò%¨V¸FÐR_ÐhlÔhsÐ%ÑtÔtˆDå/ØØ Ø/Ô?Ø-Ô;Ø*Ô5ð
ñ 
ô 
ð 	
r+   ©NNNNNNN)r   r,   r-   r9   r6   r   r   r   rX   Ú
LongTensorÚTensorr   ÚFloatTensorÚboolr   r   r	   rb   r/   r0   s   @r*   r2   r2   a   s  ø€ € € € € àÐðð ð ð ð ð Øð 15Ø15Ø37Ø+/Ø59Ø-1Ø$(ð8
ð 8
à˜EÔ,Ô-ð8
ð ! ¤Ô.ð8
ð ˜uÔ/Ô0ð	8
ð
 " %œð8
ð   Ô 1Ô2ð8
ð ˜Ô)Ô*ð8
ð ˜D”>ð8
ð Ð+Ô,ð8
ð 
*ð8
ð 8
ð 8
ñ „^ñ Ôð8
ð 8
ð 8
ð 8
ð 8
r+   r2   c                   ó&  ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 dde	e
j                 de	e
j                 de	e
j                 d	e	e         d
e	e
j                 de	e
j                 de	e
j                 dee         defd„¦   «         ¦   «         Zˆ xZS )ÚGenericForQuestionAnsweringr3   c                 ó   •— t          ¦   «                              |¦  «         t          | | j        t	          j        |¦  «        ¦  «         t          j        |j        d¦  «        | _	        |  
                    ¦   «          d S )Né   )r"   r6   r8   r9   r   r:   r;   r<   r=   Ú
qa_outputsr?   r@   s     €r*   r6   z$GenericForQuestionAnswering.__init__°   si   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å��dÔ,­iÔ.CÀFÑ.KÔ.KÑLÔLÐLÝœ) FÔ$6¸Ñ:Ô:ˆŒð 	�ŠÑÔÐÐÐr+   c                 ó6   — t          | | j        ¦  «        j        S ©N©rR   r9   Úembed_tokens)r$   s    r*   Úget_input_embeddingsz0GenericForQuestionAnswering.get_input_embeddings¹   s   € Ý�t˜TÔ3Ñ4Ô4ÔAÐAr+   c                 ó:   — |t          | | j        ¦  «        _        d S rn   ro   )r$   Úvalues     r*   Úset_input_embeddingsz0GenericForQuestionAnswering.set_input_embeddings¼   s   € Ø=B���dÔ,Ñ-Ô-Ô:Ð:Ð:r+   NrB   rC   rD   r   rE   Ústart_positionsÚend_positionsr&   rG   c                 ó¶  —  t          | | j        ¦  «        |f||||dœ|¤Ž}	|	j        }
|                      |
¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d }|�|� | j        ||||fi |¤Ž}t          ||||	j	        |	j
        ¬¦  «        S )N)rC   rD   r   rE   r   rJ   )Údim)rO   Ústart_logitsÚ
end_logitsrP   rQ   )rR   r9   rS   rl   ÚsplitÚsqueezeÚ
contiguousr\   r   rP   rQ   )r$   rB   rC   rD   r   rE   ru   rv   r&   ÚoutputsÚsequence_outputrM   ry   rz   rO   s                  r*   rb   z#GenericForQuestionAnswering.forward¿   s  € ð ,Q­7°4¸Ô9OÑ+PÔ+PØð,
à)Ø%Ø+Ø'ð,
ð ,
ð ð,
ð ,
ˆð "Ô3ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆØÐ&¨=Ð+DØ%�4Ô% l°JÀÐQ^ÐiÐiÐbhÐiÐiˆDå+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r+   rc   )r   r,   r-   r9   r6   rq   rt   r   r   r   rX   rd   re   r   rf   r   r   r   rb   r/   r0   s   @r*   ri   ri   ¬   s:  ø€ € € € € àÐðð ð ð ð ðBð Bð BðCð Cð Cð Øð 15Ø15Ø37Ø+/Ø59Ø6:Ø48ð%
ð %
à˜EÔ,Ô-ð%
ð ! ¤Ô.ð%
ð ˜uÔ/Ô0ð	%
ð
 " %œð%
ð   Ô 1Ô2ð%
ð " %Ô"2Ô3ð%
ð   Ô 0Ô1ð%
ð Ð+Ô,ð%
ð 
&ð%
ð %
ð %
ñ „^ñ Ôð%
ð %
ð %
ð %
ð %
r+   ri   c                   ó   ‡ — e Zd ZdZˆ fd„Zee	 	 	 	 	 	 	 ddeej	                 deej
                 deej	                 dee         deej                 d	eej	                 d
ee         defd„¦   «         ¦   «         Zˆ xZS )ÚGenericForTokenClassificationr3   c                 ó¼  •— t          ¦   «                              |¦  «         |j        | _        t          | | j        t          j        |¦  «        ¦  «         t          |dd ¦  «        �|j        }nt          |dd ¦  «        �|j	        }nd}t          j        |¦  «        | _        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S )NÚclassifier_dropoutÚhidden_dropoutgš™™™™™¹?)r"   r6   r7   r8   r9   r   r:   rR   rƒ   r„   r;   ÚDropoutÚdropoutr<   r=   r>   r?   )r$   rA   rƒ   r   s      €r*   r6   z&GenericForTokenClassification.__init__í   sÌ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå��dÔ,­iÔ.CÀFÑ.KÔ.KÑLÔLÐLÝ�6Ð/°Ñ6Ô6ÐBØ!'Ô!:ÐÐÝ�VÐ-¨tÑ4Ô4Ð@Ø!'Ô!6ÐÐà!$ÐÝ”zÐ"4Ñ5Ô5ˆŒÝ”Y˜vÔ1°6Ô3DÑEÔEˆŒ
ð 	�ŠÑÔÐÐÐr+   NrB   rC   rD   r   rE   rF   r   rG   c           	      ó"  —  t          | | j        ¦  «        |f|||||dœ|¤Ž}	|	j        }
|                      |
¦  «        }
|                      |
¦  «        }d }|�|                      ||| j        ¦  «        }t          |||	j        |	j	        ¬¦  «        S )NrI   )rO   rM   rP   rQ   )
rR   r9   rS   r†   r>   r\   rA   r
   rP   rQ   )r$   rB   rC   rD   r   rE   rF   r   r&   r~   r   rM   rO   s                r*   rb   z%GenericForTokenClassification.forwardþ   sÂ   € ð ,Q­7°4¸Ô9OÑ+PÔ+PØð,
à)Ø%Ø+Ø'Øð,
ð ,
ð ð,
ð ,
ˆð "Ô3ˆØŸ,š, Ñ7Ô7ˆØ—’˜OÑ,Ô,ˆàˆØÐØ×%Ò% f¨f°d´kÑBÔBˆDå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r+   rc   )r   r,   r-   r9   r6   r   r   r   rX   rd   re   r   rf   rg   r
   rb   r/   r0   s   @r*   r�   r�   é   s  ø€ € € € € àÐðð ð ð ð ð" Øð 15Ø15Ø37Ø+/Ø59Ø-1Ø$(ð!
ð !
à˜EÔ,Ô-ð!
ð ! ¤Ô.ð!
ð ˜uÔ/Ô0ð	!
ð
 " %œð!
ð   Ô 1Ô2ð!
ð ˜Ô)Ô*ð!
ð ˜D”>ð!
ð 
ð!
ð !
ð !
ñ „^ñ Ôð!
ð !
ð !
ð !
ð !
r+   r�   ) Ú	functoolsr   Útypingr   rX   Útorch.nnr;   Úcache_utilsr   Úmodeling_outputsr   r   r	   r
   Úmodels.autor   Úprocessing_utilsr   Úutilsr   r   r   r   Ú
get_loggerr   r   ÚModuler   Úobjectr2   ri   r�   © r+   r*   ú<module>r”      sÕ  ðð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ Pð 
ˆÔ	˜HÑ	%Ô	%€ð;1ð ;1ð ;1ð ;1ð ;1 ¤ñ ;1ô ;1ð ;1ð| ðG
ð G
ð G
ð G
ð G
 vñ G
ô G
ñ „ðG
ðT ð9
ð 9
ð 9
ð 9
ð 9
 &ñ 9
ô 9
ñ „ð9
ðx ð7
ð 7
ð 7
ð 7
ð 7
 Fñ 7
ô 7
ñ „ð7
ð 7
ð 7
r+   