§
    ‚Štj×³  ã                   óh  — d Z ddlZddl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 ddlmZ dd	lmZmZ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mZ ddl m!Z!  ej"        e#¦  «        Z$da%d„ Z&d„ Z'd„ Z(d„ Z) G d„ dej*        j+        ¦  «        Z, G d„ dej*        j+        ¦  «        Z- G d„ dej.        ¦  «        Z/ G d„ dej.        ¦  «        Z0 G d„ dej.        ¦  «        Z1 G d„ dej.        ¦  «        Z2 G d„ d ej.        ¦  «        Z3 G d!„ d"ej.        ¦  «        Z4 G d#„ d$e¦  «        Z5 G d%„ d&ej.        ¦  «        Z6 G d'„ d(ej.        ¦  «        Z7 G d)„ d*ej.        ¦  «        Z8 G d+„ d,ej.        ¦  «        Z9e G d-„ d.e¦  «        ¦   «         Z:e G d/„ d0e:¦  «        ¦   «         Z;e G d1„ d2e:¦  «        ¦   «         Z< G d3„ d4ej.        ¦  «        Z= ed5¬6¦  «         G d7„ d8e:¦  «        ¦   «         Z>e G d9„ d:e:¦  «        ¦   «         Z?e G d;„ d<e:¦  «        ¦   «         Z@e G d=„ d>e:¦  «        ¦   «         ZAg d?¢ZBdS )@zPyTorch YOSO model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚGradientCheckpointingLayer)Ú"BaseModelOutputWithCrossAttentionsÚMaskedLMOutputÚMultipleChoiceModelOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)Úapply_chunking_to_forward)Úauto_docstringÚis_kernels_availableÚis_ninja_availableÚis_torch_cuda_availableÚloggingé   )Ú
YosoConfigc                  ót   — t          ¦   «         st          d¦  «        ‚ddlm}   | dd¬¦  «        }|j        ad S )NzFkernels is not installed, please install it with `pip install kernels`r   )Ú
get_kernelzkernels-community/yosor   )Úversion)r   ÚImportErrorÚintegrations.hub_kernelsr   Úlsh_cumulation)r   Úyosos     úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/yoso/modeling_yoso.pyÚload_cuda_kernelsr"   3   sS   € åÑ!Ô!ð dÝÐbÑcÔcÐcØ6Ð6Ð6Ð6Ð6Ð6àˆ:Ð.¸Ð:Ñ:Ô:€DØÔ(€N€N€Nó    c                 ó  — t          | t          ¦  «        rFg }| D ]?}|                     ¦   «         s|                     ¦   «         }|                     |¦  «         Œ@|S |                      ¦   «         s|                      ¦   «         } | S ©N)Ú
isinstanceÚlistÚis_contiguousÚ
contiguousÚappend©Úinput_tensorsÚoutÚtensors      r!   Úto_contiguousr/   =   s’   € Ý�-¥Ñ&Ô&ð 
ØˆØ#ð 	ð 	ˆFØ×'Ò'Ñ)Ô)ð -Ø×*Ò*Ñ,Ô,�Ø�JŠJ�vÑÔÐÐØˆ
à×*Ò*Ñ,Ô,ð 	7Ø)×4Ò4Ñ6Ô6ˆMØÐr#   c                 óì   — t          | t          ¦  «        r>g }| D ]7}|                     t          j                             |dd¬¦  «        ¦  «         Œ8|S t          j                             | dd¬¦  «        S )Né   éÿÿÿÿ)ÚpÚdim)r&   r'   r*   r   Ú
functionalÚ	normalizer+   s      r!   r6   r6   K   sy   € Ý�-¥Ñ&Ô&ð CØˆØ#ð 	Eð 	EˆFØ�JŠJ•r”}×.Ò.¨v¸ÀÐ.ÑCÔCÑDÔDÐDÐDØˆ
åŒ}×&Ò& }¸¸rÐ&ÑBÔBÐBr#   c                 óò  — t          |                      ¦   «         ¦  «        dk    rt          d¦  «        ‚t          |                     ¦   «         ¦  «        dk    rt          d¦  «        ‚t          j        |                      d¦  «        |                      d¦  «        ||z  | j        ¬¦  «        }dt          j        || j        ¬¦  «        z  }t          j        | |¦  «                             |                      d¦  «        |                      d¦  «        ||¦  «        }t          j        ||¦  «                             |                     d¦  «        |                     d¦  «        ||¦  «        }|dk     	                    ¦   «         }|dk     	                    ¦   «         }	t          j
        ||z  d¬	¦  «        }
t          j
        |	|z  d¬	¦  «        }
|
 	                    ¦   «         |
 	                    ¦   «         fS )
Nr   zQuery has incorrect size.zKey has incorrect size.r   r1   ©Údevicer   r2   ©r4   )ÚlenÚsizeÚ
ValueErrorÚtorchÚrandnr9   ÚarangeÚmatmulÚreshapeÚintÚsum)ÚqueryÚkeyÚnum_hashÚhash_lenÚrmatÚ	raise_powÚquery_projectionÚkey_projectionÚquery_binaryÚ
key_binaryÚ
query_hashs              r!   ÚhashingrP   U   s˜  € Ý
ˆ5�:Š:‰<Œ<ÑÔ˜AÒÐÝÐ4Ñ5Ô5Ð5Ý
ˆ3�8Š8‰:Œ:�„˜!ÒÐÝÐ2Ñ3Ô3Ð3åŒ;�u—z’z !‘}”} e§j¢j°¡m¤m°XÀÑ5HÐQVÔQ]Ð^Ñ^Ô^€DØ•U”\ (°5´<Ð@Ñ@Ô@Ñ@€Iå”| E¨4Ñ0Ô0×8Ò8¸¿ºÀA¹¼ÈÏ
Ê
ÐSTÉÌÐW_ÐaiÑjÔjÐÝ”\ # tÑ,Ô,×4Ò4°S·X²X¸a±[´[À#Ç(Â(È1Á+Ä+ÈxÐYaÑbÔb€NØ$ qÒ(×-Ò-Ñ/Ô/€LØ  1Ò$×)Ò)Ñ+Ô+€JÝ”˜<¨)Ñ3¸Ð<Ñ<Ô<€JÝ”˜:¨	Ñ1°rÐ:Ñ:Ô:€Jà�>Š>ÑÔ˜ZŸ^š^Ñ-Ô-Ð-Ð-r#   c                   ó:   — e Zd Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚYosoCumulationc           
      ób  — |d         }dt          j        t          j        ||                     dd¦  «        ¦  «        ¦  «        t          j        z  z
  |z  }||d d …d d …d f         z  |d d …d d d …f         z  }t          j        ||¦  «        }	|                      ||||||¦  «         || _        |	S )NÚhash_code_lenr   r2   éþÿÿÿ)r>   ÚacosrA   Ú	transposeÚmathÚpiÚsave_for_backwardÚconfig)
