PyTorch объявил в мае 2022 года в своем выпуске 1.12, что разработчики и исследователи могут использовать кремниевые графические процессоры Apple для значительно более быстрого обучения моделей. Однако до недавнего времени это было ограничено предварительной (ночной) версией, что делало ненадежной совместимость с другими библиотеками, зависящими от PyTorch.

Создание стабильной исследовательской среды для графового машинного обучения на Python, использующей возможности новой архитектуры рук, заняло много времени. Меня очень вдохновила эта выпуск на гитхабе и эта статья.

Это простое руководство по установке стабильной версии PyTorch Geometric на новые чипы M1/Apple Silicon. Это работает с сентября 2022 года.

Шаг 1. Обновите MacOS до версии 12.3+

Убедитесь, что у вас установлена ​​как минимум MacOS 12.3 (Monterey), так как ускорение графического процессора поддерживается только для версий 12.3 и выше. Если нет, продолжайте и обновите до последней версии. На момент написания у меня MacOS 12.5.1.

Шаг 2. Установите Miniforge3

Miniforge3 — это минимальный установщик conda, созданный сообществом. Особое внимание уделяется поддержке различных архитектур ЦП (x86_64, ppc64le и aarch64, включая Apple M1).

Это действительно важно! Anaconda еще не поддерживает arm64 (архитектура M1). Кроме того, он громоздкий и выполняет установку некоторых скрытых пакетов с неправильной архитектурой, которую может быть сложно отладить. Я настоятельно рекомендую полностью удалить анаконду, чтобы сделать это загляните в эту тему.

Если у вас еще не установлен homebrew:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)

Установка miniforge3 через homebrew — это путь:

$ brew install miniforge

Перед использованием команды conda вам необходимо указать источник .bashrc или .zshrc в зависимости от того, какой тип терминала вы используете. Я использую zsh, поэтому:

$ source ~/.zshrc

Инициализируйте conda как базовую среду:

$ conda init zsh

Перезагрузите терминал, прежде чем продолжить

Шаг 3. Создайте и активируйте новую среду conda

Теперь, когда у нас есть легкий установщик conda, давайте создадим и активируем новую среду с именем myenv.

$ conda create --name myenv python=3.8
$ conda activate myenv

Я обнаружил, что Python 3.8 действительно стабилен и совместим со всеми пакетами. Miniforge теперь поддерживает Python 3.9.

Шаг 4. Установите компиляторы arm64

$ conda install -y clang_osx-arm64 clangxx_osx-arm64 gfortran_osx-arm64

Они необходимы для создания версий факела и факела-геометрии для arm64.

Шаг 5. Установите факел

$ MACOSX_DEPLOYMENT_TARGET=12.5 CC=clang CXX=clang++ python -m pip --no-cache-dir install torch torchvision torchaudio

Здесь вы можете заменить MACOSX_DEPLOYMENT_TARGET=12.X на правильную версию вашей ОС.

Шаг 6. Проверьте, какая у вас версия резака

$ python -c "import torch; print(torch.__version__)"
>>> 1.12.1 (must be 1.12.0+)

Неважно, какая у вас версия факела, если она 1.12.0и выше.

Шаг 7. Установите факел-геометрию

$ MACOSX_DEPLOYMENT_TARGET=12.5 CC=clang CXX=clang++ python -m pip --no-cache-dir  install  torch-scatter -f https://data.pyg.org/whl/torch-1.12.1+${cpu}.html
$ MACOSX_DEPLOYMENT_TARGET=12.5 CC=clang CXX=clang++ python -m pip --no-cache-dir  install  torch-sparse -f https://data.pyg.org/whl/torch-1.12.1+${cpu}.html
$ MACOSX_DEPLOYMENT_TARGET=12.5 CC=clang CXX=clang++ python -m pip --no-cache-dir  install  torch-cluster -f https://data.pyg.org/whl/torch-1.12.1+${cpu}.html
$ MACOSX_DEPLOYMENT_TARGET=12.5 CC=clang CXX=clang++ python -m pip --no-cache-dir  install  torch-geometric

Обязательно укажите правильную версию MACOSX_DEPLOYMENT_TARGET и правильную версию факела в ссылке на сборку колес https://data.pyg.org/whl/torch-1.12.1+${cpu}.html..

Шаг 8: Проверка работоспособности

Теперь, когда мы установили правильные пакеты, проверьте, могут ли torch и torch-geometric обнаруживать MPS и работать на нем.

Запустите этот скрипт для проверки факела
Два оператора печати в начале должны оба возвращать значение True.

Запустите этот скрипт, чтобы протестировать факельную геометрию