TensorFlow函数教程:tf.profiler.ProfileOptionBuilder
tf.profiler.ProfileOptionBuilder函数
类 ProfileOptionBuilder
定义在:tensorflow/python/profiler/option_builder.py。
用于Profiling API的Option Builder。
有关选项的教程,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md
# Users can use pre-built options:
opts = (
tf.profiler.ProfileOptionBuilder.trainable_variables_parameter())
# Or, build your own options:
opts = (tf.profiler.ProfileOptionBuilder()
.with_max_depth(10)
.with_min_micros(1000)
.select(['accelerator_micros'])
.with_stdout_output()
.build()
# Or customize the pre-built options:
opts = (tf.profiler.ProfileOptionBuilder(
tf.profiler.ProfileOptionBuilder.time_and_memory())
.with_displaying_options(show_name_regexes=['.*rnn.*'])
.build())
# Finally, profiling with the options:
_ = tf.profiler.profile(tf.get_default_graph(),
run_meta=run_meta,
cmd='scope',
options=opts)
__init__
__init__(options=None)
构造函数。
参数:
- options:以可选的初始选项dict开使。
方法
account_displayed_op_only
account_displayed_op_only(is_true)
是否仅考虑显示的profiler节点的统计信息。
参数:
- is_true:如果为true,则仅显示输出最终显示的节点的统计信息。否则,节点的统计信息由其父节点计算,只要它的类型匹配'account_type_regexes',即使它在输出中隐藏,例如hide_name_regexes。
返回:
self
build
build()
构建profiling选项。
返回:
profiling选项的词典。
float_operation
@staticmethod
float_operation()
用于配置float操作的选项。
有关计算float操作的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。
返回:
profiling选项的词典。
order_by
order_by(attribute)
根据属性对显示的profiler节点进行排序。
支持的属性包括micros,bytes,occurrence,params等。参考https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md
参数:
- attribute:profiler节点具有的属性。
返回:
self
select
select(attributes)
选择要显示的属性。
有关支持的属性,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md。
参数:
- attributes:profiler节点具有的属性列表。
返回:
self
time_and_memory
@staticmethod
time_and_memory(
min_micros=1,
min_bytes=1,
min_accelerator_micros=0,
min_cpu_micros=0,
min_peak_bytes=0,
min_residual_bytes=0,
min_output_bytes=0
)
显示操作时间和内存消耗。
参数:
- min_micros:仅显示执行时间不小于此的profiler节点。它总结了加速器和CPU时间。
- min_bytes:仅显示请求分配不低于此的字节的profiler节点。
- min_accelerator_micros:仅显示在加速器(例如GPU)上花费不少于此时间的profiler节点。
- min_cpu_micros:只显示在cpu上花费的时间不少于此时间的profiler节点。
- min_peak_bytes:仅显示在峰值时使用不小于此字节的profiler节点。对于由多个图节点组成的profiler节点,它将图节点的peak_bytes相加。
- min_residual_bytes:只有显示不小于此字节的profiler节点,其在Compute()结束后不会取消分配。对于由多个图节点组成的profiler节点,它对图节点的residual_bytes求和。
- min_output_bytes:仅显示具有不小于此字节输出的profiler节点。输出不一定由此profiler节点分配。
返回:
profiling选项的词典。
trainable_variables_parameter
@staticmethod
trainable_variables_parameter()
用于配置可训练变量参数的选项。
通常与“scope”视图一起使用。
返回:
profiling选项的词典。
with_accounted_types
with_accounted_types(account_type_regexes)
根据节点类型有选择地计数统计信息。
这里,'types'表示profiler节点的属性。默认情况下,profiler将设备名称(例如:/job:xx/.../device:GPU:0)和操作类型(例如:MatMul)视为profiler节点的属性。用户还可以通过OpLogProto proto将自定义的“类型”关联到profiler节点。
例如,用户可以使用account_type_regexes=['.*gpu:0.*']选择放置在gpu:0上的profiler节点:
如果节点的属性都不匹配指定的正则表达式,则不显示或计算节点。
参数:
- account_type_regexes:指定类型的正则表达式列表。
返回:
self
with_empty_output
with_empty_output()
不要生成副作用输出。
with_file_output
with_file_output(outfile)
将结果打印到文件。
with_max_depth
with_max_depth(max_depth)
设置显示的最大深度。
深度取决于profiling视图。对于“scope”视图,它是名称范围层次结构(树)的深度,对于“op”视图,它是操作类型(列表)的数量等。
参数:
- max_depth:要显示的数据结构的最大深度。
返回:
self
with_min_execution_time
with_min_execution_time(
min_micros=0,
min_accelerator_micros=0,
min_cpu_micros=0
)
只显示消耗不少于“min_micros”的profiler节点。
参数:
- min_micros:仅显示执行时间不小于此的profiler节点。它总结了加速器和CPU时间。
- min_accelerator_micros:仅显示在加速器(例如GPU)上花费不少于此时间的profiler节点。
- min_cpu_micros:只显示在cpu上花费的时间不少于此时间的profiler节点。
返回:
self
with_min_float_operations
with_min_float_operations(min_float_ops)
只显示消耗不少于“min_float_ops”的profiler节点。
有关计算float操作的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。
参数:
- min_float_ops:仅显示具有不小于此值的float操作的profiler节点。
返回:
self
with_min_memory
with_min_memory(
min_bytes=0,
min_peak_bytes=0,
min_residual_bytes=0,
min_output_bytes=0
)
仅显示消耗不少于'min_bytes'的profiler节点。
参数:
- min_bytes:仅显示请求分配不少于此字节数的profiler节点。
- min_peak_bytes:仅显示在峰值时使用不小于此字节的profiler节点。对于由多个图节点组成的profiler节点,它将图节点的peak_bytes相加。
- min_residual_bytes:只有显示不小于此字节的profiler节点,在Compute()结束后不会取消分配。对于由多个图节点组成的profiler节点,它对图节点的residual_bytes求和。
- min_output_bytes:仅显示具有不小于此字节输出的profiler节点。输出不一定由此profiler节点分配。
返回:
self
with_min_occurrence
with_min_occurrence(min_occurrence)
仅显示包含不少于“min_occurrence”图节点的profiler节点。
“node”表示profiler输出节点,其可以是python线(代码视图),操作类型(op视图)或图形节点(graph/scope视图)。python行包括由该行创建的所有图形节点,而操作类型包括该类型的所有图形节点。
参数:
- min_occurrence:仅显示包含不少于此的节点。
返回:
self
with_min_parameters
with_min_parameters(min_params)
仅显示不超过'min_params'参数的profiler节点。
'Parameters'通常是指TensorFlow变量的权重。它反映了模型的“capacity”。
参数:
- min_params:仅显示保存数字参数不小于此值的profiler节点。
返回:
self
with_node_names
with_node_names(
start_name_regexes=None,
show_name_regexes=None,
hide_name_regexes=None,
trim_name_regexes=None
)
用于选择要显示的profiler节点的正则表达式。
在评估'with_accounted_types'之后,'with_node_names'的计算方法如下:
对于profile数据结构,profile首先找到与“start_name_regexes”匹配的profile节点,并从那里开始显示profile节点。然后,如果节点与“show_name_regexes”匹配且与“hide_name_regexes”不匹配,则会显示该节点。如果节点与'trim_name_regexes'匹配,则profile将停止进一步搜索该分支。
参数:
- start_name_regexes:要开始显示的node_names正则表达式列表。
- show_name_regexes:要显示的node_names正则表达式列表。
- hide_name_regexes:应隐藏的node_names正则表达式列表。
- trim_name_regexes:从哪里停止的node_names正则表达式列表。
返回:
self
with_pprof_output
with_pprof_output(pprof_file)
生成pprof配置文件gzip文件。
使用pprof文件:
pprof -png --nodecount = 100 --sample_index = 1
参数:
- pprof_file:输出的文件名,通常以“.pb.gz”为后缀。
返回:
self
with_stdout_output
with_stdout_output()
将结果打印到stdout。
with_step
with_step(step)
用于profiling的配置文件步骤。
这里的“step”是指Profiler.add_step() API 定义的步骤。
参数:
- step:当配置文件的多个步骤可用时,选择要使用的步骤配置文件。如果为-1,则使用所有可用步骤的平均值。
返回:
self
with_timeline_output
with_timeline_output(timeline_file)
生成时间轴json文件。