Почему NumPy Native на M1 Max работает намного медленнее, чем на старом Intel i5?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему NumPy Native на M1 Max работает намного медленнее, чем на старом Intel i5?

Сообщение Anonymous »

Я только что купил новый MacBook Pro с чипом M1 Max и настраиваю Python. Я попробовал несколько комбинационных настроек для проверки скорости - теперь я совсем запутался. Сначала задайте мои вопросы здесь:
  • Почему 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).
2. Numpy установлен
  • Код: Выделить всё

    conda install numpy
    : numpy из оригинального канала conda-forge или предварительно установленный с помощью anaconda.
  • 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
3. Запуск из
  • Терминала.
  • 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 — это стоит

    Код: Выделить всё

    2.39917s
    [/b].
  • в другом сообщении (но не на английском) сообщается, что он работает с чипом M1 (не Pro или Max), miniforge+conda_installed_numpy —

    Код: Выделить всё

    2.53214s
    [/b], а miniforge+apple_tensorflow_numpy —

    Код: Выделить всё

    1.00613s
    [/b].
  • Вы также можете попробовать это самостоятельно.
Вот Подробная информация о процессоре:
  • Мой старый 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
Я строго следую инструкциям из обучающих программ — но почему все это происходит? Это из-за моих ошибок при установке или из-за чипа M1 Max? Поскольку моя работа во многом зависит от местных пробежек, для меня очень важна местная скорость. Будем очень признательны за любые предложения по возможному решению или любые данные на вашем устройстве :)

Подробнее здесь: https://stackoverflow.com/questions/702 ... d-intel-i5
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»