Если вы пропустили это, посетите первую часть этой серии, чтобы получить обзор моего проекта.

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

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

Автоматизировать что?

О чем мы говорим на самом деле? Проще говоря, мы хотим, чтобы часть нашего рабочего процесса выполнялась автоматически, по расписанию или по событию, и производилась некоторый результат. Примеры могут включать:

  • данные перемещаются из местоположения A в местоположение B каждое утро
  • Модель каждый час считывает данные из таблицы и переобучается или выдает прогнозы.
  • Если прогнозы модели превышают определенное значение, пользователю или специалисту по сопровождению направляются предупреждения.
  • Когда код помещается в наше хранилище на основе git, запускаются тесты, чтобы убедиться, что он соответствует стандартам.

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

Локальный крон? Нет.

Некоторые пользователи могут подумать о локальном cron, когда я говорю о запланированных вещах — простой системе на вашем локальном компьютере для планирования запуска кода на более позднее время. (Отложите на данный момент облачный cron — это другое.) Это очень мелкомасштабная версия того, о чем мы говорим, и по своей природе она сопряжена с множеством рисков, связанных с другими локальными решениями и инструменты (в отличие от облачных).

Если ваш ноутбук испорчен, это запланированное задание не будет работать — нет резервного копирования, обработки ошибок или плана на случай чрезвычайных ситуаций, когда вы используете cron на своем ноутбуке. Эта базовая форма cron также имеет ограниченные встроенные инструменты для отслеживания ошибок или проблем, поэтому, если что-то пойдет не так, вы рискуете не сказать или, конечно, не знать, почему это произошло. Кроме того, поскольку работа выполняется на вашем ноутбуке, если вы уезжаете в отпуск, заболеваете или что-то в этом роде, никто не может вмешаться, чтобы помочь вам управлять автоматизацией.

Короче говоря, не размещайте свои производственные системы на локальном cron, потому что он недостаточно надежен для такой ответственности.

Облачное планирование

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

Электроинструмент

Airflow. Если вы и ваша команда знакомы с объектно-ориентированным программированием и хорошо разбираетесь в ориентированных ациклических графах, Airflow станет для вас чем-то вроде ракеты-планировщика. Он может делать почти все (кроме простой передачи данных между задачами, но это всего лишь шутка для всех пользователей Airflow). Если эти понятия для вас как греческие, я бы посоветовал вам пропустить Airflow и избавить себя от стресса. Кроме того, чтобы запустить Airflow в облаке, вам нужно выполнить серьезную работу DevOps и предоставить собственные вычислительные ресурсы (например, AWS EC2).

Чуть меньше мощности (но более счастливые пользователи)

Prefect/Prefect Cloud: шаг вниз по мощности, но намного проще и удобнее в использовании, мы находим Prefect. Этот инструмент также использует концепцию ориентированных ациклических графов (графы задач), но пользовательский интерфейс намного проще, чем Airflow, и вам не нужно быть искушенным объектно-ориентированным программистом, чтобы получить максимальную отдачу от него, достаточно уметь с питоном. Использование его в облаке очень просто благодаря размещенному сервису Prefect Cloud, для которого у Airflow нет эквивалента.

Почетные упоминания

АМС

  • Lambda. Запуск специального кода без запуска серверов. Как и в случае с большинством инструментов AWS, кривая обучения — это боль, но она удобна, когда вам нужны триггерные задачи.
  • Glue. Glue, специальный инструмент для конвейерной обработки данных, полезен только тогда, когда другое хранилище данных также находится в AWS. Если вы, например, хотите регулярно перемещать данные из S3 в Redshift, это один из способов сделать это.

Google Cloud Scheduler. Это довольно простое и несложное решение для планирования выполнения кода. Это не для опытных пользователей, но если вы делаете все остальное в Google, тогда оно там есть. https://cloud.google.com/scheduler

Azure Logic Apps. Этот инструмент намного сложнее, чем Google Cloud Scheduler, он пытается быть похожим на Airflow, но вы можете разрабатывать рабочие процессы с помощью графического интерфейса или в формате JSON. https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-обзор

Jenkins, CircleCI. Эти инструменты предназначены специально для так называемой непрерывной интеграции или управления наборами тестов для кода. Если ваши команды сотрудничают в системе кода с контролем версий, эти инструменты могут автоматически проверять вклад каждого, чтобы убедиться, что он соответствует минимальным стандартам качества. Это экономит время и энергию, когда количество вкладов начинает расти.

Развертывание Saturn и рабочие места

Saturn Cloud работает вместе с Prefect для включения запланированных заданий и обслуживает развертывания, такие как API, прямо из продукта. Узнайте больше о том, как это работает, на нашем сайте.