


"""simple docstring"""



import argparse
import json

import requests
import torch
from huggingface_hub import hf_hub_download
from PIL import Image

from transformers import ConvNextConfig, SegformerImageProcessor, UperNetConfig, UperNetForSemanticSegmentation







def   __lowerCAmelCase						(						lowercase  :  Dict )	->						Any:


    """simple docstring"""





    snake_case    :      List[Any]      					=    384
    if "tiny" in model_name:
        snake_case    :      Any      					=    [3, 3, 9, 3]
        snake_case    :      Dict      					=    [96, 192, 384, 768]
    if "small" in model_name:
        snake_case    :      List[str]      					=    [3, 3, 27, 3]
        snake_case    :      Dict      					=    [96, 192, 384, 768]
    if "base" in model_name:
        snake_case    :      List[str]      					=    [3, 3, 27, 3]
        snake_case    :      List[str]      					=    [128, 256, 512, 1024]
        snake_case    :      Optional[int]      					=    512
    if "large" in model_name:
        snake_case    :      Optional[Any]      					=    [3, 3, 27, 3]
        snake_case    :      Optional[int]      					=    [192, 384, 768, 1536]
        snake_case    :      List[str]      					=    768
    if "xlarge" in model_name:
        snake_case    :      Optional[int]      					=    [3, 3, 27, 3]
        snake_case    :      List[str]      					=    [256, 512, 1024, 2048]
        snake_case    :      List[Any]      					=    1024

    # set label information
    snake_case    :      Optional[int]      					=    150
    snake_case    :      Optional[int]      					=    "huggingface/label-files"
    snake_case    :      List[Any]      					=    "ade20k-id2label.json"
    snake_case    :      Dict      					=    json.load(open(hf_hub_download(lowercase						,							lowercase						,							repo_type="dataset" )						,							"r" ) )
    snake_case    :      List[Any]      					=    {int(lowercase ): v for k, v in idalabel.items()}
    snake_case    :      List[Any]      					=    {v: k for k, v in idalabel.items()}

    snake_case    :      Dict      					=    ConvNextConfig(
        depths=lowercase						,							hidden_sizes=lowercase						,							out_features=["stage1", "stage2", "stage3", "stage4"] )
    snake_case    :      Optional[int]      					=    UperNetConfig(
        backbone_config=lowercase						,							auxiliary_in_channels=lowercase						,							num_labels=lowercase						,							idalabel=lowercase						,							labelaid=lowercase						,							)

    return config







