TensorFlow函數(shù)教程:tf.profiler.ProfileOptionBuilder

2019-02-16 17:21 更新

tf.profiler.ProfileOptionBuilder函數(shù)

類 ProfileOptionBuilder

定義在:tensorflow/python/profiler/option_builder.py。

用于Profiling API的Option Builder。

有關(guān)選項(xiàng)的教程,請參閱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)

構(gòu)造函數(shù)。

參數(shù):

  • options:以可選的初始選項(xiàng)dict開使。

方法

account_displayed_op_only

account_displayed_op_only(is_true)

是否僅考慮顯示的profiler節(jié)點(diǎn)的統(tǒng)計信息。

參數(shù):

  • is_true:如果為true,則僅顯示輸出最終顯示的節(jié)點(diǎn)的統(tǒng)計信息。否則,節(jié)點(diǎn)的統(tǒng)計信息由其父節(jié)點(diǎn)計算,只要它的類型匹配'account_type_regexes',即使它在輸出中隱藏,例如hide_name_regexes。

返回:

self

build

build()

構(gòu)建profiling選項(xiàng)。

返回:

profiling選項(xiàng)的詞典。

float_operation

@staticmethod
float_operation()

用于配置float操作的選項(xiàng)。

有關(guān)計算float操作的注意事項(xiàng),請參閱https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

返回:

profiling選項(xiàng)的詞典。

order_by

order_by(attribute)

根據(jù)屬性對顯示的profiler節(jié)點(diǎn)進(jìn)行排序。

支持的屬性包括micros,bytes,occurrence,params等。參考https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md

參數(shù):

  • attribute:profiler節(jié)點(diǎn)具有的屬性。

返回:

self

select

select(attributes)

選擇要顯示的屬性。

有關(guān)支持的屬性,請參閱https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md。

參數(shù):

  • attributes:profiler節(jié)點(diǎn)具有的屬性列表。

返回:

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
)

顯示操作時間和內(nèi)存消耗。

參數(shù):

  • min_micros:僅顯示執(zhí)行時間不小于此的profiler節(jié)點(diǎn)。它總結(jié)了加速器和CPU時間。
  • min_bytes:僅顯示請求分配不低于此的字節(jié)的profiler節(jié)點(diǎn)。
  • min_accelerator_micros:僅顯示在加速器(例如GPU)上花費(fèi)不少于此時間的profiler節(jié)點(diǎn)。
  • min_cpu_micros:只顯示在cpu上花費(fèi)的時間不少于此時間的profiler節(jié)點(diǎn)。
  • min_peak_bytes:僅顯示在峰值時使用不小于此字節(jié)的profiler節(jié)點(diǎn)。對于由多個圖節(jié)點(diǎn)組成的profiler節(jié)點(diǎn),它將圖節(jié)點(diǎn)的peak_bytes相加。
  • min_residual_bytes:只有顯示不小于此字節(jié)的profiler節(jié)點(diǎn),其在Compute()結(jié)束后不會取消分配。對于由多個圖節(jié)點(diǎn)組成的profiler節(jié)點(diǎn),它對圖節(jié)點(diǎn)的residual_bytes求和。
  • min_output_bytes:僅顯示具有不小于此字節(jié)輸出的profiler節(jié)點(diǎn)。輸出不一定由此profiler節(jié)點(diǎn)分配。

返回:

profiling選項(xiàng)的詞典。

trainable_variables_parameter

@staticmethod
trainable_variables_parameter()

用于配置可訓(xùn)練變量參數(shù)的選項(xiàng)。

通常與“scope”視圖一起使用。

返回:

profiling選項(xiàng)的詞典。

with_accounted_types

with_accounted_types(account_type_regexes)

根據(jù)節(jié)點(diǎn)類型有選擇地計數(shù)統(tǒng)計信息。

這里,'types'表示profiler節(jié)點(diǎn)的屬性。默認(rèn)情況下,profiler將設(shè)備名稱(例如:/job:xx/.../device:GPU:0)和操作類型(例如:MatMul)視為profiler節(jié)點(diǎn)的屬性。用戶還可以通過OpLogProto proto將自定義的“類型”關(guān)聯(lián)到profiler節(jié)點(diǎn)。

例如,用戶可以使用account_type_regexes=['.*gpu:0.*']選擇放置在gpu:0上的profiler節(jié)點(diǎn): 

如果節(jié)點(diǎn)的屬性都不匹配指定的正則表達(dá)式,則不顯示或計算節(jié)點(diǎn)。

參數(shù):

  • account_type_regexes:指定類型的正則表達(dá)式列表。

返回:

self

with_empty_output

with_empty_output()

不要生成副作用輸出。

with_file_output

with_file_output(outfile)

將結(jié)果打印到文件。

with_max_depth

with_max_depth(max_depth)

設(shè)置顯示的最大深度。

深度取決于profiling視圖。對于“scope”視圖,它是名稱范圍層次結(jié)構(gòu)(樹)的深度,對于“op”視圖,它是操作類型(列表)的數(shù)量等。

參數(shù):

  • max_depth:要顯示的數(shù)據(jù)結(jié)構(gòu)的最大深度。

