a
    d                     @   sp   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 rNd dlZeeZeG dd	 d	eZdS )
    )	dataclassfield)Tuple   )cached_propertyis_tf_availableloggingrequires_backends   )BenchmarkArgumentsNc                       s  e Zd ZU g dZ fddZedddidZeed< ed	dd
idZ	e
ed< edddidZeed< edddidZeed< eed dddZeed dddZeedddZeddddZedd Zee
ddd Zeedd!d"Z  ZS )#TensorFlowBenchmarkArguments)Zno_inferenceZno_cudaZno_tpuZno_speedZ	no_memoryZno_env_printZno_multi_processc                    s   | j D ]L}||v r|dd }|| ||< t| d| d| d||   q|d| j| _|d| j| _|d| j| _|d	| j| _t j	f 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 =tpu_name
device_idx
eager_modeuse_xla)
deprecated_argspoploggerwarningr   r   r   r   super__init__)selfkwargsZdeprecated_argZpositive_arg	__class__ q/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/transformers/benchmark/benchmark_args_tf.pyr   +   s     
z%TensorFlowBenchmarkArguments.__init__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   1tf.distribute.cluster_resolver.TPUClusterResolver)returnc                 C   sZ   t | dg d }| jrVz(| jr0tjj| j}ntjj }W n tyT   d }Y n0 |S Ntf)r	   tpur   r%   
distributeZcluster_resolverZTPUClusterResolver
ValueError)r   r&   r   r   r   
_setup_tpuN   s    
z'TensorFlowBenchmarkArguments._setup_tpu)tf.distribute.Strategyr"   c                 C   s   t | dg | jr@tj| j tjj| j tj	
| j}nX| jrttj| j| j d tj	jd| j d}n$tjg d tj	jd| j d}|S )Nr%   GPUz/gpu:)Zdevicez/cpu:)r	   is_tpur%   configZexperimental_connect_to_clusterr)   r&   ZexperimentalZinitialize_tpu_systemr'   ZTPUStrategyis_gpuZset_visible_devicesgpu_listr   ZOneDeviceStrategy)r   strategyr   r   r   _setup_strategy\   s    z,TensorFlowBenchmarkArguments._setup_strategyc                 C   s   t | dg | jd uS r$   )r	   r)   r   r   r   r   r,   p   s    z#TensorFlowBenchmarkArguments.is_tpur*   c                 C   s   t | dg | jS r$   )r	   r1   r2   r   r   r   r0   u   s    z%TensorFlowBenchmarkArguments.strategyc                 C   s   t | dg tjdS )Nr%   r+   )r	   r%   r-   Zlist_physical_devicesr2   r   r   r   r/   z   s    z%TensorFlowBenchmarkArguments.gpu_listc                 C   s    t | dg | jrt| jS dS )Nr%   r   )r	   Zcudalenr/   r2   r   r   r   n_gpu   s    
z"TensorFlowBenchmarkArguments.n_gpuc                 C   s
   | j dkS )Nr   )r4   r2   r   r   r   r.      s    z#TensorFlowBenchmarkArguments.is_gpu)__name__
__module____qualname__r   r   r   r   str__annotations__r   intr   boolr   r   r   r)   r1   propertyr,   r0   r/   r4   r.   __classcell__r   r   r   r   r      s<   


r   )Zdataclassesr   r   typingr   utilsr   r   r   r	   Zbenchmark_args_utilsr   Z
tensorflowr%   Z
get_loggerr5   r   r   r   r   r   r   <module>   s   