def   __lowerCAmelCase						(						lowercase  :  List[str] )	->						Tuple:


    """simple docstring"""





    snake_case    :      Dict      					=    []

    # fmt: off
    # stem
    rename_keys.append(("backbone.downsample_layers.0.0.weight", "backbone.embeddings.patch_embeddings.weight") )
    rename_keys.append(("backbone.downsample_layers.0.0.bias", "backbone.embeddings.patch_embeddings.bias") )
    rename_keys.append(("backbone.downsample_layers.0.1.weight", "backbone.embeddings.layernorm.weight") )
    rename_keys.append(("backbone.downsample_layers.0.1.bias", "backbone.embeddings.layernorm.bias") )
    # stages
    for i in range(len(config.backbone_config.depths ) ):
        for j in range(config.backbone_config.depths[i] ):
            rename_keys.append((F'backbone.stages.{i}.{j}.gamma', F'backbone.encoder.stages.{i}.layers.{j}.layer_scale_parameter') )
            rename_keys.append((F'backbone.stages.{i}.{j}.depthwise_conv.weight', F'backbone.encoder.stages.{i}.layers.{j}.dwconv.weight') )
            rename_keys.append((F'backbone.stages.{i}.{j}.depthwise_conv.bias', F'backbone.encoder.stages.{i}.layers.{j}.dwconv.bias') )
            rename_keys.append((F'backbone.stages.{i}.{j}.norm.weight', F'backbone.encoder.stages.{i}.layers.{j}.layernorm.weight') )
            rename_keys.append((F'backbone.stages.{i}.{j}.norm.bias', F'backbone.encoder.stages.{i}.layers.{j}.layernorm.bias') )
            rename_keys.append((F'backbone.stages.{i}.{j}.pointwise_conv1.weight', F'backbone.encoder.stages.{i}.layers.{j}.pwconv1.weight') )
            rename_keys.append((F'backbone.stages.{i}.{j}.pointwise_conv1.bias', F'backbone.encoder.stages.{i}.layers.{j}.pwconv1.bias') )
            rename_keys.append((F'backbone.stages.{i}.{j}.pointwise_conv2.weight', F'backbone.encoder.stages.{i}.layers.{j}.pwconv2.weight') )
            rename_keys.append((F'backbone.stages.{i}.{j}.pointwise_conv2.bias', F'backbone.encoder.stages.{i}.layers.{j}.pwconv2.bias') )
        if i > 0:
            rename_keys.append((F'backbone.downsample_layers.{i}.0.weight', F'backbone.encoder.stages.{i}.downsampling_layer.0.weight') )
            rename_keys.append((F'backbone.downsample_layers.{i}.0.bias', F'backbone.encoder.stages.{i}.downsampling_layer.0.bias') )
            rename_keys.append((F'backbone.downsample_layers.{i}.1.weight', F'backbone.encoder.stages.{i}.downsampling_layer.1.weight') )
            rename_keys.append((F'backbone.downsample_layers.{i}.1.bias', F'backbone.encoder.stages.{i}.downsampling_layer.1.bias') )

        rename_keys.append((F'backbone.norm{i}.weight', F'backbone.hidden_states_norms.stage{i+1}.weight') )
        rename_keys.append((F'backbone.norm{i}.bias', F'backbone.hidden_states_norms.stage{i+1}.bias') )

    # decode head
    rename_keys.extend(
        [
            ("decode_head.conv_seg.weight", "decode_head.classifier.weight"),
            ("decode_head.conv_seg.bias", "decode_head.classifier.bias"),
            ("auxiliary_head.conv_seg.weight", "auxiliary_head.classifier.weight"),
            ("auxiliary_head.conv_seg.bias", "auxiliary_head.classifier.bias"),
        ] )
    # fmt: on

    return rename_keys







def   __lowerCAmelCase						(						lowercase  :  Optional[int]						,							lowercase  :  Dict						,							lowercase  :  List[str] )	->						Tuple:


    """simple docstring"""





    snake_case    :      List[Any]      					=    dct.pop(lowercase )
    snake_case    :      int      					=    val







