mindspore.utils
- mindspore.utils.stress_detect(detect_type='aic')[源代码]
此接口将在后续版本中废弃,请使用接口
mindspore.tools.stress_detect()代替。- 参数:
detect_type (str,可选) - 进行压测的类型。有两种可选:
'aic'和'hccs',分别会对设备进行AiCore和HCCS链路压测。默认'aic'。
- 返回:
int。返回值代表错误类型,0表示正常;1表示精度检测用例执行失败;2表示硬件故障,建议更换设备。
- 支持平台:
Ascend
样例:
>>> from mindspore.utils import stress_detect >>> ret = stress_detect() >>> print(ret) 0
- mindspore.utils.dlpack.from_dlpack(dlpack)[源代码]
将DLPack对象转换为MindSpore Tensor。
此函数允许从其他支持DLPack的深度学习框架共享张量数据。 数据不会被复制,返回的MindSpore Tensor与源张量共享内存。
警告
这是一个实验性API,后续可能修改或删除。
- 参数:
dlpack (PyCapsule) - 要转换的DLPack对象,它是一个包含指向 DLManagedTensor 的指针的capsule。
- 返回:
Tensor, 与DLPack对象共享内存的MindSpore Tensor。
- 支持平台:
Ascend
样例:
>>> import mindspore as ms >>> from mindspore.utils.dlpack import to_dlpack, from_dlpack >>> import numpy as np >>> # Create a MindSpore Tensor and convert it to DLPack >>> x = ms.Tensor(np.random.rand(2, 3), ms.float32) >>> dlpack_obj = to_dlpack(x) >>> >>> # Convert the DLPack object back to a MindSpore Tensor >>> y = from_dlpack(dlpack_obj) >>> print(x.shape == y.shape) True
- mindspore.utils.dlpack.to_dlpack(tensor)[源代码]
将MindSpore的Tensor转换为DLPack对象。
DLPack格式是在不同深度学习框架之间共享张量数据的标准。 返回的DLPack对象是一个Python capsule,可以被其他支持DLPack的库使用。 该capsule包含一个指向 DLManagedTensor 结构的指针。DLPack对象的使用者负责释放内存。
警告
这是一个实验性API,后续可能修改或删除。
- 参数:
tensor (Tensor) - 要转换的MindSpore Tensor。
- 返回:
PyCapsule, 一个可以被其他库使用的DLPack对象。
- 支持平台:
Ascend
样例:
>>> import mindspore as ms >>> from mindspore.utils.dlpack import to_dlpack, from_dlpack >>> import numpy as np >>> # Convert a MindSpore Tensor to DLPack >>> x = ms.Tensor(np.random.rand(2, 3), ms.float32) >>> dlpack_obj = to_dlpack(x) >>> >>> # At this point, dlpack_obj can be used by other frameworks that support DLPack. >>> # For demonstration, we convert it back to a MindSpore Tensor. >>> y = from_dlpack(dlpack_obj) >>> print(x.shape == y.shape) True
- mindspore.utils.dryrun.set_simulation()[源代码]
用于设置dryrun功能开启。dryrun功能主要用于模拟大模型的实际运行,开启后可以在不占卡的情况下模拟出显存占用,编译信息等。 在PyNative场景下开启后,若存在从device取值到host的场景,会打印出Python调用栈日志,告知用户这些值是不准确的。
- 支持平台:
Ascend
样例:
>>> import mindspore as ms >>> from mindspore.utils import dryrun >>> import numpy as np >>> dryrun.set_simulation() >>> print(os.environ.get('MS_SIMULATION_LEVEL')) 1
- mindspore.utils.dryrun.mock(mock_val, *args)[源代码]
在网络中若一些if判断需要用到实际执行值,虚拟执行无法获取,可以使用该接口返回模拟值。实际执行时可以获取到正确结果,返回执行值。
- 参数:
mock_val (Union[Value, Tensor]) - 虚拟执行场景下,想要输出的值。
args (Union[Value, function]) - 期望被mock掉的值,可以是函数或者变量。
- 返回:
开启dryrun功能,返回静态模拟值(mock_val),否则返回实际执行结果(args)。
- 支持平台:
AscendGPUCPU
样例:
>>> import mindspore as ms >>> from mindspore.utils import dryrun >>> import numpy as np >>> dryrun.set_simulation() >>> a = ms.Tensor(np.random.rand(3, 3).astype(np.float32)) >>> if dryrun.mock(True, a[0, 0] > 0.5): ... print("return mock_val: True.") return mock_val: True >>> >>> import mindspore as ms >>> from mindspore.utils import dryrun >>> import numpy as np >>> a = ms.Tensor(np.ones((3, 3)).astype(np.float32)) >>> if dryrun.mock(False, a[0, 0] > 0.5): ... print("return real execution: True.") return real execution: True. >>> >>> import mindspore as ms >>> from mindspore.utils import dryrun >>> import numpy as np >>> a = ms.Tensor(np.ones((3, 3)).astype(np.float32)) >>> if dryrun.mock(False, (a > 0.5).any): ... print("return real execution: True.") return real execution: True.
- mindspore.utils.sdc_detect_start()[源代码]
此接口将在后续版本中废弃,请使用接口
mindspore.tools.sdc_detect_start()代替。- 支持平台:
Ascend
样例:
>>> from mindspore.utils import sdc_detect_start >>> sdc_detect_start()
- mindspore.utils.sdc_detect_stop()[源代码]
此接口将在后续版本中废弃,请使用接口
mindspore.tools.sdc_detect_stop()代替。- 支持平台:
Ascend
样例:
>>> from mindspore.utils import sdc_detect_stop >>> sdc_detect_stop()
- mindspore.utils.get_sdc_detect_result()[源代码]
此接口将在后续版本中废弃,请使用接口
mindspore.tools.get_sdc_detect_result()代替。- 返回:
bool,表示在检测开启后是否发生静默数据错误。
- 支持平台:
Ascend
样例:
>>> from mindspore.utils import get_sdc_detect_result >>> result = get_sdc_detect_result() >>> print(result) False
- class mindspore.utils.MsDispatchMode[源代码]
算子调度拦截的上下文管理器。
进入上下文后,在该作用域内执行的所有算子都会先调用
__ms_dispatch__回调方法。 用户可以通过此机制自定义算子行为,例如日志记录、性能分析或修改输入/输出。MsDispatchMode 支持嵌套使用。嵌套时,最内层的模式优先处理。退出嵌套上下文后, 外层模式恢复处理算子调度。
使用时需继承该类并重写
__ms_dispatch__方法。警告
这是一个实验性API,后续可能修改或删除。
说明
该上下文管理器也可以作为装饰器使用。
__ms_dispatch__方法接收一个包装了原始算子调用的OpFunc对象以及算子的参数。
- 异常:
TypeError - 如果子类的
__ms_dispatch__方法未正确接受参数(func, args, kwargs)。
- 支持平台:
AscendGPUCPU
样例:
>>> import mindspore as ms >>> from mindspore import Tensor, ops >>> >>> class OpLogger(ms.MsDispatchMode): ... '''Log all operator calls.''' ... def __ms_dispatch__(self, func, args, kwargs=None): ... print(f"Executing op: {func.name}") ... result = func(*args) ... print(f"Op {func.name} completed") ... return result ... >>> x = Tensor([1.0, 2.0, 3.0]) >>> y = Tensor([4.0, 5.0, 6.0]) >>> >>> # Single context usage >>> with OpLogger(): ... z = x + y # Will print log messages Executing op: Add Op Add completed >>> >>> # Nested context usage >>> class InnerGuard(ms.MsDispatchMode): ... def __ms_dispatch__(self, func, args, kwargs=None): ... print(f"[Inner] {func.name}") ... return func(*args) ... >>> with OpLogger(): ... a = x * 2 # OpLogger handles this ... with InnerGuard(): ... b = x + y # InnerGuard handles this (inner takes precedence) ... c = x - y # OpLogger handles this again Executing op: Mul Op Mul completed [Inner] Add Executing op: Sub Op Sub completed >>> >>> # Decorator usage >>> @OpLogger() ... def my_function(a, b): ... return a + b ... >>> result = my_function(x, y) # Will log the Add operation Executing op: Add Op Add completed