Подготовка MacOS к использованию ML

#python #tips

Читаю книгу “Глубокое обучение на Python” Шолле Ф. издательства Питер . Как любую книгу по компьютерным технологиям, практику нужно делать самостоятельно, пробуя и набивая шишки, чтобы в голове что-то осталось.

Книга новая, издание 2020 года, но попытался провести установку предлагаемого ПО в свою MacOS и столкнулся с тем, что львинная доля предлагаемых пакетов просто не установилась. Выпаала с ошибками. Пришлось сидеть и разбираться, что не так.

Далее предлагаю описание найденного решения, которое может являтся не совсем корректным. И возможно есть более “правильные” пути решения.

Pyenv

В MacOS Big Sur по умолчанию используется версия Python 3.8.2.

Для того, чтобы иметь возможность переключаться между версиями проще всего использовать pyenv . Установить просто:

brew update
brew install pyenv

После чего необходимо добавить в .bashrc вызов:

eval "$(pyenv init -)

Теперь можно устанавливать произвольные версии Python:

pyenv install -l
pyenv install 3.7.8
pyenv local 3.7.8

Первая команда выводит список доступных для установки версий, вторая команда производит установку версию 3.7.8, третья команда переключает на новую версию директорию проекта.

pipenv

Зависимости это головная боль Python-разработчика. И их описание через requirements.txt не стабильно. То, что собирается сейчас совершенно не факт, что будет собираться уже завтра.

В известном Guide to Python рекомендуется использовать для управления виртуальными окружениями и зависимостями pipenv.

Устанавливаем:

pip install --user pipenv

Теперь, после того, как переходим в директорию с будущим проектом, используем команду активации для указания использования определенной версии Python:

pipenv --python 3.7

И теперь можно проводить установку пакетов через вызов команды:

pipenv install keras

Создал простейший темплейт для инициализации базового набора для работы с ML: ml-template , можно просто создайть на его основе новый репозиторий и затем в его рабочей копии, после установки версии python 3.7, использовать команду для установки пакетов:

pipenv install

Переключаемся в созданное окружение:

pipenv shell

После чего вызов python будет проводиться с использованием установленных пакетов. Либо, как вариант, можно явно вызывать pipenv:

pipenv run python main.py

Проблемы

В описываемом окружении мне не удалось подружить используемые пакеты с jupyter. Во время установки jupyter возникает конфликт версии билиотеки importlib-metadata. По зависимостям приходит версия 3.1.1, а для jupyter требуется версия меньше 3.

Решения данной проблемы пока не нашел.

Кстати, пробовал использовать рекомендуемую всеми anaconda, но к своему удивлению, не смог провести установку keras. Как раз в связи с тем, что в системе используется версия 3.8.2 версия python. В то время как для keras требуется версия менее 3.8.

Но, надеюсь, что мне удалось в итоге решить проблему с использованием ML-пакетов в MacOS. Хотя бы немного.