§
    ‚Štj±Å  ã                   ó�  — d dl m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 ddlmZ ddl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 ddlmZmZmZ ddlm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&  e$j'        e(¦  «        Z) G d„ dej*        ¦  «        Z+ G d„ dej*        ¦  «        Z, G d„ de¦  «        Z- G d„ de¦  «        Z. G d„ de¦  «        Z/ G d„ dej*        ¦  «        Z0 G d„ dej*        ¦  «        Z1	 	 dJd!ej*        d"ej2        d#ej2        d$ej2        d%ej2        dz  d&e3dz  d'e3d(e e"         fd)„Z4 G d*„ d+ej*        ¦  «        Z5 G d,„ d-ej*        ¦  «        Z6 G d.„ d/e¦  «        Z7 G d0„ d1ej*        ¦  «        Z8 G d2„ d3ej*        ¦  «        Z9 G d4„ d5e¦  «        Z: G d6„ d7ej*        ¦  «        Z;e# G d8„ d9e¦  «        ¦   «         Z<	 	 dKd:e=e>e>f         d;e3d<e>d%ej?        dz  d=e>d>ej@        fd?„ZAe# G d@„ dAe<¦  «        ¦   «         ZBdZC e#dB¬C¦  «         G dD„ dEe<¦  «        ¦   «         ZD e#dF¬C¦  «         G dG„ dHe<¦  «        ¦   «         ZEg dI¢ZFdS )Lé    )ÚCallableN)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)Úcreate_bidirectional_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚCausalLMOutputÚSequenceClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModelÚ*get_torch_context_manager_or_global_device)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚloggingé   )ÚHubertConfigc                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚHubertPositionalConvEmbeddingc                 ó:  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        |j        dz  |j        ¬¦  «        | _        d | _        t          |dd¦  «        r t          j
        |j        ¦  «        | _        �nWt          j        j        }t          t          j        j        d¦  «        rt          j        j        j        }t          ¦   «         rëdd l}|j                             | j        j        d¬¦  «        5   || j        dd¬	¦  «        | _        d d d ¦  «         n# 1 swxY w Y   t          | j        d
