mindspore.profiler.tensorboard_trace_handler

查看源文件
mindspore.profiler.tensorboard_trace_handler(dir_name: str = None, worker_name: str = None, analyse_flag: bool = True, async_mode: bool = False)[源代码]

对动态图模式的每一个step,调用该方法进行在线解析。

参数:
  • dir_name (str, 可选) - 指定保存分析结果的目录路径。默认为: None ,表示使用默认的保存路径,默认路径为:"./data"

  • worker_name (str, 可选) - 指定工程线程名称。默认为: None ,表示使用默认的工程线程名,默认工程线程名为:"当前操作系统名+进程号"

  • analyse_flag (bool, 可选) - 是否使用在线分析。默认为: True ,表示使用在线分析。

  • async_mode (bool, 可选) - 是否使用异步解析模式。默认值: False ,表示使用同步解析模式。

样例:

>>> import numpy as np
>>> import mindspore
>>> import mindspore.dataset as ds
>>> from mindspore import context, nn
>>> from mindspore.profiler import schedule, tensorboard_trace_handler
>>>
>>> class Net(nn.Cell):
...     def __init__(self):
...         super(Net, self).__init__()
...         self.fc = nn.Dense(2, 2)
...
...     def construct(self, x):
...         return self.fc(x)
>>>
>>> def generator_net():
...     for _ in range(2):
...         yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
>>>
>>> def train(test_net):
...     optimizer = nn.Momentum(test_net.trainable_params(), 1, 0.9)
...     loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...     data = ds.GeneratorDataset(generator_net(), ["data", "label"])
...     model = mindspore.train.Model(test_net, loss, optimizer)
...     model.train(1, data)
>>>
>>> if __name__ == '__main__':
...     # If the device_target is GPU, set the device_target to "GPU"
...     context.set_context(mode=mindspore.GRAPH_MODE)
...     mindspore.set_device("Ascend")
...
...     # Init Profiler
...     experimental_config = mindspore.profiler._ExperimentalConfig(
...                                 profiler_level=ProfilerLevel.Level0,
...                                 aic_metrics=AicoreMetrics.AiCoreNone,
...                                 l2_cache=False,
...                                 mstx=False,
...                                 data_simplification=False,
...                                 export_type=[ExportType.Text])
...     steps = 10
...     net = Net()
...     # Note that the Profiler should be initialized before model.train
...     with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
...                                     schedule=mindspore.profiler.schedule(wait=1, warmup=1, active=2,
...                                           repeat=1, skip_first=2),
...                                     on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
...                                     profile_memory=False,
...                                     experimental_config=experimental_config) as prof:
...
...         # Train Model
...         for step in range(steps):
...             train(net)
...             prof.step()