mindspore.tools

查看源文件
mindspore.tools.stress_detect(detect_type='aic')[源代码]

用于检测硬件精度或链路间的通讯是否有故障。常见使用场景为在每个step或者保存checkpoint的时候,另起线程或通过Callback函数调用该接口,查看硬件是否有故障会影响精度。

参数:
  • detect_type (str,可选) - 进行压测的类型。有两种可选:'aic''hccs',分别会对设备进行AiCore和HCCS链路压测。默认 'aic'

返回:

int。返回值代表错误类型,0表示正常;1表示精度检测用例执行失败;2表示硬件故障,建议更换设备。

支持平台:

Ascend

样例:

>>> from mindspore.tools import stress_detect
>>> ret = stress_detect()
>>> print(ret)
0
mindspore.tools.sdc_detect_start()[源代码]

开启静默数据错误检测。开启后,会对当前设备正反向计算中MatMul的输入输出进行校验,因此执行时间会增加,校验耗时占比随矩阵形状增大而减小。 对于单个4096大小的MatMul计算,开启后性能下降约100%;对于Llama2-7B模型(数据并行为4,流水线并行为2,解码器使用qkv融合和ffn融合),开启后性能下降约90%。

支持平台:

Ascend

样例:

>>> from mindspore.tools import sdc_detect_start
>>> sdc_detect_start()
mindspore.tools.sdc_detect_stop()[源代码]

关闭静默数据错误检测。

支持平台:

Ascend

样例:

>>> from mindspore.tools import sdc_detect_stop
>>> sdc_detect_stop()
mindspore.tools.get_sdc_detect_result()[源代码]

获取静默数据错误检测结果。

返回:

bool,表示在检测开启后是否发生静默数据错误。

支持平台:

Ascend

样例:

>>> from mindspore.tools import get_sdc_detect_result
>>> result = get_sdc_detect_result()
>>> print(result)
False
mindspore.tools.set_dump(target, enabled=True)[源代码]

启用或者禁用 target 及其子节点的Dump数据功能。

targetmindspore.nn.Cellmindspore.ops.Primitive 的实例。请注意,此API仅在 ms_backend 编译后端(请参考 jit 中backend参数),开启Dump功能且Dump配置文件中的 dump_mode 字段为 "2" 时生效。有关详细信息,请参阅 Dump功能文档 。默认状态下, mindspore.nn.Cellmindspore.ops.Primitive 实例不使能Dump数据功能。

说明

  1. 此API只能在JIT编译中使用,要求目标设备为 "Ascend" 且使用 ms_backend 编译后端(请参考 jit 中backend参数),同时不支持融合算子。

  2. 此API只支持训练开始前调用。如果在训练过程中调用这个API,可能不会有效果。

  3. 使用 set_dump(Cell, True) 后,Cell正向计算和反向计算(梯度运算产生的计算)中的算子会被Dump。

  4. 对于 mindspore.nn.SoftmaxCrossEntropyWithLogits 层,正向计算和反向计算使用同一组算子。因此,只能看到反向计算中的Dump数据。请注意,当使用 sparse=Truereduce="mean" 初始化时, mindspore.nn.SoftmaxCrossEntropyWithLogits 层也将在内部使用这些算子。

参数:
  • target (Union[Cell, Primitive]) - 要设置Dump标志的Cell或Primitive的实例。

  • enabled (bool,可选) - True 表示启用Dump, False 表示禁用Dump,默认值: True

支持平台:

Ascend

样例:

说明

运行此样例之前请设置环境变量 MINDSPORE_DUMP_CONFIG 到配置文件,并将配置文件中的 dump_mode 字段设置为2。 详细信息请参阅 Dump功能文档

>>> import numpy as np
>>> import mindspore as ms
>>> import mindspore.nn as nn
>>> from mindspore import Tensor, jit
>>> from mindspore.tools import set_dump
>>>
>>> ms.set_device(device_target="Ascend")
>>>
>>> class MyNet(nn.Cell):
...     def __init__(self):
...         super().__init__()
...         self.conv1 = nn.Conv2d(5, 6, 5, pad_mode='valid')
...         self.relu1 = nn.ReLU()
...
...     @jit
...     def construct(self, x):
...         x = self.conv1(x)
...         x = self.relu1(x)
...         return x
>>>
>>> if __name__ == "__main__":
...     net = MyNet()
...     set_dump(net.conv1)
...     input_tensor = Tensor(np.ones([1, 5, 10, 10], dtype=np.float32))
...     output = net(input_tensor)