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

Введение

Технологическая индустрия постоянно развивается, и ведущие игроки, такие как Google, Meta, Amazon и Apple, лидируют в инновациях. По мере того, как эти компании растут и обрабатывают огромные объемы данных, им необходимо разработать надежную и адаптируемую платформу машинного обучения, чтобы поддерживать свои достижения. В этой статье рассматриваются шаги, необходимые для создания передовой системы машинного обучения, которая может удовлетворить подробные требования этих ведущих корпораций.

Для достижения этой цели мы сосредоточимся на создании пяти важнейших элементов.

  1. Управляемые данные. Разработка системы для эффективного управления данными, включая прием, хранение и организацию.
  2. Управляемые модели. Внедрение платформы для управления жизненным циклом моделей машинного обучения. Этот компонент облегчит разработку моделей, обучение, управление версиями и переобучение.
  3. Управляемый хостинг моделей. Создание масштабируемой и надежной инфраструктуры для размещения моделей машинного обучения. Этот компонент позволит эффективно обслуживать модели и делать выводы в реальном времени, обеспечивая низкую задержку и высокую доступность.
  4. Управляемые эксперименты. Создание системы для проведения экспериментов и A/B-тестирования моделей машинного обучения. Этот компонент позволит ученым данных повторять и оптимизировать модели на основе производительности и отзывов пользователей.
  5. Управляемый мониторинг. Внедрение комплексных механизмов мониторинга и отслеживания производительности для моделей машинного обучения. Этот компонент будет предоставлять метрики в реальном времени о точности модели, задержке и использовании ресурсов.

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

Этот пост был вдохновлен вопросом интервью, предложенным и объясненным на algoexpert.io. Я расширил его, уточнил и сделал более полезным, чтобы он был более полным!

Прежде чем перейти к деталям, давайте посмотрим на общую картину (вы можете скачать PDF-версию по этой ссылке).

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

Управляемые данные

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

  • Создание, поиск и совместное использование функций и ярлыков. Наша платформа должна предоставлять пользователям удобный интерфейс для создания, поиска и обмена функциями и ярлыками, необходимыми для задач машинного обучения. Это позволяет командам сотрудничать и эффективно использовать существующие функции.
  • Интеграция с озером данных HDFS.Наша платформа требует надежной интеграции с озером данных HDFS для обеспечения бесперебойного потока данных. Эта интеграция позволяет нам эффективно получать, хранить и обрабатывать потоки кликов и журналы.
  • Масштабируемость и производительность.Учитывая огромные объемы данных, наша платформа должна быть способна обрабатывать тысячи ежедневных заданий с данными на петабайтах данных. Эта масштабируемость гарантирует, что функции и метки могут быть созданы быстро без ущерба для производительности.
  • Метаданные данных и мониторинг качества. Мы должны собирать и отслеживать соответствующие метаданные, чтобы получать представление о данных и поддерживать их качество. Это включает размер данных, количество строк и столбцов, описание и схему. Мы также должны отслеживать показатели качества данных, такие как пропущенные значения и дисперсия, чтобы обеспечить целостность данных.
  • Доступ к данным в режиме онлайн и офлайн.Наша платформа должна обеспечивать доступ к данным в режиме онлайн и офлайн. Онлайн-доступ позволяет извлекать функции с малой задержкой для вывода модели в реальном времени, а автономный доступ облегчает исследование данных, обучение модели и переобучение.
  • Пользовательские преобразования данных. Наша платформа должна поддерживать настраиваемые преобразования данных, чтобы соответствовать конкретным требованиям различных моделей. Эти преобразования могут включать масштабирование объектов, подвыбор объектов или заполнение отсутствующих значений. Пользователи должны иметь возможность определять и применять эти преобразования в рамках платформы.

Для поддержки этих функций мы создадим Feature Store, который использует запросы Hive для преобразования необработанных данных о кликах и журналах из озера данных в функции и метки, а также для вычисления значений метаданных для мониторинга качества данных. Hive — это инфраструктура хранилища данных, которая предоставляет высокоуровневый интерфейс и язык, подобный SQL, для запросов и анализа больших наборов данных, хранящихся в HDFS. В отдельном хранилище примеров также будут храниться обучающие примеры для исследования, обучения и переобучения модели, и оно может быть основано либо на HDFS, либо на S3.

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

