§
    ‚Štjäâ  ã                   óˆ  — d Z ddlZddlZddlm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 dd	lmZmZ dd
lmZ ddlmZmZmZmZmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z%  e!j&        e'¦  «        Z( G d„ dej)        ¦  «        Z* G d„ dej)        ¦  «        Z+ G d„ dej)        ¦  «        Z, G d„ dej)        ¦  «        Z- G d„ de¦  «        Z. G d„ dej)        ¦  «        Z/e G d„ de¦  «        ¦   «         Z0e G d„ de0¦  «        ¦   «         Z1 G d „ d!ej)        ¦  «        Z2 G d"„ d#ej)        ¦  «        Z3 G d$„ d%ej)        ¦  «        Z4 G d&„ d'ej)        ¦  «        Z5 G d(„ d)ej)        ¦  «        Z6 G d*„ d+e¦  «        Z7 ed,¬-¦  «         G d.„ d/e0¦  «        ¦   «         Z8 ed0¬-¦  «         G d1„ d2e0e¦  «        ¦   «         Z9g d3¢Z:dS )4zPix2Struct modeling fileé    N)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutput)ÚPreTrainedModel)ÚDUMMY_INPUTSÚ
DUMMY_MASKÚauto_docstringÚis_torchdynamo_compilingÚloggingé   )ÚPix2StructConfigÚPix2StructTextConfigÚPix2StructVisionConfigc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚPix2StructLayerNormç�íµ ÷Æ°>c                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zc
        Construct a layernorm module in the T5 style. No bias and no subtraction of mean.
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚ	__class__s      €úp/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/pix2struct/modeling_pix2struct.pyr"   zPix2StructLayerNorm.__init__4   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    c                 óh  — |                      t          j        ¦  «                             d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        j        t          j	        t          j
        fv r|                      | j        j        ¦  «        }| j        |z  S )Né   éÿÿÿÿT)Úkeepdim)Útor$   Úfloat32ÚpowÚmeanÚrsqrtr'   r&   ÚdtypeÚfloat16Úbfloat16)r(   Úhidden_statesÚvariances      r,   ÚforwardzPix2StructLayerNorm.forward<   s–   € ð !×#Ò#¥E¤MÑ2Ô2×6Ò6°qÑ9Ô9×>Ò>¸rÈ4Ð>ÑPÔPˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆð Œ;Ô¥¤µ´Ð ?Ð?Ð?Ø)×,Ò,¨T¬[Ô->Ñ?Ô?ˆMàŒ{˜]Ñ*Ð*r-   )r   ©Ú__name__Ú
__module__Ú__qualname__r"   r<   Ú__classcell__©r+   s   @r,   r   r   3   sL   ø€ € € € € ð$ð $ð $ð $ð $ð $ð+ð +ð +ð +ð +ð +ð +r-   r   c                   óP   ‡ — e Zd ZdZdeddfˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚPix2StructVisionEmbeddingsa-  
    Construct the embeddings from patch. In `Pix2Struct` the input is different from classic Vision-transformer models.
    Here the input is a sequence of `seq_len` flattened patches that also combines padding patches (tokens). Each patch
    is represented by a vector of `hidden_size` values.
    ÚconfigÚreturnNc                 ó\  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j        |j        |j        ¦  «        | _
        t          j        |j        ¦  «        | _        d S ©N)r!   r"   r   ÚLinearÚpatch_embed_hidden_sizer)   Úpatch_projectionÚ	EmbeddingÚseq_lenÚrow_embedderÚcolumn_embedderÚDropoutÚdropout_rateÚdropout©r(   rE   r+   s     €r,   r"   z#Pix2StructVisionEmbeddings.__init__S   s}   ø€ Ý‰Œ×ÒÑÔÐÝ "¤	¨&Ô*HÈ&ÔJ\Ñ ]Ô ]ˆÔåœL¨¬¸Ô9KÑLÔLˆÔÝ!œ|¨F¬N¸FÔ<NÑOÔOˆÔå”z &Ô"5Ñ6Ô6ˆŒˆˆr-   Úflattened_patchesc                 ód  — |d d …d d …df                               ¦   «         }|d d …d d …df                               ¦   «         }|d d …d d …dd …f         }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }||z   |z   }|                      |¦  «        }|S )Nr   r   r/   )ÚlongrK   rN   rO   rR   )r(   rT   Úrow_indicesÚcol_indicesÚ
embeddingsÚrow_embeddingsÚcol_embeddingss          r,   r<   z"Pix2StructVisionEmbeddings.forward\   sË   € ð (¨¨¨¨1¨1¨1¨a¨Ô0×5Ò5Ñ7Ô7ˆØ'¨¨¨¨1¨1¨1¨a¨Ô0×5Ò5Ñ7Ô7ˆà-¨a¨a¨a°°°°A°B°B¨hÔ7Ðà×*Ò*Ð+<Ñ=Ô=ˆ
Ø×*Ò*¨;Ñ7Ô7ˆØ×-Ò-¨kÑ:Ô:ˆð   .Ñ0°>ÑAˆ
à—\’\ *Ñ-Ô-ˆ
àÐr-   )
r>   r?   r@   Ú__doc__r   r"   r$   ÚTensorr<   rA   rB   s   @r,   rD   rD   L   s|   ø€ € € € € ðð ð7Ð/ð 7°Dð 7ð 7ð 7ð 7ð 7ð 7ð¨¬ð ¸%¼,ð ð ð ð ð ð ð ð r-   rD   c                   ó,   ‡ — e Zd Zˆ fd„Z	 	 	 dd„Zˆ xZS )ÚPix2StructVisionAttentionc                 ó  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        | j        | j        z  | _	        t          j        | j        | j	        d¬¦  «        | _        t          j        | j        | j	        d¬¦  «        | _        t          j        | j        | j	        d¬¦  «        | _        t          j        | j	        | j        d¬¦  «        | _        d| _        d S ©NF©Úbias)r!   r"   r)   Úd_kvÚkey_value_proj_dimÚnum_attention_headsÚn_headsÚattention_dropoutrR   Ú	inner_dimr   rI   ÚqueryÚkeyÚvalueÚoutputÚgradient_checkpointingrS   s     €r,   r"   z"Pix2StructVisionAttention.__init__q   sÕ   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔØ"(¤+ˆÔØÔ1ˆŒØÔ/ˆŒØœ¨Ô(?Ñ?ˆŒå”Y˜tÔ/°´ÀeÐLÑLÔLˆŒ
Ý”9˜TÔ-¨t¬~ÀEÐJÑJÔJˆŒÝ”Y˜tÔ/°´ÀeÐLÑLÔLˆŒ
Ý”i ¤°Ô0@ÀuÐMÑMÔMˆŒà&+ˆÔ#Ð#Ð#r-   NFc                 óø  ‡ ‡— |j         dd…         \  Š}ˆˆ fd„} |‰                      |¦  «        ¦  «        } |‰                      |¦  «        ¦  «        } |‰                      |¦  «        ¦  «        }	t	          j        ||                     dd¦  «        ¦  «        }
|€öt	          j        d‰ j        ||f|
j	        |
j
        ¬¦  «        }‰ j        r‰ j        rd|_        |                     ¦   «         dk    r,||dd…dddd…f                              |j	        ¦  «        z   }nn|�||                     |j	        ¦  «        z   }nNt!          ¦   «         s@t	          j        ‰|f|j	        |j
        ¬¦  «        }||                     |j	        ¦  «        z   }d|z
  }|                     |dk    t	          j        |
j
        ¦  «        j        ¦  «        }|
|z  }
t	          j        |
t	          j        t	          j        |
j
        ¦  «        j        ¦  «        ¦  «        }
t.          j                             |
dt          j        ¬	¦  «                             |
¦  «        }t.          j                             |‰ j        ‰ j        ¬
¦  «        }t	          j        ||	¦  «        }|                     dd¦  «                             ¦   «                              ‰d‰ j        ¦  «        }‰                       |¦  «        }|f|fz   }|r||fz   }|S )z&
        Self-attention block
        Nr/   c                 ó”   •— |                       ¦   «                              ‰d‰j        ‰j        ¦  «                             dd¦  «        S )Ú