¦  «        r-| j        j        j        j        }| j        j        j        j        }n| j        j        }| j        j        }|j                             | |¦  «         |j                             | |¦  «         n || j        dd¬	¦  «        | _        t3          |j        ¦  «        | _        t6          |j                 | _        d S )Né   )Úkernel_sizeÚpaddingÚgroupsÚconv_pos_batch_normFÚweight_normr   ©Úmodifier_rankÚweight)ÚnameÚdimÚparametrizations)ÚsuperÚ__init__ÚnnÚConv1dÚhidden_sizeÚnum_conv_pos_embeddingsÚnum_conv_pos_embedding_groupsÚconvÚ
batch_normÚgetattrÚBatchNorm1dÚutilsr!   Úhasattrr'   r   Ú	deepspeedÚzeroÚGatheredParametersr$   Ú	original0Ú	original1Úweight_gÚweight_vÚregister_external_parameterÚHubertSamePadLayerr   r   Úfeat_extract_activationÚ
activation)ÚselfÚconfigr!   r5   r:   r;   Ú	__class__s         €úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/hubert/modeling_hubert.pyr)   z&HubertPositionalConvEmbedding.__init__.   s1  ø€ Ý‰Œ×ÒÑÔÐÝ”IØÔØÔØÔ6ØÔ2°aÑ7ØÔ7ð
ñ 
ô 
ˆŒ	ð ˆŒÝ�6Ð0°%Ñ8Ô8ð 	IÝ œn¨VÔ-?Ñ@Ô@ˆDŒO‰Oåœ(Ô.ˆKÝ•r”xÔ0°-Ñ@Ô@ð DÝ œhÔ7ÔC�å)Ñ+Ô+ð IØ Ð Ð Ð à”^×6Ò6°t´yÔ7GÐWXÐ6ÑYÔYð Mð MØ + ¨D¬I¸HÈ!Ð LÑ LÔ L�D”IðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Må˜4œ9Ð&8Ñ9Ô9ð 2Ø#œyÔ9Ô@ÔJ�HØ#œyÔ9Ô@ÔJ�H�Hà#œyÔ1�HØ#œyÔ1�HØ”×:Ò:¸4ÀÑJÔJÐJØ”×:Ò:¸4ÀÑJÔJÐJÐJà'˜K¨¬	¸ÀaÐHÑHÔH�”	å)¨&Ô*HÑIÔIˆŒÝ  Ô!?Ô@ˆŒˆˆs   ÄD7Ä7D;Ä>D;c                 ó  — |                      dd¦  «        }| j        �|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      dd¦  «        }|S )Nr   r   )Ú	transposer0   r/   r   r?   ©r@   Úhidden_statess     rC   Úforwardz%HubertPositionalConvEmbedding.forwardS   s~   € Ø%×/Ò/°°1Ñ5Ô5ˆØŒ?Ð&Ø ŸOšO¨MÑ:Ô:ˆMØŸ	š	 -Ñ0Ô0ˆØŸš ]Ñ3Ô3ˆØŸš¨Ñ6Ô6ˆà%×/Ò/°°1Ñ5Ô5ˆØÐó    ©Ú__name__Ú
__module__Ú__qualname__r)   rH   Ú__classcell__©rB   s   @rC   r   r   -   sM   ø€ € € € € ð#Að #Að #Að #Að #AðJ	ð 	ð 	ð 	ð 	ð 	ð 	rI   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r=   c                 ól   •— t          ¦   «                              ¦   «          |dz  dk    rdnd| _        d S )Nr   r   r   )r(   r)   Únum_pad_remove)r@   r-   rB   s     €rC   r)   zHubertSamePadLayer.__init__`   s:   ø€ Ý‰Œ×ÒÑÔÐØ#:¸QÑ#>À!Ò#CÐ#C˜a˜aÈˆÔÐÐrI   c                 óJ   — | j         dk    r|d d …d d …d | j          …f         }|S ©Nr   )rR   rF   s     rC   rH   zHubertSamePadLayer.forwardd   s;   € ØÔ Ò"Ð"Ø)¨!¨!¨!¨Q¨Q¨QÐ0F°4Ô3FÐ2FÐ0FÐ*FÔGˆMØÐrI   rJ   rO   s   @rC   r=   r=   _   sL   ø€ € € € € ðKð Kð Kð Kð Kðð ð ð ð ð ð rI   r=   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚHubertNoLayerNormConvLayerr   c                 óZ  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          |j                 | _        d S )Nr   r   ©r   ÚstrideÚbias)r(   r)   Úconv_dimÚin_conv_dimÚout_conv_dimr*   r+   Úconv_kernelÚconv_strideÚ	conv_biasr/   r   r>   r?   ©r@   rA   Úlayer_idrB   s      €rC   r)   z#HubertNoLayerNormConvLayer.__init__k   s�   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ ! Ô!?Ô@ˆŒˆˆrI   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S ©N)r/   r?   rF   s     rC   rH   z"HubertNoLayerNormConvLayer.forwardy   s*   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØÐrI   ©r   rJ   rO   s   @rC   rV   rV   j   sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð rI   rV   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚHubertLayerNormConvLayerr   c                 óš  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          j        | j        d¬¦  «        | _        t          |j                 | _        d S )Nr   r   rX   T)Úelementwise_affine)r(   r)   r[   r\   r]   r*   r+   r^   r_   r`   r/   Ú	LayerNormÚ
layer_normr   r>   r?   ra   s      €rC   r)   z!HubertLayerNormConvLayer.__init__€   s¶   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ œ, tÔ'8ÈTÐRÑRÔRˆŒÝ  Ô!?Ô@ˆŒˆˆrI   c                 óÜ   — |                       |¦  «        }|                     dd¦  «        }|                      |¦  «        }|                     dd¦  «        }|                      |¦  «        }|S )Néþÿÿÿéÿÿÿÿ)r/   rE   rk   r?   rF   s     rC   rH   z HubertLayerNormConvLayer.forward�   se   € ØŸ	š	 -Ñ0Ô0ˆà%×/Ò/°°BÑ7Ô7ˆØŸš¨Ñ6Ô6ˆØ%×/Ò/°°BÑ7Ô7ˆàŸš¨Ñ6Ô6ˆØÐrI   re   rJ   rO   s   @rC   rg   rg      sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð rI   rg   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚHubertGroupNormConvLayerr   c                 ó¦  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          |j                 | _        t          j        | j        | j        d¬¦  «        | _        d S )Nr   r   rX   T)Ú
num_groupsÚnum_channelsÚaffine)r(   r)   r[   r\   r]   r*   r+   r^   r_   r`   r/   r   r>   r?   Ú	GroupNormrk   ra   s      €rC   r)   z!HubertGroupNormConvLayer.__init__›   s½   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ ! Ô!?Ô@ˆŒåœ,°$Ô2CÐRVÔRcÐlpÐqÑqÔqˆŒˆˆrI   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rd   )r/   rk   r?   rF   s     rC   rH   z HubertGroupNormConvLayer.forward«   s;   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐrI   re   rJ   rO   s   @rC   rp   rp   š   sR   ø€ € € € € ðrð rð rð rð rð rð ð ð ð ð ð ð rI   rp   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚHubertFeatureEncoderz.Construct the features from raw audio waveformc                 ó¤  •‡— t          ¦   «                              ¦   «          ‰j        dk    r7t          ‰d¬¦  «        gˆfd„t	          ‰j        dz
  ¦  «        D ¦   «         z   }nD‰j        dk    r!ˆfd„t	          ‰j        ¦  «        D ¦   «         }nt          d‰j        › d	�¦  «        ‚t          j        |¦  «        | _	        d
| _
        d| _        d S )NÚgroupr   ©rb   c                 ó8   •— g | ]}t          ‰|d z   ¬¦  «        ‘ŒS )r   r{   )rV   ©Ú.0ÚirA   s     €rC   ú
<listcomp>z1HubertFeatureEncoder.__init__.<locals>.<listcomp>¹   s>   ø€ ð Lð Lð LØGHÕ*¨6¸AÀ¹EÐBÑBÔBðLð Lð LrI   r   Úlayerc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )r{   )rg   r}   s     €rC   r€   z1HubertFeatureEncoder.__init__.<locals>.<listcomp>½   s'   ø€ ÐwÐwÐwÈAÕ3°FÀQÐGÑGÔGÐwÐwÐwrI   z`config.feat_extract_norm` is z), but has to be one of ['group', 'layer']FT)r(   r)   Úfeat_extract_normrp   ÚrangeÚnum_feat_extract_layersÚ
ValueErrorr*   Ú
ModuleListÚconv_layersÚgradient_checkpointingÚ_requires_grad)r@   rA   rˆ   rB   s    ` €rC   r)   zHubertFeatureEncoder.__init__µ   s  øø€ Ý‰Œ×ÒÑÔÐàÔ# wÒ.Ð.Ý3°FÀQÐGÑGÔGÐHð Lð Lð Lð LÝLQÐRXÔRpÐstÑRtÑLuÔLuðLñ Lô Lñ ˆKˆKð Ô%¨Ò0Ð0ØwÐwÐwÐwÕQVÐW]ÔWuÑQvÔQvÐwÑwÔwˆKˆKåØt°Ô1IÐtÐtÐtñô ð õ œ=¨Ñ5Ô5ˆÔØ&+ˆÔ#Ø"ˆÔÐÐrI   c                 óP   — |                       ¦   «         D ]	}d|_        Œ
d| _        d S ©NF)Ú
parametersÚrequires_gradrŠ   ©r@   Úparams     rC   Ú_freeze_parametersz'HubertFeatureEncoder._freeze_parametersÆ   s4   € Ø—_’_Ñ&Ô&ð 	(ð 	(ˆEØ"'ˆEÔÐØ#ˆÔÐÐrI   c                 ór   — |d d …d f         }| j         r| j        rd|_        | j        D ]} ||¦  «        }Œ|S )NT)rŠ   ÚtrainingrŽ   rˆ   )r@   Úinput_valuesrG   Ú
conv_layers       rC   rH   zHubertFeatureEncoder.forwardË   s[   € Ø$ Q Q Q¨ WÔ-ˆð Ôð 	/ 4¤=ð 	/Ø*.ˆMÔ'àÔ*ð 	6ð 	6ˆJØ&˜J }Ñ5Ô5ˆMˆMàÐrI   )rK   rL   rM   Ú__doc__r)   r‘   rH   rN   rO   s   @rC   rx   rx   ²   s\   ø€ € € € € Ø8Ð8ð#ð #ð #ð #ð #ð"$ð $ð $ð

ð 
ð 
ð 
ð 
ð 
ð 
rI   rx   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚHubertFeatureProjectionc                 óT  •— t          ¦   «                              ¦   «          |j        | _        | j        r+t          j        |j        d         |j        ¬¦  «        | _        t          j        |j        d         |j	        ¦  «        | _
        t          j        |j        ¦  «        | _        d S )Nrn   ©Úeps)r(   r)   Úfeat_proj_layer_normr*   rj   r[   Úlayer_norm_epsrk   ÚLinearr,   Ú
projectionÚDropoutÚfeat_proj_dropoutÚdropout©r@   rA   rB   s     €rC   r)   z HubertFeatureProjection.__init__Ù   s…   ø€ Ý‰Œ×ÒÑÔÐØ$*Ô$?ˆÔ!ØÔ$ð 	[Ý œl¨6¬?¸2Ô+>ÀFÔDYÐZÑZÔZˆDŒOÝœ) F¤O°BÔ$7¸Ô9KÑLÔLˆŒÝ”z &Ô":Ñ;Ô;ˆŒˆˆrI   c                 ó’   — | j         r|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rd   )rœ   rk   rŸ   r¢   rF   s     rC   rH   zHubertFeatureProjection.forwardá   sF   € àÔ$ð 	;Ø ŸOšO¨MÑ:Ô:ˆMØŸš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆØÐrI   rJ   rO   s   @rC   r˜   r˜   Ø   sG   ø€ € € € € ð<ð <ð <ð <ð <ðð ð ð ð ð ð rI   r˜   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingr¢   Úkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )Nrn   ç      à¿r   r   ©r&   )Úpr“   r   )
ÚsizeÚtorchÚmatmulrE   r*   Ú
functionalÚsoftmaxr¢   r“   Ú
contiguous)
r¦   r§   r¨   r©   rª   r«   r¢   r¬   Úattn_weightsÚattn_outputs
             rC   Úeager_attention_forwardr¹   ê   sÈ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$rI   c                   óþ   ‡ — e Zd ZdZ	 	 	 	 	 ddededed	ed
edededz  fˆ fd„Z	 	 	 dde	j
        de	j
        dz  de	j
        dz  dedz  dee         dee	j
        e	j
        dz  ee	j
                 dz  f         fd„Zˆ xZS )ÚHubertAttentionz=Multi-headed attention from 'Attention Is All You Need' paperr¥   FTNÚ	embed_dimÚ	num_headsr¢   Ú
is_decoderrZ   Ú	is_causalrA   c                 ó
  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        || _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        || _	        || _
        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).r®   )rZ   )r(   r)   r¼   r½   r¢   Úhead_dimrA   r†   r«   r¾   r¿   r*   rž   Úk_projÚv_projÚq_projÚout_proj)	r@   r¼   r½   r¢   r¾   rZ   r¿   rA   rB   s	           €rC   r)   zHubertAttention.__init__	  s  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒØ$ˆŒØ"ˆŒå”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝœ	 )¨Y¸TÐBÑBÔBˆŒˆˆrI   rG   Úkey_value_statesrª   Úoutput_attentionsr¬   Úreturnc                 óú  — |du}|j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }	|r|n|}
