Масштабирование до облачной платформы для быстрого обучения моделей, оценки, логических выводов, ведения журналов и мониторинга.

Это третья часть из четырех частей. Я предлагаю вам прочитать части 1 и 2 для лучшего понимания:

Часть 1

"Часть 2"

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

Содержание

  • Эффективность на тренировках
  • Конвейеры быстрого ввода
  • Эффективный вывод

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

Разработка высокопроизводительных систем машинного обучения

Высокопроизводительные системы машинного обучения могут означать разные вещи для разных компаний в зависимости от цели проекта. Это может означать мощную систему машинного обучения, способную обрабатывать большие наборы данных, систему, которая может выполнять работу как можно быстрее, систему, способную обучаться в течение длительного периода времени, или даже достижение наилучшего возможного. точность и т. д. Эти многие факторы и характеристики высокопроизводительных систем машинного обучения важны, но одним из ключевых аспектов является время, необходимое для обучения модели. Предполагая, что мы хотим обучить модель для достижения определенного показателя оценки (например, точности), мы могли бы разработать высокопроизводительную систему машинного обучения с точки зрения производительности инфраструктуры. При выделении или подготовке инфраструктуры для задач машинного обучения мы должны учитывать некоторые ключевые факторы, такие как время обучения, бюджет, время вывода и прогнозирования.

Время обучения и бюджет. Чтобы оптимизировать бюджет обучения, необходимо учитывать как минимум время, стоимость и масштаб.

  • Время. Сколько времени вы готовы потратить на обучение модели? Представьте, что вы обучаете рекомендательную систему ежедневно рекомендовать продукты клиентам. Это означает, что у вас есть максимум 24 часа, чтобы завершить цикл машинного обучения от обучения до развертывания. Идеальное максимальное время для обучения такой модели должно составлять 16 часов, чтобы было время на тестирование, развертывание и т. д.
  • Стоимость. Сколько вы готовы потратить на обучение моделей с точки зрения стоимости вычислений? Это относится к бизнес-решениям: вы не захотите тренироваться по 16 часов каждый день, если дополнительная выгода от этого недостаточна.
  • Масштаб. На каком объеме данных вы будете тренироваться? Было бы лучше тренироваться на одной более дорогой машине или на нескольких более дешевых машинах?

В общем, вы захотите настроить производительность, чтобы сократить время обучения, снизить стоимость и увеличить масштаб. В приведенной ниже таблице показано, что эффективность обучения может быть связана с одним из трех подзаголовков (ввод/вывод: насколько быстро работает компонент приема данных для каждого обучения, ЦП: насколько быстро вы можете вычислить градиент для каждого шага обучения и объем памяти). : сколько весов вы можете удержать в памяти).

Быстрый конвейер ввода

Помимо выполнения оптимизаций для обучения модели, вы можете приложить усилия для повышения производительности конвейера ввода-вывода, что становится очень важным, если модель привязана к вводу-выводу при использовании нескольких GPU или TPU.

При работе на одном GPU или TPU входной конвейер может поддерживать скорость, с которой модель запрашивает предварительно обработанные пакеты данных, как показано на рисунке ниже.

Когда модель работает на нескольких GPU/TPU, потребуется оптимизация входного конвейера, чтобы предотвратить узкие места, во время которых итерация могла завершиться, и вы ожидаете следующего пакета предварительно обработанных данных, который может быть еще недоступен.

Чтобы избежать этих узких мест, мы можем сделать конвейер более эффективным, выполнив любое из следующих действий, если мы используем TensorFlow для моделирования.

  • Прямая подача данных из Python: это самый простой, но самый медленный способ, так как он требует, чтобы весь набор данных находился в памяти, что ограничивает память конвейера.
  • Native Tensorflow Ops: это сложно сделать по сравнению с прямой подачей из Python, но это стоит сделать, поскольку это обеспечивает безопасность и конфиденциальность данных.
  • Преобразованные записи TensorFlow: это может быть сложно сделать, поскольку потребуется учитывать это преобразование в архитектуре системы машинного обучения, что может привести к множеству изменений, но это наиболее эффективно. Мы можем добиться этого, используя Apache Beam, TFX и т. д.

Эффективность логического вывода

Разработка высокопроизводительной системы машинного обучения невозможна без учета эффективности системы при выводе. Мы могли бы перечислить и оценить производительность вывода системы ML на основе пропускной способности (запросов в секунду), задержки (сколько времени фактически занимает запрос) и стоимости с точки зрения инфраструктуры и обслуживания в зависимости от того, что лучше всего подходит для проблемы.

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

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

  • Время. Сколько времени вам потребуется, чтобы сделать все прогнозы?
  • Стоимость. Является ли прогноз рентабельным?
  • Масштаб. Нужно ли использовать распределенные машины или только одну машину?

Для онлайн-прогнозирования: поскольку пользователь ожидает прогноза, нет необходимости выполнять прогнозы на распределенном графе. Вместо этого можно использовать машину, но масштабировать ее до уровня микросервиса (GKE, ML-Engine и т. д.) для обработки нескольких запросов. Затем производительность может быть мерой QPS (запросов в секунду).

Мы могли бы добиться такого эффективного вывода с тремя различными вариантами GCP в зависимости от типа конвейера, который мы реализуем, как показано на рисунке ниже:

Подведение итогов

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

Найдите время, чтобы ознакомиться с моими другими статьями и дополнительной литературой в справочном разделе. Пожалуйста, не забудьте подписаться на меня, чтобы получать уведомления о моих публикациях.

Свяжитесь со мной в Twitter и LinkedIn

Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn для получения ресурсов, событий и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.