projectionr0   r   r/   )Ú
contiguousÚviewrg   re   Ú	transpose)ÚstatesÚ
batch_sizer(   s    €€r,   Úto_projection_shapez>Pix2StructVisionAttention.forward.<locals>.to_projection_shapeŽ   s@   ø€ à×$Ò$Ñ&Ô&×+Ò+¨J¸¸D¼LÈ$ÔJaÑbÔb×lÒlÐmnÐpqÑrÔrÐrr-   r   r   ©Údevicer7   Tr0   )Údimr7   ©ÚpÚtraining)!Úshaperj   rk   rl   r$   Úmatmulrt   Úzerosrg   ry   r7   rn   r}   Úrequires_gradrz   r2   r   r%   Úmasked_fillÚfinfoÚminÚmaxÚtensorr   Ú
functionalÚsoftmaxr3   Útype_asrR   rr   rs   ri   rm   )r(   r:   Úattention_maskÚposition_biasÚoutput_attentionsÚ
seq_lengthrw   Úquery_statesÚ
key_statesÚvalue_statesÚscoresÚposition_bias_maskedÚattn_weightsÚattn_outputÚoutputsrv   s   `              @r,   r<   z!Pix2StructVisionAttention.forward€   s  øø€ ð "/Ô!4°R°a°RÔ!8Ñˆ
�Jð	sð 	sð 	sð 	sð 	sð 	sð +Ð*¨4¯:ª:°mÑ+DÔ+DÑEÔEˆð )Ð(¨¯ª°-Ñ)@Ô)@ÑAÔAˆ
Ø*Ð*¨4¯:ª:°mÑ+DÔ+DÑEÔEˆõ ”˜l¨J×,@Ò,@ÀÀAÑ,FÔ,FÑGÔGˆàÐ Ý!œKØ�D”L *¨jÐ9À&Ä-ÐW]ÔWcðñ ô ˆMð Ô*ð 3¨t¬}ð 3Ø.2�Ô+à×!Ò!Ñ#Ô# qÒ(Ð(Ø -°¸q¸q¸qÀ$ÈÈaÈaÈaÐ?OÔ0P×0SÒ0SÐTaÔThÑ0iÔ0iÑ i��ØÐ+à -°×0AÒ0AÀ-ÔBVÑ0WÔ0WÑ W��Ý-Ñ/Ô/ð XÝ!&¤Ø Ð,°]Ô5IÐQ^ÔQdð"ñ "ô "�ð !.°×0AÒ0AÀ-ÔBVÑ0WÔ0WÑ W�à Ñ-ˆMà,×8Ò8¸È!Ò9KÍUÌ[ÐY_ÔYeÑMfÔMfÔMjÑkÔkÐØÐ&Ñ&ˆÝ”˜6¥5¤<µ´¸F¼LÑ0IÔ0IÔ0MÑ#NÔ#NÑOÔOˆõ ”}×,Ò,¨V¸Å5Ä=Ð,ÑQÔQ×YÒYÐZ`ÑaÔaˆõ ”}×,Ò,¨\¸T¼\ÐTXÔTaÐ,ÑbÔbˆå”l <°Ñ>Ô>ˆð "×+Ò+¨A¨qÑ1Ô1×<Ò<Ñ>Ô>×CÒCÀJÐPRÐTXÔTbÑcÔcˆà—k’k +Ñ.Ô.ˆà�. MÐ#3Ñ3ˆàð 	0Ø  Ñ/ˆGØˆr-   )NNFr=   rB   s   @r,   r_   r_   p   s_   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð$ ØØðGð Gð Gð Gð Gð Gð Gð Gr-   r_   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚPix2StructVisionMlprE   c                 ó–  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j                 | _        d S ra   ©r!   r"   r   rI   r)   Úd_ffÚwi_0Úwi_1ÚworP   rQ   rR   r   Údense_act_fnÚactrS   s     €r,   r"   zPix2StructVisionMlp.__init__Ì   ó—   ø€ Ý‰Œ×ÒÑÔÐÝ”I˜fÔ0°&´+ÀEÐJÑJÔJˆŒ	Ý”I˜fÔ0°&´+ÀEÐJÑJÔJˆŒ	Ý”)˜FœK¨Ô);À%ÐHÑHÔHˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr-   c                 óà  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }t	          | j        j        t          j        ¦  «        r]|j	        | j        j        j	        k    rC| j        j        j	        t          j
        k    r$|                     | j        j        j	        ¦  «        }|                      |¦  «        }|S rH   ©rŸ   r›   rœ   rR   Ú
isinstancer�   r&   r$   r]   r7   Úint8r2   ©r(   r:   Úhidden_geluÚhidden_linears       r,   r<   zPix2StructVisionMlp.forwardÔ   óÀ   € Ø—h’h˜tŸyšy¨Ñ7Ô7Ñ8Ô8ˆØŸ	š	 -Ñ0Ô0ˆØ# mÑ3ˆØŸš ]Ñ3Ô3ˆõ �t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMàŸš Ñ.Ô.ˆØÐr-   )r>   r?   r@   r   r"   r<   rA   rB   s   @r,   r—   r—   Ë   sT   ø€ € € € € ð/Ð5ð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r-   r—   c                   ó    ‡ — e Zd Zdeddfˆ fd„Z	 	 d
dej        dej        dz  dedeej        ej        f         eej                 z  fd	„Z	ˆ xZ
S )ÚPix2StructVisionLayerrE   rF   Nc                 ó>  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |j	        |j
        ¬¦  «        | _        t          |j	        |j
        ¬¦  «        | _        d S )Nr   ©r*   )r!   r"   Úchunk_size_feed_forwardÚseq_len_dimr_   Ú	attentionr—   Úmlpr   r)   Úlayer_norm_epsÚpre_mlp_layer_normÚpre_attention_layer_normrS   s     €r,   r"   zPix2StructVisionLayer.__init__é   s‡   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ2°6Ñ:Ô:ˆŒÝ& vÑ.Ô.ˆŒÝ"5°fÔ6HÈfÔNcÐ"dÑ"dÔ"dˆÔÝ(;¸FÔ<NÐTZÔTiÐ(jÑ(jÔ(jˆÔ%Ð%Ð%r-   Fr:   rŠ   rŒ   c                 óø   — |}|                       |¦  «        }|                      |||¬¦  «        }|d         }|dd …         }||z   }|                      |¦  «        }|                      |¦  «        |z   }|f|z   }|S )N)rŠ   rŒ   r   r   )r³   r¯   r²   r°   )	r(   r:   rŠ   rŒ   ÚresidualÚself_attention_outputsÚattention_outputr•   Úlayer_outputs	            r,   r<   zPix2StructVisionLayer.forwardò   s£   € ð !ˆð ×5Ò5°mÑDÔDˆà!%§¢ØØ)Ø/ð "0ñ "
ô "
Ðð
 2°!Ô4ÐØ(¨¨¨Ô,ˆð )¨8Ñ3ˆð ×.Ò.¨}Ñ=Ô=ˆØ—x’x Ñ-Ô-°Ñ=ˆà�/ GÑ+ˆàˆr-   )NF)r>   r?   r@   r   r"   r$   r]   ÚboolÚtupler<   rA   rB   s   @r,   rª   rª   è   s¾   ø€ € € € € ðkÐ/ð k°Dð kð kð kð kð kð kð /3Ø"'ð	ð à”|ðð œ tÑ+ðð  ð	ð
 