g |
j         dd…         ¢d‘| j        ‘R }|                      |
¦  «                             |¦  «                             dd¦  «        }|                      |
¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        } || |	|||f| j        sdn| j        | j        |dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||dfS )z#Input shape: Batch x Time x ChannelNrn   r   r   r¥   )r¢   r«   rÇ   )ÚshaperÁ   rÄ   ÚviewrE   rÂ   rÃ   r   Úget_interfacerA   Ú_attn_implementationr¹   r“   r¢   r«   Úreshaper¶   rÅ   )r@   rG   rÆ   rª   rÇ   r¬   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesÚcurrent_statesÚkv_shapeÚ
key_statesÚvalue_statesÚattention_interfacer¸   r·   s                    rC   rH   zHubertAttention.forward(  s½  € ð .°TÐ9Ðð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆð —{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà-?ÐRÐ)Ð)À]ˆØB�^Ô)¨#¨2¨#Ô.ÐB°ÐB°D´MÐBÐBˆØ—[’[ Ñ0Ô0×5Ò5°hÑ?Ô?×IÒIÈ!ÈQÑOÔOˆ
Ø—{’{ >Ñ2Ô2×7Ò7¸ÑAÔA×KÒKÈAÈqÑQÔQˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð  $œ}Ð>�C�C°$´,Ø”LØ/ð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜L¨$Ð.Ð.rI   )r¥   FTFN)NNF)rK   rL   rM   r–   ÚintÚfloatÚboolr   r)   r²   ÚTensorr   r   ÚtuplerH   rN   rO   s   @rC   r»   r»     sJ  ø€ € € € € ØGÐGð Ø ØØØ&*ðCð CàðCð ðCð ð	Cð
 ðCð ðCð ðCð ˜tÑ#ðCð Cð Cð Cð Cð CðD 15Ø.2Ø).ð0/ð 0/à”|ð0/ð  œ,¨Ñ-ð0/ð œ tÑ+ð	0/ð
   $™;ð0/ð Ð-Ô.ð0/ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mð0/ð 0/ð 0/ð 0/ð 0/ð 0/ð 0/ð 0/rI   r»   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚHubertFeedForwardc                 óÌ  •— t          ¦   «                              ¦   «          t          j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          |j        t          ¦  «        rt          |j                 | _        n|j        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S rd   )r(   r)   r*   r    Úactivation_dropoutÚintermediate_dropoutrž   r,   Úintermediate_sizeÚintermediate_denseÚ
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnÚoutput_denseÚhidden_dropoutÚoutput_dropoutr£   s     €rC   r)   zHubertFeedForward.__init__\  s°   ø€ Ý‰Œ×ÒÑÔÐÝ$&¤J¨vÔ/HÑ$IÔ$IˆÔ!å"$¤)¨FÔ,>ÀÔ@XÑ"YÔ"YˆÔÝ�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$à'-Ô'8ˆDÔ$åœI fÔ&>ÀÔ@RÑSÔSˆÔÝ œj¨Ô)>Ñ?Ô?ˆÔÐÐrI   c                 óØ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rd   )rã   rç   rá   rè   rê   rF   s     rC   rH   zHubertFeedForward.forwardi  sg   € Ø×/Ò/°Ñ>Ô>ˆØ×0Ò0°Ñ?Ô?ˆØ×1Ò1°-Ñ@Ô@ˆà×)Ò)¨-Ñ8Ô8ˆØ×+Ò+¨MÑ:Ô:ˆØÐrI   rJ   rO   s   @rC   rÞ   rÞ   [  sL   ø€ € € € € ð@ð @ð @ð @ð @ðð ð ð ð ð ð rI   rÞ   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚHubertEncoderLayerc                 ó�  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d|¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S )NF©r¼   r½   r¢   r¾   rA   rš   )r(   r)   r»   r,   Únum_attention_headsÚattention_dropoutÚ	attentionr*   r    ré   r¢   rj   r�   rk   rÞ   Úfeed_forwardÚfinal_layer_normr£   s     €rC   r)   zHubertEncoderLayer.__init__t  s¬   ø€ Ý‰Œ×ÒÑÔÐÝ(ØÔ(ØÔ0ØÔ,ØØð
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ-¨fÑ5Ô5ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐrI   NFc                 ó  — |}|                       |||¬¦  «        \  }}}|                      |¦  «        }||z   }|                      |¦  «        }||                      |¦  «        z   }|                      |¦  «        }|f}|r||fz  }|S ©N©rª   rÇ   )rò   r¢   rk   ró   rô   ©r@   rG   rª   rÇ   Úattn_residualr·   Ú_Úoutputss           rC   rH   zHubertEncoderLayer.forwardƒ  s¨   € Ø%ˆØ)-¯ªØ¨.ÐL]ð *8ñ *
ô *
Ñ&ˆ�| Qð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆàŸš¨Ñ6Ô6ˆØ%¨×(9Ò(9¸-Ñ(HÔ(HÑHˆØ×-Ò-¨mÑ<Ô<ˆà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆrI   rŒ   rJ   rO   s   @rC   rí   rí   s  sQ   ø€ € € € € ð\ð \ð \ð \ð \ðð ð ð ð ð ð ð rI   rí   c                   ó^   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddej        dej        dz  deded	ef
d
„Zˆ xZ	S )ÚHubertEncoderc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nrš   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )rí   ©r~   rú   rA   s     €rC   r€   z*HubertEncoder.__init__.<locals>.<listcomp>ž  s"   ø€ Ð$iÐ$iÐ$iÀAÕ%7¸Ñ%?Ô%?Ð$iÐ$iÐ$irI   F©r(   r)   rA   r   Úpos_conv_embedr*   rj   r,   r�   rk   r    ré   r¢   r‡   r„   Únum_hidden_layersÚlayersr‰   r£   s    `€rC   r)   zHubertEncoder.__init__˜  s    øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ;¸FÑCÔCˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mÐ$iÐ$iÐ$iÐ$iÍÈvÔOgÑIhÔIhÐ$iÑ$iÔ$iÑjÔjˆŒØ&+ˆÔ#Ð#Ð#rI   NFTrG   rª   rÇ   Úoutput_hidden_statesÚreturn_dictc                 óö  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   t          | j        ||¬¦  «        }|                      |¦  «        }	||	                     |j        ¦  «        z   }|                      |¦  «        }|  	                    |¦  «        }t          ¦   «         pt          | ¦  «        }
| j        D ]a}|r||fz   }t          j        g ¦  «        }| j        o|| j        j        k     }|r|
r ||||¬¦  «        }|d         }|rd}|r||d         fz   }Œb|r||fz   }|st#          d	„ |||fD ¦   «         ¦  «        S t%          |||¬
¦  «        S )Nr   rn   r   r   r   ©rA   Úinputs_embedsrª   r÷   ©NNc              3   ó   K  — | ]}|®|V — Œ	d S rd   r   ©r~   Úvs     rC   ú	<genexpr>z(HubertEncoder.forward.<locals>.<genexpr>×  ó(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmrI   ©Úlast_hidden_staterG   Ú
attentions)Ú	unsqueezeÚrepeatrÊ   r
   rA   r  ÚtoÚdevicerk   r¢   r   r	   r  r²   Úrandr“   Ú	layerdroprÜ   r   ©r@   rG   rª   rÇ   r  r  Úall_hidden_statesÚall_self_attentionsÚexpand_attention_maskÚposition_embeddingsÚsynced_gpusr�   Údropout_probabilityÚskip_the_layerÚlayer_outputss                  rC   rH   zHubertEncoder.forward¡  s  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4ÐàÐ%à$2×$<Ò$<¸RÑ$@Ô$@×$GÒ$GÈÈ1ÈmÔNaÐbcÔNdÑ$eÔ$eÐ!Ø45ˆMÐ0Ð0Ñ1å2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð #×1Ò1°-Ñ@Ô@ÐØ%Ð(;×(>Ò(>¸}Ô?SÑ(TÔ(TÑTˆØŸš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà”[ð 	Pð 	PˆEØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]ÐZÐ/BÀTÄ[ÔEZÒ/ZˆNØ!ð 1 [ð 1à % Ø!°.ÐTeð!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
rI   ©NFFT)
rK   rL   rM   r)   r²   ÚtensorrÛ   rÚ   rH   rN   rO   s   @rC   rý   rý   —  s˜   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð /3Ø"'Ø%*Ø ð;
ð ;
à”|ð;
ð œ tÑ+ð;
ð  ð	;
ð
 #ð;
ð ð;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
rI   rý   c                   ó4   ‡ — e Zd Zˆ fd„Zdej        fd„Zˆ xZS )ÚHubertAttnAdapterLayerc                 ót  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t          j        | j        ¦  «        | _        t          j	        | j        | j        ¦  «        | _
        t          j        ¦   «         | _        t          j	        | j        | j        ¦  «        | _        dS )zŸ
        Implements adapter modules directly with 3D tensor weight as parameters and without using ModuleList to speed
        up training throughput.
        N)r(   r)   Úadapter_attn_dimÚ	input_dimr,   Ú
