U
    &c                     @   st   d dl Z d dlmZmZ d dlmZ ddlmZmZm	Z	 ddl
mZ e eZe r\d dlZeG dd deZdS )	    N)	dataclassfield)Tuple   )cached_propertyis_tf_availabletf_required)TrainingArgumentsc                   @   s   e Zd ZU 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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edef dddZeeddddZeeedddZdS ) TFTrainingArgumentsZadamhelpzhName of a Tensorflow optimizer among "adadelta, adagrad, adam, adamax, ftrl, nadam, rmsprop, sgd, adamw")defaultmetadataoptimizer_nameztext-classificationzXType of task, one of "text-classification", "token-classification", "question-answering"modeZSparseCategoricalCrossentropyzgName of a Tensorflow loss. For the list see: https://www.tensorflow.org/api_docs/python/tf/keras/losses	loss_nameNzName of TPUtpu_namer   zEnd learning rate for optimizerend_lri  z Run an evaluation every X steps.
eval_stepsFzIActivate the trace to record computation graphs and profiling informationdebugztf.distribute.Strategy)returnc                 C   s   t d tjd}| jr,tjjdd}nz(| jrFtjj	
| j}ntjj	
 }W n tk
rl   d }Y nX |rtj| tjj| tjj|}nXt|dkrtjjdd}n<t|dkrtjjdd}n t|dkrtj }ntd|S )	NzTensorflow: setting up strategyZGPUz/cpu:0)Zdevicer   r   z/gpu:0zICannot find the proper strategy please check your environment properties.)loggerinfotfconfigZlist_physical_devicesZno_cudaZ
distributeZOneDeviceStrategyr   Zcluster_resolverZTPUClusterResolver
ValueErrorZexperimental_connect_to_clustertpuZexperimentalZinitialize_tpu_systemZTPUStrategylenZMirroredStrategy)selfZgpusstrategyr    r   A/tmp/pip-unpacked-wheel-ymerj3tt/transformers/training_args_tf.py_setup_strategy,   s,    

z#TFTrainingArguments._setup_strategyc                 C   s   | j S N)r!   r   r   r   r    r   N   s    zTFTrainingArguments.strategyc                 C   s   | j jS r"   )r!   Znum_replicas_in_syncr#   r   r   r    n_gpuS   s    zTFTrainingArguments.n_gpu)__name__
__module____qualname__r   r   str__annotations__r   r   r   r   floatr   intr   boolr   r   r   r!   propertyr   r$   r   r   r   r    r
      sL   
      r
   )loggingZdataclassesr   r   typingr   Z
file_utilsr   r   r   Ztraining_argsr	   	getLoggerr%   r   Z
tensorflowr   r
   r   r   r   r    <module>   s   
