


import ast
import os
import re
import shutil
import tempfile
import unittest
from unittest import mock

import torch

from accelerate.test_utils.examples import compare_against_test
from accelerate.test_utils.testing import TempDirTestCase, require_trackers, run_command, slow
from accelerate.utils import write_basic_config


# DataLoaders built from `test_samples/MRPC` for quick testing
# Should mock `{script_name}.get_dataloaders` via:
# @mock.patch("{script_name}.get_dataloaders", mocked_dataloaders)

_SCREAMING_SNAKE_CASE      :			Optional[Any]      				=   [
    "cross_validation.py",
    "gradient_accumulation.py",
    "local_sgd.py",
    "multi_process_metrics.py",
    "memory.py",
    "automatic_gradient_accumulation.py",
    "fsdp_with_peak_mem_tracking.py",
    "deepspeed_with_config_support.py",
    "megatron_lm_gpt_pretraining.py",
]

class   A__ (   unittest.TestCase     ):







				"""simple docstring"""

				def 		a_      (	self      , __snake_case      , __snake_case      , __snake_case = None      , __snake_case = None   ):
									snake_case					=    None
									snake_case					=    os.path.abspath(os.path.join('''examples'''      , '''by_feature'''   )   )
									snake_case					=    os.path.abspath('''examples'''   )
									for item in os.listdir(__snake_case   ):
														if item not in EXCLUDE_EXAMPLES:
																			snake_case					=    os.path.join(__snake_case      , __snake_case   )
																			if os.path.isfile(__snake_case   ) and ".py" in item_path:
																								with self.subTest(
																								    tested_script=__snake_case      , feature_script=__snake_case      , tested_section='''main()''' if parser_only else '''training_function()'''      , ):
																													snake_case					=    compare_against_test(
																													    os.path.join(__snake_case      , __snake_case   )      , __snake_case      , __snake_case      , __snake_case   )
																													snake_case					=    '''\n'''.join(__snake_case   )
																													if special_strings is not None:
																																		for string in special_strings:
																																							snake_case					=    diff.replace(__snake_case      , ''''''   )
																													self.assertEqual(__snake_case      , ''''''   )
				def 		a_      (	self   ):
									self.one_complete_example('''complete_nlp_example.py'''      , __snake_case   )
									self.one_complete_example('''complete_nlp_example.py'''      , __snake_case   )




				def 		a_      (	self   ):
									snake_case					=    os.path.abspath(os.path.join('''examples'''      , '''cv_example.py'''   )   )
									snake_case					=    [
									    ''' ''' * 1_6 + '''{\n\n''',
									    ''' ''' * 2_0 + '''"accuracy": eval_metric["accuracy"],\n\n''',
									    ''' ''' * 2_0 + '''"f1": eval_metric["f1"],\n\n''',
									    ''' ''' * 2_0 + '''"train_loss": total_loss.item() / len(train_dataloader),\n\n''',
									    ''' ''' * 2_0 + '''"epoch": epoch,\n\n''',
									    ''' ''' * 1_6 + '''},\n\n''',
									    ''' ''' * 1_6 + '''step=epoch,\n''',
									    ''' ''' * 1_2,
									    ''' ''' * 8 + '''for step, batch in enumerate(active_dataloader):\n''',
									]
									self.one_complete_example('''complete_cv_example.py'''      , __snake_case      , __snake_case      , __snake_case   )
									self.one_complete_example('''complete_cv_example.py'''      , __snake_case      , __snake_case      , __snake_case   )