hidden_dimr*   rj   Únormrž   Úlinear_1ÚReLUÚact_fnÚlinear_2r£   s     €rC   r)   zHubertAttnAdapterLayer.__init__à  s�   ø€ õ
 	‰Œ×ÒÑÔÐØÔ0ˆŒØ Ô,ˆŒå”L ¤Ñ1Ô1ˆŒ	Ýœ	 $¤/°4´>ÑBÔBˆŒÝ”g‘i”iˆŒÝœ	 $¤.°$´/ÑBÔBˆŒˆˆrI   rG   c                 ó®   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rd   )r+  r,  r.  r/  rF   s     rC   rH   zHubertAttnAdapterLayer.forwardî  sL   € ØŸ	š	 -Ñ0Ô0ˆàŸš mÑ4Ô4ˆØŸš MÑ2Ô2ˆØŸš mÑ4Ô4ˆàÐrI   )rK   rL   rM   r)   r²   ÚFloatTensorrH   rN   rO   s   @rC   r&  r&  ß  s[   ø€ € € € € ðCð Cð Cð Cð Cð UÔ%6ð ð ð ð ð ð ð ð rI   r&  c                   óR   ‡ — e Zd Zˆ fd„Z	 	 ddej        dej        dz  defd„Zˆ xZS )	Ú!HubertEncoderLayerStableLayerNormc                 óì  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d|¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t#          |dd ¦  «        �t%          |¦  «        | _        d S d | _        d S )NFrï   rš   r(  )r(   r)   r»   r,   rð   rñ   rò   r*   r    ré   r¢   rj   r�   rk   rÞ   ró   rô   r1   r&  Úadapter_layerr£   s     €rC   r)   z*HubertEncoderLayerStableLayerNorm.__init__ù  sÝ   ø€ Ý‰Œ×ÒÑÔÐÝ(ØÔ(ØÔ0ØÔ,ØØð
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ-¨fÑ5Ô5ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔå�6Ð-¨tÑ4Ô4Ð@Ý!7¸Ñ!?Ô!?ˆDÔÐÐà!%ˆDÔÐÐrI   NFrG   rª   rÇ   c                 óJ  — |}|                       |¦  «        }|                      |||¬¦  «        \  }}}|                      |¦  «        }||z   }||                      |                      |¦  «        ¦  «        z   }| j        �||                      |¦  «        z   }|f}|r||fz  }|S rö   )rk   rò   r¢   ró   rô   r5  rø   s           rC   rH   z)HubertEncoderLayerStableLayerNorm.forward  sÇ   € ð &ˆØŸš¨Ñ6Ô6ˆØ)-¯ªØ¨.ÐL]ð *8ñ *
ô *
Ñ&ˆ�| Qð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆØ%¨×(9Ò(9¸$×:OÒ:OÐP]Ñ:^Ô:^Ñ(_Ô(_Ñ_ˆàÔÐ)Ø)¨D×,>Ò,>¸}Ñ,MÔ,MÑMˆMà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆrI   rŒ   )	rK   rL   rM   r)   r²   rÛ   rÚ   rH   rN   rO   s   @rC   r3  r3  ø  s~   ø€ € € € € ð&ð &ð &ð &ð &ð, /3Ø"'ð	ð à”|ðð œ tÑ+ðð  ð	ð ð ð ð ð ð ð rI   r3  c                   ó.   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚHubertEncoderStableLayerNormc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nrš   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r   )r3  r  s     €rC   r€   z9HubertEncoderStableLayerNorm.__init__.<locals>.<listcomp>.  s"   ø€ Ð`Ð`Ð`¸1Õ.¨vÑ6Ô6Ð`Ð`Ð`rI   Fr  r£   s    `€rC   r)   z%HubertEncoderStableLayerNorm.__init__'  s¦   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ;¸FÑCÔCˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mØ`Ð`Ð`Ð`ÅÀfÔF^Ñ@_Ô@_Ð`Ñ`Ô`ñ
ô 
ˆŒð ',ˆÔ#Ð#Ð#rI   NFTc                 óÆ  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   t          | j        ||¬¦  «        }|                      |¦  «        }	||	z   }|                      |¦  «        }t          ¦   «         pt          | ¦  «        }
| j	        D ]a}|r||fz   }t          j        g ¦  «        }| j        o|| j        j        k     }|r|
r ||||¬¦  «        }|d         }|rd}|r||d         fz   }Œb|                      |¦  «        }|r||fz   }|st          d	„ |||fD ¦   «         ¦  «        S t!          |||¬
¦  «        S )Nr   rn   r   r   r   r	  r÷   r  c              3   ó   K  — | ]}|®|V — Œ	d S rd   r   r  s     rC   r  z7HubertEncoderStableLayerNorm.forward.<locals>.<genexpr>j  r  rI   r  )r  r  rÊ   r
   rA   r  r¢   r   r	   r  r²   r  r“   r  rk   rÜ   r   r  s                  rC   rH   z$HubertEncoderStableLayerNorm.forward2  sü  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4ÐàÐ%à$2×$<Ò$<¸RÑ$@Ô$@×$GÒ$GÈÈ1ÈmÔNaÐbcÔNdÑ$eÔ$eÐ!Ø45ˆMÐ0Ð0Ñ1å2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð #×1Ò1°-Ñ@Ô@ÐØ%Ð(;Ñ;ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà”[ð 	Pð 	PˆEØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]ÐZÐ/BÀTÄ[ÔEZÒ/ZˆNØ!ð 1 [ð 1ð !& Ø!°.ÐTeð!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàŸš¨Ñ6Ô6ˆàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
rI   r#  rJ   rO   s   @rC   r8  r8  &  sZ   ø€ € € € € ð	,ð 	,ð 	,ð 	,ð 	,ð ØØ"Øð=
ð =
ð =
ð =
ð =
ð =
ð =
ð =
rI   r8  c                   ó®   ‡ — e Zd ZU eed<   dZdZdZddgZdZ	dZ
dZdZ ej        ¦   «         ˆ fd„¦   «         Zd	ej        ez  fd
„Zdedej        fd„Zˆ xZS )ÚHubertPreTrainedModelrA   Úhubertr”   Úaudiorí   ÚParametrizedConv1dTc                 óâ  •— t          ¦   «                              |¦  «         t          |t          j        ¦  «        �rt          ¦   «         rÑddl}t          |d¦  «        rjt          |d¦  «        rZ|j         	                    |j
        |j        gd¬¦  «        5  t          j        |j        ¦  «         ddd¦  «         n# 1 swxY w Y   nl|j         	                    |j        d¬¦  «        5  t          j        |j        ¦  «         ddd¦  «         n# 1 swxY w Y   nt          j        |j        ¦  «         |j        �t          j        |j        ¦  «         dS dS t          |t"          ¦  «        r-t          |d¦  «        rt          j        |j        ¦  «         dS dS t          |t(          ¦  «        r<t          |d¦  «        r.t          j        |j        d| j        j        d	z   z  ¦  «         dS dS dS )
