
# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import os

from accelerate.test_utils import execute_subprocess_async



def      __lowerCAmelCase						(							UpperCAmelCase__				:      Optional[int]=None       )  ->    List[Any]:
							if subparsers is not None:
														lowerCamelCase_							  =					subparsers.add_parser("""test"""       )
							else:
														lowerCamelCase_							  =					argparse.ArgumentParser("""Accelerate test command"""       )

							parser.add_argument(
							    """--config_file"""			,				default=UpperCAmelCase__			,				help=(
							        """The path to use to store the config file. Will default to a file named default_config.yaml in the cache """
							        """location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have """
							        """such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed """
							        """with 'huggingface'."""
							    )			,				)

							if subparsers is not None:
														parser.set_defaults(func=UpperCAmelCase__       )
							return parser



def      __lowerCAmelCase						(							UpperCAmelCase__				:      Dict       )  ->    str:
							lowerCamelCase_							  =					os.path.sep.join(__file__.split(os.path.sep       )[:-2] + ["""test_utils""", """scripts""", """test_script.py"""]       )

							if args.config_file is None:
														lowerCamelCase_							  =					script_name
							else:
														lowerCamelCase_							  =					F'''--config_file={args.config_file} {script_name}'''

							lowerCamelCase_							  =					["""accelerate-launch"""] + test_args.split()
							lowerCamelCase_							  =					execute_subprocess_async(UpperCAmelCase__			,				env=os.environ.copy()       )
							if result.returncode == 0:
														print("""Test is a success! You are ready for your distributed training!"""       )



def      __lowerCAmelCase						(							)  ->    Any:
							lowerCamelCase_							  =					test_command_parser()
							lowerCamelCase_							  =					parser.parse_args()
							test_command(UpperCAmelCase__       )


if __name__ == "__main__":
		main()







import functools
import operator

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


lowercase        =  logging.get_logger(__name__)

lowercase        =  {
    '''facebook/wav2vec2-base-960h''': '''https://huggingface.co/facebook/wav2vec2-base-960h/resolve/main/config.json''',
    # See all Wav2Vec2 models at https://huggingface.co/models?filter=wav2vec2
}