ˆuŒ|˜Uœ\Ð)Ô	*¨U°5´<Ô-@Ñ	@ðð ð ð ð ð ð ð r-   rª   c                   ór   ‡ — e Zd Zdeddfˆ fd„Z	 	 	 	 ddej        dej        dz  d	ed
ededee	z  fd„Z
ˆ xZS )ÚPix2StructVisionEncoderrE   rF   Nc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )rª   )Ú.0Ú_rE   s     €r,   ú
<listcomp>z4Pix2StructVisionEncoder.__init__.<locals>.<listcomp>  s"   ø€ Ð#kÐ#kÐ#kÀaÕ$9¸&Ñ$AÔ$AÐ#kÐ#kÐ#kr-   F)	r!   r"   rE   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerrn   rS   s    `€r,   r"   z Pix2StructVisionEncoder.__init__  sa   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#kÐ#kÐ#kÐ#kÍ5ÐQWÔQiÑKjÔKjÐ#kÑ#kÔ#kÑlÔlˆŒ
Ø&+ˆÔ#Ð#Ð#r-   FTr:   rŠ   rŒ   Úoutput_hidden_statesÚreturn_dictc                 ó  — |rdnd }|rdnd }t          | j        ¦  «        D ]0\  }}	|r||fz   } |	|||¦  «        }
|
d         }|r||
d         fz   }Œ1|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t          |||¬¦  «        S )Nr¿   r   r   c              3   ó   K  — | ]}|®|V — Œ	d S rH   r¿   ©rÀ   Úvs     r,   ú	<genexpr>z2Pix2StructVisionEncoder.forward.<locals>.<genexpr>2  s(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr-   ©Úlast_hidden_stater:   Ú
attentions)Ú	enumeraterÆ   rº   r   )r(   r:   rŠ   rŒ   rÇ   rÈ   Úall_hidden_statesÚall_self_attentionsÚiÚlayer_moduleÚlayer_outputss              r,   r<   zPix2StructVisionEncoder.forward  sù   € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4Ðå(¨¬Ñ4Ô4ð 		Pð 		P‰OˆAˆ|Ø#ð IØ$5¸Ð8HÑ$HÐ!à(˜L¨¸ÐHYÑZÔZˆMà)¨!Ô,ˆMà ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
r-   )NFFT)r>   r?   r@   r   r"   r$   r]   r¹   rº   r   r<   rA   rB   s   @r,   r¼   r¼     s»   ø€ € € € € ð,Ð5ð ,¸$ð ,ð ,ð ,ð ,ð ,ð ,ð /3Ø"'Ø%*Ø ð
ð 
à”|ð
ð œ tÑ+ð
ð  ð	
ð
 #ð
ð ð
ð 
�Ñ	 ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r-   r¼   c                   óx   ‡ — e Zd ZU eed<   dZdZed„ ¦   «         Z e	j
        ¦   «         ˆ fd„¦   «         Zd„ Zˆ xZS )ÚPix2StructPreTrainedModelrE   )ÚimageÚtextFc                 óv   — t          j        t          ¦  «        }t          j        t          ¦  «        }|||dœ}|S )N)Údecoder_input_idsÚ	input_idsÚdecoder_attention_mask)r$   r†   r   r   )r(   rÝ   Ú
input_maskÚdummy_inputss       r,   rà   z&Pix2StructPreTrainedModel.dummy_inputsA  s=   € å”L¥Ñ.Ô.ˆ	Ý”\¥*Ñ-Ô-ˆ
à!*Ø"Ø&0ð
ð 
ˆð
 Ðr-   c                 óž
  •— t          ¦   «                              |¦  «         | j        j        }t	          |t
          ¦  «        rt          j        |j        |dz  ¦  «         dS t	          |t          ¦  «        �r¦t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t          j        |j        j        d||dz  z  ¬¦  «         t!          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d||dz  z  ¬¦  «         t!          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d||dz  z  ¬¦  «         t!          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         dS dS dS t	          |t*          ¦  «        �ryt	          | j        t          ¦  «        r| j        j        j        n| j        j        }t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t          j        |j        j        d|||z  dz  z  ¬¦  «         t          j        |j        j        d||dz  z  ¬¦  «         t          j        |j        j        d||dz  z  ¬¦  «         t          j        |j        j        d|||z  dz  z  ¬¦  «         |j        r)t          j        |j        j        d||dz  z  ¬¦  «         dS dS t	          |t<          j        ¦  «        r t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t          j        |j        d||dz  z  ¬¦  «         |j         �<tC          |j        dd¦  «        s(t          j        |j        |j                  ¦  «         dS dS dS t	          |tD          ¦  «        r`t	          | j        t          ¦  «        r| j        j        j        n| j        j        }t          j        |j#        j        d||dz  z  ¬¦  «         dS t	          |t<          j$        t<          j%        f¦  «        rHt          j&        |j        d| j        j'        ¬¦  «         |j        �t          j        |j        ¦  «         dS dS dS )	zInitialize the weightsç      ð?g        g      à¿)r5   Ústdrc   NÚ_is_hf_initializedF)(r!   Ú_init_weightsrE   Úinitializer_factorr£   r   ÚinitÚ	constant_r&   Ú Pix2StructTextDenseGatedActDenser   Útext_configr)   rš   Únormal_r›   Úhasattrrc   Úzeros_rœ   r�   ÚPix2StructTextAttentionrd   Ú	num_headsrj   rk   rl   rm   Úhas_relative_attention_biasÚrelative_attention_biasr   rL   Úpadding_idxÚgetattrÚPix2StructTextModelÚlm_headrI   ÚConv2dÚtrunc_normal_Úinitializer_range)r(   ÚmoduleÚfactorr)   rš   re   rg   r+   s          €r,   rå   z'Pix2StructPreTrainedModel._init_weightsL  s  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ø”Ô/ˆÝ�fÕ1Ñ2Ô2ð >	)ÝŒN˜6œ=¨&°3©,Ñ7Ô7Ð7Ð7Ð7Ý˜Õ @ÑAÔAñ <	)õ ˜dœkÕ+;Ñ<Ô<ð-�”Ô'Ô3Ð3à”[Ô,ð õ
 4>¸d¼kÕK[Ñ3\Ô3\Ðr�4”;Ô*Ô/Ð/ÐbfÔbmÔbrˆDåŒL˜œÔ+°#¸6ÀkÐVZÑEZÑ;[Ð\Ñ\Ô\Ð\Ý�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ+°#¸6ÀkÐVZÑEZÑ;[Ð\Ñ\Ô\Ð\Ý�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ)°¸ÀDÈTÁ>Ñ9RÐSÑSÔSÐSÝ�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+Ð+Ð+ð,ð ,Ð.HÐ.Hå˜Õ 7Ñ8Ô8ñ +	)õ ˜dœkÕ+;Ñ<Ô<ð-�”Ô'Ô3Ð3à”[Ô,ð õ 1;¸4¼;ÕHXÑ0YÔ0YÐv�”Ô'Ô,Ð,Ð_cÔ_jÔ_vð õ
 ˜dœkÕ+;Ñ<Ô<ð+�”Ô'Ô1Ð1à”[Ô*ð õ ŒL˜œÔ,°3¸FÀ{ÐUgÑGgÐlpÑFpÑ<qÐrÑrÔrÐrÝŒL˜œÔ*°¸&ÀKÐQUÑDUÑ:VÐWÑWÔWÐWÝŒL˜œÔ,°3¸FÀkÐSWÑFWÑ<XÐYÑYÔYÐYÝŒL˜œÔ-°C¸VÈÐRdÑHdÐimÑGmÑ=nÐoÑoÔoÐoØÔ1ð tÝ”˜VÔ;ÔBÈÐRXÐ]hÐmqÑ\qÑRrÐsÑsÔsÐsÐsÐsðtð tå˜¥¤Ñ-Ô-ð 	)õ ˜dœkÕ+;Ñ<Ô<ð-�”Ô'Ô3Ð3à”[Ô,ð õ ŒL˜œ¨S°fÀÐQUÑ@UÑ6VÐWÑWÔWÐWàÔ!Ð-µg¸f¼mÐMaÐchÑ6iÔ6iÐ-Ý”˜FœM¨&Ô*<Ô=Ñ>Ô>Ð>Ð>Ð>ð .Ð-Ð-Ð-å˜Õ 3Ñ4Ô4ð 	)õ ˜dœkÕ+;Ñ<Ô<ð-�”Ô'Ô3Ð3à”[Ô,ð õ ŒL˜œÔ.°S¸fÈÐY]ÑH]Ñ>^Ð_Ñ_Ô_Ð_Ð_Ð_Ý˜¥¤­B¬IÐ 6Ñ7Ô7ð 	)ÝÔ˜vœ}°3¸D¼KÔ<YÐZÑZÔZÐZØŒ{Ð&Ý”˜FœKÑ(Ô(Ð(Ð(Ð(ð	)ð 	)à&Ð&r-   c                 ó6  — | j         j        }| j         j        }|€t          d¦  «        ‚|                     |j        ¦  «        }|dd d…f                              ¦   «         |ddd …f<   ||d<   |€t          d¦  «        ‚|                     |dk    |¦  «         |S )Nzšself.model.config.decoder_start_token_id has to be defined. In Pix2Struct it is usually set to the pad_token_id. See Pix2Struct docs for more information..r0   r   ).r   z1self.model.config.pad_token_id has to be defined.éœÿÿÿ)rE   Údecoder_start_token_idÚpad_token_idÚ
ValueErrorÚ	new_zerosr~   ÚcloneÚmasked_fill_)r(   rÝ   rý   rþ   Úshifted_input_idss        r,   Ú_shift_rightz&Pix2StructPreTrainedModel._shift_right’  sº   € Ø!%¤Ô!CÐØ”{Ô/ˆà!Ð)Ýð<ñô ð ð
 &×/Ò/°	´Ñ@Ô@ÐØ%.¨s°C°R°C¨xÔ%8×%>Ò%>Ñ%@Ô%@Ð˜#˜q˜r˜r˜'Ñ"Ø$:Ð˜&Ñ!àÐÝÐPÑQÔQÐQà×&Ò&Ð'8¸DÒ'@À,ÑOÔOÐOà Ð r-   )r>   r?   r@   r   Ú__annotations__Úinput_modalitiesÚ_can_compile_fullgraphÚpropertyrà   r$   Úno_gradrå   r  rA   rB   s   @r,   rØ   rØ   :  s”   ø€ € € € € € àÐÐÑØ(Ðà"Ðàðð ñ „Xðð €U„]�_„_ðB)ð B)ð B)ð B)ñ „_ðB)ðJ!ð !ð !ð !ð !ð !ð !r-   rØ   c                   ó¼   ‡ — e Zd ZU eed<   dZdZdZdgZdefˆ fd„Z	d„ Z
e	 	 	 	 	 ddej        dz  d	ej        dz  d
edz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )ÚPix2StructVisionModelrE   rT   )rÙ   Trª   c                 ó  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |j        |j	        ¬¦  «        | _
        |                      ¦   «          d S ©Nr¬   )r!   r"   rE   rD   rY   r¼   Úencoderr   r)   r±   Ú	layernormÚ	post_initrS   s     €r,   r"   zPix2StructVisionModel.__init__°  sr   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå4°VÑ<Ô<ˆŒÝ.¨vÑ6Ô6ˆŒå,¨VÔ-?ÀVÔEZÐ[Ñ[Ô[ˆŒð 	�ŠÑÔÐÐÐr-   c                 ó   — | j         j        S rH   )rY   rK   ©r(   s    r,   Úget_input_embeddingsz*Pix2StructVisionModel.get_input_embeddings¼  s   € ØŒÔ/Ð/r-   NrŠ   rŒ   rÇ   rÈ   rF   c                 óÔ  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|€t	          d¦  «        ‚|€,|                     d¬¦  «        dk                         ¦   «         }|                      |¦  «        }|                      |||||¬¦  «        }|d         }	|  	                    |	¦  «        }	|s|	f}
