这个问题已在GitHub上提出 https://github.com/tensorflow/benchmarks/issues/132
=====================================================
在TensorFlow benchmarks测试时一直使用的是“--flag value”的形式,在我的印象中这样也是可以的,将value的值赋给flag,但是benchmarks中的几个参数用这种方式设置不能成功,比如“distortions”这个参数,默认为True,在命令行中设置为--distortions False”后仍然为True。
将问题提交到GitHub后,他们提出会加一个参数检验过程,但是,为保险起见,以后所有的flag均使用“--flag=value”的形式设置。
目前我找到的不能成功设置的有三个:“distortions”、“use_datasets”和“winograd_nonfused”。可能还有其他的,我没有覆盖所有的参数。
以下为验证过程:
1. 打印默认参数
# python tf_cnn_benchmarks.py
======model: trivial
======batch_size: 0
======data_name: None
======data_dir: None
======variable_update: parameter_server
======local_parameter_device: gpu
======all_reduce_spec: None
======batch_group_size: 1
======xla: False
======staged_vars: False
======num_inter_threads: 52
======num_intra_threads: 1
======resize_method: bilinear
======distortions: True
======use_datasets: True
======optimizer: momentum
======winograd_nonfused: True
======agg_small_grads_max_bytes: 0
======enable_layout_optimizer: False
2. 修改其中部分参数,以“--flag value”的形式
python tf_cnn_benchmarks.py \
--num_batches 100 --display_every 1 \
--num_gpus 8 \
--model resnet50 --batch_size 128 \
--data_name imagenet --data_dir /data0/imagenet_data \
--variable_update replicated --all_reduce_spec pscpu --local_parameter_device cpu \
--agg_small_grads_max_bytes 1024 \
--batch_group_size 4 --num_inter_threads 24 \
--optimizer momentum --distortions False \
--xla True --use_datasets False \
--winograd_nonfused False --enable_layout_optimizer True --resize_method nearest
打印出来为
======model: resnet50
======batch_size: 128
======data_name: imagenet
======data_dir: /data0/imagenet_data
======variable_update: replicated
======local_parameter_device: cpu
======all_reduce_spec: pscpu
======batch_group_size: 4
======xla: True
======staged_vars: False
======num_inter_threads: 24
======num_intra_threads: 1
======resize_method: nearest
======distortions: True # error
======use_datasets: True # error
======optimizer: momentum
======winograd_nonfused: True # error
======agg_small_grads_max_bytes: 1024
======enable_layout_optimizer: True
3. 改为“--flag=value”的形式
python tf_cnn_benchmarks.py \
--num_batches=100 --display_every=1 \
--num_gpus=8 \
--model=resnet50 --batch_size=128 \
--data_name=imagenet --data_dir=/data0/imagenet_data \
--variable_update=replicated --all_reduce_spec=pscpu --local_parameter_device=cpu \
--agg_small_grads_max_bytes=1024 \
--batch_group_size=4 --num_inter_threads=24 \
--optimizer=momentum --distortions=False \
--xla=True --use_datasets=False \
--winograd_nonfused=False --enable_layout_optimizer=True --resize_method=nearest
打印出来为
======model: resnet50
======batch_size: 128
======data_name: imagenet
======data_dir: /data0/imagenet_data
======variable_update: replicated
======local_parameter_device: cpu
======all_reduce_spec: pscpu
======batch_group_size: 4
======xla: True
======staged_vars: False
======num_inter_threads: 24
======num_intra_threads: 1
======resize_method: nearest
======distortions: False
======use_datasets: False
======optimizer: momentum
======winograd_nonfused: False
======agg_small_grads_max_bytes: 1024
======enable_layout_optimizer: True