
    sg                         d dl mZmZ d dlmZ ddlmZmZmZm	Z	 ddl
mZ  e       rd dlZ ej                  e      Ze G d d	e             Zy)
    )	dataclassfield)Tuple   )cached_propertyis_tf_availableloggingrequires_backends   )BenchmarkArgumentsNc                   L    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ddi      Zeed<   eded   fd       Zeded   fd       Zedefd       Zedd       Zed        Zede
fd       Zedefd       Z xZS )TensorFlowBenchmarkArguments)no_inferenceno_cudano_tpuno_speed	no_memoryno_env_printno_multi_processc                    | j                   D ]D  }||v s|dd }|j                  |       ||<   t        j                  | d| d| d||           F |j                  d| j                        | _        |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 =tpu_name
device_idx
eager_modeuse_xla )
deprecated_argspoploggerwarningr   r   r   r   super__init__)selfkwargsdeprecated_argpositive_arg	__class__s       [/var/www/html/venv/lib/python3.12/site-packages/transformers/benchmark/benchmark_args_tf.pyr#   z%TensorFlowBenchmarkArguments.__init__+   s    
 #22 	N'-ab1+1::n+E'E|$%&&G~ V$~Qvl';&<>		 

:t}}= **\4??C **\4??Czz)T\\:"6"    NhelpzName of TPU)defaultmetadatar   r   z&CPU / GPU device index. Defaults to 0.r   Fz Benchmark models in eager model.r   z]Benchmark models using XLA JIT compilation. Note that `eager_model` has to be set to `False`.r   return1tf.distribute.cluster_resolver.TPUClusterResolverc                 :   t        | dg       d }| j                  rm	 | j                  r5t        j                  j
                  j                  | j                        }|S t        j                  j
                  j                         }	 |S |S # t        $ r d }Y |S w xY wNtf)r
   tpur   r2   
distributecluster_resolverTPUClusterResolver
ValueError)r$   r3   s     r)   
_setup_tpuz'TensorFlowBenchmarkArguments._setup_tpuN   s    $'88==--88KKDMMZC
 
 --88KKMC 
s
  
s   ?B (B BB)tf.distribute.Strategyr/   c                    t        | dg       | j                  rt        j                  j	                  | j
                         t        j                  j                  j                  | j
                         t        j                  j                  | j
                        }|S | j                  rft        j                  j                  | j                  | j                     d       t        j                  j                  d| j                         }|S t        j                  j                  g d       t        j                  j                  d| j                         }|S )Nr2   GPUz/gpu:)devicez/cpu:)r
   is_tpur2   configexperimental_connect_to_clusterr8   r3   experimentalinitialize_tpu_systemr4   TPUStrategyis_gpuset_visible_devicesgpu_listr   OneDeviceStrategy)r$   strategys     r)   _setup_strategyz,TensorFlowBenchmarkArguments._setup_strategy\   s    $';;II55dooFFF55dooF}}00AH  {{		--dmmDOO.LeT==::E$//IZB[:\
  		--b%8==::E$//IZB[:\r*   c                 8    t        | dg       | j                  d uS r1   )r
   r8   r$   s    r)   r=   z#TensorFlowBenchmarkArguments.is_tpup   s    $'d**r*   c                 4    t        | dg       | j                  S r1   )r
   rH   rJ   s    r)   rG   z%TensorFlowBenchmarkArguments.strategyu   s    $'###r*   c                 Z    t        | dg       t        j                  j                  d      S )Nr2   r;   )r
   r2   r>   list_physical_devicesrJ   s    r)   rE   z%TensorFlowBenchmarkArguments.gpu_listz   s#    $'yy..u55r*   c                 `    t        | dg       | j                  rt        | j                        S y)Nr2   r   )r
   cudalenrE   rJ   s    r)   n_gpuz"TensorFlowBenchmarkArguments.n_gpu   s'    $'99t}}%%r*   c                      | j                   dkD  S )Nr   )rQ   rJ   s    r)   rC   z#TensorFlowBenchmarkArguments.is_gpu   s    zzA~r*   )r.   r9   )__name__
__module____qualname__r   r#   r   r   str__annotations__r   intr   boolr   r   r   r8   rH   propertyr=   rG   rE   rQ   rC   __classcell__)r(   s   @r)   r   r      s?   O#& -(Hc  BCJ  Uf>`5abJbs
GT  E"UV   't!u  & + + + $ $ 6 6 s     r*   r   )dataclassesr   r   typingr   utilsr   r   r	   r
   benchmark_args_utilsr   
tensorflowr2   
get_loggerrS   r    r   r   r*   r)   <module>rb      sT   " )  P P 4  
		H	% h#5 h hr*   