@mock.patch.dict(os.environ	, {'TESTING_MOCKED_DATALOADERS': '1'}     )
class   A__ (   snake_case__     ):







				"""simple docstring"""

				__magic_name__        =		False
				@classmethod
				def 		a_      (	cls   ):
									super().setUpClass()
									snake_case					=    tempfile.mkdtemp()
									snake_case					=    os.path.join(cls._tmpdir      , '''default_config.yml'''   )

									write_basic_config(save_location=cls.configPath   )
									snake_case					=    ['''accelerate''', '''launch''', '''--config_file''', cls.configPath]
				@classmethod
				def 		a_      (	cls   ):
									super().tearDownClass()
									shutil.rmtree(cls._tmpdir   )
				def 		a_      (	self   ):
									snake_case					=    F'''
        examples/by_feature/checkpointing.py
        --checkpointing_steps epoch
        --output_dir {self.tmpdir}
        '''.split()
									run_command(self._launch_args + testargs   )
									self.assertTrue(os.path.exists(os.path.join(self.tmpdir      , '''epoch_0'''   )   )   )
				def 		a_      (	self   ):
									snake_case					=    F'''
        examples/by_feature/checkpointing.py
        --checkpointing_steps 1
        --output_dir {self.tmpdir}
        '''.split()
									snake_case					=    run_command(self._launch_args + testargs   )
									self.assertTrue(os.path.exists(os.path.join(self.tmpdir      , '''step_2'''   )   )   )
				def 		a_      (	self   ):
									snake_case					=    F'''
        examples/by_feature/checkpointing.py
        --resume_from_checkpoint {os.path.join(self.tmpdir      , "epoch_0"   )}
        '''.split()
									snake_case					=    run_command(self._launch_args + testargs      , return_stdout=__snake_case   )
									self.assertNotIn('''epoch 0:'''      , __snake_case   )
									self.assertIn('''epoch 1:'''      , __snake_case   )
				def 		a_      (	self   ):
									snake_case					=    F'''
        examples/by_feature/checkpointing.py
        --resume_from_checkpoint {os.path.join(self.tmpdir      , "step_2"   )}
        '''.split()
									snake_case					=    run_command(self._launch_args + testargs      , return_stdout=__snake_case   )
									if torch.cuda.is_available():
														snake_case					=    torch.cuda.device_count()
									else:
														snake_case					=    1
									if num_processes > 1:
														self.assertNotIn('''epoch 0:'''      , __snake_case   )
														self.assertIn('''epoch 1:'''      , __snake_case   )
									else:
														self.assertIn('''epoch 0:'''      , __snake_case   )
														self.assertIn('''epoch 1:'''      , __snake_case   )
				@slow
				def 		a_      (	self   ):
									snake_case					=    '''
        examples/by_feature/cross_validation.py
        --num_folds 2
        '''.split()
									with mock.patch.dict(os.environ      , {'''TESTING_MOCKED_DATALOADERS''': '''0'''}   ):
														snake_case					=    run_command(self._launch_args + testargs      , return_stdout=__snake_case   )
														snake_case					=    re.findall('''({.+})'''      , __snake_case   )
														snake_case					=    [r for r in results if '''accuracy''' in r][-1]
														snake_case					=    ast.literal_eval(__snake_case   )
														self.assertGreaterEqual(results['''accuracy''']      , 0.75   )
				def 		a_      (	self   ):
									snake_case					=    ['''examples/by_feature/multi_process_metrics.py''']
									run_command(self._launch_args + testargs   )
				@require_trackers
				@mock.patch.dict(os.environ      , {'''WANDB_MODE''': '''offline'''}   )
				def 		a_      (	self   ):
									with tempfile.TemporaryDirectory() as tmpdir:
														snake_case					=    F'''
            examples/by_feature/tracking.py
            --with_tracking
            --project_dir {tmpdir}
            '''.split()
														run_command(self._launch_args + testargs   )
														self.assertTrue(os.path.exists(os.path.join(__snake_case      , '''tracking'''   )   )   )
				def 		a_      (	self   ):
									snake_case					=    ['''examples/by_feature/gradient_accumulation.py''']
									run_command(self._launch_args + testargs   )




				def 		a_      (	self   ):
									snake_case					=    ['''examples/by_feature/local_sgd.py''']
									run_command(self._launch_args + testargs   )








from collections import OrderedDict
from typing import List, Mapping

from packaging import version

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


_SCREAMING_SNAKE_CASE      :			List[str]      				=   logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE      :			Optional[int]      				=   {
    "google/efficientnet-b7": "https://huggingface.co/google/efficientnet-b7/resolve/main/config.json",
}

class   A__ (   snake_case__     ):







    """simple docstring"""

    __magic_name__        =		'efficientnet'
    def __init__(	self      , __snake_case = 3      , __snake_case = 6_0_0      , __snake_case = 2.0      , __snake_case = 3.1      , __snake_case = 8      , __snake_case = [3, 3, 5, 3, 5, 5, 3]      , __snake_case = [3_2, 1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2]      , __snake_case = [1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2, 3_2_0]      , __snake_case = []      , __snake_case = [1, 2, 2, 2, 1, 2, 1]      , __snake_case = [1, 2, 2, 3, 3, 4, 1]      , __snake_case = [1, 6, 6, 6, 6, 6, 6]      , __snake_case = 0.25      , __snake_case = "swish"      , __snake_case = 2_5_6_0      , __snake_case = "mean"      , __snake_case = 0.02      , __snake_case = 0.001      , __snake_case = 0.99      , __snake_case = 0.5      , __snake_case = 0.2      , **__snake_case      , ):
         super().__init__(**__snake_case   )

         snake_case					=    num_channels
         snake_case					=    image_size
         snake_case					=    width_coefficient
         snake_case					=    depth_coefficient
         snake_case					=    depth_divisor
         snake_case					=    kernel_sizes
         snake_case					=    in_channels
         snake_case					=    out_channels
         snake_case					=    depthwise_padding
         snake_case					=    strides
         snake_case					=    num_block_repeats
         snake_case					=    expand_ratios
         snake_case					=    squeeze_expansion_ratio
         snake_case					=    hidden_act
         snake_case					=    hidden_dim
         snake_case					=    pooling_type
         snake_case					=    initializer_range
         snake_case					=    batch_norm_eps
         snake_case					=    batch_norm_momentum
         snake_case					=    dropout_rate
         snake_case					=    drop_connect_rate
         snake_case					=    sum(__snake_case   ) * 4






class   A__ (   snake_case__     ):







    """simple docstring"""

    __magic_name__        =		version.parse('1.11'     )
    @property
    def 		a_      (	self   ):
         return OrderedDict(
             [
                 ('''pixel_values''', {0: '''batch''', 1: '''num_channels''', 2: '''height''', 3: '''width'''}),
             ]   )




    @property
    def 		a_      (	self   ):
         return 1E-5




