



from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


UpperCAmelCase_									=							logging.get_logger(__name__)

UpperCAmelCase_									=							{
    "sail/poolformer_s12": "https://huggingface.co/sail/poolformer_s12/resolve/main/config.json",
    # See all PoolFormer models at https://huggingface.co/models?filter=poolformer
}





class 		UpperCAmelCase						(						snake_case_				):

   '''simple docstring'''





   SCREAMING_SNAKE_CASE__							=     '''poolformer'''





   def __init__(	self       ,     _lowerCAmelCase=3       ,     _lowerCAmelCase=16       ,     _lowerCAmelCase=16       ,     _lowerCAmelCase=3       ,     _lowerCAmelCase=4.0       ,     _lowerCAmelCase=[2, 2, 6, 2]       ,     _lowerCAmelCase=[64, 128, 320, 512]       ,     _lowerCAmelCase=[7, 3, 3, 3]       ,     _lowerCAmelCase=[4, 2, 2, 2]       ,     _lowerCAmelCase=[2, 1, 1, 1]       ,     _lowerCAmelCase=4       ,     _lowerCAmelCase=0.0       ,     _lowerCAmelCase="gelu"       ,     _lowerCAmelCase=True       ,     _lowerCAmelCase=1E-5       ,     _lowerCAmelCase=0.02       ,     **_lowerCAmelCase       ,     ):
         _lowerCAmelCase 			=  num_channels
         _lowerCAmelCase 			=  patch_size
         _lowerCAmelCase 			=  stride
         _lowerCAmelCase 			=  padding
         _lowerCAmelCase 			=  pool_size
         _lowerCAmelCase 			=  hidden_sizes
         _lowerCAmelCase 			=  mlp_ratio
         _lowerCAmelCase 			=  depths
         _lowerCAmelCase 			=  patch_sizes
         _lowerCAmelCase 			=  strides
         _lowerCAmelCase 			=  num_encoder_blocks
         _lowerCAmelCase 			=  drop_path_rate
         _lowerCAmelCase 			=  hidden_act
         _lowerCAmelCase 			=  use_layer_scale
         _lowerCAmelCase 			=  layer_scale_init_value
         _lowerCAmelCase 			=  initializer_range
         super().__init__(**_lowerCAmelCase			)






class 		UpperCAmelCase						(						snake_case_				):

   '''simple docstring'''





   SCREAMING_SNAKE_CASE__							=     version.parse('''1.11'''				)





   @property
   def 	__lowerCAmelCase							(	self			):
         return OrderedDict(
             [
                 ('''pixel_values''', {0: '''batch''', 1: '''num_channels''', 2: '''height''', 3: '''width'''}),
             ]			)





   @property
   def 	__lowerCAmelCase							(	self			):
         return 2E-3




# 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.utils import ComputeEnvironment

from .cluster import get_cluster_input
from .config_args import cache_dir, default_config_file, default_yaml_config_file, load_config_from_file  # noqa: F401
from .config_utils import _ask_field, _ask_options, _convert_compute_environment  # noqa: F401
from .sagemaker import get_sagemaker_input


UpperCAmelCase_									=							"Launches a series of prompts to create and save a `default_config.yaml` configuration file for your training system. Should always be ran first on your machine"
def 							UpperCAmelCase__		(				)->Any:
      _lowerCAmelCase 			=  _ask_options(
          '''In which compute environment are you running?'''     ,				['''This machine''', '''AWS (Amazon SageMaker)''']     ,				_convert_compute_environment     ,				)
      if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER:
            _lowerCAmelCase 			=  get_sagemaker_input()
      else:
            _lowerCAmelCase 			=  get_cluster_input()
      return config
def 							UpperCAmelCase__		(				_SCREAMING_SNAKE_CASE   :	int=None				)->str:
      if subparsers is not None:
            _lowerCAmelCase 			=  subparsers.add_parser('''config'''     ,				description=_SCREAMING_SNAKE_CASE				)
      else:
            _lowerCAmelCase 			=  argparse.ArgumentParser('''Accelerate config command'''     ,				description=_SCREAMING_SNAKE_CASE				)

      parser.add_argument(
          '''--config_file'''     ,				default=_SCREAMING_SNAKE_CASE     ,				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=_SCREAMING_SNAKE_CASE				)
      return parser
def 							UpperCAmelCase__		(				_SCREAMING_SNAKE_CASE   :	Dict				)->str:
      _lowerCAmelCase 			=  get_user_input()
      if args.config_file is not None:
            _lowerCAmelCase 			=  args.config_file
      else:
            if not os.path.isdir(_SCREAMING_SNAKE_CASE				):
                  os.makedirs(_SCREAMING_SNAKE_CASE				)
            _lowerCAmelCase 			=  default_yaml_config_file

      if config_file.endswith('''.json'''				):
            config.to_json_file(_SCREAMING_SNAKE_CASE				)
      else:
            config.to_yaml_file(_SCREAMING_SNAKE_CASE				)
      print(f'''accelerate configuration saved at {config_file}'''				)
def 							UpperCAmelCase__		(				)->List[Any]:
      _lowerCAmelCase 			=  config_command_parser()
      _lowerCAmelCase 			=  parser.parse_args()
      config_command(_SCREAMING_SNAKE_CASE				)


if __name__ == "__main__":
    main()