|
|dd…         z   S t          |	|j        |j        ¬¦  «        S )	a  
        flattened_patches (`torch.FloatTensor` of shape `(batch_size, sequence_length, num_channels x patch_height x patch_width)`):
            Flattened and padded pixel values. These values can be obtained using [`AutoImageProcessor`]. See
            [`Pix2StructVisionImageProcessor.__call__`] for details. Check the [original
            paper](https://huggingface.co/papers/2210.03347) (figure 5) for more details.

        Example:

        ```python
        >>> import httpx
        >>> from io import BytesIO
        >>> from PIL import Image
        >>> from transformers import AutoProcessor, Pix2StructVisionModel

        >>> image_processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
        >>> model = Pix2StructVisionModel.from_pretrained("google/pix2struct-textcaps-base")

        >>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = image_processor(images=image, return_tensors="pt")
        >>> with torch.no_grad():
        ...     outputs = model(**inputs)

        >>> last_hidden_states = outputs.last_hidden_state
        >>> list(last_hidden_states.shape)
        [1, 2048, 768]
        ```
        Nz%You have to specify flattened_patchesr0   ©rz   r   )rŠ   rŒ   rÇ   rÈ   r   rÎ   )rE   rŒ   rÇ   rÈ   rÿ   ÚsumÚfloatrY   r  r  r   r:   rÐ   )r(   rT   rŠ   rŒ   rÇ   rÈ   ÚkwargsÚembedding_outputÚencoder_outputsÚsequence_outputÚhead_outputss              r,   r<   zPix2StructVisionModel.forward¿  s.  € ðP 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ$ÝÐDÑEÔEÐEàÐ!à/×3Ò3¸Ð3Ñ;Ô;¸qÒ@×GÒGÑIÔIˆNàŸ?š?Ð+<Ñ=Ô=ÐàŸ,š,ØØ)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆØŸ.š.¨Ñ9Ô9ˆàð 	6Ø+Ð-ˆLØ /°!°"°"Ô"5Ñ5Ð5åØ-Ø)Ô7Ø&Ô1ð
ñ 
ô 
ð 	
r-   )NNNNN)r>   r?   r@   r   r  Úmain_input_namer  Úsupports_gradient_checkpointingÚ_no_split_modulesr"   r  r   r$   r]   r¹   rº   r   r<   rA   rB   s   @r,   r  r  ¨  s  ø€ € € € € € à"Ð"Ð"Ñ"Ø)€OØ!ÐØ&*Ð#Ø0Ð1Ðð
Ð5ð 
ð 
ð 
ð 
ð 
ð 
ð0ð 0ð 0ð ð 26Ø.2Ø)-Ø,0Ø#'ðH
ð H
à œ<¨$Ñ.ðH
ð œ tÑ+ðH
ð   $™;ð	H
ð
 # T™kðH
ð ˜D‘[ðH
ð 
Ð+Ñ	+ðH
ð H
ð H
ñ „^ðH
ð H
ð H
ð H
ð H
r-   r  c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ré   rE   c                 ó–  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j                 | _        d S ra   r™   rS   s     €r,   r"   z)Pix2StructTextDenseGatedActDense.__init__  r    r-   c                 óà  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }t	          | j        j        t          j        ¦  «        r]|j	        | j        j        j	        k    rC| j        j        j	        t          j
        k    r$|                     | j        j        j	        ¦  «        }|                      |¦  «        }|S rH   r¢   r¥   s       r,   r<   z(Pix2StructTextDenseGatedActDense.forward  r¨   r-   ©r>   r?   r@   r   r"   r<   rA   rB   s   @r,   ré   ré     sT   ø€ € € € € ð/Ð3ð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r-   ré   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚPix2StructTextLayerFFrE   c                 óì   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S r  )r!   r"   ré   ÚDenseReluDenser   r)   Úlayer_norm_epsilonÚ
layer_normr   rP   rQ   rR   rS   s     €r,   r"   zPix2StructTextLayerFF.__init__*  s[   ø€ Ý‰Œ×ÒÑÔÐÝ>¸vÑFÔFˆÔå-¨fÔ.@ÀfÔF_Ð`Ñ`Ô`ˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr-   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }||                      |¦  «        z   }|S rH   )r)  r'  rR   )r(   r:   Úforwarded_statess      r,   r<   zPix2StructTextLayerFF.forward2  sF   € ØŸ?š?¨=Ñ9Ô9ÐØ×.Ò.Ð/?Ñ@Ô@ÐØ%¨¯ªÐ5EÑ(FÔ(FÑFˆØÐr-   r#  rB   s   @r,   r%  r%  )  sT   ø€ € € € € ð7Ð3ð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð r-   r%  c                   ób   ‡ — e Zd Zddededz  fˆ fd„Zedd	„¦   «         Zdd„Z	 	 	 	 	 dd„Z	ˆ xZ
S )rî   FNrE   Ú	layer_idxc                 ó  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _	        |j
        | _        | j	        | j        z  | _        || _        |€(t                               d| j        j        › d�¦  «         t%          j        | j        | j        d¬¦  «        | _        t%          j        | j        | j        d¬¦  «        | _        t%          j        | j        | j        d¬¦  «        | _        t%          j        | j        | j        d¬¦  «        | _        | j        r$t%          j        | j        | j	        ¦  «        | _        d| _        d S )NzInstantiating a decoder z³ without passing `layer_idx` is not recommended and will to errors during the forward call, if caching is used. Please make sure to provide a `layer_idx` when creating this class.Frb   )r!   r"   rð   Úrelative_attention_num_bucketsÚrelative_attention_max_distancer)   rd   re   rï   rg   rQ   rR   ri   r-  ÚloggerÚwarning_oncer+   r>   r   rI   rj   rk   rl   rm   rL   rñ   rn   ©r(   rE   rð   r-  r+   s       €r,   r"   z Pix2StructTextAttention.__init__:  s`  ø€ Ý‰Œ×ÒÑÔÐØ+FˆÔ(Ø.4Ô.SˆÔ+Ø/5Ô/UˆÔ,Ø!Ô-ˆÔØ"(¤+ˆÔØÔ'ˆŒØÔ*ˆŒØœ¨Ô(?Ñ?ˆŒØ"ˆŒØÐÝ×Òð,¨4¬>Ô+Bð ,ð ,ð ,ñô ð õ ”Y˜tÔ/°Ô1AÈÐNÑNÔNˆŒ
Ý”9˜TÔ-¨tÔ/?ÀeÐLÑLÔLˆŒÝ”Y˜tÔ/°Ô1AÈÐNÑNÔNˆŒ
Ý”i Ô 0°$Ô2BÈÐOÑOÔOˆŒàÔ+ð 	kÝ+-¬<¸Ô8[Ð]aÔ]iÑ+jÔ+jˆDÔ(à&+ˆÔ#Ð#Ð#r-   Té    é€   c                 óP  — d}|rC|dz  }|| dk                          t          j        ¦  «        |z  z  }t          j        | ¦  «        } n(t          j        | t          j        | ¦  «        ¦  «         } |dz  }| |k     }|t          j        |                      ¦   «         |z  ¦  «        t          j        ||z  ¦  «        z  ||z
  z                        t          j        ¦  «        z   }t          j        |t          j	        ||dz
  ¦  «        ¦  «        }|t          j
        || |¦  «        z  }|S )aÒ  
        Adapted from Mesh Tensorflow:
        https://github.com/tensorflow/mesh/blob/0cb87fe07da627bf0b7e60475d59f95ed6b5be3d/mesh_tensorflow/transformer/transformer_layers.py#L593

        Translate relative position to a bucket number for relative attention. The relative position is defined as
        memory_position - query_position, i.e. the distance in tokens from the attending position to the attended-to
        position. If bidirectional=False, then positive relative positions are invalid. We use smaller buckets for
        small absolute relative_position and larger buckets for larger absolute relative_positions. All relative
        positions >=max_distance map to the same bucket. All relative positions <=-max_distance map to the same bucket.
        This should allow for more graceful generalization to longer sequences than the model has been trained on

        Args:
            relative_position: an int32 Tensor
            bidirectional: a boolean - whether the attention is bidirectional
            num_buckets: an integer
            max_distance: an integer

        Returns:
            a Tensor with the same shape as relative_position, containing int32 values in the range [0, num_buckets)
        r   r/   r   )r2   r$   rV   Úabsr„   Ú
zeros_likeÚlogr  ÚmathÚ	full_likeÚwhere)Úrelative_positionÚbidirectionalÚnum_bucketsÚmax_distanceÚrelative_bucketsÚ	max_exactÚis_smallÚrelative_position_if_larges           r,   Ú_relative_position_bucketz1Pix2StructTextAttention._relative_position_bucketV  s>  € ð. ÐØð 	cØ˜AÑˆKØÐ!2°QÒ!6× :Ò :½5¼:Ñ FÔ FÈÑ TÑTÐÝ %¤	Ð*;Ñ <Ô <ÐÐå!&¤Ð+<½eÔ>NÐO`Ñ>aÔ>aÑ!bÔ!bÐ bÐð   1Ñ$ˆ	Ø$ yÒ0ˆð &/ÝŒIÐ'×-Ò-Ñ/Ô/°)Ñ;Ñ<Ô<ÝŒh�| iÑ/Ñ0Ô0ñ1à˜YÑ&ñ(÷ Š"�UŒZ‰.Œ.ñ	&Ð"õ
 &+¤YØ&­¬Ð8RÐT_ÐbcÑTcÑ(dÔ(dñ&
ô &
Ð"ð 	�EœK¨Ð2CÐE_Ñ`Ô`Ñ`ÐØÐr-   r   c                 ó¬  — |€| j         j        j        }t          j        |t          j        |¬¦  «        dd…df         |z   }t          j        |t          j        |¬¦  «        ddd…f         }||z
  }|                      |d| j        | j        ¬¦  «        }|                       |¦  «        }	|	 	                    g d¢¦  «         
                    d¦  «        }	|	S )z%Compute binned relative position biasN)r7   ry   F)r>  r?  r@  )r/   r   r   r   )rñ   r&   ry   r$   ÚarangerV   rE  r/  r0  ÚpermuteÚ	unsqueeze)
