В рамках пути Glassdoor к тому, чтобы стать компанией, ориентированной на машинное обучение, мы создали исключительную платформу машинного обучения и команду инженеров (см. Наш блог о создании этой команды здесь), занимающихся разработкой базовой инфраструктуры для всех наших инициатив в области машинного обучения. . Мы стратегически построили нашу платформу машинного обучения под названием Glassmind, используя сочетание покупки, создания и внедрения существующих решений с открытым исходным кодом. Такой подход позволил нам использовать лучшее из всех миров. Наша команда имела возможность создать с нуля множество инструментов, включая конвейеры данных, инструменты управления человеком и многое другое. Мы также использовали существующие инструменты, такие как AWS Sagemaker, чтобы включить в наше хранилище функций мощные собственные настройки. У нас есть более интересные планы, такие как создание новой платформы рекомендаций, дальнейший вклад нашей платформы в открытый исходный код и продолжение развития заложенного нами фундамента. Сегодня мы углубимся в наш новый реестр ML с открытым исходным кодом.

Что такое реестр ML?

Жизненный цикл машинного обучения включает в себя гораздо больше, чем просто разработку моделей. После того как модель построена, возникает много вопросов: где она находится? Как нам получить к нему доступ? Что делать, если необходимы обновления или управление версиями? Где мы можем хранить метаданные, описывающие модель? А как насчет других немодельных артефактов? Как мы можем эффективно управлять всем этим? Войдите в реестр ML. Реестр ML Glassdoor — это служба централизованного управления артефактами ML и всеми связанными с ними метаданными. Он служит единым источником достоверных данных для всех данных, касающихся машинного обучения, обеспечивая единый и надежный доступ к этим данным для различных команд и приложений. Он легко интегрируется с другими инструментами и службами и обеспечивает надежную и многофункциональную функциональность.

Выбор между покупкой и созданием: что отличает реестр ML Glassmind?

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

  1. Полная настройка: наши архитекторы могут спроектировать его в соответствии с нашими уникальными желаниями и потребностями. Например, разработка нашей тесной интеграции с Git, возможности обработки немодельных артефактов и метаданных, нашего кэша метаданных и интеграции в экосистему Glassdoor.
  2. Немедленная и круглосуточная поддержка – дает Glassdoor возможность оперативно исправлять ошибки. Более того, мы можем быстро выполнять итерации на основе отзывов наших пользователей.
  3. Бесшовная интеграция в экосистему Glassdoor. Развертывание этой службы так же, как и других наших услуг, обеспечивает расширенные возможности подключения, мониторинга, оповещения, интеграции, устранения неполадок и поддержки.
  4. Стоимость. Тщательный анализ стоимости и влияния на задержку укрепил наше решение приступить к созданию реестра ML с нуля (более подробную информацию можно найти в содержательном Инженерном блоге Zillow, в котором сравниваются преимущества создания против покупки).

Подход Glassdoor: сначала Git

В Glassdoor мы придерживаемся подхода, ориентированного на Git, при котором каждый репозиторий и ветка содержат файл артефактов.yml, который служит центральной точкой настройки для управления метаданными. Этот файл YAML позволяет отдельным командам и репозиториям определять и настраивать соответствующие метаданные, специфичные для их проектов. Возьмем упрощенный пример Artifacts.yml ниже:

topic-training-data:
  dataObjectId: 123
  type: dataset
  config:
    type: tsv
    hasHeader: true
classification-output:
  dataObjectId: 456
  type: dataset
  config:
    type: tsv
    hasHeader: true

Здесь мы можем настроить метаданные для различных артефактов. Для артефакта «topic-training-data» мы видим наше самое важное поле конфигурации, dataObjectId, указывающее его уникальный идентификатор, который мы можем использовать для запроса реестра ML. Мы также можем включить любые другие поля метаданных свободной формы, специфичные для этого артефакта.

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

Используя Git в качестве основного источника достоверной информации, наш реестр ML синхронизирует эти метаданные из файлов артефактов.yml (для каждого проекта, для каждой ветки) в кэш Redis во время запуска приложения и обеспечивает синхронизацию после любых последующих изменений. Использование Git в качестве источника достоверной информации становится особенно ценным во время критических событий или фатальных для приложения событий. В таких случаях реестр ML синхронизируется с Git, что позволяет нам восстановить и перестроить систему из надежного и согласованного состояния. Когда обновления производятся через API или мерж-реквест (MR), Git всегда обновляется первым, чтобы гарантировать, что мы никогда не столкнемся с несогласованностью данных. Синхронизация Git с Redis обеспечивает единообразный, быстрый и простой доступ к самым актуальным метаданным для всех потребителей в компании, позволяя командам эффективно управлять своими артефактами, гарантируя целостность и согласованность данных. Используя Git, мы также обеспечиваем надежную версию и историю изменений. Мы видим, что реестр ML эффективно решает распространенную проблему организации данных, связанную с артефактами машинного обучения.

Простота потребления: расширение возможностей конвейеров машинного обучения и других потребителей

Чтобы обеспечить широкое удобство использования, мы использовали генератор OpenAPI, автоматически генерирующий клиентов для каждой новой версии приложения. Наши спецификации API OAS3 легко доступны через автоматически создаваемый пользовательский интерфейс Swagger. Кроме того, мы синхронизировали реестр ML с очередью SQS, что позволяет любому заинтересованному сервису прослушивать события изменений. Эта интеграция расширяет возможности конвейеров и задач ML, плавно запуская автоматизацию.

Гибкость реализации

Как упоминалось ранее, мы приняли подход, основанный на Git. Redis служит нашим серверным кэшем для мгновенного извлечения метаданных, а S3 выступает в качестве решения для хранения объектов данных. Хотя потребители открытого исходного кода могут использовать детали нашей реализации, они также могут создавать свои собственные функции, реализуя интерфейсы, которые абстрагируют все функции реестра ML.

Попробуйте!

Мы рекомендуем вам опробовать наш реестр ML и убедиться в его возможностях на собственном опыте. Для начала просто:

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

После настройки вы можете изучить функции реестра ML с помощью нашего автоматически создаваемого пользовательского интерфейса Swagger, который позволит вам беспрепятственно взаимодействовать с API на локальном хосте перед его развертыванием. Если вы работаете с серверными технологиями, отличными от нашего стека, не волнуйтесь. Реестр ML предоставляет интерфейсы, которые вы можете реализовать в соответствии с вашими конкретными требованиями. Попробуйте и дайте нам знать, что вы думаете!

Благодарности

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