


'''simple docstring'''

import os
import tempfile
import unittest
from pathlib import Path

from transformers import AutoConfig, is_torch_available
from transformers.testing_utils import require_torch, torch_device


if is_torch_available():
   from transformers import PyTorchBenchmark, PyTorchBenchmarkArguments





@require_torch
class 						__SCREAMING_SNAKE_CASE					(      unittest.TestCase ):






     def  a_					(			self     ,							__UpperCamelCase		)       ->    List[Any]:
          for model_result in results.values():
               for batch_size, sequence_length in zip(model_result["bs"]     ,							model_result["ss"]		):
                    _a						=		model_result["result"][batch_size][sequence_length]
                    self.assertIsNotNone(__UpperCamelCase		)






     def  a_					(			self		)       ->    Optional[int]:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    Optional[int]:
          _a						=		"sgugger/tiny-distilbert-classification"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							only_pretrain_model=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    List[Any]:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							torchscript=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     @unittest.skipIf(torch_device == "cpu"     ,							"Cant do half precision"		)
     def  a_					(			self		)       ->    Dict:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							fpaa=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    int:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		AutoConfig.from_pretrained(__UpperCamelCase		)
          # set architectures equal to `None`
          _a						=		None
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase     ,							configs=[config]		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    Optional[int]:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result		)
          self.check_results_dict_not_empty(results.memory_train_result		)






     @unittest.skipIf(torch_device == "cpu"     ,							"Can't do half precision"		)
     def  a_					(			self		)       ->    List[str]:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							fpaa=__UpperCamelCase     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result		)
          self.check_results_dict_not_empty(results.memory_train_result		)






     def  a_					(			self		)       ->    Dict:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		AutoConfig.from_pretrained(__UpperCamelCase		)
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase     ,							configs=[config]		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    Any:
          _a						=		"sshleifer/tinier_bart"
          _a						=		AutoConfig.from_pretrained(__UpperCamelCase		)
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase     ,							configs=[config]		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result		)
          self.check_results_dict_not_empty(results.memory_inference_result		)






     def  a_					(			self		)       ->    Any:
          _a						=		"sshleifer/tiny-gpt2"
          _a						=		AutoConfig.from_pretrained(__UpperCamelCase		)
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase     ,							configs=[config]		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result		)
          self.check_results_dict_not_empty(results.memory_train_result		)






     def  a_					(			self		)       ->    str:
          _a						=		"sshleifer/tinier_bart"
          _a						=		AutoConfig.from_pretrained(__UpperCamelCase		)
          _a						=		PyTorchBenchmarkArguments(
              models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							multi_process=__UpperCamelCase     ,							)
          _a						=		PyTorchBenchmark(__UpperCamelCase     ,							configs=[config]		)
          _a						=		benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result		)
          self.check_results_dict_not_empty(results.memory_train_result		)






     def  a_					(			self		)       ->    Union[str, Any]:
          _a						=		"sshleifer/tiny-gpt2"
          with tempfile.TemporaryDirectory() as tmp_dir:
               _a						=		PyTorchBenchmarkArguments(
                   models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							save_to_csv=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							inference_time_csv_file=os.path.join(__UpperCamelCase     ,							"inf_time.csv"		)     ,							train_memory_csv_file=os.path.join(__UpperCamelCase     ,							"train_mem.csv"		)     ,							inference_memory_csv_file=os.path.join(__UpperCamelCase     ,							"inf_mem.csv"		)     ,							train_time_csv_file=os.path.join(__UpperCamelCase     ,							"train_time.csv"		)     ,							env_info_csv_file=os.path.join(__UpperCamelCase     ,							"env.csv"		)     ,							multi_process=__UpperCamelCase     ,							)
               _a						=		PyTorchBenchmark(__UpperCamelCase		)
               benchmark.run()
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"inf_time.csv"		)		).exists()		)
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"train_time.csv"		)		).exists()		)
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"inf_mem.csv"		)		).exists()		)
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"train_mem.csv"		)		).exists()		)
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"env.csv"		)		).exists()		)






     def  a_					(			self		)       ->    Dict:
          _a						=		"sshleifer/tiny-gpt2"

          def _check_summary_is_not_empty(__UpperCamelCase		):
               self.assertTrue(hasattr(__UpperCamelCase     ,							"sequential"		)		)
               self.assertTrue(hasattr(__UpperCamelCase     ,							"cumulative"		)		)
               self.assertTrue(hasattr(__UpperCamelCase     ,							"current"		)		)
               self.assertTrue(hasattr(__UpperCamelCase     ,							"total"		)		)

          with tempfile.TemporaryDirectory() as tmp_dir:
               _a						=		PyTorchBenchmarkArguments(
                   models=[MODEL_ID]     ,							training=__UpperCamelCase     ,							inference=__UpperCamelCase     ,							sequence_lengths=[8]     ,							batch_sizes=[1]     ,							log_filename=os.path.join(__UpperCamelCase     ,							"log.txt"		)     ,							log_print=__UpperCamelCase     ,							trace_memory_line_by_line=__UpperCamelCase     ,							multi_process=__UpperCamelCase     ,							)
               _a						=		PyTorchBenchmark(__UpperCamelCase		)
               _a						=		benchmark.run()
               _check_summary_is_not_empty(result.inference_summary		)
               _check_summary_is_not_empty(result.train_summary		)
               self.assertTrue(Path(os.path.join(__UpperCamelCase     ,							"log.txt"		)		).exists()		)





'''simple docstring'''

import unittest

from transformers import load_tool

from .test_tools_common import ToolTesterMixin





class 						__SCREAMING_SNAKE_CASE					(      unittest.TestCase ,			lowerCamelCase__ ):






     def  a_					(			self		)       ->    Tuple:
          _a						=		load_tool("text-classification"		)
          self.tool.setup()
          _a						=		load_tool("text-classification"     ,							remote=__UpperCamelCase		)






     def  a_					(			self		)       ->    Optional[int]:
          _a						=		self.tool("That's quite cool"     ,							["positive", "negative"]		)
          self.assertEqual(__UpperCamelCase     ,							"positive"		)






     def  a_					(			self		)       ->    Union[str, Any]:
          _a						=		self.remote_tool("That's quite cool"     ,							["positive", "negative"]		)
          self.assertEqual(__UpperCamelCase     ,							"positive"		)






     def  a_					(			self		)       ->    Optional[int]:
          _a						=		self.tool(text="That's quite cool"     ,							labels=["positive", "negative"]		)
          self.assertEqual(__UpperCamelCase     ,							"positive"		)






     def  a_					(			self		)       ->    str:
          _a						=		self.remote_tool(text="That's quite cool"     ,							labels=["positive", "negative"]		)
          self.assertEqual(__UpperCamelCase     ,							"positive"		)