r(   Úquery_lengthÚ
key_lengthry   Úpast_seen_tokensÚcontext_positionÚmemory_positionr=  Úrelative_position_bucketÚvaluess
             r,   Úcompute_biasz$Pix2StructTextAttention.compute_biasˆ  sè   € àˆ>ØÔ1Ô8Ô?ˆFÝ œ<¨½E¼JÈvÐVÑVÔVÐWXÐWXÐWXÐZ^ÐW^Ô_ÐbrÑrÐÝœ, z½¼ÈFÐSÑSÔSÐTXÐZ[ÐZ[ÐZ[ÐT[Ô\ˆØ+Ð.>Ñ>ÐØ#'×#AÒ#AØØØÔ;ØÔ=ð	 $Bñ $
ô $
Ð ð ×-Ò-Ð.FÑGÔGˆØ—’ 	 	 	Ñ*Ô*×4Ò4°QÑ7Ô7ˆØˆr-   c                 ój  — |j         dd…         \  }}	|�|                     | j        ¦  «        nd}
t          |
t          j        ¦  «        r|
                     ¦   «         n|
}
|du}|                      |¦  «        }|                     |d| j	        | j
        ¦  «                             dd¦  «        }|�Ft          |t          ¦  «        r1|j                             | j        ¦  «        }|r|j        }n
|j        }n|}|r|n|}|r3|r1|r/|j        | j                 j        }|j        | j                 j        }nÈ|                      |¦  «        }|                      |¦  «        }|                     |d| j	        | j
        ¦  «                             dd¦  «        }|                     |d| j	        | j
        ¦  «                             dd¦  «        }|�0|                     ||| j        ¦  «        \  }}|rd|j        | j        <   t	          j        ||                     dd¦  «        ¦  «        }|€˜|j         d         }| j        s@t	          j        d| j	        |	|f|j        |j        ¬	¦  «        }| j        r| j        rd|_        n|                      |	||j        |
¬
¦  «        }|�$|dd…dd…dd…d|j         d         …f         }||z   }|}||z  }t@          j!         "                    | #                    ¦   «         d¬¦  «         $                    |¦  «        }t@          j!         %                    || j%        | j        ¬¦  «        }t	          j        ||¦  «        }|                     dd¦  «         &                    ¦   «         }|                     |d| j'        ¦  «        }|  (                    |¦  «        }||f}|r||fz   }|S )z€
        Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states).
        Nr/   r   r0   r   Tr   éþÿÿÿrx   )ry   rL  r  r{   ))r~   Úget_seq_lengthr-  r£   r$   r]   r  rj   rs   rg   re   rt   r	   Ú