ÚctxÚ
query_maskÚkey_maskrE   rF   Úvaluer[   rT   ÚexpectationÚcumulation_values
             r!   ÚforwardzYosoCumulation.forwardi   s»   € à˜Ô/ˆà�5œ:¥e¤l°5¸#¿-º-ÈÈBÑ:OÔ:OÑ&PÔ&PÑQÔQÕTXÔT[Ñ[Ñ[Ð`mÑmˆØ! J¨q¨q¨q°!°!°!°T¨zÔ$:Ñ:¸XÀaÀaÀaÈÈqÈqÈqÀjÔ=QÑQˆÝ œ<¨°UÑ;Ô;Ðà×Ò˜j¨(°KÀÈÈUÑSÔSÐSØˆŒ
àÐr#   c                 ó¨  — t          |¦  «        }| j        \  }}}}}}| j        }|d         }	t          j        ||                     dd¦  «        ¦  «        |z  }
t          j        |
|	dz  |z  ¦  «        }t          j        |
                     dd¦  «        |	dz  |z  ¦  «        }t          j        |                     dd¦  «        |¦  «        }d d |||d fS )NrT   r2   rU   r1   )r/   Úsaved_tensorsr[   r>   rA   rW   )r\   Úgradr]   r^   r`   rE   rF   r_   r[   rT   Úweighted_expÚ
grad_queryÚgrad_keyÚ
grad_values                 r!   ÚbackwardzYosoCumulation.backwardv   sÕ   € å˜TÑ"Ô"ˆà?BÔ?PÑ<ˆ
�H˜k¨5°#°uØ”ˆà˜Ô/ˆå”| D¨%¯/ª/¸"¸bÑ*AÔ*AÑBÔBÀ[ÑPˆÝ”\ ,°ÀÑ1BÀcÑ0IÑJÔJˆ
Ý”< × 6Ò 6°r¸2Ñ >Ô >ÀÐQRÑARÐV[Ñ@[Ñ\Ô\ˆÝ”\ +×"7Ò"7¸¸BÑ"?Ô"?ÀÑFÔFˆ
à�T˜: x°¸TÐAÐAr#   N©Ú__name__Ú
__module__Ú__qualname__Ústaticmethodrb   rj   © r#   r!   rR   rR   h   sM   € € € € € Øð
 ð 
 ñ „\ð
 ð ðBð Bñ „\ðBð Bð Br#   rR   c                   ó:   — e Zd Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚYosoLSHCumulationc           
      óZ  — |                      d¦  «        |                      d¦  «        k    rt          d¦  «        ‚|                      d¦  «        |                      d¦  «        k    rt          d¦  «        ‚|                      d¦  «        |                      d¦  «        k    rt          d¦  «        ‚|                      d¦  «        |                      d¦  «        k    rt          d¦  «        ‚|                      d¦  «        |                      d¦  «        k    rt          d¦  «        ‚|                      d¦  «        |                      d¦  «        k    rt          d	¦  «        ‚t          |||||g¦  «        \  }}}}}|j        }|d
         }|d         }	t	          d|	z  ¦  «        }
|d         r%t
                               ||||||	|d¦  «        \  }}nt          ||||	¦  «        \  }}t
                               ||||||
|d¦  «        }|                      |||||||¦  «         || _	        |S )Nr   z6Query mask and Key mask differ in sizes in dimension 0z3Query mask and Query differ in sizes in dimension 0z1Query mask and Key differ in sizes in dimension 0z8Query mask and Value mask differ in sizes in dimension 0r   z,Key and Value differ in sizes in dimension 1r1   z,Query and Key differ in sizes in dimension 2rG   rT   Úuse_fast_hash)
r<   r=   r/   Úis_cudarC   r   Ú	fast_hashrP   rZ   r[   )r\   r]   r^   rE   rF   r_   r[   Úuse_cudarG   rT   Úhashtable_capacityÚquery_hash_codeÚkey_hash_codera   s                 r!   rb   zYosoLSHCumulation.forwardˆ   s'  € à�?Š?˜1ÑÔ §¢¨qÑ!1Ô!1Ò1Ð1ÝÐUÑVÔVÐVØ�?Š?˜1ÑÔ §¢¨A¡¤Ò.Ð.ÝÐRÑSÔSÐSØ�?Š?˜1ÑÔ §¢¨!¡¤Ò,Ð,ÝÐPÑQÔQÐQØ�?Š?˜1ÑÔ §¢¨A¡¤Ò.Ð.ÝÐWÑXÔXÐXØ�8Š8�A‰;Œ;˜%Ÿ*š* Q™-œ-Ò'Ð'ÝÐKÑLÔLÐLØ�:Š:�a‰=Œ=˜CŸHšH Q™KœKÒ'Ð'ÝÐKÑLÔLÐLå2?ÀÈXÐW\Ð^aÐchÐ@iÑ2jÔ2jÑ/ˆ
�H˜e S¨%àÔ%ˆØ˜*Ô%ˆØ˜Ô/ˆÝ   MÑ!1Ñ2Ô2Ðà�/Ô"ð 	ZÝ-;×-EÒ-EØ˜E 8¨S°(¸MÈ8ÐUVñ.ô .Ñ*ˆO˜]˜]õ .5°U¸CÀÈ=Ñ-YÔ-YÑ*ˆO˜]å)×8Ò8Ø˜¨°=À%ÐI[Ð]eÐghñ
ô 
Ðð 	×Ò˜j¨(°OÀ]ÐTYÐ[^Ð`eÑfÔfÐfØˆŒ
àÐr#   c                 ó¶  — t          |¦  «        }| j        \  }}}}}}}| j        }	|j        }
|	d         }t	          d|z  ¦  «        }|	d         rut
                               |||||||
d¦  «        }t
                               |||||||dz  |z  ||
d¦
  «
        }t
                               |||||||dz  |z  ||
d¦
  «
        }�ndt          j        t          j	        || 
                    dd¦  «        ¦  «        ¦  «        t          j        z  z
  |z  }||d d …d d …d f         z  |d d …d d d …f         z  }t          j	        || 
                    dd¦  «        ¦  «        |z  }t          j	        ||dz  |z  ¦  «        }t          j	        | 
                    dd¦  «        |dz  |z  ¦  «        }t          j	        | 
                    dd¦  «        |¦  «        }d d |||d fS )NrT   r1   Úlsh_backwardr   é   r2   rU   )r/   rd   r[   ru   rC   r   Úlsh_weighted_cumulationr>   rV   rA   rW   rX   rY   )r\   re   r]   r^   ry   rz   rE   rF   r_   r[   rw   rT   rx   ri   rg   rh   r`   rf   s                     r!   rj   zYosoLSHCumulation.backward®   s   € å˜TÑ"Ô"ˆàRUÔRcÑOˆ
�H˜o¨}¸eÀSÈ%Ø”ˆà”<ˆØ˜Ô/ˆÝ   MÑ!1Ñ2Ô2Ðà�.Ô!ð "	KÝ'×6Ò6Ø˜-¨°_ÀdÐL^Ð`hÐjkñô ˆJõ (×?Ò?ØØØØØØØ Ñ" cÑ)Ø"ØØñô ˆJõ &×=Ò=ØØØØØØØ Ñ" eÑ+Ø"ØØñô ˆH‰Hð �uœz­%¬,°u¸c¿mºmÈBÐPRÑ>SÔ>SÑ*TÔ*TÑUÔUÕX\ÔX_Ñ_Ñ_ÐdqÑqˆKØ%¨
°1°1°1°a°a°a¸°:Ô(>Ñ>ÀÈ!È!È!ÈTÐSTÐSTÐSTÈ*ÔAUÑUˆKÝ œ<¨¨e¯oªo¸bÀ"Ñ.EÔ.EÑFÔFÈÑTˆLÝœ l°]ÀQÑ5FÈ#Ñ4MÑNÔNˆJÝ”| L×$:Ò$:¸2¸rÑ$BÔ$BÀ]ÐUVÑEVÐZ_ÑD_Ñ`Ô`ˆHÝœ k×&;Ò&;¸BÀÑ&CÔ&CÀTÑJÔJˆJà�T˜: x°¸TÐAÐAr#   Nrk   rp   r#   r!   rr   rr   ‡   sN   € € € € € Øð# ð # ñ „\ð# ðJ ð.Bð .Bñ „\ð.Bð .Bð .Br#   rr   c                   ó*   ‡ — e Zd ZdZˆ fd„Zdd„Zˆ xZS )ÚYosoEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óô  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        dz   |j        ¦  «        | _	        t          j        |j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        |                      dt%          j        |j        ¦  «                             d¦  «        dz   d¬¦  «         |                      dt%          j        | j                             ¦   «         t$          j        | j        j        ¬	¦  «        d¬¦  «         d S )
N)Úpadding_idxr1   ©ÚepsÚposition_ids©r   r2   F)Ú
persistentÚtoken_type_ids©Údtyper9   )ÚsuperÚ__init__r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚregister_bufferr>   r@   ÚexpandÚzerosr…   r<   Úlongr9   ©Úselfr[   Ú	__class__s     €r!   rŒ   zYosoEmbeddings.__init__ä   sJ  ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐQRÑ0RÐTZÔTfÑ#gÔ#gˆÔ Ý%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒð 	×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐ[\Ñ\Ðinð 	ñ 	
ô 	
ð 	
ð 	×ÒØÝŒK˜Ô)×.Ò.Ñ0Ô0½¼
È4ÔK\ÔKcÐdÑdÔdØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r#   Nc                 ón  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|d         }|€| j        d d …d |…f         }|€mt          | d¦  «        r2| j        d d …d |…f         }|                     |d         |¦  «        }|}n+t          j        |t
          j        | j        j        ¬¦  «        }|€|  	                    |¦  «        }|  
                    |¦  «        }	||	z   }