def   __lowerCAmelCase						(						lowercase  :  Union[str, Any]						,							lowercase  :  Optional[int]						,							lowercase  :  Optional[Any] )	->						int:


    """simple docstring"""





    snake_case    :      Any      					=    {
        "upernet-convnext-tiny": "https://download.openmmlab.com/mmsegmentation/v0.5/convnext/upernet_convnext_tiny_fp16_512x512_160k_ade20k/upernet_convnext_tiny_fp16_512x512_160k_ade20k_20220227_124553-cad485de.pth",
        "upernet-convnext-small": "https://download.openmmlab.com/mmsegmentation/v0.5/convnext/upernet_convnext_small_fp16_512x512_160k_ade20k/upernet_convnext_small_fp16_512x512_160k_ade20k_20220227_131208-1b1e394f.pth",
        "upernet-convnext-base": "https://download.openmmlab.com/mmsegmentation/v0.5/convnext/upernet_convnext_base_fp16_512x512_160k_ade20k/upernet_convnext_base_fp16_512x512_160k_ade20k_20220227_181227-02a24fc6.pth",
        "upernet-convnext-large": "https://download.openmmlab.com/mmsegmentation/v0.5/convnext/upernet_convnext_large_fp16_640x640_160k_ade20k/upernet_convnext_large_fp16_640x640_160k_ade20k_20220226_040532-e57aa54d.pth",
        "upernet-convnext-xlarge": "https://download.openmmlab.com/mmsegmentation/v0.5/convnext/upernet_convnext_xlarge_fp16_640x640_160k_ade20k/upernet_convnext_xlarge_fp16_640x640_160k_ade20k_20220226_080344-95fc38c2.pth",
    }
    snake_case    :      List[Any]      					=    model_name_to_url[model_name]
    snake_case    :      Tuple      					=    torch.hub.load_state_dict_from_url(lowercase						,							map_location="cpu" )["state_dict"]

    snake_case    :      Any      					=    get_upernet_config(lowercase )
    snake_case    :      str      					=    UperNetForSemanticSegmentation(lowercase )
    model.eval()

    # replace "bn" => "batch_norm"
    for key in state_dict.copy().keys():
        snake_case    :      Union[str, Any]      					=    state_dict.pop(lowercase )
        if "bn" in key:
            snake_case    :      int      					=    key.replace("bn"						,							"batch_norm" )
        snake_case    :      str      					=    val

    # rename keys
    snake_case    :      int      					=    create_rename_keys(lowercase )
    for src, dest in rename_keys:
        rename_key(lowercase						,							lowercase						,							lowercase )

    model.load_state_dict(lowercase )

    # verify on image
    snake_case    :      str      					=    "https://huggingface.co/datasets/hf-internal-testing/fixtures_ade20k/resolve/main/ADE_val_00000001.jpg"
    snake_case    :      Dict      					=    Image.open(requests.get(lowercase						,							stream=lowercase ).raw ).convert("RGB" )

    snake_case    :      Optional[Any]      					=    SegformerImageProcessor()
    snake_case    :      Tuple      					=    processor(lowercase						,							return_tensors="pt" ).pixel_values

    with torch.no_grad():
        snake_case    :      List[str]      					=    model(lowercase )

    if model_name == "upernet-convnext-tiny":
        snake_case    :      str      					=    torch.tensor(
            [[-8.8110, -8.8110, -8.6521], [-8.8110, -8.8110, -8.6521], [-8.7746, -8.7746, -8.6130]] )
    elif model_name == "upernet-convnext-small":
        snake_case    :      Dict      					=    torch.tensor(
            [[-8.8236, -8.8236, -8.6771], [-8.8236, -8.8236, -8.6771], [-8.7638, -8.7638, -8.6240]] )
    elif model_name == "upernet-convnext-base":
        snake_case    :      Tuple      					=    torch.tensor(
            [[-8.8558, -8.8558, -8.6905], [-8.8558, -8.8558, -8.6905], [-8.7669, -8.7669, -8.6021]] )
    elif model_name == "upernet-convnext-large":
        snake_case    :      Union[str, Any]      					=    torch.tensor(
            [[-8.6660, -8.6660, -8.6210], [-8.6660, -8.6660, -8.6210], [-8.6310, -8.6310, -8.5964]] )
    elif model_name == "upernet-convnext-xlarge":
        snake_case    :      Optional[Any]      					=    torch.tensor(
            [[-8.4980, -8.4980, -8.3977], [-8.4980, -8.4980, -8.3977], [-8.4379, -8.4379, -8.3412]] )
    print("Logits:"						,							outputs.logits[0, 0, :3, :3] )
    assert torch.allclose(outputs.logits[0, 0, :3, :3]						,							lowercase						,							atol=1e-4 )
    print("Looks ok!" )

    if pytorch_dump_folder_path is not None:
        print(F'Saving model {model_name} to {pytorch_dump_folder_path}' )
        model.save_pretrained(lowercase )
        print(F'Saving processor to {pytorch_dump_folder_path}' )
        processor.save_pretrained(lowercase )

    if push_to_hub:
        print(F'Pushing model and processor for {model_name} to hub' )
        model.push_to_hub(F'openmmlab/{model_name}' )
        processor.push_to_hub(F'openmmlab/{model_name}' )


