
    sg                         d dl mZmZ d dlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ  e       rd dlZ e       r	d dlmc mZ  e
j&                  e      Ze G d d	e             Zy)
    )	dataclassfield)Tuple   )cached_propertyis_torch_availableis_torch_xla_availableis_torch_xpu_availableloggingrequires_backends   )BenchmarkArgumentsNc                       e Zd ZU g dZ fdZ edddi      Zeed<    edddi      Z	eed	<    ed
ddi      Z
eed<   ededef   fd       Zed        Zedefd       Zedd       Zed        Zed        Z xZS )PyTorchBenchmarkArguments)no_inferenceno_cudano_tpuno_speed	no_memoryno_env_printno_multi_processc                    | j                   D ]L  }||v s|dd }t        | ||j                  |              t        j	                  | d| d| d||           N |j                  d| j
                        | _        |j                  d| j                        | _        |j                  d| j                        | _        t        | $  d	i | y)
z
        This __init__ is there for legacy code. When removing deprecated args completely, the class can simply be
        deleted
           Nz! is depreciated. Please use --no_z or =torchscripttorch_xla_tpu_print_metricsfp16_opt_level )
deprecated_argssetattrpoploggerwarningr   r   r   super__init__)selfkwargsdeprecated_argpositive_arg	__class__s       X/var/www/html/venv/lib/python3.12/site-packages/transformers/benchmark/benchmark_args.pyr%   z"PyTorchBenchmarkArguments.__init__5   s    
 #22 	N'-ab1l

>0J,JK%&&G~ V$~Qvl';&<>		 "::mT5E5EF+1::6SUYUuUu+v($jj)94;N;NO"6"    Fhelpz"Trace the models using torchscript)defaultmetadatar   zPrint Xla/PyTorch tpu metricsr   O1zFor fp16: Apex AMP optimization level selected in ['O0', 'O1', 'O2', and 'O3']. See details at https://nvidia.github.io/apex/amp.htmlr   returntorch.devicec                    t        | dg       t        j                  d       | j                  st	        j
                  d      }d}||fS t               rt        j                         }d}||fS t               r7t	        j
                  d      }t        j                  j                         }||fS t	        j
                  t        j                  j                         rdnd      }t        j                  j                         }||fS )NtorchzPyTorch: setting up devicescpur   xpucuda)r   r"   infor7   r4   devicer	   xm
xla_devicer
   r6   device_countis_available)r&   r9   n_gpus      r+   _setup_devicesz(PyTorchBenchmarkArguments._setup_devicesT   s    $	*12yy\\%(FE u} $%]]_FE u} $%\\%(FII**,E u} \\EJJ,C,C,E&5QFJJ++-Eu}r,   c                 2    t               xr | j                  S )N)r	   tpur&   s    r+   is_tpuz PyTorchBenchmarkArguments.is_tpuf   s    %'4DHH4r,   c                 X    t        | dg       t        j                  j                         S )Nr4   )r   r4   r7   current_devicerB   s    r+   
device_idxz$PyTorchBenchmarkArguments.device_idxj   s!    $	*zz((**r,   c                 :    t        | dg       | j                  d   S )Nr4   r   r   r?   rB   s    r+   r9   z PyTorchBenchmarkArguments.devicep       $	*""1%%r,   c                 :    t        | dg       | j                  d   S )Nr4   r   rH   rB   s    r+   r>   zPyTorchBenchmarkArguments.n_gpuu   rI   r,   c                      | j                   dkD  S )Nr   )r>   rB   s    r+   is_gpuz PyTorchBenchmarkArguments.is_gpuz   s    zzA~r,   )r1   r2   )__name__
__module____qualname__r   r%   r   r   bool__annotations__r   r   strr   r   intr?   propertyrC   rF   r9   r>   rL   __classcell__)r*   s   @r+   r   r   )   s    O#& ev?c6deKe(-evOnFo(ppH
NC  nc&9 :  " 5 5 +C + +
 & & & &  r,   r   )dataclassesr   r   typingr   utilsr   r   r	   r
   r   r   benchmark_args_utilsr   r4   torch_xla.core.xla_modelcore	xla_modelr:   
get_loggerrM   r"   r   r   r,   r+   <module>r^      sf   " )   5 )) 
		H	% R 2 R Rr,   