|                      |¦  «        }|
|z  }
|                      |
¦  «        }
|                      |
¦  «        }
|
S )Nr2   r   rˆ   r   r‰   )r<   r…   Úhasattrrˆ   rœ   r>   r�   rž   r9   r‘   r•   r“   r–   rš   )r    Ú	input_idsrˆ   r…   Úinputs_embedsÚinput_shapeÚ
seq_lengthÚbuffered_token_type_idsÚ buffered_token_type_ids_expandedr•   Ú
embeddingsr“   s               r!   rb   zYosoEmbeddings.forward÷   sT  € ØÐ Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà  ”^ˆ
àÐØÔ,¨Q¨Q¨Q°°°¨^Ô<ˆLð
 Ð!Ý�tÐ-Ñ.Ô.ð mØ*.Ô*=¸a¸a¸aÀÀ*À¸nÔ*MÐ'Ø3J×3QÒ3QÐR]Ð^_ÔR`ÐblÑ3mÔ3mÐ0Ø!A��å!&¤¨[ÅÄ
ÐSWÔSdÔSkÐ!lÑ!lÔ!l�àÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ)Ñ)ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr#   )NNNN©rl   rm   rn   Ú__doc__rŒ   rb   Ú__classcell__©r¡   s   @r!   r€   r€   á   sR   ø€ € € € € ØQÐQð
ð 
ð 
ð 
ð 
ð& ð  ð  ð  ð  ð  ð  ð  r#   r€   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚYosoSelfAttentionc                 óž  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚t          d u}t          ¦   «         rTt          ¦   «         rF|sD	 t          ¦   «          n4# t          $ r'}t                               d|› �¦  «         Y d }~nd }~ww xY w|j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _        t!          j        |j        | j        ¦  «        | _        t!          j        |j        | j        ¦  «        | _        t!          j        |j        | j        ¦  «        | _        t!          j        |j        ¦  «        | _        |j        | _        |j        | _        |j        d u| _        |j        | _        |j        | _        |j        | _        | j        | j        | j        | j        dœ| _        |j        �At!          j         |j        |j        |j        df|j        d	z  dfd
|j        ¬¦  «        | _!        d S d S )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú)zGCould not load the custom kernel for multi-scale deformable attention: )rT   rt   rG   r|   r   r1   F)Úin_channelsÚout_channelsÚkernel_sizeÚpaddingÚbiasÚgroups)"r‹   rŒ   r�   Únum_attention_headsr£   r=   r   r   r   r"   Ú	ExceptionÚloggerÚwarningrC   Úattention_head_sizeÚall_head_sizer   ÚLinearrE   rF   r_   r˜   Úattention_probs_dropout_probrš   Úuse_expectationrT   Úconv_windowÚuse_convrt   rG   r|   Ú
lsh_configÚConv2dÚconv)r    r[   Úkernel_loadedÚer¡   s       €r!   rŒ   zYosoSelfAttention.__init__  st  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð õ '¨dÐ2ˆÝ"Ñ$Ô$ð 	nÕ);Ñ)=Ô)=ð 	nÀmð 	nðnÝ!Ñ#Ô#Ð#Ð#øÝð nð nð nÝ—’ÐlÐijÐlÐlÑmÔmÐmÐmÐmÐmÐmÐmøøøøðnøøøð $*Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒà%Ô5ˆÔØ#Ô1ˆÔØÔ*°$Ð6ˆŒØ#Ô1ˆÔØœˆŒØ"Ô/ˆÔð "Ô/Ø!Ô/ØœØ Ô-ð	
ð 
ˆŒð ÔÐ)Ýœ	Ø"Ô6Ø#Ô7Ø#Ô/°Ð3ØÔ+¨qÑ0°!Ð4ØØÔ1ðñ ô ˆDŒIˆIˆIð *Ð)s   ÂB Â
CÂ&CÃCNFc                 óT  — |j         \  }}}|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }	| j        r&|  	                    |	|d d …d d d …d f         z  ¦  «        }
| 
                    ¦   «         \  }}}}|                     ||z  ||¦  «        }|                     ||z  ||¦  «        }|	                     ||z  ||¦  «        }	d|dz  z   }|                     d¦  «                             |d¬¦  «                             ||z  |¦  «                             ¦   «         }d}| j        s¤||k     rž||z  |||z
  f}t!          j        |t!          j        ||j        ¬¦  «        gd¬¦  «        }t!          j        |t!          j        ||j        ¬¦  «        gd¬¦  «        }t!          j        |	t!          j        ||	j        ¬¦  «        gd¬¦  «        }	| j        s| j        rt+          ||g¦  «        \  }}| j        r%t,                               |||||	| j        ¦  «        }n$t2                               |||||	| j        ¦  «        }| j        s||k     r|d d …d d …d |…f         }t+          |¦  «        }|                     ||||¦  «        }| j        r||
z  }|                     d	ddd
¦  «                             ¦   «         }| 
                    ¦   «         d d…         | j        fz   } |j        |Ž }|r||fn|f}|S )Nr2   r   r1   g      ð?g     ˆÃ@r:   é    r8   r   r   rU   )ÚshaperE   Úviewrº   r¾   rW   rF   r_   rÄ   rÇ   r<   rB   Ú	unsqueezeÚrepeat_interleaverC   rÂ   r>   Úcatr�   r9   Útrainingr6   rR   ÚapplyrÅ   rr   Úpermuter)   r¿   )r    Úhidden_statesÚattention_maskÚoutput_attentionsÚ
