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数据功能。
target 为
mindspore.nn.Cell
或mindspore.ops.Primitive
的实例。请注意,此API仅在 ms_backend 编译后端(请参考 jit 中backend参数),开启Dump功能且Dump配置文件中的 dump_mode 字段为"2"
时生效。有关详细信息,请参阅 Dump功能文档 。默认状态下,mindspore.nn.Cell
和mindspore.ops.Primitive
实例不使能Dump数据功能。说明
此API只能在JIT编译中使用,要求目标设备为 "Ascend" 且使用 ms_backend 编译后端(请参考 jit 中backend参数),同时不支持融合算子。
此API只支持训练开始前调用。如果在训练过程中调用这个API,可能不会有效果。
使用 set_dump(Cell, True) 后,Cell正向计算和反向计算(梯度运算产生的计算)中的算子会被Dump。
对于
mindspore.nn.SoftmaxCrossEntropyWithLogits
层,正向计算和反向计算使用同一组算子。因此,只能看到反向计算中的Dump数据。请注意,当使用 sparse=True 和 reduce="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)