zInitialize the weightsr   Nr;   r:   r"   Úmasked_spec_embedÚlayer_weightsg      ð?r   )r(   Ú_init_weightsrä   r*   r+   r   r5   r4   r6   r7   r;   r:   ÚinitÚkaiming_normal_r$   rZ   Úzeros_ÚHubertModelÚuniform_rC  ÚHubertForSequenceClassificationÚ	constant_rD  rA   r  )r@   r¦   r5   rB   s      €rC   rE  z#HubertPreTrainedModel._init_weights~  sv  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�bœiÑ(Ô(ñ 	`Ý)Ñ+Ô+ð 
4Ø Ð Ð Ð å˜6 :Ñ.Ô.ð <µ7¸6À:Ñ3NÔ3Nð <Ø"œ×:Ò:¸F¼OÈVÌ_Ð;]ÐmnÐ:ÑoÔoð <ð <ÝÔ,¨V¬]Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øð #œ×:Ò:¸6¼=ÐXYÐ:ÑZÔZð <ð <ÝÔ,¨V¬]Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øõ Ô$ V¤]Ñ3Ô3Ð3àŒ{Ð&Ý”˜FœKÑ(Ô(Ð(Ð(Ð(ð 'Ð&å˜¥Ñ,Ô,ð 	`Ý�vÐ2Ñ3Ô3ð 8Ý”˜fÔ6Ñ7Ô7Ð7Ð7Ð7ð8ð 8å˜Õ ?Ñ@Ô@ð 	`Ý�v˜Ñ/Ô/ð `Ý”˜vÔ3°S¸D¼KÔ<YÐ\]Ñ<]Ñ5^Ñ_Ô_Ð_Ð_Ð_ð	`ð 	`ð`ð `s$   ÂB>Â>CÃCÃ+DÄDÄDÚinput_lengthsc                 óz   — d„ }t          | j        j        | j        j        ¦  «        D ]\  }} ||||¦  «        }Œ|S )zH
        Computes the output length of the convolutional layers
        c                 ó<   — t          j        | |z
  |d¬¦  «        dz   S )NÚfloor)Úrounding_moder   )r²   Údiv)Úinput_lengthr   rY   s      rC   Ú_conv_out_lengthzPHubertPreTrainedModel._get_feat_extract_output_lengths.<locals>._conv_out_length�  s&   € õ ”9˜\¨KÑ7¸ÈwÐWÑWÔWÐZ[Ñ[Ð[rI   )ÚziprA   r^   r_   )r@   rM  rT  r   rY   s        rC   Ú _get_feat_extract_output_lengthsz6HubertPreTrainedModel._get_feat_extract_output_lengths˜  s\   € ð
	\ð 	\ð 	\õ
 $' t¤{Ô'>ÀÄÔ@WÑ#XÔ#Xð 	Qð 	QÑˆK˜Ø,Ð,¨]¸KÈÑPÔPˆMˆMàÐrI   Úfeature_vector_lengthrª   c                 óê  — |                       |                     d¦  «        ¦  «                             t          j        ¦  «        }|j        d         }t          j        ||f|j        |j        ¬¦  «        }d|t          j	        |j        d         |j        ¬¦  «        |dz
  f<   | 
                    dg¦  «                             d¦  «         
                    dg¦  «                             ¦   «         }|S )Nrn   r   )Údtyper  r   )r  )rV  Úsumr  r²   ÚlongrÊ   ÚzerosrY  r  ÚarangeÚflipÚcumsumrÚ   )r@   rW  rª   Úoutput_lengthsÚ
batch_sizes        rC   Ú"_get_feature_vector_attention_maskz8HubertPreTrainedModel._get_feature_vector_attention_mask§  sæ   € Ø×>Ò>¸~×?QÒ?QÐRTÑ?UÔ?UÑVÔV×YÒYÕZ_ÔZdÑeÔeˆØ#Ô)¨!Ô,ˆ
åœØÐ.Ð/°~Ô7KÐTbÔTið
ñ 
ô 
ˆð uvˆ�œ ^Ô%9¸!Ô%<À^ÔEZÐ[Ñ[Ô[Ð]kÐnoÑ]oÐpÑqØ'×,Ò,¨b¨TÑ2Ô2×9Ò9¸"Ñ=Ô=×BÒBÀBÀ4ÑHÔH×MÒMÑOÔOˆØÐrI   )rK   rL   rM   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnr²   Úno_gradrE  Ú
LongTensorrØ   rV  rb  rN   rO   s   @rC   r>  r>  r  sÛ   ø€ € € € € € àÐÐÑØ ÐØ$€OØÐØ-Ð/CÐDÐØ&*Ð#ØÐØ€NØÐà€U„]�_„_ð`ð `ð `ð `ñ „_ð`ð2¸eÔ>NÐQTÑ>Tð ð ð ð ð
Èð 
Ð]bÔ]mð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rI   r>  rÊ   Ú	mask_probÚmask_lengthÚ	min_masksrÈ   c                 ó@  ‡‡‡‡‡— | \  }Š‰dk     rt          d¦  «        ‚‰‰k    rt          d‰› d‰› d�¦  «        ‚t          j                             d¦  «                             ¦   «         Šˆˆˆˆˆfd„}|�9|                     ¦   «                              d¦  «                             ¦   «         nˆfd	„t          |¦  «        D ¦   «         }t          j	        |‰ft          ¬
¦  «        }g }	 |‰¦  «        }
|
dk    r|S |D ]·} ||¦  «        }t          j                             t          j        |‰dz
  z
  ¦  «        |d¬¦  «        }t          |¦  «        dk    r‰dz
  }n|d         }t          j        |t          j        |
|z
  t          j        ¬