batch_sizer§   Ú_Úquery_layerÚ	key_layerÚvalue_layerÚconv_value_layerÚ	num_headsÚseq_lenÚhead_dimÚgpu_warp_sizeÚpad_sizeÚcontext_layerÚnew_context_layer_shapeÚoutputss                      r!   rb   zYosoSelfAttention.forwardK  s  € Ø$1Ô$7Ñ!ˆ
�J à�JŠJ�}Ñ%Ô%ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	ð �HŠH�]Ñ#Ô#ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	ð �JŠJ�}Ñ%Ô%ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	ð Œ=ð 	YØ#Ÿyšy¨°~ÀaÀaÀaÈÈqÈqÈqÐRVÐFVÔ7WÑ)WÑXÔXÐà3>×3CÒ3CÑ3EÔ3EÑ0ˆ
�I˜w¨à!×)Ò)¨*°yÑ*@À'È8ÑTÔTˆØ×%Ò% j°9Ñ&<¸gÀxÑPÔPˆ	Ø!×)Ò)¨*°yÑ*@À'È8ÑTÔTˆà˜~°Ñ7Ñ7ˆà×$Ò$ QÑ'Ô'ßÒ˜y¨aÐÑ0Ô0ßŠW�Z )Ñ+¨WÑ5Ô5ßŠS‰UŒUð	 	ð ˆàÔ$ð 	¨(°]Ò*BÐ*BØ! IÑ-¨w¸ÈÑ8PÐPˆHåœ)àÝ”K °Ô1CÐDÑDÔDðð ðñ ô ˆKõ œ	àÝ”K °Ô1AÐBÑBÔBðð ðñ ô ˆIõ  œ)àÝ”K °Ô1CÐDÑDÔDðð ðñ ô ˆKð Ôð 	I 4¤=ð 	IÝ%.°¸YÐ/GÑ%HÔ%HÑ"ˆK˜àÔð 	Ý*×0Ò0Ø °¸YÈÐUYÔUdñô ˆMˆMõ .×3Ò3Ø °¸YÈÐUYÔUdñô ˆMð Ô$ð 	;¨(°]Ò*BÐ*BØ)¨!¨!¨!¨Q¨Q¨Q°	°°	¨/Ô:ˆMå! -Ñ0Ô0ˆà%×-Ò-¨j¸)ÀWÈhÑWÔWˆàŒ=ð 	.ØÐ-Ñ-ˆMà%×-Ò-¨a°°A°qÑ9Ô9×DÒDÑFÔFˆØ"/×"4Ò"4Ñ"6Ô"6°s¸°sÔ";¸tÔ?QÐ>SÑ"SÐØ*˜Ô*Ð,CÐDˆà4EÐ[�= -Ð0Ð0ÈMÐK[ˆàˆr#   ©NF©rl   rm   rn   rŒ   rb   r­   r®   s   @r!   r°   r°     sU   ø€ € € € € ð.ð .ð .ð .ð .ð`\ð \ð \ð \ð \ð \ð \ð \r#   r°   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚYosoSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nrƒ   )r‹   rŒ   r   rÀ   r�   Údenser–   r—   r˜   r™   rš   rŸ   s     €r!   rŒ   zYosoSelfOutput.__init__¬  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr#   rÔ   Úinput_tensorÚreturnc                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r%   ©rë   rš   r–   ©r    rÔ   rì   s      r!   rb   zYosoSelfOutput.forward²  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr#   ©rl   rm   rn   rŒ   r>   ÚTensorrb   r­   r®   s   @r!   rè   rè   «  ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r#   rè   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚYosoAttentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S r%   )r‹   rŒ   r°   r    rè   ÚoutputrŸ   s     €r!   rŒ   zYosoAttention.__init__º  s;   ø€ Ý‰Œ×ÒÑÔÐÝ% fÑ-Ô-ˆŒ	Ý$ VÑ,Ô,ˆŒˆˆr#   NFc                 óˆ   — |                       |||¦  «        }|                      |d         |¦  «        }|f|dd …         z   }|S )Nr   r   )r    rø   )r    rÔ   rÕ   rÖ   Úself_outputsÚattention_outputrä   s          r!   rb   zYosoAttention.forward¿  sK   € Ø—y’y °Ð@QÑRÔRˆØŸ;š; |°A¤¸ÑFÔFÐØ#Ð%¨°Q°R°RÔ(8Ñ8ˆØˆr#   rå   ræ   r®   s   @r!   rö   rö   ¹  sL   ø€ € € € € ð-ð -ð -ð -ð -ð
ð ð ð ð ð ð ð r#   rö   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚYosoIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r%   )r‹   rŒ   r   rÀ   r�   Úintermediate_sizerë   r&   Ú
hidden_actÚstrr	   Úintermediate_act_fnrŸ   s     €r!   rŒ   zYosoIntermediate.__init__È  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r#   rÔ   rí   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r%   )rë   r  ©r    rÔ   s     r!   rb   zYosoIntermediate.forwardÐ  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr#   rò   r®   s   @r!   rý   rý   Ç  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r#   rý   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )Ú
YosoOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S rê   )r‹   rŒ   r   rÀ   rÿ   r�   rë   r–   r—   r˜   r™   rš   rŸ   s     €r!   rŒ   zYosoOutput.__init__Ø  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr#   rÔ   rì   rí   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r%   rï   rð   s      r!   rb   zYosoOutput.forwardÞ  rñ   r#   rò   r®   s   @r!   r  r  ×  rô   r#   r  c                   ó,   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zˆ xZS )Ú	YosoLayerc                 óþ   •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        |j        | _        t          |¦  «        | _        t          |¦  «        | _
        d S ©Nr   )r‹   rŒ   Úchunk_size_feed_forwardÚseq_len_dimrö   Ú	attentionÚadd_cross_attentionrý   Úintermediater  rø   rŸ   s     €r!   rŒ   zYosoLayer.__init__æ  si   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ& vÑ.Ô.ˆŒØ#)Ô#=ˆÔ Ý,¨VÑ4Ô4ˆÔÝ  Ñ(Ô(ˆŒˆˆr#   NFc                 ó¨   — |                       |||¬¦  «        }|d         }|dd …         }t          | j        | j        | j        |¦  «        }|f|z   }|S )N)rÖ   r   r   )r  r   Úfeed_forward_chunkr  r  )r    rÔ   rÕ   rÖ   Úself_attention_outputsrû   rä   Úlayer_outputs           r!   rb   zYosoLayer.forwardï  si   € Ø!%§¢°¸~Ðar Ñ!sÔ!sÐØ1°!Ô4Ðà(¨¨¨Ô,ˆå0ØÔ# TÔ%AÀ4ÔCSÐUeñ
