Anonymous
Деление на ноль встречается в matmul на MacOS M4 с numpy v2.0.0
Сообщение
Anonymous » 31 окт 2025, 10:07
Я сталкиваюсь со странным
RuntimeWarning: деление на ноль, обнаруженным в matmul при выполнении простого умножения матриц на моем новом компьютере Apple M4.
Самое странное заключается в том, что это предупреждение появляется именно тогда, когда размерность единичной матрицы равна n=15, но не возникает для n=14 или других меньших значений, которые я тестировал. Сам расчет выполнен правильно.
Среда
Аппаратное обеспечение: MacBook Pro (чип M4)
ОС: macOS Sonoma
Python: 3.12
Версия NumPy: 2.0.0 (или последняя версия, установленная через pip)
Минимальный воспроизводимый пример
Вот простой код, воспроизводящий проблему:
Код: Выделить всё
import numpy as np
print(f"NumPy version: {np.__version__}")
# This line produces the RuntimeWarning
print("Testing with n=15:")
try:
result_15 = np.identity(n=15) @ np.identity(n=15)
print(result_15)
except Exception as e:
print(e)
print("\n" + "="*30 + "\n")
# This line runs without any warning
print("Testing with n=14:")
try:
result_14 = np.identity(n=14) @ np.identity(n=14)
print(result_14)
except Exception as e:
print(e)
Выход:
Код: Выделить всё
(.venv) mursalatulpallob@Mac ml_codes % python del.py
NumPy version: 2.0.0
Testing with n=15:
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: divide by zero encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: overflow encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: invalid value encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
==============================
Testing with n=14:
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
Конфигурация BLAS numpy:
Код: Выделить всё
{
"Compilers": {
"c": {
"name": "clang",
"linker": "ld64",
"version": "15.0.0",
"commands": "cc"
},
"cython": {
"name": "cython",
"linker": "cython",
"version": "3.0.10",
"commands": "cython"
},
"c++": {
"name": "clang",
"linker": "ld64",
"version": "15.0.0",
"commands": "c++"
}
},
"Machine Information": {
"host": {
"cpu": "aarch64",
"family": "aarch64",
"endian": "little",
"system": "darwin"
},
"build": {
"cpu": "aarch64",
"family": "aarch64",
"endian": "little",
"system": "darwin"
}
},
"Build Dependencies": {
"blas": {
"name": "accelerate",
"found": true,
"version": "unknown",
"detection method": "system",
"include directory": "unknown",
"lib directory": "unknown",
"openblas configuration": "unknown",
"pc file directory": "unknown"
},
"lapack": {
"name": "accelerate",
"found": true,
"version": "unknown",
"detection method": "system",
"include directory": "unknown",
"lib directory": "unknown",
"openblas configuration": "unknown",
"pc file directory": "unknown"
}
},
"Python Information": {
"path": "/private/var/folders/dm/88b38gj92jj53dgxdsm12qf00000gn/T/build-env-j0ydyct6/bin/python",
"version": "3.9"
},
"SIMD Extensions": {
"baseline": [
"NEON",
"NEON_FP16",
"NEON_VFPV4",
"ASIMD"
],
"found": [
"ASIMDHP"
],
"not found": [
"ASIMDFHM"
]
}
}
Эта проблема не возникает в Windows или Linux. Есть ли способ исправить это, не понижая версию NumPy, поскольку для последних пакетов Python требуется актуальная версия?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... mpy-v2-0-0
1761894473
Anonymous
Я сталкиваюсь со странным [b]RuntimeWarning: деление на ноль, обнаруженным в matmul[/b] при выполнении простого умножения матриц на моем новом компьютере Apple M4. Самое странное заключается в том, что это предупреждение появляется именно тогда, когда размерность единичной матрицы равна n=15, но не возникает для n=14 или других меньших значений, которые я тестировал. Сам расчет выполнен правильно. [b]Среда[/b] Аппаратное обеспечение: MacBook Pro (чип M4) [list] [*]ОС: macOS Sonoma [*]Python: 3.12 [*]Версия NumPy: 2.0.0 (или последняя версия, установленная через pip) [/list] Минимальный воспроизводимый пример [b]Вот простой код, воспроизводящий проблему:[/b] [code]import numpy as np print(f"NumPy version: {np.__version__}") # This line produces the RuntimeWarning print("Testing with n=15:") try: result_15 = np.identity(n=15) @ np.identity(n=15) print(result_15) except Exception as e: print(e) print("\n" + "="*30 + "\n") # This line runs without any warning print("Testing with n=14:") try: result_14 = np.identity(n=14) @ np.identity(n=14) print(result_14) except Exception as e: print(e) [/code] Выход: [code](.venv) mursalatulpallob@Mac ml_codes % python del.py NumPy version: 2.0.0 Testing with n=15: /Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: divide by zero encountered in matmul result_15 = np.identity(n=15) @ np.identity(n=15) /Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: overflow encountered in matmul result_15 = np.identity(n=15) @ np.identity(n=15) /Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: invalid value encountered in matmul result_15 = np.identity(n=15) @ np.identity(n=15) [[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]] ============================== Testing with n=14: [[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]] [/code] Конфигурация BLAS numpy: [code]{ "Compilers": { "c": { "name": "clang", "linker": "ld64", "version": "15.0.0", "commands": "cc" }, "cython": { "name": "cython", "linker": "cython", "version": "3.0.10", "commands": "cython" }, "c++": { "name": "clang", "linker": "ld64", "version": "15.0.0", "commands": "c++" } }, "Machine Information": { "host": { "cpu": "aarch64", "family": "aarch64", "endian": "little", "system": "darwin" }, "build": { "cpu": "aarch64", "family": "aarch64", "endian": "little", "system": "darwin" } }, "Build Dependencies": { "blas": { "name": "accelerate", "found": true, "version": "unknown", "detection method": "system", "include directory": "unknown", "lib directory": "unknown", "openblas configuration": "unknown", "pc file directory": "unknown" }, "lapack": { "name": "accelerate", "found": true, "version": "unknown", "detection method": "system", "include directory": "unknown", "lib directory": "unknown", "openblas configuration": "unknown", "pc file directory": "unknown" } }, "Python Information": { "path": "/private/var/folders/dm/88b38gj92jj53dgxdsm12qf00000gn/T/build-env-j0ydyct6/bin/python", "version": "3.9" }, "SIMD Extensions": { "baseline": [ "NEON", "NEON_FP16", "NEON_VFPV4", "ASIMD" ], "found": [ "ASIMDHP" ], "not found": [ "ASIMDFHM" ] } } [/code] Эта проблема не возникает в Windows или Linux. Есть ли способ исправить это, не понижая версию NumPy, поскольку для последних пакетов Python требуется актуальная версия? Подробнее здесь: [url]https://stackoverflow.com/questions/79792627/divide-by-zero-encountered-in-matmul-on-macos-m4-with-numpy-v2-0-0[/url]