返回:

self

with_min_execution_time

with_min_execution_time(
    min_micros=0,
    min_accelerator_micros=0,
    min_cpu_micros=0
)

只顯示消耗不少于“min_micros”的profiler節(jié)點(diǎn)。

參數(shù):

  • min_micros:僅顯示執(zhí)行時間不小于此的profiler節(jié)點(diǎn)。它總結(jié)了加速器和CPU時間。
  • min_accelerator_micros:僅顯示在加速器(例如GPU)上花費(fèi)不少于此時間的profiler節(jié)點(diǎn)。
  • min_cpu_micros:只顯示在cpu上花費(fèi)的時間不少于此時間的profiler節(jié)點(diǎn)。

返回:

self

with_min_float_operations

with_min_float_operations(min_float_ops)

只顯示消耗不少于“min_float_ops”的profiler節(jié)點(diǎn)。

有關(guān)計算float操作的注意事項(xiàng),請參閱https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

參數(shù):

  • min_float_ops:僅顯示具有不小于此值的float操作的profiler節(jié)點(diǎn)。

返回:

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節(jié)點(diǎn)。

參數(shù):

  • min_bytes:僅顯示請求分配不少于此字節(jié)數(shù)的profiler節(jié)點(diǎn)。
  • min_peak_bytes:僅顯示在峰值時使用不小于此字節(jié)的profiler節(jié)點(diǎn)。對于由多個圖節(jié)點(diǎn)組成的profiler節(jié)點(diǎn),它將圖節(jié)點(diǎn)的peak_bytes相加。
  • min_residual_bytes:只有顯示不小于此字節(jié)的profiler節(jié)點(diǎn),在Compute()結(jié)束后不會取消分配。對于由多個圖節(jié)點(diǎn)組成的profiler節(jié)點(diǎn),它對圖節(jié)點(diǎn)的residual_bytes求和。
  • min_output_bytes:僅顯示具有不小于此字節(jié)輸出的profiler節(jié)點(diǎn)。輸出不一定由此profiler節(jié)點(diǎn)分配。

返回:

self

with_min_occurrence

with_min_occurrence(min_occurrence)

僅顯示包含不少于“min_occurrence”圖節(jié)點(diǎn)的profiler節(jié)點(diǎn)。

“node”表示profiler輸出節(jié)點(diǎn),其可以是python線(代碼視圖),操作類型(op視圖)或圖形節(jié)點(diǎn)(graph/scope視圖)。python行包括由該行創(chuàng)建的所有圖形節(jié)點(diǎn),而操作類型包括該類型的所有圖形節(jié)點(diǎn)。

參數(shù):

  • min_occurrence:僅顯示包含不少于此的節(jié)點(diǎn)。

返回:

self

with_min_parameters

with_min_parameters(min_params)

僅顯示不超過'min_params'參數(shù)的profiler節(jié)點(diǎn)。

'Parameters'通常是指TensorFlow變量的權(quán)重。它反映了模型的“capacity”。

參數(shù):

  • min_params:僅顯示保存數(shù)字參數(shù)不小于此值的profiler節(jié)點(diǎn)。

返回:

self

with_node_names

with_node_names(
    start_name_regexes=None,
    show_name_regexes=None,
    hide_name_regexes=None,
    trim_name_regexes=None
)

用于選擇要顯示的profiler節(jié)點(diǎn)的正則表達(dá)式。

在評估'with_accounted_types'之后,'with_node_names'的計算方法如下:

對于profile數(shù)據(jù)結(jié)構(gòu),profile首先找到與“start_name_regexes”匹配的profile節(jié)點(diǎn),并從那里開始顯示profile節(jié)點(diǎn)。然后,如果節(jié)點(diǎn)與“show_name_regexes”匹配且與“hide_name_regexes”不匹配,則會顯示該節(jié)點(diǎn)。如果節(jié)點(diǎn)與'trim_name_regexes'匹配,則profile將停止進(jìn)一步搜索該分支。

參數(shù):

  • start_name_regexes:要開始顯示的node_names正則表達(dá)式列表。
  • show_name_regexes:要顯示的node_names正則表達(dá)式列表。
  • hide_name_regexes:應(yīng)隱藏的node_names正則表達(dá)式列表。
  • trim_name_regexes:從哪里停止的node_names正則表達(dá)式列表。

返回:

self

with_pprof_output

with_pprof_output(pprof_file)

生成pprof配置文件gzip文件。

使用pprof文件:

pprof -png --nodecount = 100 --sample_index = 1

參數(shù):

  • pprof_file:輸出的文件名,通常以“.pb.gz”為后綴。

返回:

self

with_stdout_output

with_stdout_output()

將結(jié)果打印到stdout。

with_step

with_step(step)

用于profiling的配置文件步驟。

這里的“step”是指Profiler.add_step() API 定義的步驟。

參數(shù):

  • step:當(dāng)配置文件的多個步驟可用時,選擇要使用的步驟配置文件。如果為-1,則使用所有可用步驟的平均值。

返回:

self

with_timeline_output

with_timeline_output(timeline_file)

生成時間軸json文件。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號