ô 
ˆð  �/ GÑ+ˆàˆr#   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S r%   )r  rø   )r    rû   Úintermediate_outputr  s       r!   r  zYosoLayer.feed_forward_chunkü  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr#   rå   )rl   rm   rn   rŒ   rb   r  r­   r®   s   @r!   r
  r
  å  s[   ø€ € € € € ð)ð )ð )ð )ð )ðð ð ð ðð ð ð ð ð ð r#   r
  c                   ó.   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚYosoEncoderc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rp   )r
  )Ú.0rØ   r[   s     €r!   ú
<listcomp>z(YosoEncoder.__init__.<locals>.<listcomp>  s!   ø€ Ð#_Ð#_Ð#_¸!¥I¨fÑ$5Ô$5Ð#_Ð#_Ð#_r#   F)	r‹   rŒ   r[   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerÚgradient_checkpointingrŸ   s    `€r!   rŒ   zYosoEncoder.__init__  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#_Ð#_Ð#_Ð#_½uÀVÔE]Ñ?^Ô?^Ð#_Ñ#_Ô#_Ñ`Ô`ˆŒ
Ø&+ˆÔ#Ð#Ð#r#   NFTc                 ó  — |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 )Nrp   r   r   c              3   ó   K  — | ]}|®|V — Œ	d S r%   rp   )r  Úvs     r!   ú	<genexpr>z&YosoEncoder.forward.<locals>.<genexpr>"  s(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr#   )Úlast_hidden_staterÔ   Ú
attentions)Ú	enumerater!  Útupler   )r    rÔ   rÕ   rÖ   Úoutput_hidden_statesÚreturn_dictÚall_hidden_statesÚall_self_attentionsÚiÚlayer_moduleÚlayer_outputss              r!   rb   zYosoEncoder.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Ý1Ø+Ø+Ø*ð
ñ 
ô 
ð 	
r#   )NFFTræ   r®   s   @r!   r  r    sZ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð ØØ"Øð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r#   r  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚYosoPredictionHeadTransformc                 óV  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _
        n|j        | _
        t          j        |j        |j        ¬¦  «        | _        d S rê   )r‹   rŒ   r   rÀ   r�   rë   r&   r   r  r	   Útransform_act_fnr–   r—   rŸ   s     €r!   rŒ   z$YosoPredictionHeadTransform.__init__,  s…   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ý�fÔ'­Ñ-Ô-ð 	6Ý$*¨6Ô+<Ô$=ˆDÔ!Ð!à$*Ô$5ˆDÔ!Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒˆˆr#   rÔ   rí   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r%   )rë   r5  r–   r  s     r!   rb   z#YosoPredictionHeadTransform.forward5  s=   € ØŸ
š
 =Ñ1Ô1ˆØ×-Ò-¨mÑ<Ô<ˆØŸš }Ñ5Ô5ˆØÐr#   rò   r®   s   @r!   r3  r3  +  sc   ø€ € € € € ðUð Uð Uð Uð Uð U¤\ð °e´lð ð ð ð ð ð ð ð r#   r3  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚYosoLMPredictionHeadc                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        t	          j	        t          j        |j        ¦  «        ¦  «        | _        d S )NT)r¸   )r‹   rŒ   r3  Ú	transformr   rÀ   r�   rŽ   ÚdecoderÚ	Parameterr>   r�   r¸   rŸ   s     €r!   rŒ   zYosoLMPredictionHead.__init__>  sj   ø€ Ý‰Œ×ÒÑÔÐÝ4°VÑ<Ô<ˆŒõ ”y Ô!3°VÔ5FÈTÐRÑRÔRˆŒÝ”L¥¤¨VÔ->Ñ!?Ô!?Ñ@Ô@ˆŒ	ˆ	ˆ	r#   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r%   )r:  r;  r  s     r!   rb   zYosoLMPredictionHead.forwardG  s*   € ØŸš }Ñ5Ô5ˆØŸš ]Ñ3Ô3ˆØÐr#   ræ   r®   s   @r!   r8  r8  =  sL   ø€ € € € € ðAð Að Að Að Aðð ð ð ð ð ð r#   r8  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚYosoOnlyMLMHeadc                 óp   •— t          ¦   «                              ¦   «          t          |¦  «        | _        d S r%   )r‹   rŒ   r8  ÚpredictionsrŸ   s     €r!   rŒ   zYosoOnlyMLMHead.__init__O  s/   ø€ Ý‰Œ×ÒÑÔÐÝ/°Ñ7Ô7ˆÔÐÐr#   Úsequence_outputrí   c                 ó0   — |                       |¦  «        }|S r%   )rA  )r    rB  Úprediction_scoress      r!   rb   zYosoOnlyMLMHead.forwardS  s   € Ø ×,Ò,¨_Ñ=Ô=ÐØ Ð r#   rò   r®   s   @r!   r?  r?  N  s^   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð! u¤|ð !¸¼ð !ð !ð !ð !ð !ð !ð !ð !r#   r?  c                   ól   ‡ — e Zd ZU eed<   dZdZ ej        ¦   «         de	j
        fˆ fd„¦   «         Zˆ xZS )ÚYosoPreTrainedModelr[   r    TÚmodulec                 ó®  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         dS t          |t          ¦  «        rmt	          j        |j	        t          j        |j	        j        d         ¦  «                             d¦  «        dz   ¦  «         t	          j        |j        ¦  «         dS dS )zInitialize the weightsr2   r†   r1   N)r‹   Ú_init_weightsr&   r8  ÚinitÚzeros_r¸   r€   Úcopy_r…   r>   r@   rÌ   rœ   rˆ   )r    rG  r¡   s     €r!   rI  z!YosoPreTrainedModel._init_weights^  s½   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ2Ñ3Ô3ð 	/ÝŒK˜œÑ$Ô$Ð$Ð$Ð$Ý˜¥Ñ/Ô/ð 	/ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÐjkÑ,kÑlÔlÐlÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/r#   )rl   rm   rn   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingr>   Úno_gradr   ÚModulerI  r­   r®   s   @r!   rF  rF  X  sr   ø€ € € € € € àÐÐÑØÐØ&*Ð#à€U„]�_„_ð/ B¤Ið /ð /ð /ð /ð /ñ „_ð/ð /ð /ð /ð /r#   rF  c                   óà   ‡ — e Zd Zˆ fd„Z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
