





"""simple docstring"""



from dataclasses import dataclass, field
from typing import Tuple

from ..utils import cached_property, is_torch_available, is_torch_tpu_available, logging, requires_backends
from .benchmark_args_utils import BenchmarkArguments


if is_torch_available():
       import torch

if is_torch_tpu_available(check_device=False):
       import torch_xla.core.xla_model as xm


a_ =			logging.get_logger(__name__)






@dataclass
class 		__snake_case					(		UpperCamelCase__     ):





 """simple docstring"""


 _lowerCamelCase        =     [
     """no_inference""",
     """no_cuda""",
     """no_tpu""",
     """no_speed""",
     """no_memory""",
     """no_env_print""",
     """no_multi_process""",
 ]

 def __init__(    self					,						**__lowerCamelCase  ):



     '''simple docstring'''




     for deprecated_arg in self.deprecated_args:
         if deprecated_arg in kwargs:
             __A    :						Dict						 =     deprecated_arg[3:]
             setattr(self					,						__a					,						not kwargs.pop(__a  )  )
             logger.warning(
                 F"""{deprecated_arg} is depreciated. Please use --no_{positive_arg} or"""
                 F""" {positive_arg}={kwargs[positive_arg]}"""  )

     __A    :						Dict						 =     kwargs.pop('''torchscript'''					,						self.torchscript  )
     __A    :						Union[str, Any]						 =     kwargs.pop('''torch_xla_tpu_print_metrics'''					,						self.torch_xla_tpu_print_metrics  )
     __A    :						Union[str, Any]						 =     kwargs.pop('''fp16_opt_level'''					,						self.fpaa_opt_level  )
     super().__init__(**__a  )

 _lowerCamelCase        =     field(default=UpperCamelCase__							,							metadata={"""help""": """Trace the models using torchscript"""}     )
 _lowerCamelCase        =     field(default=UpperCamelCase__							,							metadata={"""help""": """Print Xla/PyTorch tpu metrics"""}     )
 _lowerCamelCase        =     field(
     default="""O1"""							,							metadata={
         """help""": (
             """For fp16: Apex AMP optimization level selected in ['O0', 'O1', 'O2', and 'O3']. """
             """See details at https://nvidia.github.io/apex/amp.html"""
         )
     }							,							)

 @cached_property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     requires_backends(self					,						['''torch''']  )
     logger.info('''PyTorch: setting up devices'''  )
     if not self.cuda:
         __A    :						Optional[int]						 =     torch.device('''cpu'''  )
         __A    :						List[Any]						 =     0
     elif is_torch_tpu_available():
         __A    :						str						 =     xm.xla_device()
         __A    :						int						 =     0
     else:
         __A    :						Tuple						 =     torch.device('''cuda''' if torch.cuda.is_available() else '''cpu'''  )
         __A    :						Optional[Any]						 =     torch.cuda.device_count()
     return device, n_gpu

 @property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     return is_torch_tpu_available() and self.tpu

 @property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     requires_backends(self					,						['''torch''']  )
     # TODO(PVP): currently only single GPU is supported
     return torch.cuda.current_device()

 @property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     requires_backends(self					,						['''torch''']  )
     return self._setup_devices[0]

 @property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     requires_backends(self					,						['''torch''']  )
     return self._setup_devices[1]







 @property
 def 					UpperCamelCase__(    self  ):



     '''simple docstring'''




     return self.n_gpu > 0





'''simple docstring'''





from transformers import DistilBertTokenizer, DistilBertTokenizerFast
from transformers.testing_utils import require_tokenizers, slow

from ..bert.test_tokenization_bert import BertTokenizationTest




@require_tokenizers
class        __A      ( UpperCamelCase__	):
    a__       :						Optional[Any]          =  DistilBertTokenizer
    a__       :						Any          =  DistilBertTokenizerFast
    a__       :						str          =  True



    @slow
    def 					_lowercase						(self    :    int ):
         UpperCAmelCase_           =   DistilBertTokenizer.from_pretrained("distilbert-base-uncased" )

         UpperCAmelCase_           =   tokenizer.encode("sequence builders"   ,			add_special_tokens=__a )
         UpperCAmelCase_           =   tokenizer.encode("multi-sequence build"   ,			add_special_tokens=__a )

         UpperCAmelCase_           =   tokenizer.build_inputs_with_special_tokens(__a )
         UpperCAmelCase_           =   tokenizer.build_inputs_with_special_tokens(__a   ,			__a )

         assert encoded_sentence == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id]
         assert encoded_pair == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id] + text_a + [
             tokenizer.sep_token_id
         ]