Кроме того, мы будем использовать Airflow для организации ежедневных заданий с данными, передачи соответствующих необработанных данных из озера данных в хранилище функций и управления рутинными заданиями Hive для создания функций и меток. Команды получат доступ к магазину примеров и онлайн-обслуживанию через расположения HDFS и конечные точки HTTP. Компонент Transformer позволит пользователям выполнять преобразования функций в магазине примеров и онлайн-обслуживании в соответствии с требованиями конкретной модели. мы внедрим ручные и алгоритмические проверки, чтобы избежать дублирования функций и меток в разных командах, чтобы обеспечить эффективное хранение и обработку.

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

Поддержка потоковой передачи:

Чтобы отслеживать уровни запасов в режиме реального времени, мы можем использовать потоковую архитектуру, которая обновляется чаще, чем один раз в день. Мы рекомендуем использовать Spark Streaming.

Вот как будет работать потоковая архитектура:

  • Прием данных. Чтобы запустить конвейер потоковой передачи, принимаются данные из источника потоковой передачи, такого как Apache Kafka. Всякий раз, когда в Kafka поступают новые данные, они немедленно обрабатываются Spark Streaming с использованием заданных преобразований.
  • Обработка и преобразование. С помощью Spark Streaming входящие данные могут подвергаться преобразованиям, таким как агрегирование, вычисления или фильтрация, для получения желаемых значений функций.
  • Назначение: после завершения обработки измененные данные должны быть отправлены в назначенные места назначения. При решении этого вопроса вам нужно помнить о двух направлениях: онлайн-обслуживание и магазин примеров. Для онлайн-обслуживания важно немедленно обновить преобразованное значение функции, чтобы отразить последнюю информацию. Чтобы избежать проблем с устаревшими значениями, онлайн-обслуживание может сравнивать метки времени и заменять старые значения новыми. Что касается хранилища примеров, это отличное место для хранения преобразованных данных в исторических целях. Это позволяет командам быстро получать доступ и анализировать значения функций с течением времени.

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

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

Управляемые модели

Чтобы обеспечить согласованное представление и управление моделями в нашей платформе машинного обучения, нам необходимо решить следующие аспекты:

  • Непротиворечивость модельного конвейера. Наша цель – обеспечить согласованность между исследованием модели и прогнозами в рабочей среде. Для этого мы планируем использовать Model Pipelines. Эти конвейеры состоят из таких этапов, как вывод модели, десериализация признаков и преобразование вывода. Организуя эти этапы, мы гарантируем, что модели получат необходимые функции, обработают их правильно и преобразуют выходные данные в полезные прогнозы.
  • Репозиторий моделей и метаданные. Мы создадим репозиторий моделей для хранения сериализованных конвейеров моделей и управления ими. Этот репозиторий также будет обрабатывать важную информацию, такую ​​как расположение магазина примеров, идентификатор магазина функций, информацию о владельце и контактную информацию о команде, сведения о среде, конечную точку онлайн-обслуживания, идентификатор преобразователя, конфигурацию обучения и показатели производительности модели. Репозиторий моделей будет предоставлять библиотеки сериализации и десериализации, чтобы упростить перенос конвейеров моделей в производство и обслуживание прогнозов.
  • Исследование данных и моделей. Нам нужно предложить командам варианты изучения данных и моделей. Первый вариант — это простой интерфейс «укажи и щелкни», который позволяет пользователям выбирать данные из хранилища примеров и применять их к предварительно определенным моделям. Кроме того, мы предлагаем функцию AutoML, которая может выполнять выбор функций, выбор модели и настройку гиперпараметров без ручного ввода. Для более опытных пользователей у нас есть API для взаимодействия с Feature Store и создания пользовательских функций с помощью запросов Hive. Кроме того, пользователям предоставляется библиотека для создания собственных конвейеров моделей. Чтобы облегчить расширенные исследования, мы предлагаем общее рабочее пространство, такое как Jupyter Notebooks, через сервер JupyterHub, где пользователи могут использовать настраиваемые среды, образы контейнеров и управление данными.
  • Поддерживаемые модели машинного обучения. Наша платформа предлагает поддержку различных основных моделей машинного обучения, таких как линейная/логистическая регрессия, деревья с градиентным усилением, случайные леса и K-средние. Мы также предоставляем возможности для поиска по сетке и байесовской настройки гиперпараметров. Кроме того, группы могут получить доступ к необходимым вычислительным ресурсам для обучения, проверки и оценки.

Мы создадим репозиторий моделей, используя базу данных NoSQL, например DynamoDB, чтобы лучше управлять конвейерами моделей. Команды будут получать доступ к репозиторию через программный доступ и упрощенный пользовательский интерфейс. Кроме того, будет настроен сервер JupyterHub, позволяющий пользователям взаимодействовать с Feature Store, Example Store и Model Repository через отдельные серверы Jupyter Notebook. Мы создадим учебный кластер на основе кластера Hadoop, который использует YARN и Spark, чтобы обеспечить достаточно ресурсов для обучения, проверки и оценки конвейеров моделей.

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