ez  fd„¦   «         Zˆ xZS )Ú	YosoModelc                 óÐ   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r%   )r‹   rŒ   r[   r€   rª   r  ÚencoderÚ	post_initrŸ   s     €r!   rŒ   zYosoModel.__init__k  sX   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå(¨Ñ0Ô0ˆŒÝ" 6Ñ*Ô*ˆŒð 	�ŠÑÔÐÐÐr#   c                 ó   — | j         j        S r%   ©rª   r‘   ©r    s    r!   Úget_input_embeddingszYosoModel.get_input_embeddingsu  s   € ØŒÔ.Ð.r#   c                 ó   — || j         _        d S r%   rX  )r    r_   s     r!   Úset_input_embeddingszYosoModel.set_input_embeddingsx  s   € Ø*/ˆŒÔ'Ð'Ð'r#   Nr¤   rÕ   rˆ   r…   r¥   rÖ   r+  r,  rí   c	                 óH  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|�|�t	          d¦  «        ‚|�+|                      ||¦  «         |                     ¦   «         }
n.|�|                     ¦   «         d d…         }
nt	          d¦  «        ‚|
\  }}|�|j        n|j        }|€t          j	        ||f|¬¦  «        }|€gt          | j        d¦  «        r1| j        j        d d …d |…f         }|                     ||¦  «        }|}n!t          j        |
t          j        |¬¦  «        }|                      ||||¬¦  «        }|                      |||||¬¦  «        }|d	         }|s|f|d
d …         z   S t#          ||j        |j        |j        ¬¦  «        S )NzDYou cannot specify both input_ids and inputs_embeds at the same timer2   z5You have to specify either input_ids or inputs_embedsr8   rˆ   r‰   )r¤   r…   rˆ   r¥   )rÕ   rÖ   r+  r,  r   r   )r'  rÔ   r(  Úcross_attentions)r[   rÖ   r+  r,  r=   Ú%warn_if_padding_and_no_attention_maskr<   r9   r>   Úonesr£   rª   rˆ   rœ   r�   rž   rU  r   rÔ   r(  r^  )r    r¤   rÕ   rˆ   r…   r¥   rÖ   r+  r,  Úkwargsr¦   r×   r§   r9   r¨   r©   Úembedding_outputÚencoder_outputsrB  s                      r!   rb   zYosoModel.forward{  s  € ð 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ  ]Ð%>ÝÐcÑdÔdÐdØÐ"Ø×6Ò6°yÀ.ÑQÔQÐQØ#Ÿ.š.Ñ*Ô*ˆKˆKØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKåÐTÑUÔUÐUà!,Ñˆ
�JØ%.Ð%:�Ô!Ð!ÀÔ@TˆàÐ!Ý"œZ¨*°jÐ)AÈ6ÐRÑRÔRˆNàÐ!Ý�t”Ð(8Ñ9Ô9ð [Ø*.¬/Ô*HÈÈÈÈKÈZÈKÈÔ*XÐ'Ø3J×3QÒ3QÐR\Ð^hÑ3iÔ3iÐ0Ø!A��å!&¤¨[ÅÄ
ÐSYÐ!ZÑ!ZÔ!Z�àŸ?š?ØØ%Ø)Ø'ð	 +ñ 
ô 
Ðð Ÿ,š,ØØ)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆàð 	<Ø#Ð%¨¸¸¸Ô(;Ñ;Ð;å1Ø-Ø)Ô7Ø&Ô1Ø,Ô=ð	
ñ 
ô 
ð 	
r#   )NNNNNNNN)rl   rm   rn   rŒ   rZ  r\  r   r>   ró   Úboolr*  r   rb   r­   r®   s   @r!   rS  rS  i  s4  ø€ € € € € ðð ð ð ð ð/ð /ð /ð0ð 0ð 0ð ð *.Ø.2Ø.2Ø,0Ø-1Ø)-Ø,0Ø#'ðA
ð A
à”< $Ñ&ðA
ð œ tÑ+ðA
ð œ tÑ+ð	A
ð
 ”l TÑ)ðA
ð ”| dÑ*ðA
ð   $™;ðA
ð # T™kðA
ð ˜D‘[ðA
ð 
Ð3Ñ	3ðA
ð A
ð A
ñ „^ðA
ð A
ð A
ð A
ð A
r#   rS  c                   ó   ‡ — e Zd ZdddœZˆ fd„Z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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 )ÚYosoForMaskedLMzcls.predictions.biasz&yoso.embeddings.word_embeddings.weight)zcls.predictions.decoder.biaszcls.predictions.decoder.weightc                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S r%   )r‹   rŒ   rS  r    r?  ÚclsrV  rŸ   s     €r!   rŒ   zYosoForMaskedLM.__init__Ç  sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜fÑ%Ô%ˆŒ	Ý" 6Ñ*Ô*ˆŒð 	�ŠÑÔÐÐÐr#   c                 ó$   — | j         j        j        S r%   )rh  rA  r;  rY  s    r!   Úget_output_embeddingsz%YosoForMaskedLM.get_output_embeddingsÐ  s   € ØŒxÔ#Ô+Ð+r#   c                 óT   — || j         j        _        |j        | j         j        _        d S r%   )rh  rA  r;  r¸   )r    Únew_embeddingss     r!   Úset_output_embeddingsz%YosoForMaskedLM.set_output_embeddingsÓ  s%   € Ø'5ˆŒÔÔ$Ø$2Ô$7ˆŒÔÔ!Ð!Ð!r#   Nr¤   rÕ   rˆ   r…   r¥   ÚlabelsrÖ   r+  r,  rí   c
           
      ó¢  — |	�|	n| j         j        }	|                      ||||||||	¬¦  «        }|d         }|                      |¦  «        }d}|�Kt	          ¦   «         } ||                     d| j         j        ¦  «        |                     d¦  «        ¦  «        }|	s|f|dd…         z   }|�|f|z   n|S t          |||j        |j	        ¬¦  «        S )a£  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
            config.vocab_size]` (see `input_ids` docstring) Tokens with indices set to `-100` are ignored (masked), the
            loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
        N©rÕ   rˆ   r…   r¥   rÖ   r+  r,  r   r2   r   ©ÚlossÚlogitsrÔ   r(  )
r[   r,  r    rh  r   rÍ   rŽ   r   rÔ   r(  )r    r¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  ra  rä   rB  rD  Úmasked_lm_lossÚloss_fctrø   s                    r!   rb   zYosoForMaskedLM.forward×  s  € ð( &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 	
ô 	
ˆð " !œ*ˆØ ŸHšH _Ñ5Ô5ÐàˆØÐÝ'Ñ)Ô)ˆHØ%˜XÐ&7×&<Ò&<¸RÀÄÔAWÑ&XÔ&XÐZ`×ZeÒZeÐfhÑZiÔZiÑjÔjˆNàð 	ZØ'Ð)¨G°A°B°B¬KÑ7ˆFØ3AÐ3M�^Ð%¨Ñ.Ð.ÐSYÐYåØØ$Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r#   ©	NNNNNNNNN)rl   rm   rn   Ú_tied_weights_keysrŒ   rj  rm  r   r>   ró   rd  r*  r   rb   r­   r®   s   @r!   rf  rf  À  sJ  ø€ € € € € ð )?Ø*Rðð Ðð
ð ð ð ð ð,ð ,ð ,ð8ð 8ð 8ð ð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø)-Ø,0Ø#'ð1
ð 1
à”< $Ñ&ð1
ð œ tÑ+ð1
ð œ tÑ+ð	1
ð
 ”l TÑ)ð1
ð ”| dÑ*ð1
ð ”˜tÑ#ð1
ð   $™;ð1
ð # T™kð1
ð ˜D‘[ð1
ð 
�Ñ	ð1
ð 1
ð 1
ñ „^ð1
ð 1
ð 1
ð 1
ð 1
r#   rf  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚYosoClassificationHeadz-Head for sentence-level classification tasks.c                 ó"  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        |j	        ¦  «        | _
        || _        d S r%   )r‹   rŒ   r   rÀ   r�   rë   r˜   r™   rš   Ú
