
    Uh                     F    d dl mZ d dlmZ  G d dej                        Zy)    )partialNc                   &     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                   r1| j                  r% | j                  t        t        |   fi |g| S t	        |   |i |S )N)gradient_checkpointingtraining_gradient_checkpointing_funcr   super__call__)selfargskwargs	__class__s      n/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/transformers/modeling_layers.pyr   z#GradientCheckpointingLayer.__call__-   sP    &&4==4444WUW=M5XQW5X`[_``w000    )__name__
__module____qualname____doc__r   r   __classcell__)r   s   @r   r   r      s    , #1 1r   r   )	functoolsr   torch.nnnnModuler    r   r   <module>r      s     1 1r   