Управляемый хостинг моделей

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

  • Размещение моделей в Интернете. Чтобы получать быстрые прогнозы, команды должны иметь возможность размещать свои модели через конечную точку HTTP, которая предоставляет ответы в режиме реального времени.
  • Пакетные выводы. Мы предлагаем поддержку пакетных выводов в дополнение к онлайн-хостингу моделей. Это позволяет командам делать прогнозы для больших наборов пользователей или продуктов, что особенно полезно, когда индивидуальные прогнозы для каждого пользователя или продукта нецелесообразны или когда необходимо соблюдать строгие требования к задержке.
  • Переобучение модели с использованием последних данных.Чтобы поддерживать модели в актуальном состоянии, нам необходимо разрешить их переобучение с использованием новейших функций и меток. Важно настроить параметры модели на основе самых последних данных, доступных через онлайн-обслуживание функций.

Для размещения модели мы реализуем специализированную службу вывода, которая использует несколько контейнеров Docker за балансировщиком нагрузки. Эти контейнеры будут извлекать нужные им модели из репозитория моделей при запуске. Мы обеспечим согласованность, сопоставив среды контейнеров, используемые во время исследования модели.

Для размещения онлайн-модели клиенты будут вызывать конечную точку HTTP службы вывода, предоставляя идентификатор (например, идентификатор пользователя) для получения соответствующих функций из компонента онлайн-обслуживания. Затем эти функции будут переданы через модельный конвейер, указанный в запросе, и конечная точка вернет результирующий прогноз. Если какие-либо функции недоступны в Feature Store, запрос должен включать их.

Чтобы инициировать развертывание, мы будем использовать интерфейс Model Repository. Как только модельный конвейер будет переведен в рабочую среду, служба конфигурации развертывания создаст контейнеры с правильными средами и запустит тесты работоспособности, чтобы убедиться, что модельный конвейер выполняется в соответствии с запросом. Служба также подтвердит, что указанная конечная точка онлайн-обслуживания в метаданных модельного конвейера работает. Эта синхронизация гарантирует, что развертывание Model Pipeline, среда контейнера в службе вывода и онлайн-хранилище функций согласованы.

Мы будем использовать Spark в кластере Hadoop для эффективной обработки крупномасштабных прогнозов для пакетных выводов. Доступ к результатам пакетных выводов можно получить через распределенную файловую систему, такую ​​как HDFS или S3, для сценариев, в которых низкая задержка не является критической (например, создание персонализированных шаблонов электронной почты). Для сценариев, требующих строгих требований к задержке, может быть предоставлена ​​конечная точка HTTP, аналогичная хостингу онлайн-модели.

Мы будем использовать Airflow для обработки переобучения модели и расчетов пакетного вывода. Функции оркестрации рабочих процессов Airflow помогут нам планировать и эффективно выполнять эти задачи, обеспечивая регулярное обновление моделей и точное своевременное прогнозирование пакетов.

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

Управляемые эксперименты и мониторинг

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

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

  • Создание экспериментов. Интерфейс репозитория моделей должен позволять командам легко создавать эксперименты, указывая модели, конфигурации и показатели для отслеживания.
  • Просмотр текущих и прошлых экспериментов. Интерфейс репозитория моделей должен позволять пользователям просматривать как текущие, так и прошлые эксперименты. Это должно включать настройки эксперимента, показатели и результаты для анализа и сравнения.
  • Частотное/байесовское A/B-тестирование и многорукие бандиты.Платформа должна поддерживать как частотные, так и байесовские методы A/B-тестирования. Это позволит командам сравнивать разные модели и принимать обоснованные решения на основе статистической значимости. Кроме того, платформа должна обеспечивать поддержку алгоритмов многоруких бандитов. Эти алгоритмы позволяют динамически распределять трафик между различными моделями в зависимости от их производительности.
  • Остановка эксперимента в течение нескольких минут. Для команд важно иметь возможность быстро остановить эксперименты, если это необходимо. Это гарантирует своевременное принятие решений и возможность прекращения экспериментов, не дающих желаемых результатов.

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

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

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

  • Интерфейс для просмотра истории выходных данных модели. Чтобы команды могли анализировать шаблоны, тенденции и производительность своих моделей, им должен быть предоставлен специальный интерфейс, отображающий исторические выходные данные, созданные моделями. Этот интерфейс предоставит ценную информацию о прогнозах, сделанных моделями с течением времени.
  • Интерфейс для просмотра ответов клиентов на выходные данные модели. Чтобы получить представление о том, как клиенты реагируют на выходные данные модели, командам требуется доступ к озеру данных, содержащему журналы посещений и обслуживания. Анализируя эти необработанные данные, команды могут определить действия, предпринятые клиентами, на основе прогнозов, полученных с помощью моделей.
  • Обнаружение дрейфа. Обнаружение дрейфа необходимо для мониторинга производительности моделей в производстве. Служба мониторинга будет нести ответственность за обнаружение любых дрейфов или отклонений от ожидаемого поведения моделей. Сравнивая фактические результаты и ответы клиентов с ожидаемым поведением, команды могут выявить снижение производительности, аномалии или сдвиги в распределении данных, которые могут повлиять на эффективность модели.

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

Менеджер экспериментов и служба мониторинга используют задания Spark или Hive для анализа и обработки данных. Используя эти данные, руководитель эксперимента рассчитывает p-значения для частотного A/B-тестирования и обновляет бета-распределения для алгоритмов многоруких бандитов. В то же время служба мониторинга предоставляет командам информацию и визуализацию хода или регрессии модели, выделяя различные интересующие показатели, включая бизнес-показатели и показатели, специфичные для модели.

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

* Резюме: клиент — это программное обеспечение, которое позволяет пользователям взаимодействовать со службой. Пользователи взаимодействуют с ним, вводят данные и получают доступ к результатам. Сервис предоставляет функционал и обрабатывает запросы. Все три компонента работают вместе, чтобы получить доступ к функциональным возможностям системы.

Можем ли мы добавить глубокое обучение к этой архитектуре?

Чтобы добавить возможности глубокого обучения на платформу, мы можем предпринять следующие шаги:

  • Поддержка библиотек. Наша платформа включает библиотеки TensorFlow, PyTorch и MXNet для простой разработки моделей глубокого обучения и проведения экспериментов в Jupyter Notebook, Training Cluster и Inference Service.
  • Поддержка графических процессоров. Использование графических процессоров для обучения моделей глубокого обучения очень выгодно благодаря их вычислительной мощности. Включение поддержки обучения на основе графического процессора в учебный кластер может быть достигнуто путем настройки кластера для включения узлов графического процессора или использования облачных экземпляров графического процессора. Это позволяет сократить время вычислений и потенциально увеличить размеры модели.
  • Распределенное обучение. Распределенное обучение эффективно для больших нейронных сетей и больших наборов данных. Топология сервера параметров разделяет параметры модели и распределяет их по рабочим процессам и серверам для крупномасштабного обучения. Учебный кластер настраивается для эффективного глубокого обучения в любом масштабе.
  • Служба логических выводов. Увеличение объема ОЗУ может повысить производительность размещения онлайн-моделей за счет соответствия требованиям к памяти для больших моделей глубокого обучения. Это приводит к более быстрому и эффективному выводу для более быстрого реагирования в производственных средах.
  • Пакетные выводы. Использование графических процессоров для пакетных выводов ускоряет вычисления и создание прогнозов для больших наборов данных.

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

Заключение

Чтобы создать современную платформу машинного обучения, необходимо тщательно продумать несколько компонентов, таких как управление данными, модели, хостинг, эксперименты и мониторинг. Правильная обработка данных обеспечивает высокое качество данных для обучения. Надежное управление жизненным циклом модели обеспечивает воспроизводимость и масштабируемость. Масштабируемый хостинг гарантирует низкую задержку и высокую доступность. A/B-тестирование оптимизирует модели на основе производительности и отзывов пользователей. Мониторинг позволяет в режиме реального времени получать информацию о точности модели, задержке и использовании ресурсов. Будьте в курсе последних достижений и инструментов для улучшения вашей платформы. При самоотверженности и понимании вы можете создать готовую к будущему платформу машинного обучения, которая преобразует использование данных и способствует успеху в бизнесе.

Спасибо, что прочитали мой пост, и я надеюсь, что он был полезен для вас. Если вам понравилась статья и вы хотите выразить свою поддержку, рассмотрите следующие действия:
👏 Поддержите историю аплодисментами, чтобы она стала более заметной.
📖 Подпишитесь на меня в Medium, чтобы получить доступ к большему количеству контента в моем профиле.
🛎 Свяжитесь со мной в LinkedIn, чтобы получать обновления.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу