Включая Macbook M1 и несколько советов по более плавной установке
Когда Apple объявила о выпуске нового Macbook Apple Silicon M1, это застало сообщество машинного обучения врасплох. Первое, о чем думали все специалисты по данным, — есть ли какой-то потенциал в переносе их рабочего пространства на MacOS.
Конечно, такой шаг имел бы смысл, если бы по крайней мере 2 самых популярных фреймворка для обработки данных, Tensorflow и Pytorch, были бы совместимы с новым процессором. Что касается Tensorflow, то как сообщество, так и Apple добились большого прогресса. Кроме того, Apple выпустила новый плагин Metal, который позволяет Tensorflow использовать GPU через TensorFlow-metal PluggableDevice.
Вы можете получить доступ ко всем статьям из серии Настройка Apple M1 для глубокого обучения здесь, включая руководство о том, как установить Tensorflow на Mac M1.
Pytorch несколько отстал с точки зрения совместимости, однако теперь вы можете установить Pytorch изначально на MacBook M1. Вот как это сделать:
Примечание. Если вы уже установили Tensorflow, первые два шага можно пропустить.
Шаг 1: Установите Xcode
На некоторых Macbook M1 предустановлен Xcode. Если нет, то его можно легко загрузить из App Store. Затем установите инструменты командной строки Xcode с помощью этой команды:
$ xcode-select --install
Шаг 2: Установите MiniForge
По сути, MiniForge — это установщик conda, сравнимый с MiniConda. Одним из его самых больших преимуществ является совместимость с MacOS, включая устройства M1. Чтобы его скачать, перейдите на эту страницу, выберите установщик Apple Silicon и выполните:
$ bash Miniforge3-MacOSX-arm64.sh
Если у вас уже есть уже существующий дистрибутив conda, например. Anaconda или MiniConda, их не нужно удалять, чтобы использовать MiniForge. Для тех, кто знаком с экосистемой conda, только один дистрибутив conda может быть функциональным в данный момент времени. Прочтите эту статью, чтобы узнать, как эффективно управлять несколькими дистрибутивами conda одновременно!
Шаг 3: Настройте среду conda и установите MiniForge
Давайте создадим новую среду conda в MiniForge и назовем ее pytorch_m1. Также не забудьте ее активировать:
$ conda create --name pytorch_m1 python=3.8 $ conda activate pytorch_m1
Затем установите Pytorch. Отметьте здесь, чтобы найти подходящую версию. Поскольку нам нужна минималистичная установка Pytorch, просто выполните:
$ conda install -c pytorch pytorch
При необходимости установите блокнот или лабораторию Jupyter:
$ conda install -c conda-forge jupyter jupyterlab
Вот и все!
Чтобы проверить, что все работает, запустите простую программу:
# -*- coding: utf-8 -*- import torch import math dtype = torch.float device = torch.device("cpu") # Create random input and output data x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype) y = torch.sin(x) # Randomly initialize weights a = torch.randn((), device=device, dtype=dtype) b = torch.randn((), device=device, dtype=dtype) c = torch.randn((), device=device, dtype=dtype) d = torch.randn((), device=device, dtype=dtype) learning_rate = 1e-6 for t in range(2000): # Forward pass: compute predicted y y_pred = a + b * x + c * x ** 2 + d * x ** 3 # Compute and print loss loss = (y_pred - y).pow(2).sum().item() if t % 100 == 99: print(t, loss) # Backprop to compute gradients of a, b, c, d with respect to loss grad_y_pred = 2.0 * (y_pred - y) grad_a = grad_y_pred.sum() grad_b = (grad_y_pred * x).sum() grad_c = (grad_y_pred * x ** 2).sum() grad_d = (grad_y_pred * x ** 3).sum() # Update weights using gradient descent a -= learning_rate * grad_a b -= learning_rate * grad_b c -= learning_rate * grad_c d -= learning_rate * grad_d print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')
Кроме того, обязательно проверьте, работает ли программа изначально на процессоре Apple M1. В этом случае в разделе ‘Вид’ в Мониторе активности вы должны увидеть опцию «Apple». Если вы видите Intel, что-то пошло не так во время установки.
Решение нескольких распространенных проблем:
1 . Numpy не распознан
На самом деле эта проблема возникает из-за того, что Miniforge устанавливает версию numpy без conda-forge. Вероятно, вы увидите что-то вроде этого:
Эту проблему можно легко исправить, установив пакет openblas
:
$ conda install -c conda-forge openblas
2. Использование Intel вместо Apple:
Некоторые пользователи по-прежнему могут наблюдать в Мониторе активности, что вместо Apple используется Intel. Одним из возможных объяснений этого является то, что conda неправильно определила архитектуру arm64 (что делается автоматически). Как следствие, conda устанавливает версию библиотек на базе arm64.
В этом случае архитектура должна быть указана явно при создании новой среды conda. Чтобы решить эту проблему, при создании новой среды conda в Minforge вместо этого выполните следующее:
$ CONDA_SUBDIR=osx-arm64 conda create --name pytorch_m1 python=3.8
Заключительные замечания
Pytorch — неотъемлемая часть экосистемы науки о данных, и поэтому я считаю, что исчерпывающее руководство по установке этой платформы на новой серии компьютеров Apple абсолютно необходимо.
С другой стороны, Pytorch еще предстоит пройти долгий путь. Следующей вехой, вероятно, станет библиотека или плагин, который позволит Pytorch использовать GPU.