is_updatedÚgetÚcross_attention_cacheÚself_attention_cacheÚlayersÚkeysrP  rk   rl   Úupdater   rð   r€   ry   r7   rn   r}   r�   rQ  r   r‡   rˆ   r  r‰   rR   rr   ri   rm   )r(   r:   ÚmaskÚkey_value_statesr‹   Úpast_key_valuesrŒ   r  rv   r�   rL  Úis_cross_attentionrŽ   rU  Úcurr_past_key_valuesÚcurrent_statesr�   r�   r‘   rK  Úcausal_maskr’   r“   r”   r•   s                            r,   r<   zPix2StructTextAttention.forwardš  sò  € ð "/Ô!4°R°a°RÔ!8Ñˆ
�JØM\ÐMh˜?×9Ò9¸$¼.ÑIÔIÐIÐnoÐå7AÐBRÕTYÔT`Ñ7aÔ7aÐwÐ+×1Ò1Ñ3Ô3Ð3ÐgwÐð .°TÐ9Ðà—z’z -Ñ0Ô0ˆØ#×(Ò(¨°R¸¼ÀtÔG^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆð Ð&­:°oÕGZÑ+[Ô+[Ð&Ø(Ô3×7Ò7¸¼ÑGÔGˆJØ!ð Là'6Ô'LÐ$Ð$à'6Ô'KÐ$Ð$à#2Ð à-?ÐRÐ)Ð)À]ˆØð 	F /ð 	F°jð 	Fà-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš .Ñ1Ô1ˆJØŸ:š: nÑ5Ô5ˆLØ#Ÿš¨°R¸¼ÀtÔG^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆJØ'×,Ò,¨Z¸¸T¼\È4ÔKbÑcÔc×mÒmÐnoÐqrÑsÔsˆLàÐ*Ø+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð FØAE�OÔ.¨t¬~Ñ>õ ”˜l¨J×,@Ò,@ÀÀAÑ,FÔ,FÑGÔGˆàÐ Ø#Ô)¨"Ô-ˆJØÔ3ð 	Ý %¤Ø˜œ j°*Ð=ÀfÄmÐ[aÔ[gð!ñ !ô !�ð Ô.ð 7°4´=ð 7Ø26�MÔ/øà $× 1Ò 1Ø 
°6´=ÐScð !2ñ !ô !�ð ÐØ" 1 1 1 a a a¨¨¨Ð,B¨jÔ.>¸rÔ.BÐ,BÐ#BÔC�Ø -°Ñ ;�à,ÐØÐ&Ñ&ˆõ ”}×,Ò,¨V¯\ª\©^¬^ÀÐ,ÑDÔD×LÒLÈVÑTÔTˆÝ”}×,Ò,¨\¸T¼\ÐTXÔTaÐ,ÑbÔbˆå”l <°Ñ>Ô>ˆà!×+Ò+¨A¨qÑ1Ô1×<Ò<Ñ>Ô>ˆØ!×&Ò& z°2°t´~ÑFÔFˆØ—k’k +Ñ.Ô.ˆà Ð.ˆàð 	0Ø  Ñ/ˆGØˆr-   ©FN)Tr4  r5  )Nr   )NNNNF)r>   r?   r@   r   Úintr"   ÚstaticmethodrE  rQ  r<   rA   rB   s   @r,   rî   rî   9  sº   ø€ € € € € ð,ð ,Ð3ð ,ÐcfÐimÑcmð ,ð ,ð ,ð ,ð ,ð ,ð8 ð- ð - ð - ñ „\ð- ð`ð ð ð ð* ØØØØð[ð [ð [ð [ð [ð [ð [ð [r-   rî   c                   ó>   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 dd„Zˆ xZS )Ú Pix2StructTextLayerSelfAttentionFNr-  c                 óò   •— t          ¦   «                              ¦   «          t          |||¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )N©rð   r-  r¬   ©r!   r"   rî   r¯   r   r)   r(  r)  r   rP   rQ   rR   r3  s       €r,   r"   z)Pix2StructTextLayerSelfAttention.__init__ú  sl   ø€ Ý‰Œ×ÒÑÔÐÝ0ØÐ0KÐW`ð
ñ 
ô 
ˆŒõ .¨fÔ.@ÀfÔF_Ð`Ñ`Ô`ˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr-   c                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }|f|	dd …         z   }
|
S )N)r\  r‹   r^  Ú	use_cacherŒ   r   r   ©r)  r¯   rR   )r(   r:   rŠ   r‹   r^  rl  rŒ   r  Únormed_hidden_statesr·   r•   s              r,   r<   z(Pix2StructTextLayerSelfAttention.forward  s{   € ð  $Ÿš¨}Ñ=Ô=ÐØŸ>š>Ø ØØ'Ø+ØØ/ð *ñ 
ô 
Ðð &¨¯ªÐ5EÀaÔ5HÑ(IÔ(IÑIˆØ Ð"Ð%5°a°b°bÔ%9Ñ9ˆØˆr-   rc  )NNNFF©r>   r?   r@   rd  r"   r<   rA   rB   s   @r,   rg  rg  ù  ss   ø€ € € € € ð7ð 7ÈSÐSWÉZð 7ð 7ð 7ð 7ð 7ð 7ð ØØØØðð ð ð ð ð ð ð r-   rg  c                   ó<   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 dd„Zˆ xZS )Ú!Pix2StructTextLayerCrossAttentionNr-  c                 óò   •— t          ¦   «                              ¦   «          t          |d|¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )NFri  r¬   rj  )r(   rE   r-  r+   s      €r,   r"   z*Pix2StructTextLayerCrossAttention.__init__  sc   ø€ Ý‰Œ×ÒÑÔÐÝ0°ÐUZÐfoÐpÑpÔpˆŒÝ-¨fÔ.@ÀfÔF_Ð`Ñ`Ô`ˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr-   Fc                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }
|
f|	dd …         z   }|S )N)r\  r]  r‹   r^  rŒ   r   r   rm  )r(   r:   r]  rŠ   r‹   r^  rŒ   r  rn  r·   r¸   r•   s               r,   r<   z)Pix2StructTextLayerCrossAttention.forward"  sz   € ð  $Ÿš¨}Ñ=Ô=ÐØŸ>š>Ø ØØ-Ø'Ø+Ø/ð *ñ 
ô 
Ðð % t§|¢|Ð4DÀQÔ4GÑ'HÔ'HÑHˆØ�/Ð$4°Q°R°RÔ$8Ñ8ˆØˆr-   rH   )NNNFro  rB   s   @r,   rq  rq    so   ø€ € € € € ð7ð 7¨#°©*ð 7ð 7ð 7ð 7ð 7ð 7ð ØØØðð ð ð ð ð ð ð r-   rq  c                   óF   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )	ÚPix2StructTextBlockFNr-  c                 óÊ   •— t          ¦   «                              ¦   «          t          |||¬¦  «        | _        t	          ||¬¦  «        | _        t          |¦  «        | _        d S )Nri  )r-  )r!   r"   rg  Úself_attentionrq  Úencoder_decoder_attentionr%  r°   r3  s       €r,   r"   zPix2StructTextBlock.__init__;  sn   ø€ Ý‰Œ×ÒÑÔÐå>ØØ(CØð
ñ 
ô 
ˆÔõ *KØØð*
ñ *
ô *
ˆÔ&õ
 )¨Ñ0Ô0ˆŒˆˆr-   Tc                 óº  — |                       ||||||	¬¦  «        }|d         }|dd …         }|j        t          j        k    r_t          j        |¦  «                             ¦   «         r9t          j        |j        ¦  «        j        dz
  }t          j        || |¬¦  «        }|d u}|r¤|  	                    ||||||	¬¦  «        }|d         }|j        t          j        k    r_t          j        |¦  «                             ¦   «         r9t          j        |j        ¦  «        j        dz
  }t          j        || |¬¦  «        }||dd …         z   }|  
                    |¦  «        }|j        t          j        k    r_t          j        |¦  «                             ¦   «         r9t          j        |j        ¦  «        j        dz
  }t          j        || |¬¦  «        }|f}||z   S )N)rŠ   r‹   r^  rl  rŒ   r   r   iè  )r„   r…   )r]  rŠ   r‹   r^  rŒ   )rw  r7   r$   r8   ÚisinfÚanyrƒ   r…   Úclamprx  r°   )r(   r:   rŠ   r‹   Úencoder_hidden_statesÚencoder_attention_maskÚencoder_decoder_position_biasr^  rl  rŒ   rÈ   r  r¶   Úattention_outputsÚclamp_valueÚdo_cross_attentionÚcross_attention_outputsr•   s                     r,   r<   zPix2StructTextBlock.forwardK  sö  € ð "&×!4Ò!4ØØ)Ø'Ø+ØØ/ð "5ñ "
ô "
Ðð /¨qÔ1ˆØ2°1°2°2Ô6Ðð Ô¥%¤-Ò/Ð/µE´KÀÑ4NÔ4N×4RÒ4RÑ4TÔ4TÐ/Ýœ+ mÔ&9Ñ:Ô:Ô>ÀÑEˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMà2¸$Ð>ÐØð 	PØ&*×&DÒ&DØØ!6Ø5Ø;Ø /Ø"3ð 'Eñ 'ô 'Ð#ð 4°AÔ6ˆMð Ô"¥e¤mÒ3Ð3½¼ÀMÑ8RÔ8R×8VÒ8VÑ8XÔ8XÐ3Ý#œk¨-Ô*=Ñ>Ô>ÔBÀTÑI�Ý %¤¨MÀ¸|ÐQ\Ð ]Ñ ]Ô ]�ð !2Ð4KÈAÈBÈBÔ4OÑ OÐð Ÿš Ñ/Ô/ˆð Ô¥%¤-Ò/Ð/µE´KÀÑ4NÔ4N×4RÒ4RÑ4TÔ4TÐ/Ýœ+ mÔ&9Ñ:Ô:Ô>ÀÑEˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMà Ð"ˆàÐ*Ñ*Ð*r-   rc  )	NNNNNNFFTro  rB   s   @r,   ru  ru  :  s   ø€ € € € € ð1ð 1ÈSÐSWÉZð 1ð 1ð 1ð 1ð 1ð 1ð& ØØ"Ø#Ø&*ØØØØð<+ð <+ð <+ð <+ð <+ð <+ð <+ð <+r-   ru  z3
    The standalone text decoder of Pix2Struct
    )Úcustom_introc                   óD  ‡ — e Zd ZU eed<   dZdgZddiZdZˆ fd„Z	d„ Z
e	 	 	 	 	 	 	 	 	 	 	 dd
ej        d	z  dej        d	z  dej        d	z  dej        d	z  dej        d	z  ded	z  ded	z  ded	z  ded	z  dej        d	z  ded	z  deej        df         ez  fd„¦   «         Zˆ xZS )rô   rE   )rÚ   ru  zlm_head.weightzembed_tokens.weightTc                 ó   •‡— t          ¦   «                              ‰¦  «         t          j        ‰j        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j	        ¦  «        D ¦   «         ¦  «        | _
        t          ‰j        ‰j        ¬¦  «        | _        t          j        ‰j        ¦  «        | _        t          j        ‰j        ‰j        d¬¦  «        | _        |                      ¦   «          d| _        d S )Nc           	      óV   •— g | ]%}t          ‰t          |d k    ¦  «        |¬¦  «        ‘Œ&S )r   ri  )ru  r¹   )rÀ   rÔ   rE   s     €r,   rÂ   z0Pix2StructTextModel.__init__.<locals>.<listcomp>›  sD   ø€ ð ð ð àõ $ FÍÈQÐRSÊVÉÌÐ`aÐbÑbÔbðð ð r-   r¬   Frb   )r!   r"   r   rL   Ú
vocab_sizer)   Úembed_tokensrÃ   rÄ   Ú
num_layersrÆ   r   r(  Úfinal_layer_normrP   rQ   rR   rI   rõ   r  rn   rS   s    `€r,   r"   zPix2StructTextModel.__init__–  sé   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ÝœL¨Ô):¸FÔ<NÑOÔOˆÔå”]ðð ð ð å˜vÔ0Ñ1Ô1ðñ ô ñ
ô 
ˆŒ
õ !4°FÔ4FÈFÔLeÐ fÑ fÔ fˆÔÝ”z &Ô"5Ñ6Ô6ˆŒå”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐØ&+ˆÔ#Ð#Ð#r-   c                 ó   — || _         d S rH   )r‰  ©r(   Únew_embeddingss     r,   Úset_input_embeddingsz(Pix2StructTextModel.set_input_embeddings©  s   € Ø*ˆÔÐÐr-   NrÝ   rŠ   r}  r~  Úinputs_embedsr^  rl  rŒ   rÇ   ÚlabelsrÈ   rF   .c                 óÎ  — |�|n| j         j        }|�|n| j         j        }|	�|	n| j         j        }	|�|n| j         j        }| j        r%| j        r|rt                               d¦  «         d}|�|�t          d¦  «        ‚|�1| 
                    ¦   «         }|                     d|d         ¦  «        }n.|�| 
                    ¦   «         dd…         }nt          d¦  «        ‚|€&| j        €
