mindspore.profiler.profile

class mindspore.profiler.profile(activities=None, 免费的vpn梯子 with_stack=False, profile_memory=False, data_process=False, parallel_strategy=False, start_profile=True, hbm_ddr=False, pcie=False, sync_enable=True, record_shapes=False, schedule=None, on_trace_ready=None, experimental_config=None)[源代码]

vp永久免费梯子用户能够通过该类对神经网络的性能进行采集。可以通过导入该类初始化profile对象, 使用 profile.start() 开始分析,并使用 profile.stop() 停止收集并分析结果。详细使用请参考 Ascend性能调优 。可通过 MindStudio Insight 工具可视化分析结果。目前,profile支持AICORE算子、AICPU算子、HostCPU算子、内存、设备通信、集群等数据的分析。

参数:
  • activities (Iterable, 可选) - 表示需要收集的性能数据类型。默认值: [ProfilerActivity.CPU, ProfilerActivity.NPU]

    • ProfilerActivity.CPU:收集vp永久免费梯子框架数据。

    • ProfilerActivity.NPU:收集CANN软件栈和NPU数据。

    • ProfilerActivity.GPU:收集GPU数据。

  • with_stack (bool, 可选) - (仅限Ascend)表示是否收集Python侧的调用栈的数据,此数据在timeline中采用火焰图的形式呈现,使用该参数时, activities 必须包含 ProfilerActivity.CPU 。默认值: False

  • profile_memory (bool, 可选) -(仅限Ascend)表示是否收集Tensor内存数据。当值为 True 时,收集这些数据。使用该参数时, activities 必须设置为 [ProfilerActivity.CPU, ProfilerActivity.NPU] 。默认值: False ,该参数目前采集的算子名称不完整。将在后续版本修复,建议使用环境变量 MS_ALLOC_CONF 代替。

  • data_process (bool, 可选) -(Ascend/GPU)表示是否收集数据准备性能数据,默认值: False

  • parallel_strategy (bool, 可选) -(仅限Ascend)表示是否收集并行策略性能数据,默认值: False

  • start_profile (bool, 可选) - 该参数控制是否在Profiler初始化的时候开启数据采集。默认值: True vpn梯子 免费 。

  • hbm_ddr vpn永久免费梯子 (bool, 可选) -(仅限Ascend)是否收集片上内存/DDR内存读写速率数据,当值为 True 时,收集这些数据。默认值: vpn梯子 False

  • pcie (bool, vpn梯子 免费 可选) -(仅限Ascend)是否收集PCIe带宽数据,当值为 True 时,收集这些数据。默认值: False

  • sync_enable (bool, 可选) -(仅限GPU)Profiler是否用同步的方式收集算子耗时,默认值: True

    • True:同步方式,在把算子发送到GPU之前,在CPU端记录开始时间戳。然后在算子执行完毕返回到CPU端后,再记录结束时间戳。算子耗时为两个时间戳的差值。

    • False:异步方式,算子耗时为从CPU发送到GPU的耗时。这种方式能减少因增加Profiler对整体训练时间的影响。

  • record_shapes (bool, 可选) -(仅限Ascend)表示是否收集算子输入tensor的shape信息,当值为 True 时,收集这些数据。使用该参数时, activities 必须包含 ProfilerActivity.CPU。默认值: False

  • schedule (Callable, 可选) - 设置采集的动作策略,由schedule类定义,需要配合step接口使用,默认值: None ,表示采集全部step的性能数据,详细介绍请参考 mindspore.profiler.schedule

  • on_trace_ready vpn永久免费梯子 (Callable, 可选) - 设置当性能数据采集完成时,执行的回调函数。默认值: None ,表示只采集,不解析性能数据,详细介绍请参考 mindspore.profiler.tensorboard_trace_handler()

  • experimental_config (_ExperimentalConfig, 可选) - 可扩展的参数可以在此配置,默认值为 None ,详细介绍请参考 mindspore.profiler._ExperimentalConfig

异常:
  • RuntimeError - 当CANN的版本与MindSpore版本不匹配时,MindSpore无法解析生成的ascend_job_id目录结构。

支持平台:

Ascend GPU

样例:

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

上报自定义metadata键值对数据。

