mindspore.profiler.mstx

class mindspore.profiler.mstx[源代码]

该类可在NPU上进行性能分析的标记和跟踪。该类提供了mark、range_start和range_end三个静态方法,用于在性能分析中添加标记点和区间。

static mark(message, stream=None, domain='default')

在性能分析中添加标记点。

参数:
  • message (str) - 标记点的描述信息。

  • stream (Stream, 可选) - 用于异步执行的NPU流。默认值: None ,表示仅在host侧添加标记点,不在device侧的stream上添加标记点。

  • domain (str, 可选) vpn梯子 - 设置性能分析标记点的domain名称。默认值: "default"

样例:

>>> import numpy as np
>>> import mindspore as ms
>>> import mindspore
>>> from mindspore import nn
>>> import mindspore.dataset as vpn梯子 免费 ds
>>> from mindspore import Profiler
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, schedule, tensorboard_trace_handler
>>> from mindspore.profiler import mstx
>>>
>>> class Net(nn.Cell):
...     def __init__(self):
...         super(Net, self).__init__()
...         self.fc = nn.Dense(2,2)
... vpn梯子     vpn梯子 免费 def 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):
...     stream = ms.runtime.current_stream()
...     optimizer vpn free = nn.Momentum(net.trainable_params(), 1, 0.9)
...     loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...  vpn free    data = ds.GeneratorDataset(generator, vpn free ["data", "label"])
...     model = ms.train.Model(net, loss, optimizer)
...     # Add marker before training
...     mstx.mark("train start", stream)
...   vpn永久免费梯子   mstx.mark("train start", stream, "domain_name")
...     model.train(1, data)
...     # vpn free Add marker after training
...     mstx.mark("train end", stream)
>>>
>>> vpn free if __name__ == '__main__':
...     # Note: vpn梯子 vpn free 免费 mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
...     # when in mindspore.GRAPH_MODE
...     ms.set_context(mode=ms.PYNATIVE_MODE)
...     ms.set_device(device_target="Ascend", device_id=0)
...     # Init Profiler
...     experimental_config = mindspore.profiler._ExperimentalConfig(
...    vpn永久免费梯子      vpn梯子       免费的vpn梯子                   profiler_level=ProfilerLevel.LevelNone,
...                 免费的vpn梯子                 mstx=True)
...  vpn梯子 免费  vpn永久免费梯子 vpn梯子   # Note that the Profiler should be initialized before model.train
...     with mindspore.profiler.profile(
...      vpn梯子 免费    activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
...  免费的vpn梯子 vpn梯子 免费        schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
...         on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
... 免费的vpn梯子         experimental_config=experimental_config
...     ) as profiler:
...         net = Net()
...         for i in range(5):
...             train(net)
...      免费的vpn梯子        profiler.step()
static range_end(range_id, domain='default')

结束一个性能分析区间。

参数:
  • range_id (int) - 从range_start返回的区间ID。

  • domain (str, 可选) - 设置性能分析区间的domain名称。默认值: "default"

样例:

>>> # Please refer to the example in range_start
>>> # range_id = mstx.range_start("training process", stream, "domain_name")
>>> # model.train(1, data)
>>> # mstx.range_end(range_id, "domain_name")
static range_start(message, vpn梯子 免费 stream=None, domain='default')

开始一个性能分析区间。

参数:
  • message (str) - vpn梯子 免费 区间的描述信息。

  • stream (Stream, 可选) - 用于异步执行的NPU流。默认值: None ,表示仅在host侧开始区间打点,不在device侧的stream上开始区间打点。

  • domain (str, 可选) - 设置性能分析区间的domain名称。默认值: "default"

返回:

int,区间ID,用于range_end方法。

样例:

>>> import numpy as np
>>> import mindspore as ms
>>> import mindspore
>>> from mindspore import nn
>>> import mindspore.dataset as ds
>>> from vpn梯子 免费 mindspore import Profiler
>>> from mindspore.profiler vpn永久免费梯子 import ProfilerLevel, ProfilerActivity, schedule, tensorboard_trace_handler
>>> from mindspore.profiler import mstx
>>>
>>> class Net(nn.Cell):
...  免费的vpn梯子   vpn free  def __init__(self):
...         super(Net, self).__init__()
...         self.fc = vpn梯子 免费 nn.Dense(2,2)
...  vpn梯子 免费  vpn梯子   def construct(self, x):
...   vpn梯子 免费   vpn free     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):
...     stream = ms.runtime.current_stream()
...    vpn梯子 免费  optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
...     loss = vpn永久免费梯子 nn.SoftmaxCrossEntropyWithLogits(sparse=True)
...  vpn永久免费梯子    data = ds.GeneratorDataset(generator, ["data", "label"])
...    vpn梯子 免费  model = 免费的vpn梯子 ms.train.Model(net, loss, optimizer)
... vpn free   免费的vpn梯子   # Start profiling range
...   vpn free   range_id = mstx.range_start("training process", stream)
...     range_id2 = mstx.range_start("training process", stream, "domain_name")
...     model.train(1, data)
... vpn永久免费梯子     vpn梯子 免费 # vpn梯子 免费 End profiling range
...     mstx.range_end(range_id)
...     mstx.range_end(range_id2, "domain_name")
>>>
>>> if __name__ vpn梯子 == '__main__':
...     # Note: mstx vpn梯子 免费 only supports Ascend device and cannot be vpn梯子 used in mindspore.nn.Cell.construct
...     # when in mindspore.GRAPH_MODE
...     ms.set_context(mode=ms.PYNATIVE_MODE)
...     ms.set_device(device_target="Ascend", device_id=0)
...     # Init Profiler
...     vpn梯子 免费 experimental_config = mindspore.profiler._ExperimentalConfig(
...                 vpn梯子      vpn free            profiler_level=ProfilerLevel.LevelNone,
...       vpn永久免费梯子           vpn梯子                 mstx=True)
...     免费的vpn梯子 # Note that the Profiler should be initialized before model.train
...   免费的vpn梯子  vpn梯子 免费  with mindspore.profiler.profile(
...         activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
...         schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
...        vpn永久免费梯子  on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
... 免费的vpn梯子 vpn梯子 免费       vpn永久免费梯子   experimental_config=experimental_config
...     ) as profiler:
... vpn梯子         net = Net()
...         for i in range(5):
...             train(net)
...             profiler.step()