Машинное обучение с помощью MacBook

Несколько месяцев назад я приступил к проекту по созданию модели машинного обучения для своего собственного приложения для iOS. Я был очень рад начать создавать приложения машинного обучения на своем новом MacBook Pro. Я сам работал над несколькими проектами по машинному обучению (не для хвастовства или чего-то еще) на настольном компьютере Intel с графическим процессором NVIDIA. Итак, я был уверен, что смогу настроить этот проект за несколько минут…

…Я был совершенно неправ.

С июня 2020 года Apple полностью изменила свою внутреннюю инфраструктуру — перешла с использования процессоров Intel на собственные чипы M1 или M2. В результате появились уникальные усовершенствования, позволяющие убедиться, что некоторые инструменты и библиотеки, такие как TensorFlow, работают на Apple Silicon (чипы M1 или M2). Встроенная система ЦП + ГП на чипах Apple отлично подходит для машинного обучения, но ее настройка может быть действительно сложной, поскольку многие инструменты и библиотеки все еще догоняют.

Процесс настройки моей модели и переноса ее из TensorFlow в CoreML был, мягко говоря, ужасным. Итак, если вам нужны пошаговые инструкции по настройке Apple Silicon для создания собственных моделей машинного обучения, читайте дальше!

Часть 1. Настройка Macbook Pro M1 или M2 для работы с данными

Шаг 1. Установите Homebrew — менеджер пакетов для Apple Mac

Выполните следующую команду в новом окне терминала:

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

Найдите сообщение о том, что установка прошла успешно, как показано на изображении ниже:

Шаг 2. Установите инструменты XCode

Запустите эту команду в терминале:

xcode-select --install

Шаг 3: Установите минифорж

Это важный шаг для того, чтобы среда обработки данных работала на Apple Silicon.

Первым шагом является загрузка сценария оболочки по этой ссылке GitHub: https://github.com/conda-forge/miniforge

(Выберите последний установщик для arm64 — Apple Silicon, выделенный ниже)

Шаг 4: Установка Python

Загрузите и установите Anaconda, используя следующую ссылку: https://www.anaconda.com/products/distribution

Шаг 5: Установите зависимости TensorFlow

Очень важно установить правильную версию TensorFlow и подключаемых модулей TensorFlow от Apple! Это доставило мне массу неприятностей в первый раз.

Следуйте инструкциям на странице разработчика Apple прямо здесь, чтобы установить TensorFlow и металлический плагин TensorFlow: https://developer.apple.com/metal/tensorflow-plugin/

Вот инструкции, которые я выполнил, чтобы настроить среду:

После загрузки miniforge запустите программу bash для установки Miniforge. Код можно посмотреть ниже:

bash Miniforge3-MacOSX-arm64.sh

Продолжайте нажимать клавишу возврата, чтобы прочитать условия лицензирования и условия, а затем введите yes и нажмите клавишу возврата при появлении запроса. Как только это будет завершено, закройте терминал и снова откройте его. Выполните следующие команды в терминале:

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

Создайте виртуальную среду:

conda create -n dsenv python=3.9

Теперь давайте установим TensorFlow, начиная с зависимостей:

Установите зависимости TensorFlow, запустив этот код в терминале:

conda install -c apple tensorflow-deps --force-reinstall

ПРИМЕЧАНИЕ: версии tensorflow-deps следуют базовым версиям TensorFlow, поэтому, если вы можете указать правильную версию зависимостей для приведенной выше команды, если хотите:

Для версии 2.5 TensorFlow выполните следующую команду:

conda install -c apple tensorflow-deps==2.5.0

Для версии 2.6 TensorFlow выполните следующую команду:

conda install -c apple tensorflow-deps==2.6.0

ПРИМЕЧАНИЕ. Поддерживаются версии Python 3.8 и 3.9.

Шаг 6. Теперь установите плагины TensorFlow.

В том же окне терминала выполните следующие команды:

python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