if __name__ == "__main__":
  __snake_case   			=    argparse.ArgumentParser()
  # Required parameters
  parser.add_argument(
      """--model_name""",
      default="""upernet-convnext-tiny""",
      type=str,
      choices=[F'''upernet-convnext-{size}''' for size in ["""tiny""", """small""", """base""", """large""", """xlarge"""]],
      help="""Name of the ConvNext UperNet model you'd like to convert.""",
  )
  parser.add_argument(
      """--pytorch_dump_folder_path""", default=None, type=str, help="""Path to the output PyTorch model directory."""
  )
  parser.add_argument(
      """--push_to_hub""", action="""store_true""", help="""Whether or not to push the converted model to the 🤗 hub."""
  )

  __snake_case   			=    parser.parse_args()
  convert_upernet_checkpoint(args.model_name, args.pytorch_dump_folder_path, args.push_to_hub)









"""simple docstring"""



import argparse
import json
import logging
import os
import shutil
import sys
import tempfile
import unittest
from unittest import mock

import torch
from accelerate.utils import write_basic_config

from transformers.testing_utils import TestCasePlus, get_gpu_count, run_command, slow, torch_device
from transformers.utils import is_apex_available


logging.basicConfig(level=logging.DEBUG)

__snake_case   			=    logging.getLogger()







def   __lowerCAmelCase						(						)	->						str:


    """simple docstring"""





    snake_case    :      List[str]      					=    argparse.ArgumentParser()
    parser.add_argument("-f" )
    snake_case    :      Tuple      					=    parser.parse_args()
    return args.f







def   __lowerCAmelCase						(						lowercase  :  Optional[int] )	->						Dict:


    """simple docstring"""





    snake_case    :      Any      					=    {}
    snake_case    :      int      					=    os.path.join(lowercase						,							"all_results.json" )
    if os.path.exists(lowercase ):
        with open(lowercase						,							"r" ) as f:
            snake_case    :      Optional[int]      					=    json.load(lowercase )
    else:
        raise ValueError(F'can\'t find {path}' )
    return results







def   __lowerCAmelCase						(						)	->						Tuple:


    """simple docstring"""





    snake_case    :      Union[str, Any]      					=    torch.cuda.is_available() and torch_device == "cuda"
    return is_using_cuda and is_apex_available()


__snake_case   			=    logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)