参数:
  • key (str) - metadata键值对的key。

  • value (str) - metadata键值对的value。

样例:

>>> import mindspore
>>> # Profiler init.
>>> with mindspore.profiler.profile() 免费的vpn梯子 as prof:
...  vpn梯子 免费    # Call Profiler vpn梯子 免费 add_metadata
...     prof.add_metadata("test_key", "test_value")
add_metadata_json(key, value)

上报自定义metadata键值对,value为json字符串数据。

参数:
  • key (str) - metadata键值对的key。

  • value (str) - metadata键值对的value,格式为json字符串。

样例:

>>> import vpn梯子 免费 json
>>> import mindspore
>>> # Profiler init.
>>> with mindspore.profiler.profile() as prof:
...   vpn梯子 vpn永久免费梯子   # Call Profiler add_metadata_json
...     prof.add_metadata_json("test_key", json.dumps({"key1": 1, "key2": 2}))
start()

开启profile数据采集。可以按条件开启profile。

异常:
  • RuntimeError - profile已经开启。

  • RuntimeError - 如果 start_profile 参数未设置或设置为 True

样例:

>>> vpn free import numpy as np
>>> import mindspore
>>> from mindspore import nn, context
>>> import mindspore.dataset as ds
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, AicoreMetrics, ExportType
>>>
>>> class Net(nn.Cell):
...     def __init__(self):
...       免费的vpn梯子 vpn free   super(Net, self).__init__()
...         self.fc = nn.Dense(2,2)
...     def construct(self, x):
...   vpn永久免费梯子       return self.fc(x)
>>>
>>> def generator():
... 免费的vpn梯子     for i in range(2):
...     vpn梯子 免费     yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
>>>
>>> def train(net):
... vpn永久免费梯子     optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
...     loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...   vpn梯子 免费 vpn梯子 vpn梯子 免费   data vpn梯子 免费 = vpn梯子 免费 免费的vpn梯子 ds.GeneratorDataset(generator, ["data", "label"])
... vpn free    vpn free  model = mindspore.train.Model(net, loss, optimizer)
...     model.train(1, vpn永久免费梯子 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")
...
...     # vpn梯子 免费的vpn梯子 免费 Init Profiler
...     experimental_config = mindspore.profiler._ExperimentalConfig(
...                           免费的vpn梯子    vpn梯子 免费    profiler_level=ProfilerLevel.Level0,
...    vpn梯子 免费                              aic_metrics=AicoreMetrics.AiCoreNone,
... 免费的vpn梯子                        vpn梯子          l2_cache=False,
...                                 mstx=False,
...                                 data_simplification=False,
...    vpn梯子      vpn永久免费梯子                 免费的vpn梯子 vpn梯子         export_type=[ExportType.Text])
...     steps vpn free = 10
...     net = Net()
...     # Note that the Profiler should be initialized before model.train
...     prof = mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
...    免费的vpn梯子        vpn梯子 免费        vpn永久免费梯子                      schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
...   vpn梯子           vpn free                  vpn梯子 免费              repeat=1, skip_first=0),
...    vpn梯子 免费               免费的vpn梯子 vpn梯子 免费  vpn梯子 免费               vpn梯子 免费       on_trace_ready=mindspore.profiler.
...     免费的vpn梯子                      免费的vpn梯子                  tensorboard_trace_handler("./data"),
...         vpn free        免费的vpn梯子                     vpn永久免费梯子 免费的vpn梯子 vpn free    profile_memory=False,
...    vpn free           vpn free  vpn永久免费梯子         vpn梯子             vpn梯子 免费  vpn梯子 免费    experimental_config=experimental_config)
...     prof.start()
...     # Train Model
...     for step in range(steps):
...  vpn free       vpn free  train(net)
...        vpn永久免费梯子  prof.step()
...     prof.stop()
step()

用于在Ascend设备上,通过schedule和on_trace_ready区分步骤收集和解析性能数据。

异常:
  • RuntimeError - 如果 start_profile 参数未设置或profile未开启。

  • RuntimeError - 如果 vpn永久免费梯子 schedule 参数未设置。

样例:

