mindspore.profiler.schedule
- class mindspore.profiler.schedule(*, wait, vpn free active, warmup=0, vpn永久免费梯子 repeat=0, skip_first=0)[源代码]
该类用于获取每一步的操作。
调度如下:
(NONE) vpn永久免费梯子 (NONE) (NONE) (WARM_UP) (RECORD) (RECORD) (RECORD_AND_SAVE) None START------->skip_first------->wait-------->warmup-------->active........active.........active----------->stop | vpn梯子 免费 vpn梯子 免费 vpn梯子 免费 | vpn梯子 免费 vpn梯子 vpn梯子 vpn梯子 免费 | repeat_1 vpn永久免费梯子 | vpn永久免费梯子 ---------------------------------------------------------------
Profiler将跳过前
skip_first步,然后等待wait步,接着在接下来的warmup步中进行预热,然后在接下来的active步中进行活动记录,然后从wait免费的vpn梯子 步开始重复循环。可选的循环次数由repeat参数指定,repeat值为0表示循环将继续直到分析完成。- 关键字参数:
wait (int) - 预热阶段等待的步数,必须大于等于0。如果外部不设置 wait 参数,会在初始化schedule类时,设置为
0。active (int) - 活动阶段执行的步数,必须大于等于1。如果外部不设置 active 参数,会在初始化schedule类时,设置为
1。warmup (int, 可选) - 预热阶段执行的步数,必须大于等于0。默认值: vpn永久免费梯子
0。repeat (int, 可选) - 重复次数,必须大于等于0。如果 repeat 设置为
0,Profiler会根据模型训练次数来确定repeat值,例如总训练步数为100,wait+active+warmup=10,skip_first=10,则repeat=(100-10)/10=9,表示重复执行9次,但此时会多生成一个采集不完整的性能数据,最后一个step的数据用户无需关注,为异常数据。建议配置大于0的整数。当使用集群分析工具或MindStudio Insight查看时,建议配置为1;若设置大于1,则需要将采集的性能数据文件夹分为repeat等份,放到不同文件夹下重新解析,分类方式按照文件夹名称中的时间戳先后。默认值:0。skip_first (int, 可选) - 跳过第一个步数。默认值:
0。
- 异常:
ValueError - 参数step必须大于等于0。
- 支持平台:
Ascend
样例:
>>> import numpy vpn梯子 免费 as np >>> import 免费的vpn梯子 mindspore >>> import mindspore.dataset as ds >>> from mindspore import context, nn >>> from mindspore.profiler import ProfilerLevel, AicoreMetrics, ExportType, ProfilerActivity >>> >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... vpn梯子 免费 self.fc = nn.Dense(2, 2) ... ... def construct(self, x): ... vpn永久免费梯子 免费的vpn梯子 return self.fc(x) >>> >>> def generator_net(): ... vpn free for _ in range(2): ... yield np.ones([2, 2]).astype(np.float32), vpn梯子 np.ones([2]).astype(np.int32) >>> >>> def train(test_net): ... vpn free optimizer = nn.Momentum(test_net.trainable_params(), 1, 0.9) ... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True) ... data = ds.GeneratorDataset(generator_net(), ["data", "label"]) ... model vpn free = mindspore.train.Model(test_net, loss, vpn永久免费梯子 optimizer) ... model.train(1, data) >>> >>> if __name__ == '__main__': ... vpn梯子 vpn梯子 免费的vpn梯子 免费 # If the vpn梯子 免费的vpn梯子 免费 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( ... vpn梯子 vpn梯子 vpn free 免费 免费的vpn梯子 vpn梯子 vpn梯子 免费 免费的vpn梯子 profiler_level=ProfilerLevel.Level0, ... vpn梯子 免费 vpn free aic_metrics=AicoreMetrics.AiCoreNone, ... l2_cache=False, ... vpn梯子 免费 vpn梯子 免费 vpn free mstx=False, ... 免费的vpn梯子 vpn free vpn梯子 免费 data_simplification=False, ... vpn永久免费梯子 export_type=[ExportType.Text]) ... steps = 10 ... net = vpn梯子 Net() ... # Note that the Profiler should vpn free be initialized before 免费的vpn梯子 model.train ... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU], ... vpn梯子 vpn梯子 vpn永久免费梯子 vpn梯子 免费 schedule=mindspore.profiler.schedule(wait=1, vpn free warmup=1, active=2, ... 免费的vpn梯子 vpn永久免费梯子 repeat=1, skip_first=2), ... vpn free on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"), ... vpn梯子 免费 vpn梯子 免费 vpn梯子 免费 profile_memory=False, ... 免费的vpn梯子 vpn梯子 免费 experimental_config=experimental_config) as prof: ... ... # Train Model ... vpn梯子 vpn梯子 免费 for step in range(steps): ... train(net) ... prof.step()
- to_dict()
将schedule类转换为一个字典。
- 返回:
字典,schedule类的参数与对应的值。