class _lowerCAmelCase				(      snake_case_	):







   @classmethod
   def  lowerCamelCase		(	cls						)	->		Optional[Any]:

       '''simple docstring'''




       snake_case    :      Optional[int]      					=    tempfile.mkdtemp()
       snake_case    :      int      					=    os.path.join(cls.tmpdir						,	"default_config.yml"						)
       write_basic_config(save_location=cls.configPath						)
       snake_case    :      Union[str, Any]      					=    ["accelerate", "launch", "--config_file", cls.configPath]







   @classmethod
   def  lowerCamelCase		(	cls						)	->		Optional[Any]:

       '''simple docstring'''




       shutil.rmtree(cls.tmpdir						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		int:

       '''simple docstring'''




       snake_case    :      str      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      Dict      					=    F'\n            {self.examples_dir}/pytorch/text-classification/run_glue_no_trainer.py\n            --model_name_or_path distilbert-base-uncased\n            --output_dir {tmp_dir}\n            --train_file ./tests/fixtures/tests_samples/MRPC/train.csv\n            --validation_file ./tests/fixtures/tests_samples/MRPC/dev.csv\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --learning_rate=1e-4\n            --seed=42\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       if is_cuda_and_apex_available():
           testargs.append("--fp16"						)

       run_command(self._launch_args + testargs						)
       snake_case    :      Union[str, Any]      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_accuracy"]						,	0.75						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"glue_no_trainer"						)						)						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		int:

       '''simple docstring'''




       snake_case    :      Dict      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      Dict      					=    F'\n            {self.examples_dir}/pytorch/language-modeling/run_clm_no_trainer.py\n            --model_name_or_path distilgpt2\n            --train_file ./tests/fixtures/sample_text.txt\n            --validation_file ./tests/fixtures/sample_text.txt\n            --block_size 128\n            --per_device_train_batch_size 5\n            --per_device_eval_batch_size 5\n            --num_train_epochs 2\n            --output_dir {tmp_dir}\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       if torch.cuda.device_count() > 1:
           # Skipping because there are not enough batches to train the model + would need a drop_last to work.
           return

       run_command(self._launch_args + testargs						)
       snake_case    :      Any      					=    get_results(UpperCamelCase__						)
       self.assertLess(result["perplexity"]						,	100						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"clm_no_trainer"						)						)						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		Any:

       '''simple docstring'''




       snake_case    :      Union[str, Any]      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      str      					=    F'\n            {self.examples_dir}/pytorch/language-modeling/run_mlm_no_trainer.py\n            --model_name_or_path distilroberta-base\n            --train_file ./tests/fixtures/sample_text.txt\n            --validation_file ./tests/fixtures/sample_text.txt\n            --output_dir {tmp_dir}\n            --num_train_epochs=1\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Dict      					=    get_results(UpperCamelCase__						)
       self.assertLess(result["perplexity"]						,	42						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"mlm_no_trainer"						)						)						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		Optional[Any]:

       '''simple docstring'''




       snake_case    :      Optional[Any]      					=    7 if get_gpu_count() > 1 else 2

       snake_case    :      Optional[int]      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      List[str]      					=    F'\n            {self.examples_dir}/pytorch/token-classification/run_ner_no_trainer.py\n            --model_name_or_path bert-base-uncased\n            --train_file tests/fixtures/tests_samples/conll/sample.json\n            --validation_file tests/fixtures/tests_samples/conll/sample.json\n            --output_dir {tmp_dir}\n            --learning_rate=2e-4\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=2\n            --num_train_epochs={epochs}\n            --seed 7\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      str      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_accuracy"]						,	0.75						)
       self.assertLess(result["train_loss"]						,	0.5						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"ner_no_trainer"						)						)						)







   @unittest.skip(reason="Fix me @muellerzr"						)
   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		str:

       '''simple docstring'''




       snake_case    :      List[Any]      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      Dict      					=    F'\n            {self.examples_dir}/pytorch/question-answering/run_qa_no_trainer.py\n            --model_name_or_path bert-base-uncased\n            --version_2_with_negative\n            --train_file tests/fixtures/tests_samples/SQUAD/sample.json\n            --validation_file tests/fixtures/tests_samples/SQUAD/sample.json\n            --output_dir {tmp_dir}\n            --seed=42\n            --max_train_steps=10\n            --num_warmup_steps=2\n            --learning_rate=2e-4\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Dict      					=    get_results(UpperCamelCase__						)
       # Because we use --version_2_with_negative the testing script uses SQuAD v2 metrics.
       self.assertGreaterEqual(result["eval_f1"]						,	28						)
       self.assertGreaterEqual(result["eval_exact"]						,	28						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"qa_no_trainer"						)						)						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		int:

       '''simple docstring'''




       snake_case    :      Tuple      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      List[str]      					=    F'\n            {self.examples_dir}/pytorch/multiple-choice/run_swag_no_trainer.py\n            --model_name_or_path bert-base-uncased\n            --train_file tests/fixtures/tests_samples/swag/sample.json\n            --validation_file tests/fixtures/tests_samples/swag/sample.json\n            --output_dir {tmp_dir}\n            --max_train_steps=20\n            --num_warmup_steps=2\n            --learning_rate=2e-4\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Optional[Any]      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_accuracy"]						,	0.8						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"swag_no_trainer"						)						)						)







   @slow
   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		str:

       '''simple docstring'''




       snake_case    :      Tuple      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      Dict      					=    F'\n            {self.examples_dir}/pytorch/summarization/run_summarization_no_trainer.py\n            --model_name_or_path t5-small\n            --train_file tests/fixtures/tests_samples/xsum/sample.json\n            --validation_file tests/fixtures/tests_samples/xsum/sample.json\n            --output_dir {tmp_dir}\n            --max_train_steps=50\n            --num_warmup_steps=8\n            --learning_rate=2e-4\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Any      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_rouge1"]						,	10						)
       self.assertGreaterEqual(result["eval_rouge2"]						,	2						)
       self.assertGreaterEqual(result["eval_rougeL"]						,	7						)
       self.assertGreaterEqual(result["eval_rougeLsum"]						,	7						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"summarization_no_trainer"						)						)						)







   @slow
   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		List[Any]:

       '''simple docstring'''




       snake_case    :      Optional[Any]      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      int      					=    F'\n            {self.examples_dir}/pytorch/translation/run_translation_no_trainer.py\n            --model_name_or_path sshleifer/student_marian_en_ro_6_1\n            --source_lang en\n            --target_lang ro\n            --train_file tests/fixtures/tests_samples/wmt16/sample.json\n            --validation_file tests/fixtures/tests_samples/wmt16/sample.json\n            --output_dir {tmp_dir}\n            --max_train_steps=50\n            --num_warmup_steps=8\n            --num_beams=6\n            --learning_rate=3e-3\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --source_lang en_XX\n            --target_lang ro_RO\n            --checkpointing_steps epoch\n            --with_tracking\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Optional[int]      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_bleu"]						,	30						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"epoch_0"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"translation_no_trainer"						)						)						)







   @slow
   def  lowerCamelCase		(	self						)	->		Optional[int]:

       '''simple docstring'''




       snake_case    :      str      					=    logging.StreamHandler(sys.stdout						)
       logger.addHandler(UpperCamelCase__						)

       snake_case    :      Dict      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      Dict      					=    F'\n            {self.examples_dir}/pytorch/semantic-segmentation/run_semantic_segmentation_no_trainer.py\n            --dataset_name huggingface/semantic-segmentation-test-sample\n            --output_dir {tmp_dir}\n            --max_train_steps=10\n            --num_warmup_steps=2\n            --learning_rate=2e-4\n            --per_device_train_batch_size=2\n            --per_device_eval_batch_size=1\n            --checkpointing_steps epoch\n        '.split()

       run_command(self._launch_args + testargs						)
       snake_case    :      Optional[Any]      					=    get_results(UpperCamelCase__						)
       self.assertGreaterEqual(result["eval_overall_accuracy"]						,	0.10						)







   @mock.patch.dict(os.environ						,	{"WANDB_MODE": "offline"}						)
   def  lowerCamelCase		(	self						)	->		Union[str, Any]:

       '''simple docstring'''




       snake_case    :      Dict      					=    self.get_auto_remove_tmp_dir()
       snake_case    :      str      					=    F'\n            {self.examples_dir}/pytorch/image-classification/run_image_classification_no_trainer.py\n            --model_name_or_path google/vit-base-patch16-224-in21k\n            --dataset_name hf-internal-testing/cats_vs_dogs_sample\n            --learning_rate 1e-4\n            --per_device_train_batch_size 2\n            --per_device_eval_batch_size 1\n            --max_train_steps 2\n            --train_val_split 0.1\n            --seed 42\n            --output_dir {tmp_dir}\n            --with_tracking\n            --checkpointing_steps 1\n        '.split()

       if is_cuda_and_apex_available():
           testargs.append("--fp16"						)

       run_command(self._launch_args + testargs						)
       snake_case    :      str      					=    get_results(UpperCamelCase__						)
       # The base model scores a 25%
       self.assertGreaterEqual(result["eval_accuracy"]						,	0.6						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"step_1"						)						)						)
       self.assertTrue(os.path.exists(os.path.join(UpperCamelCase__						,	"image_classification_no_trainer"						)						)						)





