

import functools
import operator

from ...configuration_utils import PretrainedConfig
from ...utils import logging


_UpperCAmelCase						:  int									=			logging.get_logger(__name__)

_UpperCAmelCase						:  Tuple									=			{
    """microsoft/wavlm-base""": """https://huggingface.co/microsoft/wavlm-base/resolve/main/config.json""",
    # See all WavLM models at https://huggingface.co/models?filter=wavlm
}







class 					lowercase							(			lowercase_     ):
				__SCREAMING_SNAKE_CASE   :					Dict			     =     '''wavlm'''




				def __init__(   self ,  snake_case=32 ,  snake_case=768 ,  snake_case=12 ,  snake_case=12 ,  snake_case=3072 ,  snake_case="gelu" ,  snake_case=0.1 ,  snake_case=0.1 ,  snake_case=0.1 ,  snake_case=0.0 ,  snake_case=0.1 ,  snake_case=0.1 ,  snake_case=0.02 ,  snake_case=1e-5 ,  snake_case="group" ,  snake_case="gelu" ,  snake_case=(512, 512, 512, 512, 512, 512, 512) ,  snake_case=(5, 2, 2, 2, 2, 2, 2) ,  snake_case=(10, 3, 3, 3, 3, 2, 2) ,  snake_case=False ,  snake_case=128 ,  snake_case=16 ,  snake_case=320 ,  snake_case=800 ,  snake_case=False ,  snake_case=True ,  snake_case=0.05 ,  snake_case=10 ,  snake_case=2 ,  snake_case=0.0 ,  snake_case=10 ,  snake_case=320 ,  snake_case=2 ,  snake_case=0.1 ,  snake_case=100 ,  snake_case=256 ,  snake_case=256 ,  snake_case=0.1 ,  snake_case="mean" ,  snake_case=False ,  snake_case=False ,  snake_case=256 ,  snake_case=(512, 512, 512, 512, 1500) ,  snake_case=(5, 3, 3, 1, 1) ,  snake_case=(1, 2, 3, 1, 1) ,  snake_case=512 ,  snake_case=80 ,  snake_case=0 ,  snake_case=1 ,  snake_case=2 ,  snake_case=False ,  snake_case=3 ,  snake_case=2 ,  snake_case=3 ,  snake_case=None ,  **snake_case ,  ):
											super().__init__(**snake_case ,  pad_token_id=snake_case ,  bos_token_id=snake_case ,  eos_token_id=snake_case			)
											snake_case_     							=       hidden_size
											snake_case_     							=       feat_extract_norm
											snake_case_     							=       feat_extract_activation
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       conv_bias
											snake_case_     							=       num_buckets
											snake_case_     							=       max_bucket_distance
											snake_case_     							=       num_conv_pos_embeddings
											snake_case_     							=       num_conv_pos_embedding_groups
											snake_case_     							=       len(self.conv_dim			)
											snake_case_     							=       num_hidden_layers
											snake_case_     							=       intermediate_size
											snake_case_     							=       hidden_act
											snake_case_     							=       num_attention_heads
											snake_case_     							=       hidden_dropout
											snake_case_     							=       attention_dropout
											snake_case_     							=       activation_dropout
											snake_case_     							=       feat_proj_dropout
											snake_case_     							=       final_dropout
											snake_case_     							=       layerdrop
											snake_case_     							=       layer_norm_eps
											snake_case_     							=       initializer_range
											snake_case_     							=       num_ctc_classes
											snake_case_     							=       vocab_size
											snake_case_     							=       do_stable_layer_norm
											snake_case_     							=       use_weighted_layer_sum
											snake_case_     							=       classifier_proj_size

											if (
											    (len(self.conv_stride			) != self.num_feat_extract_layers)
											    or (len(self.conv_kernel			) != self.num_feat_extract_layers)
											    or (len(self.conv_dim			) != self.num_feat_extract_layers)
											):
																		raise ValueError(
																		    'Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =='
																		    ' `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ='
																		    F''' {len(self.conv_dim			)}`, `len(config.conv_stride) = {len(self.conv_stride			)}`,'''
																		    F''' `len(config.conv_kernel) = {len(self.conv_kernel			)}`.'''			)

											# fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
											snake_case_     							=       apply_spec_augment
											snake_case_     							=       mask_time_prob
											snake_case_     							=       mask_time_length
											snake_case_     							=       mask_time_min_masks
											snake_case_     							=       mask_feature_prob
											snake_case_     							=       mask_feature_length

											# parameters for pretraining with codevector quantized representations
											snake_case_     							=       num_codevectors_per_group
											snake_case_     							=       num_codevector_groups
											snake_case_     							=       contrastive_logits_temperature
											snake_case_     							=       num_negatives
											snake_case_     							=       codevector_dim
											snake_case_     							=       proj_codevector_dim
											snake_case_     							=       diversity_loss_weight

											# ctc loss
											snake_case_     							=       ctc_loss_reduction
											snake_case_     							=       ctc_zero_infinity

											# adapter
											snake_case_     							=       add_adapter
											snake_case_     							=       adapter_kernel_size
											snake_case_     							=       adapter_stride
											snake_case_     							=       num_adapter_layers
											snake_case_     							=       output_hidden_size or hidden_size

											# SequenceClassification-specific parameter. Feel free to ignore for other classes.
											snake_case_     							=       classifier_proj_size

											# XVector-specific parameters. Feel free to ignore for other classes.
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       list(snake_case			)
											snake_case_     							=       xvector_output_dim




				@property
				def        a				(   self			):
											return functools.reduce(operator.mul ,  self.conv_stride ,  1			)







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


_UpperCAmelCase						:  Tuple									=			{
    """configuration_m2m_100""": ["""M2M_100_PRETRAINED_CONFIG_ARCHIVE_MAP""", """M2M100Config""", """M2M100OnnxConfig"""],
    """tokenization_m2m_100""": ["""M2M100Tokenizer"""],
}


try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					_UpperCAmelCase						:  Tuple									=			[
					    """M2M_100_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """M2M100ForConditionalGeneration""",
					    """M2M100Model""",
					    """M2M100PreTrainedModel""",
					]


if TYPE_CHECKING:
					from .configuration_mam_aaa import M2M_100_PRETRAINED_CONFIG_ARCHIVE_MAP, MaMaaaConfig, MaMaaaOnnxConfig
					from .tokenization_mam_aaa import MaMaaaTokenizer

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_mam_aaa import (
										    M2M_100_PRETRAINED_MODEL_ARCHIVE_LIST,
										    MaMaaaForConditionalGeneration,
										    MaMaaaModel,
										    MaMaaaPreTrainedModel,
										)


else:
					import sys

					_UpperCAmelCase						:  Any									=			_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)