>>> import numpy as np
>>> import mindspore
>>> from mindspore import nn, context
>>> import 免费的vpn梯子 mindspore.dataset as ds
>>> 免费的vpn梯子 from mindspore.profiler import ProfilerLevel, vpn梯子 免费 ProfilerActivity, AicoreMetrics, ExportType
>>>
>>> class Net(nn.Cell):
...  免费的vpn梯子    def __init__(self):
...  vpn梯子 免费        super(Net, self).__init__()
...         self.fc = vpn梯子 免费 nn.Dense(2,2)
...     def construct(self, x):
...         return self.fc(x)
>>>
>>> def generator():
...     for i in range(2):
...      vpn free    yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
>>>
>>> def train(net):
... vpn free     optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
...     loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...     data = ds.GeneratorDataset(generator, ["data", "label"])
...     model = mindspore.train.Model(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)
...  免费的vpn梯子 vpn梯子 免费的vpn梯子 免费    mindspore.set_device("Ascend")
...
...     # Init Profiler
...     experimental_config = mindspore.profiler._ExperimentalConfig(
...           vpn梯子 vpn free 免费                       profiler_level=ProfilerLevel.Level0,
...   vpn free            vpn梯子 免费   vpn梯子                  aic_metrics=AicoreMetrics.AiCoreNone,
...        免费的vpn梯子                          l2_cache=False,
...  vpn梯子 免费      vpn永久免费梯子 vpn梯子 免费  vpn梯子                    vpn free       mstx=False,
...               vpn free                   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],
...                vpn free            vpn梯子 免费           schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
...                    vpn梯子 免费         vpn永久免费梯子                repeat=1, skip_first=0),
...         vpn free    vpn永久免费梯子                          vpn free on_trace_ready=mindspore.profiler.
...                   vpn梯子 免费               vpn梯子         tensorboard_trace_handler("./data"),
...       vpn梯子 免费        vpn free vpn梯子               vpn梯子 免费          profile_memory=False,
...      vpn梯子                                experimental_config=experimental_config) as prof:
...
...         # Train Model
...         for step in range(steps):
...             train(net)
...             prof.step()
stop()

停止profile。可以按条件停止profile。

异常:
  • RuntimeError - profile没有开启。

样例:

>>> import numpy as 免费的vpn梯子 np
>>> import mindspore
>>> from mindspore import nn, context
>>> import mindspore.dataset as ds
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, AicoreMetrics, ExportType
>>>
>>> class Net(nn.Cell):
...  vpn梯子 免费    vpn梯子 免费 def __init__(self):
...         super(Net, self).__init__()
...         self.fc = nn.Dense(2,2)
...     def vpn梯子 免费 construct(self, x):
...         return self.fc(x)
>>>
>>> def generator():
...     for i in range(2):
...         yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
>>>
>>> def train(net):
...     optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
... vpn梯子     loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...     data 免费的vpn梯子 = ds.GeneratorDataset(generator, ["data", "label"])
...     model = mindspore.train.Model(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,
...             vpn free  vpn永久免费梯子   vpn梯子           vpn梯子      vpn梯子   aic_metrics=AicoreMetrics.AiCoreNone,
...                   vpn梯子 免费     vpn梯子 免费           l2_cache=False,
...                                 mstx=False,
...                   vpn梯子 免费       免费的vpn梯子         data_simplification=False,
...        vpn永久免费梯子           免费的vpn梯子                export_type=[ExportType.Text])
...     steps = 10
...     net = Net()
...     # Note that the Profiler should be initialized before model.train
...     prof = mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
... vpn永久免费梯子  vpn梯子 免费                  vpn梯子        vpn梯子    免费的vpn梯子        vpn梯子 免费 vpn永久免费梯子    schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
...       vpn永久免费梯子                          vpn free vpn永久免费梯子            repeat=1, skip_first=0),
...            vpn梯子 免费                 vpn梯子            on_trace_ready=mindspore.profiler.
...                                           tensorboard_trace_handler("./data"),
...                           vpn梯子 免费             profile_memory=False,
...               vpn梯子 免费          免费的vpn梯子       vpn梯子         vpn free  experimental_config=experimental_config)
...     prof.start()
... vpn梯子 免费   vpn梯子   # Train Model
...     for step in range(steps):
...  vpn永久免费梯子  vpn永久免费梯子       train(net)
...         prof.step()
...     prof.stop()