"Начиная"

8 новых инструментов, которые я изучил как специалист по данным в 2020 году

Переход от Docker к Live Deployments

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

  1. MLflow
  2. Kubernetes
  3. NoSQL
  4. OpenRTB
  5. Веб-платформы Java
  6. HTTPS
  7. Балансировка нагрузки
  8. логирование

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

MLflow

MLflow - это фреймворк с открытым исходным кодом для управления жизненным циклом модели. Цель проекта - предоставить модули, которые поддерживают разработку, обслуживание и мониторинг моделей машинного обучения. Я начал использовать два из этих компонентов в 2020 году: отслеживание MLflow и реестр моделей. Модуль отслеживания позволяет специалистам по обработке данных записывать производительность различных модельных конвейеров и визуализировать результаты. Например, можно опробовать различные подходы к масштабированию функций, регрессионные модели и комбинации гиперпараметров, а также проверить, какая конфигурация конвейера дала наилучшие результаты. Я использовал это в среде Databricks, которая предоставляет полезные визуализации для выбора модели. Я также начал использовать модуль реестра в MLflow для хранения моделей, где обучающий блокнот обучает и сохраняет модель, а блокнот приложения модели извлекает и применяет модель. Одна из полезных функций в реестре моделей - модели стадии способности перед развертыванием. Реестр может поддерживать разные версии моделей и дает возможность вернуться к предыдущей версии при обнаружении проблемы. В 2021 году я планирую изучить больше модулей в MLFlow, включая обслуживание моделей.

Kubernetes

Kubernetes - это платформа с открытым исходным кодом для оркестровки контейнеров. Он позволяет специалистам по обработке данных развертывать контейнеры в виде масштабируемых веб-приложений и предоставляет различные варианты конфигурации для предоставления услуг в Интернете. Хотя настройка развертывания Kubernetes с нуля может быть довольно сложной, облачные платформы предлагают управляемые версии Kubernetes, которые упрощают практическое использование этой платформы. Я рекомендую специалистам по обработке данных, которые хотят изучить Kubernetes, использовать Google Kubernetes Engine (GKE), потому что он обеспечивает быстрое время запуска кластера и имеет большой опыт разработки.

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

NoSQL

Хотя на протяжении всей своей карьеры в области науки о данных я использовал различные базы данных, я впервые познакомился с базами данных NoSQL только в 2020 году. NoSQL включает базы данных, которые реализуют хранилища ключей и значений с операциями с малой задержкой. Например, Redis - это база данных в памяти, которая обеспечивает чтение за доли миллисекунды. Эта производительность полезна при построении систем реального времени, когда вам нужно обновлять профили пользователей по мере получения данных веб-службой. Например, вам может потребоваться обновить атрибуты вектора функций, описывающего действия пользователя, который передается в качестве входных данных в модель оттока и применяется в контексте HTTP-команды post. Чтобы создавать системы реального времени, специалистам по данным очень важно освоить базы данных NoSQL. Чтобы изучить такие технологии, как Redis, полезно использовать имитирующие библиотеки для тестирования API перед развертыванием в облаке.

OpenRTB

OpenRTB - это спецификация для аукционов и показа рекламы в реальном времени. Спецификация используется на биржах, таких как Google Ad Exchange, для связи издателей, продающих рекламный инвентарь, с покупателями, которые хотят показывать рекламу. Я использовал этот протокол для реализации исследовательской платформы для программного привлечения пользователей. Хотя эта спецификация не широко применима к науке о данных, она полезна для специалистов по данным, чтобы узнать, как создавать системы, которые могут реализовывать стандартизованный интерфейс. В случае OpenRTB это включает в себя создание веб-службы, которая получает сообщения HTTP с полезными данными JSON и возвращает ответ JSON с информацией о ценах. Если вы хотите начать работу со спецификацией OpenRTB, Google предоставляет реализацию protobuf.

Веб-платформы Java

