开发DNN的一个常见且重要的问题是哪种操作需要花费多长时间以及它们在设备和线程之间的分布情况。
在TensorFlow v1中,这可能是通过tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
传递给session.run()
来实现的,请参见Can I measure the execution time of individual operations with TensorFlow?
但是在V2中,没有更多的会话。相反,您可以像这样构建和训练模型:
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(loss='sparse_categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(),
metrics=['accuracy'])
model.fit(train_dataset, epochs=2)
我唯一能找到的选项是profiler
中的tensorflow_core.python.eager.profiler
API。这样,您将得到一个Trace ProtoBuf object,其中包含带有持续时间的事件。但是,我得到的事件被命名为'Model', 'BatchV2', 'TensorSlice', 'Prefetch', 'MemoryCacheImpl', 'MemoryCache', 'TFRecord', 'Shuffle', 'Map', 'FlatMap', '_Send', 'ParallelMap', 'NotEqual', 'ParallelInterleaveV2', 'LogicalAnd'
,并且与各层之间的关系不再明确。
如何为显示所有Ops的运行时以及设备和线程的任何模型获得适当的跟踪?
答案 0 :(得分:0)
TensorFlow Profiler需要Tensorflow和Tensorboard的 2.2版以上。
1。安装“ tensorboard_plugin_profile”
pip install -U tensorboard_plugin_profile
2。确认TensorFlow可以访问GPU
device_name = tf.test.gpu_device_name()
if not device_name:
raise SystemError('GPU device not found')
print('Found GPU at: {}'.format(device_name))
3。定义张量板回调
logs = "[save path]/logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs,
histogram_freq = 1, #option
profile_batch = 5) #option
在我的情况下,没有'profile_batch'选项,我获得了100个步骤编号(即时代) ex)tboard_callback = tf.keras.callbacks.TensorBoard(log_dir =日志)
4。在fit()处设置回调属性
history = model.fit(train_input, train_output,
batch_size=BATCH_SIZE, epochs=EPOCHS,
callbacks=[tboard_callback])
5。训练结束后,在Terminal上运行tensorboard
tensorboard --logdir [save path]/logs/
不需要双引号
ex)张量板--logdir c \ python \ tb \ logs
6。打开浏览器,然后输入“ localhost:6006”>配置文件> kernal_stats
7。检查“跟踪查看器”和“内核统计”
我没有GPU,所以无法获取kernel_stats。
有关它的更多信息,我推荐此页面。
https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras