- Почему Python работает на M1 Max значительно (~ 100%) медленнее, чем на моем старом MacBook Pro 2016 года с Intel i5?
- Почему на M1 Max нет значительной разницы в скорости между собственным запуском (с помощью Miniforge) и запуском через Rosetta (с помощью anaconda) - который должен быть медленнее примерно на 20%?< /li>
Почему на M1 Max и собственном запуске нет значительной разницы в скорости между Numpy, установленным в Conda, и Numpy, установленным в TensorFlow - который должен быть быстрее?
< li>Почему на M1 Max запуск в PyCharm IDE постоянно медленнее примерно на 20%, чем запуск с терминала, чего не происходит на моем старом Intel Mac.
Вот настройки, которые я пробовал:
< сильный>1. Python установлен
- Miniforge-arm64, поэтому Python изначально запускается на чипе M1 Max Chip. (Проверьте в мониторе активности, тип процесса Python — Apple).
- Anaconda. Затем питон запускается через Россету. (Проверьте в Мониторе активности, тип процесса Python — Intel).
- : numpy из оригинального канала conda-forge или предварительно установленный с помощью anaconda.
Код: Выделить всё
conda install numpy
- Apple-TensorFlow: с Python, установленным miniforge, я напрямую устанавливаю tensorflow, и numpy также будет быть установлен. Говорят, что установленный таким образом numpy оптимизирован для Apple M1 и будет работать быстрее. Вот команды установки:
Код: Выделить всё
conda install -c apple tensorflow-deps
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal
- Терминала.
- PyCharm (версия Apple Silicon).
Код: Выделить всё
import time
import numpy as np
np.random.seed(42)
a = np.random.uniform(size=(300, 300))
runtimes = 10
timecosts = []
for _ in range(runtimes):
s_time = time.time()
for i in range(100):
a += 1
np.linalg.svd(a)
timecosts.append(time.time() - s_time)
print(f'mean of {runtimes} runs: {np.mean(timecosts):.5f}s')
Код: Выделить всё
+-----------------------------------+-----------------------+--------------------+
| Python installed by (run on)→ | Miniforge (native M1) | Anaconda (Rosseta) |
+----------------------+------------+------------+----------+----------+---------+
| Numpy installed by ↓ | Run from → | Terminal | PyCharm | Terminal | PyCharm |
+----------------------+------------+------------+----------+----------+---------+
| Apple Tensorflow | 4.19151 | 4.86248 | / | / |
+-----------------------------------+------------+----------+----------+---------+
| conda install numpy | 4.29386 | 4.98370 | 4.10029 | 4.99271 |
+-----------------------------------+------------+----------+----------+---------+
- запустите тот же код на моем старом MacBook Pro 2016 года с чипом i5 — это стоит [/b].
Код: Выделить всё
2.39917s
- в другом сообщении (но не на английском) сообщается, что он работает с чипом M1 (не Pro или Max), miniforge+conda_installed_numpy — [/b], а miniforge+apple_tensorflow_numpy —
Код: Выделить всё
2.53214s
[/b].Код: Выделить всё
1.00613s
- Вы также можете попробовать это самостоятельно.
- Мой старый i5:
Код: Выделить всё
$ sysctl -a | grep -e brand_string -e cpu.core_count
machdep.cpu.brand_string: Intel(R) Core(TM) i5-6360U CPU @ 2.00GHz
machdep.cpu.core_count: 2
- Мой новый M1 Max:
Код: Выделить всё
% sysctl -a | grep -e brand_string -e cpu.core_count
machdep.cpu.brand_string: Apple M1 Max
machdep.cpu.core_count: 10

Подробнее здесь: https://stackoverflow.com/questions/702 ... d-intel-i5