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初始化的时候开启数据采集。默认值:
Truevpn梯子 免费 。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目录结构。
- 支持平台:
AscendGPU
样例:
>>> 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()