Несколько инструментов, которые помогут вам в ваших проектах машинного обучения с использованием Python.

Несколько лет назад я впервые научился писать код для машинного обучения, когда посещал свой первый курс машинного обучения во время учебы в аспирантуре по прикладной математике. Я узнал о математике, лежащей в основе классических алгоритмов машинного обучения, получил в свои руки популярные библиотеки Python, такие как scikit-learn, PyTorch и Tensorflow, и принял участие в моем первом соревновании Kaggle по набору данных Titanic.

Перенесемся на несколько лет вперед: после получения диплома по машинному обучению в Калифорнийском университете в Беркли я теперь работаю над разработкой моделей машинного обучения, которые в конечном итоге используются в производстве и в масштабе.

И, конечно же, код, который я сейчас пишу, сильно отличается от блокнотов Python, которые я писал, когда начинал. Несмотря на то, что я по-прежнему использую блокноты для исследовательской части, мой окончательный код структурирован с использованием только файлов Python, часто контейнеризированных, интегрированных с помощью CI/CD и запускаемых инструментами управления рабочим процессом.

Conda (инструмент управления средой)

Первое, что нужно учитывать при написании кода, — это создать среду, в которой ваш код будет жить.

Для науки о данных / машинного обучения лучшим инструментом для сред, вероятно, является Conda.

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



Hydra (инструмент настройки)

Другое дело, что код Data Science / Machine Learning часто содержит множество параметров (гиперпараметры, где регистрировать артефакты, этапы предварительной обработки и т. д.).

Для настройки одним из лучших инструментов является Hydra. Из самой документации гидры:

Ключевой функцией является возможность динамического создания иерархической конфигурации по составу и переопределения ее с помощью файлов конфигурации и командной строки. Название «Гидра» связано с тем, что она может выполнять несколько одинаковых задач — как гидра с несколькими головками.

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



Использование терминала (лучший способ навигации по файлам)

Что-то, что может быть немного болезненным при начале написания кода, но сделает вашу жизнь в 10 раз проще, как только вы к этому привыкнете, — это использование интерфейса терминала/командной строки для навигации по файлам и выполнения действий.

Если вам нужен краткий обзор основных действий, которые вы можете выполнять с терминалом, не стесняйтесь ознакомиться со статьей, которую я написал ниже:



MLFlow (инструмент обработки артефактов машинного обучения)

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

Но вы можете согласиться со мной, производственное машинное обучение — это своего рода нишевый вариант использования, и если вы не работаете в крупной торговой компании или FAANG, вам может не понадобиться развертывать свои модели в производстве…

Однако в целом вам может понадобиться место для хранения всех результатов ваших экспериментов с машинным обучением и информации о том, какая оценка проверки была получена с какими гиперпараметрами и т. д. Это именно то, что может предложить MLFlow Tracking.

Короче говоря, за считанные секунды вы можете просто зарегистрировать свои артефакты, и, набрав mlflow ui в своем терминале, вы мгновенно запустите сервер mlflow на http://127.0.0.1:5000/который будет читать из вашейmlrunsпапки. Если вам нужны подробности, дайте мне знать, и я напишу краткое руководство по этой теме.

Github Actions (или другой инструмент CI/CD)

Как только вы начнете работать в контексте, когда ваши модели машинного обучения необходимо переобучить или интегрировать в какую-либо архитектуру или даже написать ежедневные ETL, вы быстро поймете, что многие действия можно автоматизировать с помощью инструмента CI/CD, такого как Jenkins или действия GitHub (для ETL). Airlfow считается лучшим выбором, но это уже другая тема). Из документации GitHub:

GitHub Actions упрощает автоматизацию всех ваших программных рабочих процессов, теперь с помощью CI/CD мирового класса.

Примеры CI/CD включают сборку/загрузку образов Docker, проверки перед фиксацией, автоматическое тестирование и многое другое. Если вам нужны подробности, дайте мне знать, и я напишу краткое руководство о том, как можно использовать GitHub Actions для кода машинного обучения.

Конечно, есть еще много совершенно потрясающих инструментов, которые я использую ежедневно, например, облачные платформы, такие как AWS или GCP, Docker или Visual Studio Code, но немного. Если вы хотите получить более подробную информацию о том, как отраслевые стандарты для этих инструментов, не стесняйтесь обращаться!

Надеюсь, вам понравилась эта статья! Не стесняйтесь, если у вас есть какие-либо вопросы или предложения, в комментариях, или не стесняйтесь обращаться ко мне в LinkedIn, GitHub или Twitter, или ознакомьтесь с некоторыми другими учебниками, которые я написал для лучших практик DS / ML. .

PS: я думал написать MVP всех этих практик на конкурсе Kaggle (например, на наборе данных Titanic) для иллюстрации, дайте мне знать, если вы считаете, что это будет полезно!