¦  «        |z  g¦  «        }|	                     |¦  «         Œ¸t          j        |	¦  «        }	t          j        |	dd…dd…df         ||
‰f¦  «        }	|	                     ||
‰z  ¦  «        }	t          j        ‰¦  «        dddd…f         }t          j        |||
‰f¦  «                             ||
‰z  ¦  «        }|	|z   }	|	                     ¦   «         ‰dz
  k    r‰dz
  |	|	‰dz
  k    <   t          j        ||	dd¦  «         |S )an  
    Computes random mask spans for a given shape. Used to implement [SpecAugment: A Simple Data Augmentation Method for
    ASR](https://huggingface.co/papers/1904.08779). Note that this method is not optimized to run on TPU and should be run on
    CPU as part of the preprocessing during training.

    Args:
        shape: The shape for which to compute masks. This should be of a tuple of size 2 where
               the first element is the batch size and the second element is the length of the axis to span.
        mask_prob:  The percentage of the whole axis (between 0 and 1) which will be masked. The number of
                    independently generated mask spans of length `mask_length` is computed by
                    `mask_prob*shape[1]/mask_length`. Note that due to overlaps, `mask_prob` is an upper bound and the
                    actual percentage will be smaller.
        mask_length: size of the mask
        min_masks: minimum number of masked spans
        attention_mask: A (right-padded) attention mask which independently shortens the feature axis of
                        each batch dimension.
    r   z&`mask_length` has to be bigger than 0.zO`mask_length` has to be smaller than `sequence_length`, but got `mask_length`: z and `sequence_length`: ú`c                 ó¸   •— t          ‰| z  ‰z  ‰z   ¦  «        }t          |‰¦  «        }|‰z  ‰k    r‰‰z  }| ‰dz
  z
  |k     rt          | ‰dz
  z
  d¦  «        }|S )z;Given input length, compute how many spans should be maskedr   r   )rØ   Úmax)rS  Únum_masked_spanÚepsilonro  rn  rp  Úsequence_lengths     €€€€€rC   Úcompute_num_masked_spanz6_compute_mask_indices.<locals>.compute_num_masked_spanÚ  s~   ø€ å˜i¨,Ñ6¸ÑDÀwÑNÑOÔOˆÝ˜o¨yÑ9Ô9ˆð ˜[Ñ(¨?Ò:Ð:Ø-°Ñ<ˆOð ˜;¨™?Ñ+¨oÒ=Ð=Ý! ,°+À±/Ñ"BÀAÑFÔFˆOàÐrI   Nrn   c                 ó   •— g | ]}‰‘ŒS r   r   )r~   rú   rw  s     €rC   r€   z)_compute_mask_indices.<locals>.<listcomp>í  s   ø€ Ð9Ð9Ð9 !ˆoÐ9Ð9Ð9rI   ©rY  r   F)Úreplace)r†   ÚnpÚrandomr  ÚitemÚdetachrZ  Útolistr„   r\  rÚ   Úchoicer]  ÚlenÚconcatenateÚonesÚint32ÚappendÚarrayÚbroadcast_torÎ   rt  Úput_along_axis)rÊ   rn  ro  rª   rp  ra  rx  rM  Úspec_aug_maskÚspec_aug_mask_idxsÚmax_num_masked_spanrS  ru  Úspec_aug_mask_idxÚdummy_mask_idxÚoffsetsrv  rw  s    `` `           @@rC   Ú_compute_mask_indicesr�  ´  sP  øøøøø€ ð0 #(Ñ€J�à�Q‚€ÝÐAÑBÔBÐBà�_Ò$Ð$Ýð:Ð^ið :ð :Ø'6ð:ð :ð :ñ
ô 
ð 	
õ Œi�nŠn˜QÑÔ×$Ò$Ñ&Ô&€Gðð ð ð ð ð ð ð ð ð$ Ð%ð 	×ÒÑÔ×#Ò# BÑ'Ô'×.Ò.Ñ0Ô0Ð0à9Ð9Ð9Ð9¥u¨ZÑ'8Ô'8Ð9Ñ9Ô9ð õ ”H˜j¨/Ð:Å$ÐGÑGÔG€MØÐà1Ð1°/ÑBÔBÐà˜aÒÐØÐà%ð 5ð 5ˆà1Ð1°,Ñ?Ô?ˆõ œI×,Ò,ÝŒI�l k°A¡oÑ6Ñ7Ô7¸ÐRWð -ñ 
ô 
Ðõ Ð Ñ!Ô! QÒ&Ð&ð -¨qÑ0ˆNˆNà.¨qÔ1ˆNåœNØ¥¤Ð(;¸oÑ(MÕUWÔU]Ð ^Ñ ^Ô ^ÐaoÑ oÐpñ
ô 
Ðð 	×!Ò!Ð"3Ñ4Ô4Ð4Ð4åœÐ"4Ñ5Ô5Ðõ œØ˜1˜1˜1˜a˜a˜a ˜:Ô&¨Ð5HÈ+Ð(Vñô Ðð ,×3Ò3°JÐ@SÐVaÑ@aÑbÔbÐõ Œi˜Ñ$Ô$ T¨4°°° ]Ô3€GÝŒo˜g¨
Ð4GÈÐ'UÑVÔV×^Ò^ØÐ'¨+Ñ5ñô €Gð ,¨gÑ5Ðð ×ÒÑÔ /°AÑ"5Ò5Ð5ØGVÐYZÑGZÐÐ-°À!Ñ0CÒCÑDõ Ô�mÐ%7¸¸BÑ?Ô?Ð?àÐrI   c                   óð   ‡ — e Zd Zdefˆ fd„Z	 	 ddej        dej        dz  dej        dz  fd„Ze		 	 	 	 	 d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 )rI  rA   c                 óà  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |j        dk    s|j        dk    rBt          j
        t          j        |j        ¦  «                             ¦   «         ¦  «        | _        |j        rt#          |¦  «        | _        nt'          |¦  «        | _        |                      ¦   «          d S ©Nr¥   )r(   r)   rA   rx   Úfeature_extractorr˜   Úfeature_projectionÚmask_time_probÚmask_feature_probr*   Ú	Parameterr²   rÛ   r,   rJ  rC  Údo_stable_layer_normr8  Úencoderrý   Ú	post_initr£   s     €rC   r)   zHubertModel.__init__-  sÍ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ!5°fÑ!=Ô!=ˆÔÝ"9¸&Ñ"AÔ"AˆÔð Ô  3Ò&Ð&¨&Ô*BÀSÒ*HÐ*HÝ%'¤\µ%´,¸vÔ?QÑ2RÔ2R×2[Ò2[Ñ2]Ô2]Ñ%^Ô%^ˆDÔ"àÔ&ð 	1Ý7¸Ñ?Ô?ˆDŒLˆLå(¨Ñ0Ô0ˆDŒLð 	�ŠÑÔÐÐÐrI   NrG   Úmask_time_indicesrª   c                 ó  — t          | j        dd¦  «        s|S |                     ¦   «         \  }}}|�#| j                             |j        ¦  «        ||<   n“| j        j        dk    rƒ| j        r|t          ||f| j        j        | j        j	        || j        j
        ¬¦  «        }t          j        ||j        t          j        ¬¦  «        }| j                             |j        ¦  «        ||<   | j        j        dk    r†| j        rt          ||f| j        j        | j        j        | j        j        ¬¦  «        }t          j        ||j        t          j        ¬¦  «        }|dd…df                              d|d¦  «        }d||<   |S )	z¢
        Masks extracted features along time axis and/or along feature axis according to
        [SpecAugment](https://huggingface.co/papers/1904.08779).
        Úapply_spec_augmentTNr   )rn  ro  rª   rp  )r  rY  )rn  ro  rp  rn   )r1   rA   r±   rC  r  rY  r–  r“   r�  Úmask_time_lengthÚmask_time_min_masksr²   r$  r  rÚ   r—  Úmask_feature_lengthÚmask_feature_min_masksÚexpand)r@   rG   rœ  rª   ra  rw  r,   Úmask_feature_indicess           rC   Ú_mask_hidden_stateszHubertModel._mask_hidden_states?  s—  € õ �t”{Ð$8¸$Ñ?Ô?ð 	!Ø Ð ð 4A×3EÒ3EÑ3GÔ3GÑ0ˆ
�O [àÐ(à/3Ô/E×/HÒ/HÈÔI\Ñ/]Ô/]ˆMÐ+Ñ,Ð,ØŒ[Ô'¨!Ò+Ð+°´Ð+Ý 5Ø˜_Ð-Øœ+Ô4Ø œKÔ8Ø-Øœ+Ô9ð!ñ !ô !Ðõ !&¤Ð->À}ÔG[ÕchÔcmÐ nÑ nÔ nÐØ/3Ô/E×/HÒ/HÈÔI\Ñ/]Ô/]ˆMÐ+Ñ,àŒ;Ô(¨1Ò,Ð,°´Ð,å#8Ø˜[Ð)Øœ+Ô7Ø œKÔ;Øœ+Ô<ð	$ñ $ô $Ð õ $)¤<Ð0DÈ]ÔMaÕinÔisÐ#tÑ#tÔ#tÐ Ø#7¸¸¸¸4¸Ô#@×#GÒ#GÈÈOÐ]_Ñ#`Ô#`Ð Ø23ˆMÐ.Ñ/àÐrI   r”   rÇ   r  r  rÈ   c                 óò  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|                      |¦  «        }|                     dd¦  «        }|�!|                      |j        d         |¦  «        }|                      |¦  «        }	|  	                    |	|¬¦  «        }	|  
                    |	||||¬¦  «        }
|
d         }	|s|	f|
dd…         z   S t          |	|
j        |
j        ¬¦  «        S )a1  
        mask_time_indices (`torch.BoolTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Indices to mask extracted features for contrastive loss. When in training mode, model learns to predict
            masked extracted features in *config.proj_codevector_dim* space.

        Example:

        ```python
        >>> from transformers import AutoProcessor, HubertModel
        >>> from datasets import load_dataset

        >>> processor = AutoProcessor.from_pretrained("facebook/hubert-large-ls960-ft")
        >>> model = HubertModel.from_pretrained("facebook/hubert-large-ls960-ft")


        >>> def map_to_array(example):
        ...     example["speech"] = example["audio"]["array"]
        ...     return example


        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.map(map_to_array)

        >>> input_values = processor(ds["speech"][0], return_tensors="pt").input_values  # Batch size 1
        >>> hidden_states = model(input_values).last_hidden_state
        ```Nr   r   )rœ  ©rª   rÇ   r  r  r   r  )rA   rÇ   r  r  r”  rE   rb  rÊ   r•  r¥  rš  r   rG   r  )r@   r”   rª   rœ  rÇ   r  r  r¬   Úextract_featuresrG   Úencoder_outputss              rC   rH   zHubertModel.forwardm  s@  € ðJ 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆà×1Ò1°,Ñ?Ô?ÐØ+×5Ò5°a¸Ñ;Ô;ÐàÐ%à!×DÒDÐEUÔE[Ð\]ÔE^Ð`nÑoÔoˆNà×/Ò/Ð0@ÑAÔAˆØ×0Ò0°ÐRcÐ0ÑdÔdˆàŸ,š,ØØ)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð (¨Ô*ˆàð 	:Ø!Ð# o°a°b°bÔ&9Ñ9Ð9åØ+Ø)Ô7Ø&Ô1ð
ñ 
ô 
ð 	
rI   r  ©NNNNN)rK   rL   rM   r   r)   r²   r1  rm  r¥  r   rÛ   rÚ   rÜ   r   rH   rN   rO   s   @rC   rI  rI  +  sF  ø€ € € € € ð˜|ð ð ð ð ð ð ð* 7;Ø26ð	,ð ,àÔ(ð,ð !Ô,¨tÑ3ð,ð Ô(¨4Ñ/ð	,ð ,ð ,ð ,ð\ ð /3Ø6:Ø)-Ø,0Ø#'ðE
ð E
à”l TÑ)ðE
ð œ tÑ+ðE
ð !Ô,¨tÑ3ð	E
ð
   $™;ðE
