Машинное обучение с помощью 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, ознакомьтесь с другими замечательными блогами и статьями: