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)。

支持平台:

Ascend GPU CPU

样例:

>>> 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)

支持平台:

Ascend GPU CPU

样例:

>>> 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