num_labelsÚout_projr[   rŸ   s     €r!   rŒ   zYosoClassificationHead.__init__  sj   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ý”z &Ô"<Ñ=Ô=ˆŒÝœ	 &Ô"4°fÔ6GÑHÔHˆŒàˆŒˆˆr#   c                 ó
  — |d d …dd d …f         }|                       |¦  «        }|                      |¦  «        }t          | j        j                 |¦  «        }|                       |¦  «        }|                      |¦  «        }|S )Nr   )rš   rë   r	   r[   r   r|  )r    Úfeaturesra  Úxs       r!   rb   zYosoClassificationHead.forward  st   € Ø�Q�Q�Q˜˜1˜1˜1�WÔˆØ�LŠL˜‰OŒOˆØ�JŠJ�q‰MŒMˆÝ�4”;Ô)Ô*¨1Ñ-Ô-ˆØ�LŠL˜‰OŒOˆØ�MŠM˜!ÑÔˆØˆr#   r«   r®   s   @r!   ry  ry    sM   ø€ € € € € Ø7Ð7ðð ð ð ð ðð ð ð ð ð ð r#   ry  zœ
    YOSO Model transformer with a sequence classification/regression head on top (a linear layer on top of
    the pooled output) e.g. for GLUE tasks.
    )Úcustom_introc                   óê   ‡ — e Zd Zˆ f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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 )ÚYosoForSequenceClassificationc                 óÚ   •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r%   )r‹   rŒ   r{  rS  r    ry  Ú
classifierrV  rŸ   s     €r!   rŒ   z&YosoForSequenceClassification.__init__(  s[   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒÝ˜fÑ%Ô%ˆŒ	Ý0°Ñ8Ô8ˆŒð 	�ŠÑÔÐÐÐr#   Nr¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  rí   c
           
      óÂ  — |	�|	n| j         j        }	|                      ||||||||	¬¦  «        }|d         }|                      |¦  «        }d}|��Z| j         j        €f| j        dk    rd| j         _        nN| j        dk    r7|j        t          j        k    s|j        t          j	        k    rd| j         _        nd| j         _        | j         j        dk    rWt          ¦   «         }| j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }nŽ |||¦  «        }n�| j         j        dk    rGt          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j         j        dk    rt          ¦   «         } |||¦  «        }|	s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        ¬	¦  «        S )