J d¦   «         ‚|                      |¦  «        }|\  }}|rZ|€X| j         j        r7t          t          | j         ¬¦  «        t          | j         ¬¦  «        ¦  «        }nt          | j         ¬¦  «        }|€7|�|                     ¦   «         |z   n|}t#          j        |||j        ¬	¦  «        }| j         j        rt+          | j         |||¬
¦  «        }nO|dd…dddd…f         }|                     |j        ¬¦  «        }d|z
  t#          j        |j        ¦  «        j        z  }|�t5          | j         |||¬¦  «        }|	rdnd}|rdnd}|rdnd}d}d}|                      |¦  «        }t9          | j        ¦  «        D ][\  }}|	r||fz   } ||||||||||¬¦	  «	        }|d         }|d         }|�||rdnd         }|r||d         fz   }|�||d         fz   }Œ\|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|	r||fz   }d}|
�š|
                     |j        ¦  «        }
tA          j!        dd¬¦  «        } || "                    ¦   «                              d| 
                    d¦  «        ¦  «        |
 "                    ¦   «                              d¦  «        ¦  «        }|stG          d„ ||||||fD ¦   «         ¦  «        S tI          ||||||¬¦  «        S )aU  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. Pix2StructText is a model with relative position
            embeddings so you should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [Pix2StructText
            Training](./t5#training).

        Example:

        ```python
        >>> from transformers import AutoProcessor, Pix2StructTextModel

        >>> processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
        >>> model = Pix2StructTextModel.from_pretrained("google/pix2struct-textcaps-base")

        >>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)
        >>> loss = outputs.loss
        ```
        NzZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...FzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same timer0   zEYou have to specify either decoder_input_ids or decoder_inputs_embedsz<You have to initialize the model with valid token embeddings)rE   )ry   )rE   r�  rŠ   r^  )r7   râ   )rE   r�  rŠ   r}  r¿   )r^  rl  rŒ   r   r   r   r/   é   rü   r5   )Úignore_indexÚ	reductionc              3   ó   K  — | ]}|®|V — Œ	d S rH   r¿   rË   s     r,   rÍ   z.Pix2StructTextModel.forward.<locals>.<genexpr>N  s4   è è € ð ð àð �=ð ð !�=�=�=ðð r-   )ÚlossÚlogitsr^  r:   rÐ   Úcross_attentions)%rE   rl  rŒ   rÇ   rÈ   rn   r}   r1  Úwarningrÿ   Úsizers   r‰  Úis_encoder_decoderr	   r   rT  r$   r%   ry   Ú
is_decoderr   r2   r7   rƒ   r„   r   rR   rÑ   rÆ   r‹  rõ   r   ÚCrossEntropyLossrr   rº   r   )r(   rÝ   rŠ   r}  r~  r�  r^  rl  rŒ   rÇ   r‘  rÈ   r  Úinput_shaperv   r�   Úmask_seq_lengthrb  rÒ   Úall_attentionsÚall_cross_attentionsr‹   r  r:   rÔ   rÕ   rÖ   r˜  r—  Úloss_fcts                                 r,   r<   zPix2StructTextModel.forward¬  s  € ðT "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø1BÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÔ&ð 	¨4¬=ð 	¸Yð 	Ý�NŠNØlñô ð ð ˆIàÐ  ]Ð%>ÝÐsÑtÔtÐtØÐ"Ø#Ÿ.š.Ñ*Ô*ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKåÐdÑeÔeÐeàÐ ØÔ$Ð0Ð0Ð2pÑ0Ô0Ð0Ø ×-Ò-¨iÑ8Ô8ˆMà!,Ñˆ
�Jàð 	C˜Ð0ØŒ{Ô-ð CÝ"5Ý ¨¬Ð4Ñ4Ô4µlÈ$Ì+Ð6VÑ6VÔ6Vñ#ô #��õ #/°d´kÐ"BÑ"BÔ"B�àÐ!ð BQÐA\�×.Ò.Ñ0Ô0°:Ñ=Ð=Ðblð õ #œZ¨
°OÈMÔL`ÐaÑaÔaˆNàŒ;Ô!ð 
	UÝ,Ø”{Ø+Ø-Ø /ð	ñ ô ˆKˆKð )¨¨¨¨D°$¸¸¸Ð)9Ô:ˆKØ%Ÿ.š.¨}Ô/B˜.ÑCÔCˆKØ Ñ,µ´¸MÔ<OÑ0PÔ0PÔ0TÑTˆKà!Ð-Ý%>Ø”{Ø+Ø5Ø&;ð	&ñ &ô &Ð"ð #7Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆØ&7ÐB˜r˜r¸dÐØˆØ(,Ð%àŸš ]Ñ3Ô3ˆå(¨¬Ñ4Ô4ð 	Vð 	V‰OˆAˆ|Ø#ð IØ$5¸Ð8HÑ$HÐ!à(˜LØØØØ%Ø&Ø-Ø /Ø#Ø"3ð
ñ 
ô 
ˆMð *¨!Ô,ˆMð
 *¨!Ô,ˆMØ$Ð0Ø0=ÐCTÐ>[¸a¸aÐZ[Ô0\Ð-à ð VØ!/°=ÀÔ3CÐ2EÑ!E�Ø(Ð4Ø+?À=ÐQRÔCSÐBUÑ+UÐ(øà×-Ò-¨mÑ<Ô<ˆØŸš ]Ñ3Ô3ˆà—’˜mÑ,Ô,ˆð  ð 	EØ 1°]Ð4DÑ DÐàˆØÐà—Y’Y˜vœ}Ñ-Ô-ˆFÝÔ*¸ÈÐOÑOÔOˆHà�8˜F×-Ò-Ñ/Ô/×4Ò4°R¸¿ºÀR¹¼ÑIÔIÈ6×K\ÒK\ÑK^ÔK^×KcÒKcÐdfÑKgÔKgÑhÔhˆDàð 	Ýð ð ð ØØ#Ø%Ø"Ø(ððñ ô ñ ô ð õ 1ØØØ+Ø+Ø%Ø1ð
ñ 
ô 
ð 	
r-   )NNNNNNNNNNN)r>   r?   r@   r   r  r  r  Ú_tied_weights_keysr  r"   r�  r   r$   Ú
LongTensorÚFloatTensorr   r¹   rº   r   r<   rA   rB   s   @r,   rô   rô   Š  s¢  ø€ € € € € € ð !Ð Ð Ñ Ø ÐØ.Ð/ÐØ*Ð,AÐBÐØ&*Ð#ð,ð ,ð ,ð ,ð ,ð&+ð +ð +ð ð .2Ø37Ø:>Ø;?Ø15Ø(,Ø!%Ø)-Ø,0Ø*.Ø#'ðt
ð t
àÔ# dÑ*ðt
ð Ô)¨DÑ0ðt
ð  %Ô0°4Ñ7ð	t
ð
 !&Ô 1°DÑ 8ðt
ð Ô'¨$Ñ.ðt
ð  ™ðt
ð ˜$‘;ðt
ð   $™;ðt
ð # T™kðt
ð Ô  4Ñ'ðt
ð ˜D‘[ðt
ð 
ˆuÔ  #Ð%Ô	&Ð)JÑ	Jðt
ð t
ð t
ñ „^ðt
ð t
ð t
ð t
ð t
r-   rô   zr
    A conditional generation model with a language modeling head. Can be used for sequence generation tasks.
    c                   ó„  ‡ — e Zd ZU eed<   dZdefˆ fd„Zd„ Zd„ Zde	j
        fd„Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 ddej        d	z  d
ej        d	z  dej        d	z  dej        d	z  deeej                          d	z  ded	z  dej        d	z  dej        d	z  ded	z  ded	z  ded	z  ded	z  deej                 ez  fd„¦   «         Zˆ xZS )Ú"Pix2StructForConditionalGenerationrE   rT   c                 óî   •— t          ¦   «                              |¦  «         t          |j        ¦  «        | _        t          |j        ¦  «        | _        |j        | _        |  	                    ¦   «          d S rH   )
r!   r"   r  Úvision_configr  rô   rê   ÚdecoderÚis_vqar  rS   s     €r,   r"   z+Pix2StructForConditionalGeneration.__init__m  s`   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å,¨VÔ-AÑBÔBˆŒÝ*¨6Ô+=Ñ>Ô>ˆŒà”mˆŒð 	�ŠÑÔÐÐÐr-   c                 ó4   — | j                              ¦   «         S rH   )r«  r  r  s    r,   r  z7Pix2StructForConditionalGeneration.get_input_embeddingsx  s   € ØŒ|×0Ò0Ñ2Ô2Ð2r-   c                 ó:   — | j                              |¦  «         d S rH   )r«  r�  r�  s     r,   r�  z7Pix2StructForConditionalGeneration.set_input_embeddings{  s   € ØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r-   rF   c                 ó4   — | j                              ¦   «         S rH   )r«  Úget_output_embeddingsr  s    r,   r°  z8Pix2StructForConditionalGeneration.get_output_embeddings~  s   € ØŒ|×1Ò1Ñ3Ô3Ð3r-   c                 ó:   — | j                              |¦  «         d S rH   )r«  Úset_output_embeddingsr�  s     r,   r²  z8Pix2StructForConditionalGeneration.set_output_embeddings�  s   € ØŒ×*Ò*¨>Ñ:Ô:Ð:Ð:Ð:r-   NrŠ   rÜ   rÞ   r  r^  r‘  Údecoder_inputs_embedsrl  rŒ   rÇ   rÈ   c                 óê  — |	�|	n| j         j        j        }	|�|n| j         j        }|€|                      |||
||¬¦  «        }ne|rct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|d         }|�W|€U|€S|                      |¦  «        }|�|n0| 	                    | j         j
        ¦  «                             ¦   «         }d|dd…df<   |                      |||||||	|
