本教程介绍如何在GPU上使用MindSpore Profiler进行性能调试。
/home/user/code/data
,则summary-base-dir设为/home/user/code
。启动成功后,根据IP和端口访问可视化界面,默认访问地址为 http://127.0.0.1:8080
。普通用户在默认情况下无权访问目标设备上的NVIDIA GPU性能计数器。
如果普通用户需要在训练脚本中使用profiler性能统计能力,则需参考以下网址的说明进行权限配置。
https://developer.nvidia.com/nvidia-development-tools-solutions-err-nvgpuctrperm-cupti
为了收集神经网络的性能数据,需要在训练脚本中添加MindSpore Profiler相关接口。
set_context
之后,需要初始化MindSpore Profiler
对象。
GPU多卡场景需要在
set_auto_parallel_context
之后初始化Profiler
对象。GPU场景下初始化Profiler对象时只有output_path参数有效。
在训练结束后,调用Profiler.analyse
停止性能数据收集并生成性能分析结果。
样例代码与Ascend使用方式一致,可以参考:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/performance_profiling_ascend.html#准备训练脚本
GPU场景可自定义callback方式收集性能,但数据准备阶段、数据下沉模式不支持该方式收集性能数据。
示例如下:
from mindspore.train.callback import Callback
class StopAtStep(Callback):
def __init__(self, start_step, stop_step):
super(StopAtStep, self).__init__()
self.start_step = start_step
self.stop_step = stop_step
self.profiler = Profiler(start_profile=False)
def step_begin(self, run_context):
cb_params = run_context.original_args()
step_num = cb_params.cur_step_num
if step_num == self.start_step:
self.profiler.start()
def step_end(self, run_context):
cb_params = run_context.original_args()
step_num = cb_params.cur_step_num
if step_num == self.stop_step:
self.profiler.stop()
def end(self, run_context):
self.profiler.analyse()
以上代码仅供参考,用户可根据所需场景自由实现。
启动命令请参考MindInsight相关命令。
用户从训练列表中选择指定的训练,点击性能调试,可以查看该次训练的性能数据(目前GPU场景支持算子耗时统计排名、Timeline、迭代轨迹分析以及数据准备性能分析,其他功能敬请期待)。
图1:性能数据总览
图1展示了性能数据总览页面,包含了迭代轨迹(Step Trace)、算子性能、数据准备性能和Timeline等组件的数据总体呈现:
用户可以点击查看详情链接,进入组件页面进行详细分析。
使用算子性能分析组件可以对MindSpore运行过程中的各个算子的执行时间进行统计展示(包括GPU算子、CUDA内核、HOSTCPU算子)。
图2:算子类别统计分析
图2展示了按算子类别进行统计分析的结果,包含以下内容:
图2下半部分展示了算子性能统计表,包含以下内容:
图3:内核信息分析
图3展示了CUDA activity信息统计,包含以下内容:
op_full_name
(所属算子名称)进行部分匹配的搜索。GPU场景下,Timeline分析的使用方法和Ascend场景相同,不同之处是,GPU Timeline展示的是算子信息(包括GPU算子和CPU算子)和CUDA activity的信息。
使用方法可参考:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/performance_profiling_ascend.html#timeline分析
GPU场景下,迭代轨迹分析的使用方法和Ascend场景相同。(注意:迭代轨迹暂不支持异构训练场景)
使用方法可参考:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/performance_profiling_ascend.html#迭代轨迹分析
GPU场景下,数据准备性能分析的使用方法和Ascend场景相同。
使用方法可参考:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/performance_profiling_ascend.html#数据准备性能分析
资源利用包括CPU利用率分析。
图4:资源利用总览
图4展示了资源利用总览页面,展示了CPU利用率的情况。通过点击右上角的查看详情
按钮可以查看详细信息。
GPU场景下,CPU利用率分析的使用方法和Ascend场景相同。
使用方法可参考:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.7/performance_profiling_ascend.html#cpu利用率分析
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。