ð # T™kðE
ð ˜D‘[ðE
ð 
�Ñ	 ðE
ð E
ð E
ñ „^ðE
ð E
ð E
ð E
ð E
rI   rI  zn
    Hubert Model with a `language modeling` head on top for Connectionist Temporal Classification (CTC).
    )Úcustom_introc                   óÆ   ‡ — e Zd Zddedz  fˆ fd„Zd„ Z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	j
        dz  deez  fd„¦   «         Zˆ xZS )ÚHubertForCTCNÚtarget_langc                 óª  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        ¦  «        | _        || _        |j	        €t          d| j        › d�¦  «        ‚t          |d¦  «        r|j        r|j        n|j        }t	          j        ||j	        ¦  «        | _        |                      ¦   «          dS )a0  
        target_lang (`str`, *optional*):
            Language id of adapter weights. Adapter weights are stored in the format adapter.<lang>.safetensors or
            adapter.<lang>.bin. Only relevant when using an instance of [`HubertForCTC`] with adapters. Uses 'eng' by
            default.
        NzYou are trying to instantiate zõ with a configuration that does not define the vocabulary size of the language model head. Please instantiate the model as follows: `HubertForCTC.from_pretrained(..., vocab_size=vocab_size)`. or define `vocab_size` of your model's configuration.Úadd_adapter)r(   r)   rI  r?  r*   r    Úfinal_dropoutr¢   r®  Ú
vocab_sizer†   rB   r4   r°  Úoutput_hidden_sizer,   rž   Úlm_headr›  )r@   rA   r®  r³  rB   s       €rC   r)   zHubertForCTC.__init__¿  sÝ   ø€ õ 	‰Œ×Ò˜Ñ Ô Ð å! &Ñ)Ô)ˆŒÝ”z &Ô"6Ñ7Ô7ˆŒà&ˆÔàÔÐ$ÝðH°´ð Hð Hð Hñô ð õ *1°¸Ñ)GÔ)GÐvÈFÔL^ÐvˆFÔ%Ð%ÐdjÔdvð 	õ ”yÐ!3°VÔ5FÑGÔGˆŒð 	�ŠÑÔÐÐÐrI   c                 óT  — t          ¦   «         t          j        d¦  «        k    rdS | j        }|�)t	          | j        dd¦  «        €t          d|› d�¦  «        ‚|€2t	          | j        dd¦  «        �t                               d¦  «         dS |�|  	                    |d¬¦  «         dS dS )	a'  
        This method overwrites [`~PreTrainedModel.tie_weights`] so that adapter weights can be correctly loaded when
        passing `target_lang=...` to `from_pretrained(...)`.

        This method is **not** supposed to be called by the user and is prone to be changed in the future.
        ÚmetaNr(  zCannot pass `target_lang`: z- if `config.adapter_attn_dim` is not defined.z)By default `target_lang` is set to 'eng'.T)Ú
force_load)
r   r²   r  r®  r1   rA   r†   ÚloggerÚinfoÚload_adapter)r@   r¬   r®  s      rC   Útie_weightszHubertForCTC.tie_weightsÜ  sÃ   € õ 6Ñ7Ô7½5¼<ÈÑ;OÔ;OÒOÐOØˆFð Ô&ˆàÐ"¥w¨t¬{Ð<NÐPTÑ'UÔ'UÐ']ÝÐu¸;ÐuÐuÐuÑvÔvÐvØÐ ¥W¨T¬[Ð:LÈdÑ%SÔ%SÐ%_Ý�KŠKÐCÑDÔDÐDÐDÐDØÐ$Ø×Ò˜k°dÐÑ;Ô;Ð;Ð;Ð;ð %Ð$rI   c                 óB   — | j         j                             ¦   «          dS ©z¨
        Calling this function will disable the gradient computation for the feature encoder so that its parameter will
        not be updated during training.
        N©r?  r”  r‘   ©r@   s    rC   Úfreeze_feature_encoderz#HubertForCTC.freeze_feature_encoderô  ó!   € ð
 	ŒÔ%×8Ò8Ñ:Ô:Ð:Ð:Ð:rI   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS ©zÒ
        Calling this function will disable the gradient computation for the base model so that its parameters will not
        be updated during training. Only the classification head will be updated.
        FN©r?  r�   rŽ   r�   s     rC   Úfreeze_base_modelzHubertForCTC.freeze_base_modelû  ó6   € ð
 ”[×+Ò+Ñ-Ô-ð 	(ð 	(ˆEØ"'ˆEÔÐð	(ð 	(rI   r”   rª   rÇ   r  r  ÚlabelsrÈ   c           
      óp  — |�|n| j         j        }|�>|                     ¦   «         | j         j        k    rt	          d| j         j        › �¦  «        ‚|                      |||||¬¦  «        }|d         }	|                      |	¦  «        }	|                      |	¦  «        }
d}|��Z|�|nt          j	        |t          j
        ¬¦  «        }|                      |                     d¦  «        ¦  «                             t          j
        ¦  «        }|dk    }|                     d¦  «        }|                     |¦  «        }t          j                             |
dt          j        ¬¦  «                             dd¦  «        }t          j        j                             d	¬
¦  «        5  t          j                             ||||| j         j        | j         j        | j         j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |s|
f|t6          d…         z   }|�|f|z   n|S t9          ||
|j        |j        ¬¦  «        S )aà  
        labels (`torch.LongTensor` of shape `(batch_size, target_length)`, *optional*):
            Labels for connectionist temporal classification. Note that `target_length` has to be smaller or equal to
            the sequence length of the output logits. Indices are selected in `[-100, 0, ..., config.vocab_size - 1]`.
            All labels set to `-100` are ignored (masked), the loss is only computed for labels in `[0, ...,
            config.vocab_size - 1]`.
        Nz$Label values must be <= vocab_size: r§  r   rz  rn   )r&   rY  r   F)Úenabled)ÚblankÚ	reductionÚzero_infinity©ÚlossÚlogitsrG   r  )rA   r  rt  r²  r†   r?  r¢   r´  r²   Ú	ones_liker[  rV  rZ  r  Úmasked_selectr*   r´   Úlog_softmaxÚfloat32rE   ÚbackendsÚcudnnÚflagsÚctc_lossÚpad_token_idÚctc_loss_reductionÚctc_zero_infinityÚ_HIDDEN_STATES_START_POSITIONr   rG   r  )r@   r”   rª   rÇ   r  r  rÇ  r¬   rû   rG   rÏ  rÎ  rM  Úlabels_maskÚtarget_lengthsÚflattened_targetsÚ	log_probsÚoutputs                     rC   rH   zHubertForCTC.forward  s€  € ð$ &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ &§*¢*¡,¤,°$´+Ô2HÒ"HÐ"HÝÐ\ÀDÄKÔDZÐ\Ð\Ñ]Ô]Ð]à—+’+ØØ)Ø/Ø!5Ø#ð ñ 
ô 
ˆð   œ
ˆØŸš ]Ñ3Ô3ˆà—’˜mÑ,Ô,ˆàˆØÑð #1Ð"<��Å%Ä/ÐR^ÕfkÔfpÐBqÑBqÔBqð ð !×AÒAÀ.×BTÒBTÐUWÑBXÔBXÑYÔY×\Ò\Õ]bÔ]gÑhÔhˆMð ! Aš+ˆKØ(Ÿ_š_¨RÑ0Ô0ˆNØ &× 4Ò 4°[Ñ AÔ AÐõ œ×1Ò1°&¸bÍÌÐ1ÑVÔV×`Ò`ÐabÐdeÑfÔfˆIå”Ô%×+Ò+°EÐ+Ñ:Ô:ð 	ð 	Ý”}×-Ò-ØØ%Ø!Ø"Øœ+Ô2Ø"œkÔ<Ø"&¤+Ô"?ð .ñ ô �ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ð 	FØ�Y Õ)FÐ)GÐ)GÔ!HÑHˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØ˜f°GÔ4IÐV]ÔVhð
ñ 
ô 
ð 	
s   Æ AG1Ç1G5Ç8G5rd   rª  )rK   rL   rM   ræ   r)   r»  rÀ  rÅ  r   r²   rÛ   rÚ   rÜ   r   rH   rN   rO   s   @rC   r­  r­  ¹  s*  ø€ € € € € ðð ¨C°$©Jð ð ð ð ð ð ð:<ð <ð <ð0;ð ;ð ;ð(ð (ð (ð ð /3Ø)-Ø,0Ø#'Ø&*ðE
ð E
à”l TÑ)ðE
ð œ tÑ+ðE
ð   $™;ð	E
ð
 # T™kðE
ð ˜D‘[ðE
ð ”˜tÑ#ðE
ð 
�Ñ	ðE
ð E
ð E
ñ „^ðE
ð E
ð E
ð E
ð E
rI   r­  z•
    Hubert Model with a sequence classification head on top (a linear layer over the pooled output) for tasks like
    SUPERB Keyword Spotting.
    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	dz  de	dz  d	e	dz  d
ej        dz  de
ez  fd„¦   «         Zˆ xZS )rK  c                 óô  •— t          ¦   «                              |¦  «         t          |d¦  «        r|j        rt	          d¦  «        ‚t          |¦  «        | _        |j        dz   }|j        r.t          j
        t          j        |¦  «        |z  ¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S )Nr°  z]Sequence classification does not support the use of Hubert adapters (config.add_adapter=True)r   )r(   r)   r4   r°  r†   rI  r?  r  Úuse_weighted_layer_sumr*   r˜  r²   r„  rD  rž   r,   Úclassifier_proj_sizeÚ	projectorÚ