Я решил создать исследовательскую платформу OpenRTB на Java, так как у меня больше всего опыта работы с этим языком. Однако Rust и Go - отличные альтернативы Java для построения систем OpenRTB. Поскольку я выбрал Java, мне нужно было выбрать веб-фреймворк для реализации конечных точек для моего приложения. Хотя более десяти лет назад я использовал библиотеку Jetty для создания простых веб-приложений на Java, я решил изучить новые инструменты, основанные на тестах. Я начал с библиотеки Rapidoid, которая представляет собой легкий и быстрый фреймворк для создания веб-приложений на Java. Однако, когда я начал добавлять вызовы Redis при ответе на веб-запросы, я обнаружил, что мне нужно перейти от неуправляемого к управляемому подходу для обслуживания запросов с помощью Rapidoid. Затем я попробовал Undertow, который поддерживает блокировку ввода-вывода, и обнаружил, что он превосходит Rapidoid в моем тесте производительности. Хотя специалисты по обработке данных обычно не занимаются разработкой на Java, может быть полезно узнать, как опробовать различные веб-фреймворки, например выбрать между gunicorn и uWSGI для развертывания веб-службы Python.

HTTPS

Для реализации протокола OpenRTB теперь требуется обслуживание трафика по защищенному протоколу HTTP. Включение HTTPS для веб-службы включает настройку веб-служб в качестве именованной конечной точки через DNS и использование подписанного сертификата для установления личности конечной точки. Обеспечение безопасности конечных точек на GCP, размещенном в GKE, относительно простое. После того, как служба будет представлена ​​с использованием порта узла и входа службы, вам необходимо настроить запись DNS для IP-адреса службы, а затем использовать управляемый сертификат GCP для включения HTTPS.

Специалистам по обработке данных полезно узнать о настройке конечных точек HTTPS из-за некоторых тонкостей в обеспечении безопасности служб. Если сквозной HTTPS не требуется, как в случае OpenRTB, где HTTP может использоваться внутри между балансировщиком нагрузки и модулями в кластере Kubernetes, тогда развертывание будет проще. Если требуется сквозной HTTPS, например веб-служба, использующая OAuth, конфигурация Kubernetes немного сложнее, поскольку модулям может потребоваться отвечать на эхо-запросы работоспособности на отдельном порту от порта, который обслуживает веб-запросы. . Я закончил тем, что отправил PR, чтобы решить проблему, связанную с этим, для приложений Plotly Dash, использующих OAuth.

Балансировка нагрузки

Чтобы масштабировать до объемов веб-трафика OpenRTB, мне нужно было использовать балансировку нагрузки для обработки более 100 тыс. Веб-запросов в секунду (QPS). Kubernetes предоставляет инфраструктуру для увеличения количества модулей, обслуживающих веб-запросы, но также необходимо настроить кластер таким образом, чтобы запросы равномерно распределялись по кластеру. У Kubernetes есть открытая проблема, которая вызывает неравномерную нагрузку на поды с использованием долговременных соединений, что является рекомендуемой конфигурацией для систем OpenRTB. Я использовал родную для контейнера функцию балансировки нагрузки, доступную в GKE, чтобы решить эту проблему. Освоение балансировки нагрузки не является обычным делом для специалистов по обработке данных, работающих в крупных организациях, но это полезный набор навыков для стартапов или команд, которые владеют продуктами для непрерывной обработки данных с большими объемами запросов.

логирование

Развертывание веб-приложения также включает в себя настройку мониторинга системы, чтобы определить, возникают ли какие-либо проблемы. При создании приложений с помощью GCP StackDriver предоставляет управляемую систему для регистрации сообщений, создания отчетов о пользовательских показателях и настройки предупреждений. Я смог использовать эту систему для мониторинга времени безотказной работы и отправки предупреждений в Slack и SMS при возникновении инцидентов. Специалистам по обработке данных полезно разобраться с библиотеками журналов, чтобы убедиться, что системы, развернутые в облаке, работают должным образом.

Заключение

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

Бен Вебер - выдающийся аналитик Zynga. Мы нанимаем"!