class       __A(				UpperCAmelCase       ):
					SCREAMING_SNAKE_CASE			    =    '''wav2vec2'''

					def __init__(	self					:     Tuple   ,					__UpperCamelCase					:     Optional[int]=3_2   ,					__UpperCamelCase					:     List[str]=7_6_8   ,					__UpperCamelCase					:     Tuple=1_2   ,					__UpperCamelCase					:     str=1_2   ,					__UpperCamelCase					:     Any=3_0_7_2   ,					__UpperCamelCase					:     Tuple="gelu"   ,					__UpperCamelCase					:     Tuple=0.1   ,					__UpperCamelCase					:     Any=0.1   ,					__UpperCamelCase					:     List[str]=0.1   ,					__UpperCamelCase					:     List[Any]=0.0   ,					__UpperCamelCase					:     str=0.0   ,					__UpperCamelCase					:     str=0.1   ,					__UpperCamelCase					:     List[Any]=0.1   ,					__UpperCamelCase					:     Dict=0.02   ,					__UpperCamelCase					:     int=1E-5   ,					__UpperCamelCase					:     Dict="group"   ,					__UpperCamelCase					:     Tuple="gelu"   ,					__UpperCamelCase					:     Optional[int]=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2)   ,					__UpperCamelCase					:     Union[str, Any]=(5, 2, 2, 2, 2, 2, 2)   ,					__UpperCamelCase					:     int=(1_0, 3, 3, 3, 3, 2, 2)   ,					__UpperCamelCase					:     List[Any]=False   ,					__UpperCamelCase					:     Tuple=1_2_8   ,					__UpperCamelCase					:     Any=1_6   ,					__UpperCamelCase					:     List[str]=False   ,					__UpperCamelCase					:     List[str]=True   ,					__UpperCamelCase					:     Dict=0.05   ,					__UpperCamelCase					:     Union[str, Any]=1_0   ,					__UpperCamelCase					:     int=2   ,					__UpperCamelCase					:     List[Any]=0.0   ,					__UpperCamelCase					:     List[Any]=1_0   ,					__UpperCamelCase					:     List[str]=0   ,					__UpperCamelCase					:     Optional[Any]=3_2_0   ,					__UpperCamelCase					:     Optional[int]=2   ,					__UpperCamelCase					:     List[Any]=0.1   ,					__UpperCamelCase					:     int=1_0_0   ,					__UpperCamelCase					:     int=2_5_6   ,					__UpperCamelCase					:     str=2_5_6   ,					__UpperCamelCase					:     Dict=0.1   ,					__UpperCamelCase					:     Union[str, Any]="sum"   ,					__UpperCamelCase					:     Optional[int]=False   ,					__UpperCamelCase					:     Optional[int]=False   ,					__UpperCamelCase					:     Dict=2_5_6   ,					__UpperCamelCase					:     List[Any]=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 1_5_0_0)   ,					__UpperCamelCase					:     int=(5, 3, 3, 1, 1)   ,					__UpperCamelCase					:     Optional[Any]=(1, 2, 3, 1, 1)   ,					__UpperCamelCase					:     Dict=5_1_2   ,					__UpperCamelCase					:     Any=0   ,					__UpperCamelCase					:     Union[str, Any]=1   ,					__UpperCamelCase					:     List[str]=2   ,					__UpperCamelCase					:     List[str]=False   ,					__UpperCamelCase					:     int=3   ,					__UpperCamelCase					:     Dict=2   ,					__UpperCamelCase					:     Optional[Any]=3   ,					__UpperCamelCase					:     Optional[int]=None   ,					__UpperCamelCase					:     Tuple=None   ,					**__UpperCamelCase					:     Tuple   ,					):
												super().__init__(**__UpperCamelCase   ,					pad_token_id=__UpperCamelCase   ,					bos_token_id=__UpperCamelCase   ,					eos_token_id=__UpperCamelCase   )
												lowerCamelCase_							  =					hidden_size
												lowerCamelCase_							  =					feat_extract_norm
												lowerCamelCase_							  =					feat_extract_activation
												lowerCamelCase_							  =					list(__UpperCamelCase   )
												lowerCamelCase_							  =					list(__UpperCamelCase   )
												lowerCamelCase_							  =					list(__UpperCamelCase   )
												lowerCamelCase_							  =					conv_bias
												lowerCamelCase_							  =					num_conv_pos_embeddings
												lowerCamelCase_							  =					num_conv_pos_embedding_groups
												lowerCamelCase_							  =					len(self.conv_dim   )
												lowerCamelCase_							  =					num_hidden_layers
												lowerCamelCase_							  =					intermediate_size
												lowerCamelCase_							  =					hidden_act
												lowerCamelCase_							  =					num_attention_heads
												lowerCamelCase_							  =					hidden_dropout
												lowerCamelCase_							  =					attention_dropout
												lowerCamelCase_							  =					activation_dropout
												lowerCamelCase_							  =					feat_proj_dropout
												lowerCamelCase_							  =					final_dropout
												lowerCamelCase_							  =					layerdrop
												lowerCamelCase_							  =					layer_norm_eps
												lowerCamelCase_							  =					initializer_range
												lowerCamelCase_							  =					vocab_size
												lowerCamelCase_							  =					do_stable_layer_norm
												lowerCamelCase_							  =					use_weighted_layer_sum

												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
												lowerCamelCase_							  =					apply_spec_augment
												lowerCamelCase_							  =					mask_time_prob
												lowerCamelCase_							  =					mask_time_length
												lowerCamelCase_							  =					mask_time_min_masks
												lowerCamelCase_							  =					mask_feature_prob
												lowerCamelCase_							  =					mask_feature_length
												lowerCamelCase_							  =					mask_feature_min_masks

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

												# ctc loss
												lowerCamelCase_							  =					ctc_loss_reduction
												lowerCamelCase_							  =					ctc_zero_infinity

												# adapter
												lowerCamelCase_							  =					add_adapter
												lowerCamelCase_							  =					adapter_kernel_size
												lowerCamelCase_							  =					adapter_stride
												lowerCamelCase_							  =					num_adapter_layers
												lowerCamelCase_							  =					output_hidden_size or hidden_size
												lowerCamelCase_							  =					adapter_attn_dim

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

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



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