num_labelsÚ
classifierr›  )r@   rA   Ú
num_layersrB   s      €rC   r)   z(HubertForSequenceClassification.__init__S  sá   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å�6˜=Ñ)Ô)ð 	¨fÔ.@ð 	ÝØoñô ð õ " &Ñ)Ô)ˆŒØÔ-°Ñ1ˆ
ØÔ(ð 	SÝ!#¤­e¬j¸Ñ.DÔ.DÀzÑ.QÑ!RÔ!RˆDÔÝœ 6Ô#5°vÔ7RÑSÔSˆŒÝœ) FÔ$?ÀÔARÑSÔSˆŒð 	�ŠÑÔÐÐÐrI   c                 óB   — | j         j                             ¦   «          dS r½  r¾  r¿  s    rC   rÀ  z6HubertForSequenceClassification.freeze_feature_encoderd  rÁ  rI   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS rÃ  rÄ  r�   s     rC   rÅ  z1HubertForSequenceClassification.freeze_base_modelk  rÆ  rI   Nr”   rª   rÇ   r  r  rÇ  rÈ   c                 ód  — |�|n| j         j        }| j         j        rdn|}|                      |||||¬¦  «        }| j         j        rx|t                   }	t          j        |	d¬¦  «        }	t          j         	                    | j
        d¬¦  «        }
|	|
                     ddd¦  «        z                       d¬¦  «        }	n|d         }	|                      |	¦  «        }	|€|	                     d¬¦  «        }n�|                      |	j        d         |¦  «        }|                     d¦  «                             dd|	j        d         ¦  «        }d	|	| <   |	                     d¬¦  «        |                     d¬¦  «                             dd¦  «        z  }|                      |¦  «        }d}|�Kt)          ¦   «         } ||                     d| j         j        ¦  «        |                     d¦  «        ¦  «        }|s|f|t          d…         z   }|�|f|z   n|S t-          |||j        |j        ¬
¦  «        S )a
  
        input_values (`torch.FloatTensor` of shape `(batch_size, sequence_length)`):
            Float values of input raw speech waveform. Values can be obtained by loading a `.flac` or `.wav` audio file
            into an array of type `list[float]`, a `numpy.ndarray` or a `torch.Tensor`, *e.g.* via the torchcodec library
            (`pip install torchcodec`) or the soundfile library (`pip install soundfile`).
            To prepare the array into `input_values`, the [`AutoProcessor`] should be used for padding and conversion
            into a tensor of type `torch.FloatTensor`. See [`HubertProcessor.__call__`] for details.
        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).
        NTr§  r   r¯   rn   r   r   r¥   rÍ  )rA   r  rã  r?  rÛ  r²   Ústackr*   r´   rµ   rD  rË   rZ  rå  Úmeanrb  rÊ   r  r  rç  r   ræ  r   rG   r  )r@   r”   rª   rÇ   r  r  rÇ  r¬   rû   rG   Únorm_weightsÚpooled_outputÚpadding_maskÚexpand_padding_maskrÏ  rÎ  Úloss_fctrà  s                     rC   rH   z'HubertForSequenceClassification.forwards  sW  € ð0 &1Ð%<�k�kÀ$Ä+ÔBYˆØ'+¤{Ô'IÐc˜t˜tÐOcÐà—+’+ØØ)Ø/Ø!5Ø#ð ñ 
ô 
ˆð Œ;Ô-ð 	'Ø#Õ$AÔBˆMÝ!œK¨¸1Ð=Ñ=Ô=ˆMÝœ=×0Ò0°Ô1CÈÐ0ÑLÔLˆLØ*¨\×->Ò->¸rÀ1ÀaÑ-HÔ-HÑH×MÒMÐRSÐMÑTÔTˆMˆMà# AœJˆMàŸš }Ñ5Ô5ˆØÐ!Ø)×.Ò.°1Ð.Ñ5Ô5ˆMˆMà×BÒBÀ=ÔCVÐWXÔCYÐ[iÑjÔjˆLØ".×"8Ò"8¸Ñ"<Ô"<×"CÒ"CÀAÀqÈ-ÔJ]Ð^_ÔJ`Ñ"aÔ"aÐØ25ˆMÐ.Ð.Ñ/Ø)×-Ò-°!Ð-Ñ4Ô4°|×7GÒ7GÈAÐ7GÑ7NÔ7N×7SÒ7SÐTVÐXYÑ7ZÔ7ZÑZˆMà—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDàð 	FØ�Y Õ)FÐ)GÐ)GÔ!HÑHˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rI   rª  )rK   rL   rM   r)   rÀ  rÅ  r   r²   rÛ   rÚ   rÜ   r   rH   rN   rO   s   @rC   rK  rK  L  s  ø€ € € € € ðð ð ð ð ð";ð ;ð ;ð(ð (ð (ð ð /3Ø)-Ø,0Ø#'Ø&*ðC
ð C
à”l TÑ)ðC
ð œ tÑ+ðC
ð   $™;ð	C
ð
 # T™kðC
ð ˜D‘[ðC
ð ”˜tÑ#ðC
ð 
Ð)Ñ	)ðC
ð C
ð C
ñ „^ðC
ð C
ð C
ð C
ð C
rI   rK  )r­  rK  rI  r>  r“  rT   )GÚcollections.abcr   Únumpyr|  r²   Útorch.nnr*   r   Ú r   rF  Úactivationsr   Úintegrations.deepspeedr   Úintegrations.fsdpr	   Úmasking_utilsr
   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   r   Úprocessing_utilsr   r3   r   r   r   Úconfiguration_hubertr   Ú
get_loggerrK   r¸  ÚModuler   r=   rV   rg   rp   rx   r˜   rÛ   rÙ   r¹   r»   rÞ   rí   rý   r&  r3  r8  r>  rÜ   rØ   rm  Úndarrayr�  rI  rÛ  r­  rK  Ú__all__r   rI   rC   ú<module>r     s$  ðð* %Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YØ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rØ &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ð/ð /ð /ð /ð / B¤Iñ /ô /ð /ðdð ð ð ð ˜œñ ô ð ðð ð ð ð Ð!;ñ ô ð ð*ð ð ð ð Ð9ñ ô ð ð6ð ð ð ð Ð9ñ ô ð ð0#ð #ð #ð #ð #˜2œ9ñ #ô #ð #ðLð ð ð ð ˜bœiñ ô ð ð0 !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð8R/ð R/ð R/ð R/ð R/�b”iñ R/ô R/ð R/ðjð ð ð ð ˜œ	ñ ô ð ð0!ð !ð !ð !ð !Ð3ñ !ô !ð !ðHE
ð E
ð E
ð E
ð E
�B”Iñ E
ô E
ð E
ðPð ð ð ð ˜RœYñ ô ð ð2+ð +ð +ð +ð +Ð(Bñ +ô +ð +ð\I
ð I
ð I
ð I
ð I
 2¤9ñ I
ô I
ð I
ðX ð>ð >ð >ð >ð >˜Oñ >ô >ñ „ð>ðJ /3Øðtð tØ��c�Œ?ðtàðtð ðtð Ô$ tÑ+ð	tð
 ðtð „Zðtð tð tð tðn ðG
ð G
ð G
ð G
ð G
Ð'ñ G
ô G
ñ „ðG
ðT !"Ð ð €ððñ ô ð
K
ð K
ð K
ð K
ð K
Ð(ñ K
ô K
ñô ð
K
ð\ €ððñ ô ðe
ð e
ð e
ð e
ð e
Ð&;ñ e
ô e
ñô ðe
ðP fÐ
eÐ
e€€€rI   