ó
    ‡Ž¡jÚ-  ã                   ó¼  • S r SSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJrJrJrJrJr  SSKJr  Sr " S S\R<                  5      r " S S\5      r  " S S\5      r! " S S\R<                  5      r" " S S\5      r# " S S\5      r$\ " S S\5      5       r% " S S\\%5      r& " S S \5      r' " S! S"\5      r(/ S#Qr)g)$zPyTorch Hubert model.é    Né   )Úinitialization)ÚACT2FN)Úis_deepspeed_zero3_enabled)ÚBaseModelOutput)ÚPreTrainedModel)Úauto_docstring)ÚOutputRecorderé   )ÚWav2Vec2EncoderÚWav2Vec2EncoderStableLayerNormÚWav2Vec2FeatureEncoderÚWav2Vec2ForCTCÚ!Wav2Vec2ForSequenceClassificationÚWav2Vec2ModelÚWav2Vec2SamePadLayeré   )ÚHubertConfigc                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚHubertPositionalConvEmbeddingé)   c                 ó4  >• [         TU ]  5         [        R                  " UR                  UR                  UR
                  UR
                  S-  UR                  S9U l        S U l        [        USS5      (       a'  [        R                  " UR                  5      U l        GO³[        R                  R                  n[        [        R                  R                  S5      (       a$  [        R                  R                  R                  n[        5       (       Ga%  SS KnUR"                  R%                  U R                  R&                  SS9   U" U R                  SSS	9U l        S S S 5        [        U R                  S
5      (       aU  U R                  R                  R&                  R(                  nU R                  R                  R&                  R*                  nO,U R                  R,                  nU R                  R.                  nUR"                  R1                  X5        UR"                  R1                  X5        OU" U R                  SSS	9U l        [3        UR
                  5      U l        [6        UR8                     U l        g ! , (       d  f       GN,= f)Nr   )Ú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   r1   r6   r7   Ú	__class__s         €Ú·C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/hubert/modular_hubert.pyr%   Ú&HubertPositionalConvEmbedding.__init__*   sÎ  ø€ Ü‰ÑÔÜ—I’IØ×ÑØ×ÑØ×6Ñ6Ø×2Ñ2°aÑ7Ø×7Ñ7ñ
ˆŒ	ð ˆŒÜ�6Ð0°%×8Ñ8Ü Ÿnšn¨V×-?Ñ-?Ó@ˆDŽOäŸ(™(×.Ñ.ˆKÜ”r—x‘x×0Ñ0°-×@Ñ@Ü Ÿh™h×7Ñ7×CÑC�ä)×+Ò+Û à—^‘^×6Ñ6°t·y±y×7GÑ7GÐWXÐ6ÒYÙ +¨D¯I©I¸HÈ!Ñ L�D”I÷ Zä˜4Ÿ9™9Ð&8×9Ñ9Ø#Ÿy™y×9Ñ9×@Ñ@×JÑJ�HØ#Ÿy™y×9Ñ9×@Ñ@×JÑJ‘Hà#Ÿy™y×1Ñ1�HØ#Ÿy™y×1Ñ1�HØ—‘×:Ñ:¸4ÔJØ—‘×:Ñ:¸4ÕJá'¨¯	©	¸ÀaÑH�”	ä)¨&×*HÑ*HÓIˆŒÜ  ×!?Ñ!?Ñ@ˆ�÷ ZÖYús   ÅJÊ
Jc                 óð   • UR                  SS5      nU R                  b  U R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nUR                  SS5      nU$ )Nr   r   )Ú	transposer,   r+   r   r;   ©r<   Úhidden_statess     r?   ÚforwardÚ%HubertPositionalConvEmbedding.forwardO   sn   € Ø%×/Ñ/°°1Ó5ˆØ�?‰?Ñ&Ø ŸO™O¨MÓ:ˆMØŸ	™	 -Ó0ˆØŸ™ ]Ó3ˆØŸ™¨Ó6ˆà%×/Ñ/°°1Ó5ˆØÐó    )r;   r,   r+   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   rE   Ú__static_attributes__Ú__classcell__©r>   s   @r?   r   r   )   s   ø† õ#A÷J	ð 	rG   r   c                   ó   • \ rS rSrSrg)r9   é[   © N©rI   rJ   rK   rL   rM   rR   rG   r?   r9   r9   [   ó   † ÚrG   r9   c                   ó   • \ rS rSrSrg)ÚHubertFeatureEncoderé_   rR   NrS   rR   rG   r?   rV   rV   _   rT   rG   rV   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚHubertFeatureProjectionéc   c                 óx  >• [         TU ]  5         UR                  U l        U R                  (       a1  [        R                  " UR
                  S   UR                  S9U l        [        R                  " UR
                  S   UR                  5      U l
        [        R                  " UR                  5      U l        g )Néÿÿÿÿ)Úeps)r$   r%   Úfeat_proj_layer_normr&   Ú	LayerNormÚconv_dimÚlayer_norm_epsÚ
layer_normÚLinearr(   Ú
projectionÚDropoutÚfeat_proj_dropoutÚdropout©r<   r=   r>   s     €r?   r%   Ú HubertFeatureProjection.__init__d   s}   ø€ Ü‰ÑÔØ$*×$?Ñ$?ˆÔ!Ø×$×$Ü Ÿlšl¨6¯?©?¸2Ñ+>ÀF×DYÑDYÑZˆDŒOÜŸ)š) F§O¡O°BÑ$7¸×9KÑ9KÓLˆŒÜ—z’z &×":Ñ":Ó;ˆ�rG   c                 óŽ   • U R                   (       a  U R                  U5      nU R                  U5      nU R                  U5      nU$ )N)r^   rb   rd   rg   rC   s     r?   rE   ÚHubertFeatureProjection.forwardl   s;   € à×$×$Ø ŸO™O¨MÓ:ˆMØŸ™¨Ó6ˆØŸ™ ]Ó3ˆØÐrG   )rg   r^   rb   rd   rH   rO   s   @r?   rY   rY   c   s   ø† õ<÷ð rG   rY   c                   ó   • \ rS rSrSrg)ÚHubertEncoderéu   rR   NrS   rR   rG   r?   rm   rm   u   rT   rG   rm   c                   ó   • \ rS rSrSrg)ÚHubertEncoderStableLayerNorméy   rR   NrS   rR   rG   r?   rp   rp   y   rT   rG   rp   c                   óè   ^ • \ rS rSr% \\S'   SrSrSrSS/r	Sr
SrSrSr\\/\" \S	S
S9S.r\R(                  " 5       U 4S j5       rS\R,                  \-  4S jrS\S\R,                  4S jrSrU =r$ )ÚHubertPreTrainedModelé}   r=   ÚhubertÚinput_valuesÚaudioÚHubertEncoderLayerÚParametrizedConv1dTr   Úencoder)ÚindexÚ
layer_name)rD   Ú
attentionsc                 óV  >• [         TU ]  U5        [        U[        R                  5      (       Ga,  [        5       (       aÎ  SSKn[        US5      (       ak  [        US5      (       aZ  UR                  R                  UR                  UR                  /SS9   [        R                  " UR                  5        SSS5        OnUR                  R                  UR                  SS9   [        R                  " UR                  5        SSS5        O [        R                  " UR                  5        UR                  b!  [        R                   " UR                  5        gg[        U["        5      (       a3  [        US5      (       a!  [        R$                  " UR&                  5        gg[        U[(        5      (       aN  [        US5      (       a<  [        R*                  " UR,                  SU R.                  R0                  S	-   -  5        ggg! , (       d  f       Né= f! , (       d  f       Nú= f)
zInitialize the weightsr   Nr7   r6   r   Úmasked_spec_embedÚlayer_weightsg      ð?r   )r$   Ú_init_weightsÚ
isinstancer&   r'   r   r1   r0   r2   r3   r7   r6   ÚinitÚkaiming_normal_r    ÚbiasÚzeros_ÚHubertModelÚuniform_r   ÚHubertForSequenceClassificationÚ	constant_r€   r=   Únum_hidden_layers)r<   Úmoduler1   r>   s      €r?   r�   Ú#HubertPreTrainedModel._init_weights�   s‰  ø€ ô 	‰Ñ˜fÔ%Ü�fœbŸi™i×(Ò(Ü)×+Ñ+Û ä˜6 :×.Ñ.´7¸6À:×3NÑ3NØ"Ÿ™×:Ñ:¸F¿O¹OÈVÏ_É_Ð;]ÐmnÐ:ÒoÜ×,Ò,¨V¯]©]Ô;÷ pÐoð #Ÿ™×:Ñ:¸6¿=¹=ÐXYÐ:ÒZÜ×,Ò,¨V¯]©]Ô;÷ [ÐZô ×$Ò$ V§]¡]Ô3à�{‰{Ñ&Ü—’˜FŸK™KÕ(ð 'ä˜¤×,Ñ,Ü�vÐ2×3Ñ3Ü—’˜f×6Ñ6Õ7ð 4ä˜Ô ?×@Ñ@Ü�v˜×/Ñ/Ü—’˜v×3Ñ3°S¸D¿K¹K×<YÑ<YÐ\]Ñ<]Ñ5^Õ_ð 0ð A÷ pÕoú÷ [ÕZús   Â!H	Ã$!HÈ	
HÈ
H(Úinput_lengthsc                 ó˜   • S n[        U R                  R                  U R                  R                  5       H  u  p4U" XU5      nM     U$ )z8
Computes the output length of the convolutional layers
c                 ó8   • [         R                  " X-
  USS9S-   $ )NÚfloor)Úrounding_moder   )ÚtorchÚdiv)Úinput_lengthr   Ústrides      r?   Ú_conv_out_lengthÚPHubertPreTrainedModel._get_feat_extract_output_lengths.<locals>._conv_out_length¬   s    € ô —9’9˜\Ñ7¸ÈwÑWÐZ[Ñ[Ð[rG   )Úzipr=   Úconv_kernelÚconv_stride)r<   rŽ   r—   r   r–   s        r?   Ú _get_feat_extract_output_lengthsÚ6HubertPreTrainedModel._get_feat_extract_output_lengths§   sG   € ò
	\ô
 $' t§{¡{×'>Ñ'>ÀÇÁ×@WÑ@WÖ#XÑˆKÙ,¨]ÈÓPŠMñ $Yð ÐrG   Úfeature_vector_lengthÚattention_maskc                 óÚ  • U R                  UR                  S5      5      R                  [        R                  5      nUR
                  S   n[        R                  " XA4UR                  UR                  S9nSU[        R                  " UR
                  S   UR                  S9US-
  4'   UR                  S/5      R                  S5      R                  S/5      R                  5       nU$ )Nr\   r   )ÚdtypeÚdevicer   )r¢   )rœ   ÚsumÚtor“   ÚlongÚshapeÚzerosr¡   r¢   ÚarangeÚflipÚcumsumÚbool)r<   rž   rŸ   Úoutput_lengthsÚ
batch_sizes        r?   Ú"_get_feature_vector_attention_maskÚ8HubertPreTrainedModel._get_feature_vector_attention_mask¶   sÔ   € Ø×>Ñ>¸~×?QÑ?QÐRTÓ?UÓV×YÑYÔZ_×ZdÑZdÓeˆØ#×)Ñ)¨!Ñ,ˆ
äŸšØÐ/°~×7KÑ7KÐTb×TiÑTiñ
ˆð uvˆœŸš ^×%9Ñ%9¸!Ñ%<À^×EZÑEZÑ[Ð]kÐnoÑ]oÐpÑqØ'×,Ñ,¨b¨TÓ2×9Ñ9¸"Ó=×BÑBÀBÀ4ÓH×MÑMÓOˆØÐrG   rR   )rI   rJ   rK   rL   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnrx   Ú!HubertEncoderLayerStableLayerNormr
   ÚHubertAttentionÚ_can_record_outputsr“   Úno_gradr�   Ú
LongTensorÚintrœ   r®   rM   rN   rO   s   @r?   rs   rs   }   s­   ø‡ àÓØ ÐØ$€OØÐØ-Ð/CÐDÐØ&*Ð#ØÐØ€NØÐà,Ð.OÐPÙ$ _¸AÈ)ÑTñÐð
 ‡]‚]ƒ_ô`ó ð`ð2¸e×>NÑ>NÐQTÑ>Tô ð
Èð 
Ð]b×]mÑ]m÷ 
ò 
rG   rs   c                   óÐ   ^ • \ rS rSrS\4U 4S jjrS r     SS\R                  S-  S\R                  S-  S\R                  S-  S	\
S-  S
\
S-  S\
S-  S\\-  4S jjrSrU =r$ )r‡   éÃ   r=   c                 óÆ  >• [         TU ]  U5        Xl        [        U5      U l        [        U5      U l        UR                  S:”  d  UR                  S:”  aG  [        R                  " [        R                  " UR                  5      R                  5       5      U l        UR                   (       a  [#        U5      U l        O['        U5      U l        U R)                  5         U ?g )Ng        )r$   r%   r=   rV   Úfeature_extractorrY   Úfeature_projectionÚmask_time_probÚmask_feature_probr&   Ú	Parameterr“   ÚTensorr(   rˆ   r   Údo_stable_layer_normrp   rz   rm   Ú	post_initÚadapterrh   s     €r?   r%   ÚHubertModel.__init__Ä   s¥   ø€ Ü‰Ñ˜Ô ØŒÜ!5°fÓ!=ˆÔÜ"9¸&Ó"AˆÔà× Ñ  3Ó&¨&×*BÑ*BÀSÓ*HÜ%'§\¢\´%·,²,¸v×?QÑ?QÓ2R×2[Ñ2[Ó2]Ó%^ˆDÔ"à×&×&Ü7¸Ó?ˆD�Lä(¨Ó0ˆDŒLð 	�‰Ôà‰LrG   c                 ó   • [        S5      e)NzNot needed for Hubert)ÚAttributeError)r<   s    r?   Úfreeze_feature_encoderÚ"HubertModel.freeze_feature_encoder×   s   € ÜÐ4Ó5Ð5rG   Nrv   rŸ   Úmask_time_indicesÚoutput_attentionsÚoutput_hidden_statesÚreturn_dictÚreturnc                 óü  • Ub  UOU R                   R                  nUb  UOU R                   R                  nUb  UOU R                   R                  nU R	                  U5      nUR                  SS5      nUb  U R                  UR                  S   U5      nU R                  U5      n	U R                  X“S9n	U R                  U	UUUUS9n
U
S   n	U(       d	  U	4U
SS -   $ [        U	U
R                  U
R                  S9$ )a©  
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   )Úlast_hidden_staterD   r}   )r=   rÑ   rÒ   rÓ   rÂ   rB   r®   r¦   rÃ   Ú_mask_hidden_statesrz   r   rD   r}   )r<   rv   rŸ   rÐ   rÑ   rÒ   rÓ   ÚkwargsÚextract_featuresrD   Úencoder_outputss              r?   rE   ÚHubertModel.forwardÚ   s)  € ðH 2CÑ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ñ$DÑ È$Ï+É+×JjÑJjð 	ð &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆà×1Ñ1°,Ó?ÐØ+×5Ñ5°a¸Ó;ÐàÑ%à!×DÑDÐEU×E[ÑE[Ð\]ÑE^Ð`nÓoˆNà×/Ñ/Ð0@ÓAˆØ×0Ñ0°Ð0ÐdˆàŸ,™,ØØ)Ø/Ø!5Ø#ð 'ð 
ˆð (¨Ñ*ˆæØ!Ð# o°a°bÐ&9Ñ9Ð9äØ+Ø)×7Ñ7Ø&×1Ñ1ñ
ð 	
rG   )r=   rz   rÂ   rÃ   r   )NNNNN)rI   rJ   rK   rL   r   r%   rÎ   r“   rÇ   ÚFloatTensorr«   Útupler   rE   rM   rN   rO   s   @r?   r‡   r‡   Ã   sª   ø† ð˜|÷ ò&6ð /3Ø6:Ø)-Ø,0Ø#'ñE
à—l‘l TÑ)ðE
ð Ÿ™ tÑ+ðE
ð !×,Ñ,¨tÑ3ð	E
ð
   $™;ðE
ð # T™kðE
ð ˜D‘[ðE
ð 
�Ñ	 ÷E
ó E
rG   r‡   c                   ó   • \ rS rSrSrg)ÚHubertForCTCi"  rR   NrS   rR   rG   r?   rß   rß   "  rT   rG   rß   c                   ó   • \ rS rSrSrg)r‰   i&  rR   NrS   rR   rG   r?   r‰   r‰   &  rT   rG   r‰   )rß   r‰   r‡   rs   )*Ú__doc__r“   Útorch.nnr&   Ú r   rƒ   Úactivationsr   Úintegrations.deepspeedr   Úmodeling_outputsr   Úmodeling_utilsr   r/   r	   Úutils.output_capturingr
   Úwav2vec2.modeling_wav2vec2r   r   r   r   r   r   r   Úconfiguration_hubertr   Ú_HIDDEN_STATES_START_POSITIONÚModuler   r9   rV   rY   rm   rp   rs   r‡   rß   r‰   Ú__all__rR   rG   r?   Ú<module>rî      sç   ðñ ã Ý å &Ý !Ý @Ý /Ý -Ý #Ý 4÷÷ ñ õ /ð !"Ð ô/ B§I¡Iô /ôd	Ð-ô 	ô	Ð1ô 	ô˜bŸi™iô ô$	�Oô 	ô	Ð#Aô 	ð ôB˜Oó Bó ðBôJ\
�-Ð!6ô \
ô~	�>ô 	ô	Ð&Gô 	ò f�rG   