|||¬¦  «        }|s||z   S t          |j        |j        |j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )	a”  
        flattened_patches (`torch.FloatTensor` of shape `(batch_size, seq_length, hidden_size)`):
            Flattened pixel patches. the `hidden_size` is obtained by the following formula: `hidden_size` =
            `num_channels` * `patch_size` * `patch_size`

            The process of flattening the pixel patches is done by `Pix2StructProcessor`.
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Pix2StructText uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [Pix2StructText
            Training](./t5#training).
        decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss for the decoder.

        Example:

        Inference:

        ```python
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, Pix2StructForConditionalGeneration

        >>> processor = AutoProcessor.from_pretrained("google/pix2struct-textcaps-base")
        >>> model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-textcaps-base")

        >>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> inputs = processor(images=image, return_tensors="pt")

        >>> # autoregressive generation
        >>> generated_ids = model.generate(**inputs, max_new_tokens=50)
        >>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
        >>> print(generated_text)
        A stop sign is on a street corner.

        >>> # conditional generation
        >>> text = "A picture of"
        >>> inputs = processor(text=text, images=image, return_tensors="pt", add_special_tokens=False)

        >>> generated_ids = model.generate(**inputs, max_new_tokens=50)
        >>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
        >>> print(generated_text)
        A picture of a stop sign with a red stop sign
        ```

        Training:

        ```python
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO
        >>> from transformers import AutoProcessor, Pix2StructForConditionalGeneration

        >>> processor = AutoProcessor.from_pretrained("google/pix2struct-base")
        >>> model = Pix2StructForConditionalGeneration.from_pretrained("google/pix2struct-base")

        >>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))
        >>> text = "A stop sign is on the street corner."

        >>> inputs = processor(images=image, return_tensors="pt")
        >>> labels = processor(text=text, return_tensors="pt").input_ids

        >>> # forward pass
        >>> outputs = model(**inputs, labels=labels)
        >>> loss = outputs.loss
        >>> print(f"{loss.item():.5f}")
        5.94282
        ```N)rT   rŠ   rŒ   rÇ   rÈ   r   r   r/   rÎ   )rÝ   rŠ   r�  r^  r}  r~  rl  rŒ   rÇ   r‘  rÈ   )	r—  r˜  r^  Údecoder_hidden_statesÚdecoder_attentionsr™  Úencoder_last_hidden_stater}  Úencoder_attentions)rE   rê   rl  rÈ   r  r£   r   Úlenr  Únerþ   r  r«  r   r—  r˜  r^  r:   rÐ   r™  rÏ   )r(   rT   rŠ   rÜ   rÞ   r  r^  r‘  r³  rl  rŒ   rÇ   rÈ   r  r:   Údecoder_outputss                   r,   r<   z*Pix2StructForConditionalGeneration.forward„  sð  € ðN "+Ð!6�I�I¸D¼KÔ<SÔ<]ˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð"Ø"ŸlšlØ"3Ø-Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð (¨Ô*ˆàÐÐ"3Ð";Ð@UÐ@]à $× 1Ò 1°&Ñ 9Ô 9Ðð *Ð5ð 'Ð&à&×)Ò)¨$¬+Ô*BÑCÔC×IÒIÑKÔKð #ð ,-Ð" 1 1 1 a 4Ñ(ð Ÿ,š,Ø'Ø1Ø/Ø+Ø"/Ø#1ØØ/Ø!5ØØ#ð 'ñ 
ô 
ˆð ð 	5Ø" _Ñ4Ð4åØ Ô%Ø"Ô)Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð

ñ 

ô 

ð 
	
r-   )NNNNNNNNNNNN)r>   r?   r@   r   r  r  r"   r  r�  r   ÚModuler°  r²  r   r$   r¦  r¥  Ú
BoolTensorrº   r   r]   r¹   r   r<   rA   rB   s   @r,   r¨  r¨  d  sè  ø€ € € € € € ð ÐÐÑØ)€Oð	Ð/ð 	ð 	ð 	ð 	ð 	ð 	ð3ð 3ð 3ð:ð :ð :ð4 r¤yð 4ð 4ð 4ð 4ð;ð ;ð ;ð ð 7;Ø37Ø59Ø:>ØBFØ(,Ø*.Ø59Ø!%Ø)-Ø,0Ø#'ðb
ð b
à Ô,¨tÑ3ðb
ð Ô)¨DÑ0ðb
ð !Ô+¨dÑ2ð	b
ð
 !&Ô 0°4Ñ 7ðb
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ðb
ð  ™ðb
ð Ô  4Ñ'ðb
ð  %œ|¨dÑ2ðb
ð ˜$‘;ðb
ð   $™;ðb
ð # T™kðb
ð ˜D‘[ðb
ð 
ˆuÔ Ô	!Ð$6Ñ	6ðb
ð b
ð b
ñ „^ðb
ð b
ð b
ð b
ð b
r-   r¨  )rØ   r¨  r  rô   );r\   r:  r$   r   Ú r   rç   Úactivationsr   Úcache_utilsr   r   r	   Ú
generationr
   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   Úutilsr   r   r   r   r   Úconfiguration_pix2structr   r   r   Ú
get_loggerr>   r1  r¼  r   rD   r_   r—   rª   r¼   rØ   r  ré   r%  rî   rg  rq  ru  rô   r¨  Ú__all__r¿   r-   r,   ú<module>rÊ     sù  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð eÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dð 
ˆÔ	˜HÑ	%Ô	%€ð+ð +ð +ð +ð +˜"œ)ñ +ô +ð +ð2!ð !ð !ð !ð ! ¤ñ !ô !ð !ðHWð Wð Wð Wð W ¤	ñ Wô Wð Wðvð ð ð ð ˜"œ)ñ ô ð ð:&ð &ð &ð &ð &Ð6ñ &ô &ð &ðR&
ð &
ð &
ð &
ð &
˜bœiñ &
ô &
ð &
ðR ðj!ð j!ð j!ð j!ð j! ñ j!ô j!ñ „ðj!ðZ ð_
ð _
ð _
ð _
ð _
Ð5ñ _
ô _
ñ „ð_
ðFð ð ð ð  r¤yñ ô ð ð:ð ð ð ð ˜BœIñ ô ð ð |ð |ð |ð |ð |˜bœiñ |ô |ð |ð@ð ð ð ð  r¤yñ ô ð ðDð ð ð ð ¨¬	ñ ô ð ð>M+ð M+ð M+ð M+ð M+Ð4ñ M+ô M+ð M+ð` €ððñ ô ð
R
ð R
ð R
ð R
ð R
Ð3ñ R
ô R
ñô ð
R
ðj €ððñ ô ð
~
ð ~
ð ~
ð ~
ð ~
Ð)BÀOñ ~
ô ~
ñô ð
~
ðBð ð €€€r-   