
    g                         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dS )
    )	dataclassfield)Tuple   )cached_propertyis_torch_availableis_torch_xla_availableis_torch_xpu_availableloggingrequires_backends   )BenchmarkArgumentsNc                   B    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 ]`}||v rZ|dd         }t          | ||                    |                      t                              | d| d| d||                     a|                    d| j                  | _        |                    d| j                  | _        |                    d| j                  | _         t                      j	        d	i | dS )
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       a/var/www/html/ai-engine/env/lib/python3.11/site-packages/transformers/benchmark/benchmark_args.pyr%   z"PyTorchBenchmarkArguments.__init__5   s   
 #2 	 	N''-abb1l

>0J0J,JKKK% > > > >$> >'-l';> >  
 "::mT5EFF+1::6SUYUu+v+v($jj)94;NO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                              d           | j        st	          j        d          }d}nt                      rt          j                    }d}nt                      r3t	          j        d          }t          j
                                        }nRt	          j        t          j                                        rdnd          }t          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22y 	.\%((FEE#%% 	.]__FEE#%% 	.\%((FI**,,EE\EJ,C,C,E,E"P&&5QQFJ++--Eu}r,   c                 ,    t                      o| j        S )N)r	   tpur&   s    r+   is_tpuz PyTorchBenchmarkArguments.is_tpuf   s    %''4DH4r,   c                 `    t          | dg           t          j                                        S )Nr4   )r   r4   r7   current_devicerB   s    r+   
device_idxz$PyTorchBenchmarkArguments.device_idxj   s(    $	***z((***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k    S )Nr   )r>   rB   s    r+   is_gpuz PyTorchBenchmarkArguments.is_gpuz   s    zA~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eeeKeee(-evOnFo(p(p(pppp%H
  NC    nc&9 :    _" 5 5 X5 +C + + + X+
 & & & X& & & X&   X    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^      s<  " ) ( ( ( ( ( ( (                      5 4 4 4 4 4  LLL *))))))))) 
	H	%	% R R R R R 2 R R R R Rr,   