






"""simple docstring"""


# 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.

from pathlib import Path

import torch

from ...utils import is_npu_available, is_xpu_available
from .config_args import ClusterConfig, default_json_config_file
from .config_utils import SubcommandHelpFormatter


_UpperCamelCase    :   Dict   			=						'Create a default config file for Accelerate with only a few flags set.'




def       snake_case  (A_				:int="no"     ,      A_				:str = default_json_config_file     ,      A_				:bool = False				):







  '''simple docstring'''

  a					:      List[str]    =       Path(A_				)
  path.parent.mkdir(parents=A_     ,      exist_ok=A_				)
  if path.exists():
    print(
        f'''Configuration already exists at {save_location}, will not override. Run `accelerate config` manually or pass a different `save_location`.'''				)
    return False
  a					:      Optional[Any]    =       mixed_precision.lower()
  if mixed_precision not in ["no", "fp16", "bf16", "fp8"]:
    raise ValueError(
        f'''`mixed_precision` should be one of \'no\', \'fp16\', \'bf16\', or \'fp8\'. Received {mixed_precision}'''				)
  a					:      Optional[Any]    =       {
      'compute_environment': 'LOCAL_MACHINE',
      'mixed_precision': mixed_precision,
  }
  if torch.cuda.is_available():
    a					:      Tuple    =       torch.cuda.device_count()
    a					:      Dict    =       num_gpus
    a					:      str    =       False
    if num_gpus > 1:
      a					:      List[Any]    =       'MULTI_GPU'
    else:
      a					:      int    =       'NO'
  elif is_xpu_available() and use_xpu:
    a					:      Tuple    =       torch.xpu.device_count()
    a					:      Union[str, Any]    =       num_xpus
    a					:      Optional[int]    =       False
    if num_xpus > 1:
      a					:      Union[str, Any]    =       'MULTI_XPU'
    else:
      a					:      str    =       'NO'
  elif is_npu_available():
    a					:      Dict    =       torch.npu.device_count()
    a					:      Optional[int]    =       num_npus
    a					:      Union[str, Any]    =       False
    if num_npus > 1:
      a					:      Optional[Any]    =       'MULTI_NPU'
    else:
      a					:      Tuple    =       'NO'
  else:
    a					:      Tuple    =       0
    a					:      Any    =       True
    a					:      Optional[int]    =       1
    a					:      Union[str, Any]    =       'NO'
  a					:      Any    =       ClusterConfig(**A_				)
  config.to_json_file(A_				)
  return path




def       snake_case  (A_				:Dict     ,      A_				:Optional[int]				):







  '''simple docstring'''

  a					:      List[Any]    =       parser.add_parser('default'     ,      parents=A_     ,      help=A_     ,      formatter_class=A_				)
  parser.add_argument(
      '--config_file'     ,      default=A_     ,      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\'.'
      )     ,      dest='save_location'     ,      )

  parser.add_argument(
      '--mixed_precision'     ,      choices=['no', 'fp16', 'bf16']     ,      type=A_     ,      help='Whether or not to use mixed precision training. '
      'Choose between FP16 and BF16 (bfloat16) training. '
      'BF16 training is only supported on Nvidia Ampere GPUs and PyTorch 1.10 or later.'     ,      default='no'     ,      )
  parser.set_defaults(func=A_				)
  return parser






def       snake_case  (A_				:Dict				):







  '''simple docstring'''

  a					:      List[Any]    =       write_basic_config(args.mixed_precision     ,      args.save_location				)
  if config_file:
    print(f'''accelerate configuration saved at {config_file}'''				)












"""simple docstring"""


from .glue import glue_convert_examples_to_features, glue_output_modes, glue_processors, glue_tasks_num_labels
from .squad import SquadExample, SquadFeatures, SquadVaProcessor, SquadVaProcessor, squad_convert_examples_to_features
from .utils import DataProcessor, InputExample, InputFeatures, SingleSentenceClassificationProcessor
from .xnli import xnli_output_modes, xnli_processors, xnli_tasks_num_labels




