o
    ¹ÈÏié  ã                   @   s¤   d 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 e e¡Zd	Zd
ejdededejfdd„ZG dd„ de	ƒZG dd„ deƒZG dd„ deƒZg d¢ZdS )zFlax mT5 model.é    Né   )Úloggingé   )ÚFlaxT5EncoderModelÚFlaxT5ForConditionalGenerationÚFlaxT5Modelé   )Ú	MT5ConfigÚT5ConfigÚ	input_idsÚpad_token_idÚdecoder_start_token_idÚreturnc                 C   sd   t  | ¡}|jdd…dd…f  | dd…dd…f ¡}|jdd…df  |¡}t  |dk||¡}|S )z1
    Shift input ids one token to the right.
    Nr   éÿÿÿÿr   iœÿÿÿ)ÚjnpÚ
zeros_likeÚatÚsetÚwhere)r   r   r   Úshifted_input_ids© r   ú]/home/ubuntu/.local/lib/python3.10/site-packages/transformers/models/mt5/modeling_flax_mt5.pyÚshift_tokens_right   s
   
,r   c                   @   ó   e Zd ZdZdZeZdS )ÚFlaxMT5Modela  
    This class overrides [`FlaxT5Model`]. Please check the superclass for the appropriate documentation alongside usage
    examples.

    Examples:

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

    >>> model = FlaxMT5Model.from_pretrained("google/mt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")

    >>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
    >>> summary = "Weiter Verhandlung in Syrien."
    >>> inputs = tokenizer(article, return_tensors="np")

    >>> decoder_input_ids = tokenizer(text_target=summary, return_tensors="np").input_ids

    >>> outputs = model(input_ids=inputs["input_ids"], decoder_input_ids=decoder_input_ids)
    >>> hidden_states = outputs.last_hidden_state
    ```Úmt5N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typer	   Úconfig_classr   r   r   r   r   *   ó    r   c                   @   r   )ÚFlaxMT5EncoderModela	  
    This class overrides [`FlaxT5EncoderModel`]. Please check the superclass for the appropriate documentation
    alongside usage examples.

    Examples:

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

    >>> model = FlaxT5EncoderModel.from_pretrained("google/mt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")

    >>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
    >>> summary = "Weiter Verhandlung in Syrien."
    >>> inputs = tokenizer(article, return_tensors="np")

    >>> decoder_input_ids = tokenizer(text_target=summary, return_tensors="np").input_ids

    >>> outputs = model(input_ids=inputs["input_ids"])
    >>> hidden_states = outputs.last_hidden_state
    ```r   Nr   r   r   r   r   r$   E   r#   r$   c                   @   r   )ÚFlaxMT5ForConditionalGenerationa-  
    This class overrides [`FlaxT5ForConditionalGeneration`]. Please check the superclass for the appropriate
    documentation alongside usage examples.

    Examples:

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

    >>> model = FlaxMT5ForConditionalGeneration.from_pretrained("google/mt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")

    >>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
    >>> summary = "Weiter Verhandlung in Syrien."
    >>> inputs = tokenizer(article, return_tensors="np")

    >>> decoder_input_ids = tokenizer(text_target=summary, return_tensors="np").input_ids

    >>> outputs = model(**inputs, decoder_input_ids=decoder_input_ids)
    >>> logits = outputs.logits
    ```r   Nr   r   r   r   r   r%   `   r#   r%   )r$   r%   r   )r    Ú	jax.numpyÚnumpyr   Úutilsr   Út5.modeling_flax_t5r   r   r   Úconfiguration_mt5r	   Ú
get_loggerr   ÚloggerÚ_CONFIG_FOR_DOCÚndarrayÚintr   r   r$   r%   Ú__all__r   r   r   r   Ú<module>   s   