a�  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        Nrp  r   r   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr2   rq  )r[   r,  r    r„  Úproblem_typer{  rŠ   r>   rž   rC   r   Úsqueezer   rÍ   r   r   rÔ   r(  )r    r¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  ra  rä   rB  rs  rr  ru  rø   s                    r!   rb   z%YosoForSequenceClassification.forward1  s  € ð( &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 	
ô 	
ˆð " !œ*ˆØ—’ Ñ1Ô1ˆàˆØÑØŒ{Ô'Ð/Ø”? aÒ'Ð'Ø/;�D”KÔ,Ð,Ø”_ qÒ(Ð(¨f¬l½e¼jÒ.HÐ.HÈFÌLÕ\aÔ\eÒLeÐLeØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”? aÒ'Ð'Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�Øð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r#   rv  )rl   rm   rn   rŒ   r   r>   ró   rd  r*  r   rb   r­   r®   s   @r!   r‚  r‚  !  s+  ø€ € € € € ðð ð ð ð ð ð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø)-Ø,0Ø#'ðB
ð B
à”< $Ñ&ðB
ð œ tÑ+ðB
ð œ tÑ+ð	B
ð
 ”l TÑ)ðB
ð ”| dÑ*ðB
ð ”˜tÑ#ðB
ð   $™;ðB
ð # T™kðB
ð ˜D‘[ðB
ð 
Ð)Ñ	)ðB
ð B
ð B
ñ „^ðB
ð B
ð B
ð B
ð B
r#   r‚  c                   óê   ‡ — e Zd Zˆ f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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 )ÚYosoForMultipleChoicec                 ó   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        ¦  «        | _        t	          j        |j        d¦  «        | _        |  	                    ¦   «          d S r  )
r‹   rŒ   rS  r    r   rÀ   r�   Úpre_classifierr„  rV  rŸ   s     €r!   rŒ   zYosoForMultipleChoice.__init__y  sr   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜fÑ%Ô%ˆŒ	Ý œi¨Ô(:¸FÔ<NÑOÔOˆÔÝœ) FÔ$6¸Ñ:Ô:ˆŒð 	�ŠÑÔÐÐÐr#   Nr¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  rí   c
           
      ó  — |	�|	n| j         j        }	|�|j        d         n|j        d         }|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�=|                     d|                     d¦  «        |                     d¦  «        ¦  «        nd}|                      ||||||||	¬¦  «        }|d         }|dd…df         }|                      |¦  «        } t          j        ¦   «         |¦  «        }|  	                    |¦  «        }|                     d|¦  «        }d}|�t          ¦   «         } |||¦  «        }|	s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        ¬¦  «        S )a[  
        input_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`):
            Indices of input sequence tokens in the vocabulary.

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

            [What are input IDs?](../glossary#input-ids)
        token_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

            [What are token type IDs?](../glossary#token-type-ids)
        position_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

            [What are position IDs?](../glossary#position-ids)
        inputs_embeds (`torch.FloatTensor` of shape `(batch_size, num_choices, sequence_length, hidden_size)`, *optional*):
            Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
            is useful if you want more control over how to convert *input_ids* indices into associated vectors than the
            model's internal embedding lookup matrix.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the multiple choice classification loss. Indices should be in `[0, ...,
            num_choices-1]` where `num_choices` is the size of the second dimension of the input tensors. (See
            `input_ids` above)
        Nr   r2   rU   rp  r   rq  )r[   r,  rÌ   rÍ   r<   r    rŽ  r   ÚReLUr„  r   r   rÔ   r(  )r    r¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  ra  Únum_choicesrä   Úhidden_stateÚpooled_outputrs  Úreshaped_logitsrr  ru  rø   s                       r!   rb   zYosoForMultipleChoice.forwardƒ  sQ  € ðX &1Ð%<�k�kÀ$Ä+ÔBYˆØ,5Ð,A�i”o aÔ(Ð(À}ÔGZÐ[\ÔG]ˆà>GÐ>S�I—N’N 2 y§~¢~°bÑ'9Ô'9Ñ:Ô:Ð:ÐY]ˆ	ØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØGSÐG_�|×(Ò(¨¨\×->Ò->¸rÑ-BÔ-BÑCÔCÐCÐeiˆð Ð(ð ×Ò˜r =×#5Ò#5°bÑ#9Ô#9¸=×;MÒ;MÈbÑ;QÔ;QÑRÔRÐRàð 	ð —)’)ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 	
ô 	
ˆð ˜q”zˆØ$ Q Q Q¨ TÔ*ˆØ×+Ò+¨MÑ:Ô:ˆØ!�œ™	œ	 -Ñ0Ô0ˆØ—’ Ñ/Ô/ˆà Ÿ+š+ b¨+Ñ6Ô6ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜O¨VÑ4Ô4ˆDàð 	FØ%Ð'¨'°!°"°"¬+Ñ5ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå(ØØ"Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r#   rv  )rl   rm   rn   rŒ   r   r>   ró   rd  r*  r   rb   r­   r®   s   @r!   rŒ  rŒ  w  s+  ø€ € € € € ðð ð ð ð ð ð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø)-Ø,0Ø#'ðY
ð Y
à”< $Ñ&ðY
ð œ tÑ+ðY
ð œ tÑ+ð	Y
ð
 ”l TÑ)ðY
ð ”| dÑ*ðY
ð ”˜tÑ#ðY
ð   $™;ðY
ð # T™kðY
ð ˜D‘[ðY
ð 
Ð*Ñ	*ðY
ð Y
ð Y
ñ „^ðY
ð Y
ð Y
ð Y
ð Y
r#   rŒ  c                   óê   ‡ — e Zd Zˆ f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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 )ÚYosoForTokenClassificationc                 ó6  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _        t          j	        |j
        |j        ¦  «        | _        |                      ¦   «          d S r%   )r‹   rŒ   r{  rS  r    r   r˜   r™   rš   rÀ   r�   r„  rV  rŸ   s     €r!   rŒ   z#YosoForTokenClassification.__init__â  sy   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜fÑ%Ô%ˆŒ	Ý”z &Ô"<Ñ=Ô=ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr#   Nr¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  rí   c
           
      óî  — |	�|	n| j         j        }	|                      ||||||||	¬¦  «        }|d         }|                      |¦  «        }|                      |¦  «        }d}|�Üt          ¦   «         }|�”|                     d¦  «        dk    }|                     d| j        ¦  «        }t          j	        ||                     d¦  «        t          j
        |j        ¦  «                             |¦  «        ¦  «        } |||¦  «        }n8 ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }|	s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        ¬¦  «        S )zÛ
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
        Nrp  r   r2   r   rq  )r[   r,  r    rš   r„  r   rÍ   r{  r>   Úwherer.   Úignore_indexÚtype_asr   rÔ   r(  )r    r¤   rÕ   rˆ   r…   r¥   rn  rÖ   r+  r,  ra  rä   rB  rs  rr  ru  Úactive_lossÚactive_logitsÚactive_labelsrø   s                       r!   rb   z"YosoForTokenClassification.forwardí  s˜  € ð$ &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 	
ô 	
ˆð " !œ*ˆàŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐÝ'Ñ)Ô)ˆHàÐ)Ø,×1Ò1°"Ñ5Ô5¸Ò:�Ø &§¢¨B°´Ñ @Ô @�Ý %¤Ø §¢¨R¡¤µ%´,¸xÔ?TÑ2UÔ2U×2]Ò2]Ð^dÑ2eÔ2eñ!ô !�ð  �x ¨}Ñ=Ô=��à�x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR�àð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r#   rv  )rl   rm   rn   rŒ   r   r>   ró   rd  r*  r   rb   r­   r®   s   @r!   r–  r–  à  s  ø€ € € € € ð	ð 	ð 	ð 	ð 	ð ð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø)-Ø,0Ø#'ð:
ð :
à”< $Ñ&ð:
ð œ tÑ+ð:
ð œ tÑ+ð	:
ð
 ”l TÑ)ð:
ð ”| dÑ*ð:
ð ”˜tÑ#ð:
ð   $™;ð:
ð # T™kð:
ð ˜D‘[ð:
ð 
Ð&Ñ	&ð:
ð :
ð :
ñ „^ð:
ð :
ð :
ð :
ð :
r#   r–  c                   ó   ‡ — e Zd Zˆ f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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 )ÚYosoForQuestionAnsweringc                 ó  •— t          ¦   «                              |¦  «         d|_        |j        | _        t          |¦  «        | _        t          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S )Nr1   )
r‹   rŒ   r{  rS  r    r   rÀ   r�   Ú
qa_outputsrV  rŸ   s     €r!   rŒ   z!YosoForQuestionAnswering.__init__-  sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àˆÔØ Ô+ˆŒå˜fÑ%Ô%ˆŒ	Ýœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr#   Nr¤   rÕ   rˆ   r…   r¥   Ústart_positionsÚend_positionsrÖ   r+  r,  rí   c           
      óf  — |
�|
n| j         j        }
|                      |||||||	|
¬¦  «        }|d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «        }|                     d¦  «        }d }|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }|
s||f|dd …         z   }|�|f|z   n|S t          ||||j        |j        ¬¦  «        S )	Nrp  r   r   r2   r:   )rš  r1   )rr  Ústart_logitsÚ
end_logitsrÔ   r(  )r[   r,  r    r¢  ÚsplitrŠ  r;   r<   Úclampr   r   rÔ   r(  )r    r¤   rÕ   rˆ   r…   r¥   r£  r¤  rÖ   r+  r,  ra  rä   rB  rs  r¦  r§  Ú
total_lossÚignored_indexru  Ú
start_lossÚend_lossrø   s                          r!   rb   z YosoForQuestionAnswering.forward9  sø  € ð &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 	
ô 	
ˆð " !œ*ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/ˆØ×'Ò'¨Ñ+Ô+ˆ
àˆ
ØÐ&¨=Ð+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9�à(×-Ò-¨aÑ0Ô0ˆMØ-×3Ò3°A°}ÑEÔEˆOØ)×/Ò/°°=ÑAÔAˆMå'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJàð 	RØ" JÐ/°'¸!¸"¸"´+Ñ=ˆFØ/9Ð/E�Z�M FÑ*Ð*È6ÐQå+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r#   )
NNNNNNNNNN)rl   rm   rn   rŒ   r   r>   ró   rd  r*  r   rb   r­   r®   s   @r!   r   r   +  s,  ø€ € € € € ð
ð 
ð 
ð 
ð 
ð ð *.Ø.2Ø.2Ø,0Ø-1Ø/3Ø-1Ø)-Ø,0Ø#'ð=
ð =
à”< $Ñ&ð=
ð œ tÑ+ð=
ð œ tÑ+ð	=
ð
 ”l TÑ)ð=
ð ”| dÑ*ð=
ð œ¨Ñ,ð=
ð ”| dÑ*ð=
ð   $™;ð=
ð # T™kð=
ð ˜D‘[ð=
ð 
Ð-Ñ	-ð=
ð =
ð =
ñ „^ð=
ð =
ð =
ð =
ð =
r#   r   )rf  rŒ  r   r‚  r–  r
  rS  rF  )Cr¬   rX   r>   r   Útorch.nnr   r   r   Ú r   rJ  Úactivationsr	   Úmodeling_layersr
   Úmodeling_outputsr   r   r   r   r   r   Úmodeling_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   Úconfiguration_yosor   Ú
get_loggerrl   r¼   r   r"   r/   r6   rP   ÚautogradÚFunctionrR   rr   rQ  r€   r°   rè   rö   rý   r  r
  r  r3  r8  r?  rF  rS  rf  ry  r‚  rŒ  r–  r   Ú__all__rp   r#   r!   ú<module>r»     s$  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ð €ð)ð )ð )ðð ð ðCð Cð Cð.ð .ð .ð&Bð Bð Bð Bð B�U”^Ô,ñ Bô Bð Bð>VBð VBð VBð VBð VB˜œÔ/ñ VBô VBð VBðt6ð 6ð 6ð 6ð 6�R”Yñ 6ô 6ð 6ðrMð Mð Mð Mð M˜œ	ñ Mô Mð Mðbð ð ð ð �R”Yñ ô ð ð
ð 
ð 
ð 
ð 
�B”Iñ 
ô 
ð 
ðð ð ð ð �r”yñ ô ð ð ð ð ð ð �”ñ ô ð ðð ð ð ð Ð*ñ ô ð ð:%
ð %
ð %
ð %
ð %
�"”)ñ %
ô %
ð %
ðRð ð ð ð  "¤)ñ ô ð ð$ð ð ð ð ˜2œ9ñ ô ð ð"!ð !ð !ð !ð !�b”iñ !ô !ð !ð ð/ð /ð /ð /ð /˜/ñ /ô /ñ „ð/ð  ðS
ð S
ð S
ð S
ð S
Ð#ñ S
ô S
ñ „ðS
ðl ðH
ð H
ð H
ð H
ð H
Ð)ñ H
ô H
ñ „ðH
ðVð ð ð ð ˜RœYñ ô ð ð* €ððñ ô ðM
ð M
ð M
ð M
ð M
Ð$7ñ M
ô M
ñô ðM
ð` ðe
ð e
ð e
ð e
ð e
Ð/ñ e
ô e
ñ „ðe
ðP ðG
ð G
ð G
ð G
ð G
Ð!4ñ G
ô G
ñ „ðG
ðT ðK
ð K
ð K
ð K
ð K
Ð2ñ K
ô K
ñ „ðK
ð\	ð 	ð 	€€€r#   