Шаг 7. Установите лабораторию Jupyter и другие полезные библиотеки для ваших проектов по науке о данных.

ПРИМЕЧАНИЕ. Используйте конкретную версию Python для приведенных ниже команд. У меня версия 3.9.13, как показано в следующей команде терминала. Если вы не уверены, какая версия Python у вас установлена, просто запустите это:

python --version

Теперь давайте создадим среду с определенной версией Python и установим несколько полезных библиотек:

conda create -n ml python=3.9.13
conda activate ml
conda install -c conda-forge -y pandas jupyter
conda install -c conda-forge -y numpy
conda install -c conda-forge -y matplotlib
pip install tensorflow_datasets

Теперь все готово для проведения собственных экспериментов по науке о данных на собственном MacBook!

Часть 2. Преобразование моделей машинного обучения TensorFlow в CoreML

Чтобы использовать модели машинного обучения в приложении для iOS, вам потребуется использовать собственную платформу Apple CoreML. Фреймворк CoreML позволяет реализовывать модели машинного обучения на платформах Apple, таких как iOS или macOS.

Есть несколько разных способов сделать это. Один из подходов заключается в использовании существующих моделей CoreML, доступных в Интернете (несколько примеров здесь: https://likedan.github.io/Awesome-CoreML-Models/). Но если вы любите приключения, как я, вы можете использовать свои собственные модели TensorFlow. Для этого вам придется преобразовать обученные модели в CoreML, поэтому давайте посмотрим, как это сделать:

Шаг 1. Установите основные инструменты машинного обучения

Во-первых, давайте установим Core ML Tools, следуя приведенным ниже инструкциям. Если вам интересно, вы можете прочитать больше о Core ML Tools здесь: https://coremltools.readme.io/docs )

Найдите правильную версию пакета Core ML Tools по следующей ссылке github, совместимую с вашей версией TensorFlow, чтобы найти файл .whl: https://github.com/apple/coremltools/releases/

Теперь вам нужно быть осторожным с версией Core ML Tools, которую вы используете. В моем случае у меня была версия TensorFlow 2.8.2, поэтому я выбрал «coremltools 6.0».

Найдите нужный файл колеса из релизов. Вы хотите выбрать вариант для macOSx и arm64 (выделено ниже):

Теперь загрузите файл .whl, щелкнув ссылку, указанную выше, и выполните следующую команду, чтобы установить пакет Core ML Tools в вашей среде conda:

pip install coremltools-6.0-cp310-none-macosx_11_0_arm64.whl

Шаг 2. Преобразуйте обученную модель TensorFlow в CoreML

Теперь, когда у вас установлены инструменты Core ML и настроена среда Python, давайте преобразуем нашу модель TensorFlow в Core ML.

Сначала запустите блокнот Jupyter, используя приведенные ниже команды из окна терминала:

conda activate dsenv
jupyter notebook

Выполните следующие строки в блокноте Jupyter, чтобы импортировать все библиотеки TensorFlow, Keras и инструменты преобразования Core ML, а также загрузить свою модель TensorFlow. Замените «my_tensorflow_model.hdf5» вашим собственным файлом модели.

А затем в следующей ячейке используйте инструменты CoreML для преобразования только что загруженной модели в CoreML.

ПРИМЕЧАНИЕ. Файл classlabels.txt представляет собой простой текстовый файл с одной меткой класса в строке для приведенного ниже примера классификатора изображений. Вы можете заменить его своим собственным файлом меток классов.

Заключительные замечания

И вот оно! Теперь у вас есть собственная модель CoreML, которую вы можете использовать в своих приложениях для iOS! Я знаю, что процесс кажется долгим, но, в конце концов, это очень и очень полезно (поверьте мне).

Если вы новичок в CoreML и используете Apple Silicon, ознакомьтесь с другими замечательными блогами и статьями:

Новый чип Apple M1 — зверь с машинным обучением

Углубленное изучение M1 Pro с Apple Silicon